12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340134113421343134413451346134713481349135013511352135313541355135613571358135913601361136213631364136513661367136813691370137113721373137413751376137713781379138013811382138313841385138613871388138913901391139213931394139513961397139813991400140114021403140414051406140714081409141014111412141314141415141614171418141914201421142214231424142514261427142814291430143114321433143414351436143714381439144014411442144314441445144614471448144914501451145214531454145514561457145814591460146114621463146414651466146714681469147014711472147314741475147614771478147914801481148214831484148514861487148814891490149114921493149414951496149714981499150015011502150315041505150615071508150915101511151215131514151515161517151815191520152115221523152415251526152715281529153015311532153315341535153615371538153915401541154215431544154515461547154815491550155115521553155415551556155715581559156015611562156315641565156615671568156915701571157215731574157515761577157815791580158115821583158415851586158715881589159015911592159315941595159615971598159916001601160216031604160516061607160816091610161116121613161416151616161716181619162016211622162316241625162616271628162916301631163216331634163516361637163816391640164116421643164416451646164716481649165016511652165316541655165616571658165916601661166216631664166516661667166816691670167116721673167416751676167716781679168016811682168316841685168616871688168916901691169216931694169516961697169816991700170117021703170417051706170717081709171017111712171317141715171617171718171917201721172217231724172517261727172817291730173117321733173417351736173717381739174017411742174317441745174617471748174917501751175217531754175517561757175817591760176117621763176417651766176717681769177017711772177317741775177617771778177917801781178217831784178517861787178817891790179117921793179417951796179717981799180018011802180318041805180618071808180918101811181218131814181518161817181818191820182118221823182418251826182718281829183018311832183318341835183618371838183918401841 |
- var p5=(t,e)=>()=>(e||t((e={exports:{}}).exports,e),e.exports);var owe=p5((mn,Cn)=>{(function(){const e=document.createElement("link").relList;if(e&&e.supports&&e.supports("modulepreload"))return;for(const l of document.querySelectorAll('link[rel="modulepreload"]'))_(l);new MutationObserver(l=>{for(const c of l)if(c.type==="childList")for(const T of c.addedNodes)T.tagName==="LINK"&&T.rel==="modulepreload"&&_(T)}).observe(document,{childList:!0,subtree:!0});function o(l){const c={};return l.integrity&&(c.integrity=l.integrity),l.referrerPolicy&&(c.referrerPolicy=l.referrerPolicy),l.crossOrigin==="use-credentials"?c.credentials="include":l.crossOrigin==="anonymous"?c.credentials="omit":c.credentials="same-origin",c}function _(l){if(l.ep)return;l.ep=!0;const c=o(l);fetch(l.href,c)}})();/**
- * @vue/shared v3.4.10
- * (c) 2018-present Yuxi (Evan) You and Vue contributors
- * @license MIT
- **/function YN(t,e){const o=new Set(t.split(","));return e?_=>o.has(_.toLowerCase()):_=>o.has(_)}const Ts={},mE=[],Ro=()=>{},L5=()=>!1,ZI=t=>t.charCodeAt(0)===111&&t.charCodeAt(1)===110&&(t.charCodeAt(2)>122||t.charCodeAt(2)<97),KN=t=>t.startsWith("onUpdate:"),Gs=Object.assign,zN=(t,e)=>{const o=t.indexOf(e);o>-1&&t.splice(o,1)},f5=Object.prototype.hasOwnProperty,so=(t,e)=>f5.call(t,e),rt=Array.isArray,CE=t=>oO(t)==="[object Map]",jI=t=>oO(t)==="[object Set]",Gc=t=>oO(t)==="[object Date]",At=t=>typeof t=="function",vt=t=>typeof t=="string",ua=t=>typeof t=="symbol",Zt=t=>t!==null&&typeof t=="object",ad=t=>(Zt(t)||At(t))&&At(t.then)&&At(t.catch),ax=Object.prototype.toString,oO=t=>ax.call(t),oR=t=>oO(t).slice(8,-1),YR=t=>oO(t)==="[object Object]",ZN=t=>vt(t)&&t!=="NaN"&&t[0]!=="-"&&""+parseInt(t,10)===t,sR=YN(",key,ref,ref_for,ref_key,onVnodeBeforeMount,onVnodeMounted,onVnodeBeforeUpdate,onVnodeUpdated,onVnodeBeforeUnmount,onVnodeUnmounted"),qI=t=>{const e=Object.create(null);return o=>e[o]||(e[o]=t(o))},m5=/-(\w)/g,bn=qI(t=>t.replace(m5,(e,o)=>o?o.toUpperCase():"")),C5=/\B([A-Z])/g,Aa=qI(t=>t.replace(C5,"-$1").toLowerCase()),sO=qI(t=>t.charAt(0).toUpperCase()+t.slice(1)),iR=qI(t=>t?`on${sO(t)}`:""),ga=(t,e)=>!Object.is(t,e),nR=(t,e)=>{for(let o=0;o<t.length;o++)t[o](e)},KR=(t,e,o)=>{Object.defineProperty(t,e,{configurable:!0,enumerable:!1,value:o})},OA=t=>{const e=parseFloat(t);return isNaN(e)?t:e},A5=t=>{const e=vt(t)?Number(t):NaN;return isNaN(e)?t:e};let s1;const cx=()=>s1||(s1=typeof globalThis<"u"?globalThis:typeof self<"u"?self:typeof window<"u"?window:typeof global<"u"?global:{});function dt(t){if(rt(t)){const e={};for(let o=0;o<t.length;o++){const _=t[o],l=vt(_)?v5(_):dt(_);if(l)for(const c in l)e[c]=l[c]}return e}else if(vt(t)||Zt(t))return t}const b5=/;(?![^(]*\))/g,N5=/:([^]+)/,P5=/\/\*[^]*?\*\//g;function v5(t){const e={};return t.replace(P5,"").split(b5).forEach(o=>{if(o){const _=o.split(N5);_.length>1&&(e[_[0].trim()]=_[1].trim())}}),e}function k(t){let e="";if(vt(t))e=t;else if(rt(t))for(let o=0;o<t.length;o++){const _=k(t[o]);_&&(e+=_+" ")}else if(Zt(t))for(const o in t)t[o]&&(e+=o+" ");return e.trim()}function wn(t){if(!t)return null;let{class:e,style:o}=t;return e&&!vt(e)&&(t.class=k(e)),o&&(t.style=dt(o)),t}const D5="itemscope,allowfullscreen,formnovalidate,ismap,nomodule,novalidate,readonly",U5=YN(D5);function Tx(t){return!!t||t===""}function y5(t,e){if(t.length!==e.length)return!1;let o=!0;for(let _=0;o&&_<t.length;_++)o=HE(t[_],e[_]);return o}function HE(t,e){if(t===e)return!0;let o=Gc(t),_=Gc(e);if(o||_)return o&&_?t.getTime()===e.getTime():!1;if(o=ua(t),_=ua(e),o||_)return t===e;if(o=rt(t),_=rt(e),o||_)return o&&_?y5(t,e):!1;if(o=Zt(t),_=Zt(e),o||_){if(!o||!_)return!1;const l=Object.keys(t).length,c=Object.keys(e).length;if(l!==c)return!1;for(const T in t){const E=t.hasOwnProperty(T),u=e.hasOwnProperty(T);if(E&&!u||!E&&u||!HE(t[T],e[T]))return!1}}return String(t)===String(e)}function Ex(t,e){return t.findIndex(o=>HE(o,e))}const Qe=t=>vt(t)?t:t==null?"":rt(t)||Zt(t)&&(t.toString===ax||!At(t.toString))?JSON.stringify(t,ux,2):String(t),ux=(t,e)=>e&&e.__v_isRef?ux(t,e.value):CE(e)?{[`Map(${e.size})`]:[...e.entries()].reduce((o,[_,l],c)=>(o[Fm(_,c)+" =>"]=l,o),{})}:jI(e)?{[`Set(${e.size})`]:[...e.values()].map(o=>Fm(o))}:ua(e)?Fm(e):Zt(e)&&!rt(e)&&!YR(e)?String(e):e,Fm=(t,e="")=>{var o;return ua(t)?`Symbol(${(o=t.description)!=null?o:e})`:t};/**
- * @vue/reactivity v3.4.10
- * (c) 2018-present Yuxi (Evan) You and Vue contributors
- * @license MIT
- **/let Rn;class gx{constructor(e=!1){this.detached=e,this._active=!0,this.effects=[],this.cleanups=[],this.parent=Rn,!e&&Rn&&(this.index=(Rn.scopes||(Rn.scopes=[])).push(this)-1)}get active(){return this._active}run(e){if(this._active){const o=Rn;try{return Rn=this,e()}finally{Rn=o}}}on(){Rn=this}off(){Rn=this.parent}stop(e){if(this._active){let o,_;for(o=0,_=this.effects.length;o<_;o++)this.effects[o].stop();for(o=0,_=this.cleanups.length;o<_;o++)this.cleanups[o]();if(this.scopes)for(o=0,_=this.scopes.length;o<_;o++)this.scopes[o].stop(!0);if(!this.detached&&this.parent&&!e){const l=this.parent.scopes.pop();l&&l!==this&&(this.parent.scopes[this.index]=l,l.index=this.index)}this.parent=void 0,this._active=!1}}}function jN(t){return new gx(t)}function $5(t,e=Rn){e&&e.active&&e.effects.push(t)}function qN(){return Rn}function QN(t){Rn&&Rn.cleanups.push(t)}let vc;class JN{constructor(e,o,_,l){this.fn=e,this.trigger=o,this.scheduler=_,this.active=!0,this.deps=[],this._dirtyLevel=3,this._trackId=0,this._runnings=0,this._queryings=0,this._depsLength=0,$5(this,l)}get dirty(){if(this._dirtyLevel===1){this._dirtyLevel=0,this._queryings++,qc();for(const e of this.deps)if(e.computed&&(B5(e.computed),this._dirtyLevel>=2))break;Qc(),this._queryings--}return this._dirtyLevel>=2}set dirty(e){this._dirtyLevel=e?3:0}run(){if(this._dirtyLevel=0,!this.active)return this.fn();let e=na,o=vc;try{return na=!0,vc=this,this._runnings++,i1(this),this.fn()}finally{n1(this),this._runnings--,vc=o,na=e}}stop(){var e;this.active&&(i1(this),n1(this),(e=this.onStop)==null||e.call(this),this.active=!1)}}function B5(t){return t.value}function i1(t){t._trackId++,t._depsLength=0}function n1(t){if(t.deps&&t.deps.length>t._depsLength){for(let e=t._depsLength;e<t.deps.length;e++)dx(t.deps[e],t);t.deps.length=t._depsLength}}function dx(t,e){const o=t.get(e);o!==void 0&&e._trackId!==o&&(t.delete(e),t.size===0&&t.cleanup())}let na=!0,hA=0;const Ox=[];function qc(){Ox.push(na),na=!1}function Qc(){const t=Ox.pop();na=t===void 0?!0:t}function eP(){hA++}function tP(){for(hA--;!hA&&MA.length;)MA.shift()()}function hx(t,e,o){if(e.get(t)!==t._trackId){e.set(t,t._trackId);const _=t.deps[t._depsLength];_!==e?(_&&dx(_,t),t.deps[t._depsLength++]=e):t._depsLength++}}const MA=[];function Mx(t,e,o){eP();for(const _ of t.keys())if(!(!_.allowRecurse&&_._runnings)&&_._dirtyLevel<e&&(!_._runnings||e!==2)){const l=_._dirtyLevel;_._dirtyLevel=e,l===0&&(!_._queryings||e!==2)&&(_.trigger(),_.scheduler&&MA.push(_.scheduler))}tP()}const Rx=(t,e)=>{const o=new Map;return o.cleanup=t,o.computed=e,o},zR=new WeakMap,Dc=Symbol(""),RA=Symbol("");function on(t,e,o){if(na&&vc){let _=zR.get(t);_||zR.set(t,_=new Map);let l=_.get(o);l||_.set(o,l=Rx(()=>_.delete(o))),hx(vc,l)}}function K_(t,e,o,_,l,c){const T=zR.get(t);if(!T)return;let E=[];if(e==="clear")E=[...T.values()];else if(o==="length"&&rt(t)){const u=Number(_);T.forEach((d,O)=>{(O==="length"||!ua(O)&&O>=u)&&E.push(d)})}else switch(o!==void 0&&E.push(T.get(o)),e){case"add":rt(t)?ZN(o)&&E.push(T.get("length")):(E.push(T.get(Dc)),CE(t)&&E.push(T.get(RA)));break;case"delete":rt(t)||(E.push(T.get(Dc)),CE(t)&&E.push(T.get(RA)));break;case"set":CE(t)&&E.push(T.get(Dc));break}eP();for(const u of E)u&&Mx(u,3);tP()}function w5(t,e){var o;return(o=zR.get(t))==null?void 0:o.get(e)}const G5=YN("__proto__,__v_isRef,__isVue"),Ix=new Set(Object.getOwnPropertyNames(Symbol).filter(t=>t!=="arguments"&&t!=="caller").map(t=>Symbol[t]).filter(ua)),r1=k5();function k5(){const t={};return["includes","indexOf","lastIndexOf"].forEach(e=>{t[e]=function(...o){const _=Mo(this);for(let c=0,T=this.length;c<T;c++)on(_,"get",c+"");const l=_[e](...o);return l===-1||l===!1?_[e](...o.map(Mo)):l}}),["push","pop","shift","unshift","splice"].forEach(e=>{t[e]=function(...o){qc(),eP();const _=Mo(this)[e].apply(this,o);return tP(),Qc(),_}}),t}function H5(t){const e=Mo(this);return on(e,"has",t),e.hasOwnProperty(t)}class Sx{constructor(e=!1,o=!1){this._isReadonly=e,this._shallow=o}get(e,o,_){const l=this._isReadonly,c=this._shallow;if(o==="__v_isReactive")return!l;if(o==="__v_isReadonly")return l;if(o==="__v_isShallow")return c;if(o==="__v_raw")return _===(l?c?J5:mx:c?fx:Lx).get(e)||Object.getPrototypeOf(e)===Object.getPrototypeOf(_)?e:void 0;const T=rt(e);if(!l){if(T&&so(r1,o))return Reflect.get(r1,o,_);if(o==="hasOwnProperty")return H5}const E=Reflect.get(e,o,_);return(ua(o)?Ix.has(o):G5(o))||(l||on(e,"get",o),c)?E:bo(E)?T&&ZN(o)?E:E.value:Zt(E)?l?hu(E):Eo(E):E}}class px extends Sx{constructor(e=!1){super(!1,e)}set(e,o,_,l){let c=e[o];if(!this._shallow){const u=xE(c);if(!ZR(_)&&!xE(_)&&(c=Mo(c),_=Mo(_)),!rt(e)&&bo(c)&&!bo(_))return u?!1:(c.value=_,!0)}const T=rt(e)&&ZN(o)?Number(o)<e.length:so(e,o),E=Reflect.set(e,o,_,l);return e===Mo(l)&&(T?ga(_,c)&&K_(e,"set",o,_):K_(e,"add",o,_)),E}deleteProperty(e,o){const _=so(e,o);e[o];const l=Reflect.deleteProperty(e,o);return l&&_&&K_(e,"delete",o,void 0),l}has(e,o){const _=Reflect.has(e,o);return(!ua(o)||!Ix.has(o))&&on(e,"has",o),_}ownKeys(e){return on(e,"iterate",rt(e)?"length":Dc),Reflect.ownKeys(e)}}class x5 extends Sx{constructor(e=!1){super(!0,e)}set(e,o){return!0}deleteProperty(e,o){return!0}}const F5=new px,V5=new x5,W5=new px(!0),oP=t=>t,QI=t=>Reflect.getPrototypeOf(t);function nM(t,e,o=!1,_=!1){t=t.__v_raw;const l=Mo(t),c=Mo(e);o||(ga(e,c)&&on(l,"get",e),on(l,"get",c));const{has:T}=QI(l),E=_?oP:o?rP:cd;if(T.call(l,e))return E(t.get(e));if(T.call(l,c))return E(t.get(c));t!==l&&t.get(e)}function rM(t,e=!1){const o=this.__v_raw,_=Mo(o),l=Mo(t);return e||(ga(t,l)&&on(_,"has",t),on(_,"has",l)),t===l?o.has(t):o.has(t)||o.has(l)}function _M(t,e=!1){return t=t.__v_raw,!e&&on(Mo(t),"iterate",Dc),Reflect.get(t,"size",t)}function _1(t){t=Mo(t);const e=Mo(this);return QI(e).has.call(e,t)||(e.add(t),K_(e,"add",t,t)),this}function l1(t,e){e=Mo(e);const o=Mo(this),{has:_,get:l}=QI(o);let c=_.call(o,t);c||(t=Mo(t),c=_.call(o,t));const T=l.call(o,t);return o.set(t,e),c?ga(e,T)&&K_(o,"set",t,e):K_(o,"add",t,e),this}function a1(t){const e=Mo(this),{has:o,get:_}=QI(e);let l=o.call(e,t);l||(t=Mo(t),l=o.call(e,t)),_&&_.call(e,t);const c=e.delete(t);return l&&K_(e,"delete",t,void 0),c}function c1(){const t=Mo(this),e=t.size!==0,o=t.clear();return e&&K_(t,"clear",void 0,void 0),o}function lM(t,e){return function(_,l){const c=this,T=c.__v_raw,E=Mo(T),u=e?oP:t?rP:cd;return!t&&on(E,"iterate",Dc),T.forEach((d,O)=>_.call(l,u(d),u(O),c))}}function aM(t,e,o){return function(..._){const l=this.__v_raw,c=Mo(l),T=CE(c),E=t==="entries"||t===Symbol.iterator&&T,u=t==="keys"&&T,d=l[t](..._),O=o?oP:e?rP:cd;return!e&&on(c,"iterate",u?RA:Dc),{next(){const{value:h,done:I}=d.next();return I?{value:h,done:I}:{value:E?[O(h[0]),O(h[1])]:O(h),done:I}},[Symbol.iterator](){return this}}}}function Ul(t){return function(...e){return t==="delete"?!1:t==="clear"?void 0:this}}function X5(){const t={get(c){return nM(this,c)},get size(){return _M(this)},has:rM,add:_1,set:l1,delete:a1,clear:c1,forEach:lM(!1,!1)},e={get(c){return nM(this,c,!1,!0)},get size(){return _M(this)},has:rM,add:_1,set:l1,delete:a1,clear:c1,forEach:lM(!1,!0)},o={get(c){return nM(this,c,!0)},get size(){return _M(this,!0)},has(c){return rM.call(this,c,!0)},add:Ul("add"),set:Ul("set"),delete:Ul("delete"),clear:Ul("clear"),forEach:lM(!0,!1)},_={get(c){return nM(this,c,!0,!0)},get size(){return _M(this,!0)},has(c){return rM.call(this,c,!0)},add:Ul("add"),set:Ul("set"),delete:Ul("delete"),clear:Ul("clear"),forEach:lM(!0,!0)};return["keys","values","entries",Symbol.iterator].forEach(c=>{t[c]=aM(c,!1,!1),o[c]=aM(c,!0,!1),e[c]=aM(c,!1,!0),_[c]=aM(c,!0,!0)}),[t,o,e,_]}const[Y5,K5,z5,Z5]=X5();function sP(t,e){const o=e?t?Z5:z5:t?K5:Y5;return(_,l,c)=>l==="__v_isReactive"?!t:l==="__v_isReadonly"?t:l==="__v_raw"?_:Reflect.get(so(o,l)&&l in _?o:_,l,c)}const j5={get:sP(!1,!1)},q5={get:sP(!1,!0)},Q5={get:sP(!0,!1)},Lx=new WeakMap,fx=new WeakMap,mx=new WeakMap,J5=new WeakMap;function e8(t){switch(t){case"Object":case"Array":return 1;case"Map":case"Set":case"WeakMap":case"WeakSet":return 2;default:return 0}}function t8(t){return t.__v_skip||!Object.isExtensible(t)?0:e8(oR(t))}function Eo(t){return xE(t)?t:nP(t,!1,F5,j5,Lx)}function iP(t){return nP(t,!1,W5,q5,fx)}function hu(t){return nP(t,!0,V5,Q5,mx)}function nP(t,e,o,_,l){if(!Zt(t)||t.__v_raw&&!(e&&t.__v_isReactive))return t;const c=l.get(t);if(c)return c;const T=t8(t);if(T===0)return t;const E=new Proxy(t,T===2?_:o);return l.set(t,E),E}function ra(t){return xE(t)?ra(t.__v_raw):!!(t&&t.__v_isReactive)}function xE(t){return!!(t&&t.__v_isReadonly)}function ZR(t){return!!(t&&t.__v_isShallow)}function Cx(t){return ra(t)||xE(t)}function Mo(t){const e=t&&t.__v_raw;return e?Mo(e):t}function z_(t){return KR(t,"__v_skip",!0),t}const cd=t=>Zt(t)?Eo(t):t,rP=t=>Zt(t)?hu(t):t;class Ax{constructor(e,o,_,l){this._setter=o,this.dep=void 0,this.__v_isRef=!0,this.__v_isReadonly=!1,this.effect=new JN(()=>e(this._value),()=>IA(this,1)),this.effect.computed=this,this.effect.active=this._cacheable=!l,this.__v_isReadonly=_}get value(){const e=Mo(this);return Nx(e),(!e._cacheable||e.effect.dirty)&&ga(e._value,e._value=e.effect.run())&&IA(e,2),e._value}set value(e){this._setter(e)}get _dirty(){return this.effect.dirty}set _dirty(e){this.effect.dirty=e}}function bx(t,e,o=!1){let _,l;const c=At(t);return c?(_=t,l=Ro):(_=t.get,l=t.set),new Ax(_,l,c||!l,o)}function Nx(t){na&&vc&&(t=Mo(t),hx(vc,t.dep||(t.dep=Rx(()=>t.dep=void 0,t instanceof Ax?t:void 0))))}function IA(t,e=3,o){t=Mo(t);const _=t.dep;_&&Mx(_,e)}function bo(t){return!!(t&&t.__v_isRef===!0)}function X(t){return Px(t,!1)}function mo(t){return Px(t,!0)}function Px(t,e){return bo(t)?t:new o8(t,e)}class o8{constructor(e,o){this.__v_isShallow=o,this.dep=void 0,this.__v_isRef=!0,this._rawValue=o?e:Mo(e),this._value=o?e:cd(e)}get value(){return Nx(this),this._value}set value(e){const o=this.__v_isShallow||ZR(e)||xE(e);e=o?e:Mo(e),ga(e,this._rawValue)&&(this._rawValue=e,this._value=o?e:cd(e),IA(this,3))}}function M(t){return bo(t)?t.value:t}const s8={get:(t,e,o)=>M(Reflect.get(t,e,o)),set:(t,e,o,_)=>{const l=t[e];return bo(l)&&!bo(o)?(l.value=o,!0):Reflect.set(t,e,o,_)}};function vx(t){return ra(t)?t:new Proxy(t,s8)}function Xs(t){const e=rt(t)?new Array(t.length):{};for(const o in t)e[o]=Dx(t,o);return e}class i8{constructor(e,o,_){this._object=e,this._key=o,this._defaultValue=_,this.__v_isRef=!0}get value(){const e=this._object[this._key];return e===void 0?this._defaultValue:e}set value(e){this._object[this._key]=e}get dep(){return w5(Mo(this._object),this._key)}}class n8{constructor(e){this._getter=e,this.__v_isRef=!0,this.__v_isReadonly=!0}get value(){return this._getter()}}function Ao(t,e,o){return bo(t)?t:At(t)?new n8(t):Zt(t)&&arguments.length>1?Dx(t,e,o):X(t)}function Dx(t,e,o){const _=t[e];return bo(_)?_:new i8(t,e,o)}/**
- * @vue/runtime-core v3.4.10
- * (c) 2018-present Yuxi (Evan) You and Vue contributors
- * @license MIT
- **/function _a(t,e,o,_){let l;try{l=_?t(..._):t()}catch(c){JI(c,e,o)}return l}function Hn(t,e,o,_){if(At(t)){const c=_a(t,e,o,_);return c&&ad(c)&&c.catch(T=>{JI(T,e,o)}),c}const l=[];for(let c=0;c<t.length;c++)l.push(Hn(t[c],e,o,_));return l}function JI(t,e,o,_=!0){const l=e?e.vnode:null;if(e){let c=e.parent;const T=e.proxy,E=`https://vuejs.org/errors/#runtime-${o}`;for(;c;){const d=c.ec;if(d){for(let O=0;O<d.length;O++)if(d[O](t,T,E)===!1)return}c=c.parent}const u=e.appContext.config.errorHandler;if(u){_a(u,null,10,[t,T,E]);return}}r8(t,o,l,_)}function r8(t,e,o,_=!0){console.error(t)}let Td=!1,SA=!1;const hi=[];let Jr=0;const AE=[];let Vl=null,dc=0;const Ux=Promise.resolve();let _P=null;function Lt(t){const e=_P||Ux;return t?e.then(this?t.bind(this):t):e}function _8(t){let e=Jr+1,o=hi.length;for(;e<o;){const _=e+o>>>1,l=hi[_],c=Ed(l);c<t||c===t&&l.pre?e=_+1:o=_}return e}function lP(t){(!hi.length||!hi.includes(t,Td&&t.allowRecurse?Jr+1:Jr))&&(t.id==null?hi.push(t):hi.splice(_8(t.id),0,t),yx())}function yx(){!Td&&!SA&&(SA=!0,_P=Ux.then(Bx))}function l8(t){const e=hi.indexOf(t);e>Jr&&hi.splice(e,1)}function a8(t){rt(t)?AE.push(...t):(!Vl||!Vl.includes(t,t.allowRecurse?dc+1:dc))&&AE.push(t),yx()}function T1(t,e,o=Td?Jr+1:0){for(;o<hi.length;o++){const _=hi[o];if(_&&_.pre){if(t&&_.id!==t.uid)continue;hi.splice(o,1),o--,_()}}}function $x(t){if(AE.length){const e=[...new Set(AE)].sort((o,_)=>Ed(o)-Ed(_));if(AE.length=0,Vl){Vl.push(...e);return}for(Vl=e,dc=0;dc<Vl.length;dc++)Vl[dc]();Vl=null,dc=0}}const Ed=t=>t.id==null?1/0:t.id,c8=(t,e)=>{const o=Ed(t)-Ed(e);if(o===0){if(t.pre&&!e.pre)return-1;if(e.pre&&!t.pre)return 1}return o};function Bx(t){SA=!1,Td=!0,hi.sort(c8);try{for(Jr=0;Jr<hi.length;Jr++){const e=hi[Jr];e&&e.active!==!1&&_a(e,null,14)}}finally{Jr=0,hi.length=0,$x(),Td=!1,_P=null,(hi.length||AE.length)&&Bx()}}function T8(t,e,...o){if(t.isUnmounted)return;const _=t.vnode.props||Ts;let l=o;const c=e.startsWith("update:"),T=c&&e.slice(7);if(T&&T in _){const O=`${T==="modelValue"?"model":T}Modifiers`,{number:h,trim:I}=_[O]||Ts;I&&(l=o.map(S=>vt(S)?S.trim():S)),h&&(l=o.map(OA))}let E,u=_[E=iR(e)]||_[E=iR(bn(e))];!u&&c&&(u=_[E=iR(Aa(e))]),u&&Hn(u,t,6,l);const d=_[E+"Once"];if(d){if(!t.emitted)t.emitted={};else if(t.emitted[E])return;t.emitted[E]=!0,Hn(d,t,6,l)}}function wx(t,e,o=!1){const _=e.emitsCache,l=_.get(t);if(l!==void 0)return l;const c=t.emits;let T={},E=!1;if(!At(t)){const u=d=>{const O=wx(d,e,!0);O&&(E=!0,Gs(T,O))};!o&&e.mixins.length&&e.mixins.forEach(u),t.extends&&u(t.extends),t.mixins&&t.mixins.forEach(u)}return!c&&!E?(Zt(t)&&_.set(t,null),null):(rt(c)?c.forEach(u=>T[u]=null):Gs(T,c),Zt(t)&&_.set(t,T),T)}function eS(t,e){return!t||!ZI(e)?!1:(e=e.slice(2).replace(/Once$/,""),so(t,e[0].toLowerCase()+e.slice(1))||so(t,Aa(e))||so(t,e))}let $s=null,tS=null;function jR(t){const e=$s;return $s=t,tS=t&&t.type.__scopeId||null,e}function Gx(t){tS=t}function kx(){tS=null}function de(t,e=$s,o){if(!e||t._n)return t;const _=(...l)=>{_._d&&m1(-1);const c=jR(e);let T;try{T=t(...l)}finally{jR(c),_._d&&m1(1)}return T};return _._n=!0,_._c=!0,_._d=!0,_}function Vm(t){const{type:e,vnode:o,proxy:_,withProxy:l,props:c,propsOptions:[T],slots:E,attrs:u,emit:d,render:O,renderCache:h,data:I,setupState:S,ctx:L,inheritAttrs:p}=t;let C,m;const A=jR(t);try{if(o.shapeFlag&4){const N=l||_,U=N;C=Qr(O.call(U,N,h,c,S,I,L)),m=u}else{const N=e;C=Qr(N.length>1?N(c,{attrs:u,slots:E,emit:d}):N(c,null)),m=e.props?u:E8(u)}}catch(N){Xg.length=0,JI(N,t,1),C=ne(Pi)}let b=C;if(m&&p!==!1){const N=Object.keys(m),{shapeFlag:U}=b;N.length&&U&7&&(T&&N.some(KN)&&(m=u8(m,T)),b=Q_(b,m))}return o.dirs&&(b=Q_(b),b.dirs=b.dirs?b.dirs.concat(o.dirs):o.dirs),o.transition&&(b.transition=o.transition),C=b,jR(A),C}const E8=t=>{let e;for(const o in t)(o==="class"||o==="style"||ZI(o))&&((e||(e={}))[o]=t[o]);return e},u8=(t,e)=>{const o={};for(const _ in t)(!KN(_)||!(_.slice(9)in e))&&(o[_]=t[_]);return o};function g8(t,e,o){const{props:_,children:l,component:c}=t,{props:T,children:E,patchFlag:u}=e,d=c.emitsOptions;if(e.dirs||e.transition)return!0;if(o&&u>=0){if(u&1024)return!0;if(u&16)return _?E1(_,T,d):!!T;if(u&8){const O=e.dynamicProps;for(let h=0;h<O.length;h++){const I=O[h];if(T[I]!==_[I]&&!eS(d,I))return!0}}}else return(l||E)&&(!E||!E.$stable)?!0:_===T?!1:_?T?E1(_,T,d):!0:!!T;return!1}function E1(t,e,o){const _=Object.keys(e);if(_.length!==Object.keys(t).length)return!0;for(let l=0;l<_.length;l++){const c=_[l];if(e[c]!==t[c]&&!eS(o,c))return!0}return!1}function d8({vnode:t,parent:e},o){for(;e;){const _=e.subTree;if(_.suspense&&_.suspense.activeBranch===t&&(_.el=t.el),_===t)(t=e.vnode).el=o,e=e.parent;else break}}const aP="components",O8="directives";function gt(t,e){return cP(aP,t,!0,e)||t}const Hx=Symbol.for("v-ndc");function Kt(t){return vt(t)?cP(aP,t,!1)||t:t||Hx}function oS(t){return cP(O8,t)}function cP(t,e,o=!0,_=!1){const l=$s||js;if(l){const c=l.type;if(t===aP){const E=r6(c,!1);if(E&&(E===e||E===bn(e)||E===sO(bn(e))))return c}const T=u1(l[t]||c[t],e)||u1(l.appContext[t],e);return!T&&_?c:T}}function u1(t,e){return t&&(t[e]||t[bn(e)]||t[sO(bn(e))])}const h8=t=>t.__isSuspense;function M8(t,e){e&&e.pendingBranch?rt(t)?e.effects.push(...t):e.effects.push(t):a8(t)}const R8=Symbol.for("v-scx"),I8=()=>lt(R8);function qs(t,e){return TP(t,null,e)}const cM={};function Fe(t,e,o){return TP(t,e,o)}function TP(t,e,{immediate:o,deep:_,flush:l,once:c,onTrack:T,onTrigger:E}=Ts){if(e&&c){const P=e;e=(...G)=>{P(...G),U()}}const u=js,d=P=>_===!0?P:pc(P,_===!1?1:void 0);let O,h=!1,I=!1;if(bo(t)?(O=()=>t.value,h=ZR(t)):ra(t)?(O=()=>d(t),h=!0):rt(t)?(I=!0,h=t.some(P=>ra(P)||ZR(P)),O=()=>t.map(P=>{if(bo(P))return P.value;if(ra(P))return d(P);if(At(P))return _a(P,u,2)})):At(t)?e?O=()=>_a(t,u,2):O=()=>(S&&S(),Hn(t,u,3,[L])):O=Ro,e&&_){const P=O;O=()=>pc(P())}let S,L=P=>{S=b.onStop=()=>{_a(P,u,4),S=b.onStop=void 0}},p;if(_S)if(L=Ro,e?o&&Hn(e,u,3,[O(),I?[]:void 0,L]):O(),l==="sync"){const P=I8();p=P.__watcherHandles||(P.__watcherHandles=[])}else return Ro;let C=I?new Array(t.length).fill(cM):cM;const m=()=>{if(!(!b.active||!b.dirty))if(e){const P=b.run();(_||h||(I?P.some((G,w)=>ga(G,C[w])):ga(P,C)))&&(S&&S(),Hn(e,u,3,[P,C===cM?void 0:I&&C[0]===cM?[]:C,L]),C=P)}else b.run()};m.allowRecurse=!!e;let A;l==="sync"?A=m:l==="post"?A=()=>Ki(m,u&&u.suspense):(m.pre=!0,u&&(m.id=u.uid),A=()=>lP(m));const b=new JN(O,Ro,A),N=qN(),U=()=>{b.stop(),N&&zN(N.effects,b)};return e?o?m():C=b.run():l==="post"?Ki(b.run.bind(b),u&&u.suspense):b.run(),p&&p.push(U),U}function S8(t,e,o){const _=this.proxy,l=vt(t)?t.includes(".")?xx(_,t):()=>_[t]:t.bind(_,_);let c;At(e)?c=e:(c=e.handler,o=e);const T=nO(this),E=TP(l,c.bind(_),o);return T(),E}function xx(t,e){const o=e.split(".");return()=>{let _=t;for(let l=0;l<o.length&&_;l++)_=_[o[l]];return _}}function pc(t,e,o=0,_){if(!Zt(t)||t.__v_skip)return t;if(e&&e>0){if(o>=e)return t;o++}if(_=_||new Set,_.has(t))return t;if(_.add(t),bo(t))pc(t.value,e,o,_);else if(rt(t))for(let l=0;l<t.length;l++)pc(t[l],e,o,_);else if(jI(t)||CE(t))t.forEach(l=>{pc(l,e,o,_)});else if(YR(t))for(const l in t)pc(t[l],e,o,_);return t}function yt(t,e){if($s===null)return t;const o=lS($s)||$s.proxy,_=t.dirs||(t.dirs=[]);for(let l=0;l<e.length;l++){let[c,T,E,u=Ts]=e[l];c&&(At(c)&&(c={mounted:c,updated:c}),c.deep&&pc(T),_.push({dir:c,instance:o,value:T,oldValue:void 0,arg:E,modifiers:u}))}return t}function lc(t,e,o,_){const l=t.dirs,c=e&&e.dirs;for(let T=0;T<l.length;T++){const E=l[T];c&&(E.oldValue=c[T].value);let u=E.dir[_];u&&(qc(),Hn(u,o,8,[t.el,E,t,e]),Qc())}}const Wl=Symbol("_leaveCb"),TM=Symbol("_enterCb");function Fx(){const t={isMounted:!1,isLeaving:!1,isUnmounting:!1,leavingVNodes:new Map};return Bt(()=>{t.isMounted=!0}),Do(()=>{t.isUnmounting=!0}),t}const Un=[Function,Array],Vx={mode:String,appear:Boolean,persisted:Boolean,onBeforeEnter:Un,onEnter:Un,onAfterEnter:Un,onEnterCancelled:Un,onBeforeLeave:Un,onLeave:Un,onAfterLeave:Un,onLeaveCancelled:Un,onBeforeAppear:Un,onAppear:Un,onAfterAppear:Un,onAppearCancelled:Un},p8={name:"BaseTransition",props:Vx,setup(t,{slots:e}){const o=Ht(),_=Fx();let l;return()=>{const c=e.default&&EP(e.default(),!0);if(!c||!c.length)return;let T=c[0];if(c.length>1){for(const p of c)if(p.type!==Pi){T=p;break}}const E=Mo(t),{mode:u}=E;if(_.isLeaving)return Wm(T);const d=g1(T);if(!d)return Wm(T);const O=ud(d,E,_,o);gd(d,O);const h=o.subTree,I=h&&g1(h);let S=!1;const{getTransitionKey:L}=d.type;if(L){const p=L();l===void 0?l=p:p!==l&&(l=p,S=!0)}if(I&&I.type!==Pi&&(!Oc(d,I)||S)){const p=ud(I,E,_,o);if(gd(I,p),u==="out-in")return _.isLeaving=!0,p.afterLeave=()=>{_.isLeaving=!1,o.update.active!==!1&&(o.effect.dirty=!0,o.update())},Wm(T);u==="in-out"&&d.type!==Pi&&(p.delayLeave=(C,m,A)=>{const b=Wx(_,I);b[String(I.key)]=I,C[Wl]=()=>{m(),C[Wl]=void 0,delete O.delayedLeave},O.delayedLeave=A})}return T}}},L8=p8;function Wx(t,e){const{leavingVNodes:o}=t;let _=o.get(e.type);return _||(_=Object.create(null),o.set(e.type,_)),_}function ud(t,e,o,_){const{appear:l,mode:c,persisted:T=!1,onBeforeEnter:E,onEnter:u,onAfterEnter:d,onEnterCancelled:O,onBeforeLeave:h,onLeave:I,onAfterLeave:S,onLeaveCancelled:L,onBeforeAppear:p,onAppear:C,onAfterAppear:m,onAppearCancelled:A}=e,b=String(t.key),N=Wx(o,t),U=(w,F)=>{w&&Hn(w,_,9,F)},P=(w,F)=>{const V=F[1];U(w,F),rt(w)?w.every(W=>W.length<=1)&&V():w.length<=1&&V()},G={mode:c,persisted:T,beforeEnter(w){let F=E;if(!o.isMounted)if(l)F=p||E;else return;w[Wl]&&w[Wl](!0);const V=N[b];V&&Oc(t,V)&&V.el[Wl]&&V.el[Wl](),U(F,[w])},enter(w){let F=u,V=d,W=O;if(!o.isMounted)if(l)F=C||u,V=m||d,W=A||O;else return;let K=!1;const ee=w[TM]=j=>{K||(K=!0,j?U(W,[w]):U(V,[w]),G.delayedLeave&&G.delayedLeave(),w[TM]=void 0)};F?P(F,[w,ee]):ee()},leave(w,F){const V=String(t.key);if(w[TM]&&w[TM](!0),o.isUnmounting)return F();U(h,[w]);let W=!1;const K=w[Wl]=ee=>{W||(W=!0,F(),ee?U(L,[w]):U(S,[w]),w[Wl]=void 0,N[V]===t&&delete N[V])};N[V]=t,I?P(I,[w,K]):K()},clone(w){return ud(w,e,o,_)}};return G}function Wm(t){if(sS(t))return t=Q_(t),t.children=null,t}function g1(t){return sS(t)?t.children?t.children[0]:void 0:t}function gd(t,e){t.shapeFlag&6&&t.component?gd(t.component.subTree,e):t.shapeFlag&128?(t.ssContent.transition=e.clone(t.ssContent),t.ssFallback.transition=e.clone(t.ssFallback)):t.transition=e}function EP(t,e=!1,o){let _=[],l=0;for(let c=0;c<t.length;c++){let T=t[c];const E=o==null?T.key:String(o)+String(T.key!=null?T.key:c);T.type===ht?(T.patchFlag&128&&l++,_=_.concat(EP(T.children,e,E))):(e||T.type!==Pi)&&_.push(E!=null?Q_(T,{key:E}):T)}if(l>1)for(let c=0;c<_.length;c++)_[c].patchFlag=-2;return _}/*! #__NO_SIDE_EFFECTS__ */function Oe(t,e){return At(t)?Gs({name:t.name},e,{setup:t}):t}const Fg=t=>!!t.type.__asyncLoader,sS=t=>t.type.__isKeepAlive;function f8(t,e){Yx(t,"a",e)}function Xx(t,e){Yx(t,"da",e)}function Yx(t,e,o=js){const _=t.__wdc||(t.__wdc=()=>{let l=o;for(;l;){if(l.isDeactivated)return;l=l.parent}return t()});if(iS(e,_,o),o){let l=o.parent;for(;l&&l.parent;)sS(l.parent.vnode)&&m8(_,e,o,l),l=l.parent}}function m8(t,e,o,_){const l=iS(e,t,_,!0);ba(()=>{zN(_[e],l)},o)}function iS(t,e,o=js,_=!1){if(o){const l=o[t]||(o[t]=[]),c=e.__weh||(e.__weh=(...T)=>{if(o.isUnmounted)return;qc();const E=nO(o),u=Hn(e,o,t,T);return E(),Qc(),u});return _?l.unshift(c):l.push(c),c}}const rl=t=>(e,o=js)=>(!_S||t==="sp")&&iS(t,(..._)=>e(..._),o),nS=rl("bm"),Bt=rl("m"),Kx=rl("bu"),_l=rl("u"),Do=rl("bum"),ba=rl("um"),C8=rl("sp"),A8=rl("rtg"),b8=rl("rtc");function N8(t,e=js){iS("ec",t,e)}function oo(t,e,o,_){let l;const c=o&&o[_];if(rt(t)||vt(t)){l=new Array(t.length);for(let T=0,E=t.length;T<E;T++)l[T]=e(t[T],T,void 0,c&&c[T])}else if(typeof t=="number"){l=new Array(t);for(let T=0;T<t;T++)l[T]=e(T+1,T,void 0,c&&c[T])}else if(Zt(t))if(t[Symbol.iterator])l=Array.from(t,(T,E)=>e(T,E,void 0,c&&c[E]));else{const T=Object.keys(t);l=new Array(T.length);for(let E=0,u=T.length;E<u;E++){const d=T[E];l[E]=e(t[d],d,E,c&&c[E])}}else l=[];return o&&(o[_]=l),l}function da(t,e){for(let o=0;o<e.length;o++){const _=e[o];if(rt(_))for(let l=0;l<_.length;l++)t[_[l].name]=_[l].fn;else _&&(t[_.name]=_.key?(...l)=>{const c=_.fn(...l);return c&&(c.key=_.key),c}:_.fn)}return t}function ye(t,e,o={},_,l){if($s.isCE||$s.parent&&Fg($s.parent)&&$s.parent.isCE)return e!=="default"&&(o.name=e),ne("slot",o,_&&_());let c=t[e];c&&c._c&&(c._d=!1),B();const T=c&&zx(c(o)),E=Ne(ht,{key:o.key||T&&T.key||`_${e}`},T||(_?_():[]),T&&t._===1?64:-2);return!l&&E.scopeId&&(E.slotScopeIds=[E.scopeId+"-s"]),c&&c._c&&(c._d=!0),E}function zx(t){return t.some(e=>Fo(e)?!(e.type===Pi||e.type===ht&&!zx(e.children)):!0)?t:null}function P8(t,e){const o={};for(const _ in t)o[e&&/[A-Z]/.test(_)?`on:${_}`:iR(_)]=t[_];return o}const pA=t=>t?_2(t)?lS(t)||t.proxy:pA(t.parent):null,Vg=Gs(Object.create(null),{$:t=>t,$el:t=>t.vnode.el,$data:t=>t.data,$props:t=>t.props,$attrs:t=>t.attrs,$slots:t=>t.slots,$refs:t=>t.refs,$parent:t=>pA(t.parent),$root:t=>pA(t.root),$emit:t=>t.emit,$options:t=>uP(t),$forceUpdate:t=>t.f||(t.f=()=>{t.effect.dirty=!0,lP(t.update)}),$nextTick:t=>t.n||(t.n=Lt.bind(t.proxy)),$watch:t=>S8.bind(t)}),Xm=(t,e)=>t!==Ts&&!t.__isScriptSetup&&so(t,e),v8={get({_:t},e){const{ctx:o,setupState:_,data:l,props:c,accessCache:T,type:E,appContext:u}=t;let d;if(e[0]!=="$"){const S=T[e];if(S!==void 0)switch(S){case 1:return _[e];case 2:return l[e];case 4:return o[e];case 3:return c[e]}else{if(Xm(_,e))return T[e]=1,_[e];if(l!==Ts&&so(l,e))return T[e]=2,l[e];if((d=t.propsOptions[0])&&so(d,e))return T[e]=3,c[e];if(o!==Ts&&so(o,e))return T[e]=4,o[e];LA&&(T[e]=0)}}const O=Vg[e];let h,I;if(O)return e==="$attrs"&&on(t,"get",e),O(t);if((h=E.__cssModules)&&(h=h[e]))return h;if(o!==Ts&&so(o,e))return T[e]=4,o[e];if(I=u.config.globalProperties,so(I,e))return I[e]},set({_:t},e,o){const{data:_,setupState:l,ctx:c}=t;return Xm(l,e)?(l[e]=o,!0):_!==Ts&&so(_,e)?(_[e]=o,!0):so(t.props,e)||e[0]==="$"&&e.slice(1)in t?!1:(c[e]=o,!0)},has({_:{data:t,setupState:e,accessCache:o,ctx:_,appContext:l,propsOptions:c}},T){let E;return!!o[T]||t!==Ts&&so(t,T)||Xm(e,T)||(E=c[0])&&so(E,T)||so(_,T)||so(Vg,T)||so(l.config.globalProperties,T)},defineProperty(t,e,o){return o.get!=null?t._.accessCache[e]=0:so(o,"value")&&this.set(t,e,o.value,null),Reflect.defineProperty(t,e,o)}};function zs(){return Zx().slots}function Jc(){return Zx().attrs}function Zx(){const t=Ht();return t.setupContext||(t.setupContext=a2(t))}function d1(t){return rt(t)?t.reduce((e,o)=>(e[o]=null,e),{}):t}let LA=!0;function D8(t){const e=uP(t),o=t.proxy,_=t.ctx;LA=!1,e.beforeCreate&&O1(e.beforeCreate,t,"bc");const{data:l,computed:c,methods:T,watch:E,provide:u,inject:d,created:O,beforeMount:h,mounted:I,beforeUpdate:S,updated:L,activated:p,deactivated:C,beforeDestroy:m,beforeUnmount:A,destroyed:b,unmounted:N,render:U,renderTracked:P,renderTriggered:G,errorCaptured:w,serverPrefetch:F,expose:V,inheritAttrs:W,components:K,directives:ee,filters:j}=e;if(d&&U8(d,_,null),T)for(const Y in T){const re=T[Y];At(re)&&(_[Y]=re.bind(o))}if(l){const Y=l.call(o,o);Zt(Y)&&(t.data=Eo(Y))}if(LA=!0,c)for(const Y in c){const re=c[Y],H=At(re)?re.bind(o,o):At(re.get)?re.get.bind(o,o):Ro,Q=!At(re)&&At(re.set)?re.set.bind(o):Ro,ae=v({get:H,set:Q});Object.defineProperty(_,Y,{enumerable:!0,configurable:!0,get:()=>ae.value,set:ge=>ae.value=ge})}if(E)for(const Y in E)jx(E[Y],_,o,Y);if(u){const Y=At(u)?u.call(o):u;Reflect.ownKeys(Y).forEach(re=>{Jt(re,Y[re])})}O&&O1(O,t,"c");function ie(Y,re){rt(re)?re.forEach(H=>Y(H.bind(o))):re&&Y(re.bind(o))}if(ie(nS,h),ie(Bt,I),ie(Kx,S),ie(_l,L),ie(f8,p),ie(Xx,C),ie(N8,w),ie(b8,P),ie(A8,G),ie(Do,A),ie(ba,N),ie(C8,F),rt(V))if(V.length){const Y=t.exposed||(t.exposed={});V.forEach(re=>{Object.defineProperty(Y,re,{get:()=>o[re],set:H=>o[re]=H})})}else t.exposed||(t.exposed={});U&&t.render===Ro&&(t.render=U),W!=null&&(t.inheritAttrs=W),K&&(t.components=K),ee&&(t.directives=ee)}function U8(t,e,o=Ro){rt(t)&&(t=fA(t));for(const _ in t){const l=t[_];let c;Zt(l)?"default"in l?c=lt(l.from||_,l.default,!0):c=lt(l.from||_):c=lt(l),bo(c)?Object.defineProperty(e,_,{enumerable:!0,configurable:!0,get:()=>c.value,set:T=>c.value=T}):e[_]=c}}function O1(t,e,o){Hn(rt(t)?t.map(_=>_.bind(e.proxy)):t.bind(e.proxy),e,o)}function jx(t,e,o,_){const l=_.includes(".")?xx(o,_):()=>o[_];if(vt(t)){const c=e[t];At(c)&&Fe(l,c)}else if(At(t))Fe(l,t.bind(o));else if(Zt(t))if(rt(t))t.forEach(c=>jx(c,e,o,_));else{const c=At(t.handler)?t.handler.bind(o):e[t.handler];At(c)&&Fe(l,c,t)}}function uP(t){const e=t.type,{mixins:o,extends:_}=e,{mixins:l,optionsCache:c,config:{optionMergeStrategies:T}}=t.appContext,E=c.get(e);let u;return E?u=E:!l.length&&!o&&!_?u=e:(u={},l.length&&l.forEach(d=>qR(u,d,T,!0)),qR(u,e,T)),Zt(e)&&c.set(e,u),u}function qR(t,e,o,_=!1){const{mixins:l,extends:c}=e;c&&qR(t,c,o,!0),l&&l.forEach(T=>qR(t,T,o,!0));for(const T in e)if(!(_&&T==="expose")){const E=y8[T]||o&&o[T];t[T]=E?E(t[T],e[T]):e[T]}return t}const y8={data:h1,props:M1,emits:M1,methods:yg,computed:yg,beforeCreate:bi,created:bi,beforeMount:bi,mounted:bi,beforeUpdate:bi,updated:bi,beforeDestroy:bi,beforeUnmount:bi,destroyed:bi,unmounted:bi,activated:bi,deactivated:bi,errorCaptured:bi,serverPrefetch:bi,components:yg,directives:yg,watch:B8,provide:h1,inject:$8};function h1(t,e){return e?t?function(){return Gs(At(t)?t.call(this,this):t,At(e)?e.call(this,this):e)}:e:t}function $8(t,e){return yg(fA(t),fA(e))}function fA(t){if(rt(t)){const e={};for(let o=0;o<t.length;o++)e[t[o]]=t[o];return e}return t}function bi(t,e){return t?[...new Set([].concat(t,e))]:e}function yg(t,e){return t?Gs(Object.create(null),t,e):e}function M1(t,e){return t?rt(t)&&rt(e)?[...new Set([...t,...e])]:Gs(Object.create(null),d1(t),d1(e??{})):e}function B8(t,e){if(!t)return e;if(!e)return t;const o=Gs(Object.create(null),t);for(const _ in e)o[_]=bi(t[_],e[_]);return o}function qx(){return{app:null,config:{isNativeTag:L5,performance:!1,globalProperties:{},optionMergeStrategies:{},errorHandler:void 0,warnHandler:void 0,compilerOptions:{}},mixins:[],components:{},directives:{},provides:Object.create(null),optionsCache:new WeakMap,propsCache:new WeakMap,emitsCache:new WeakMap}}let w8=0;function G8(t,e){return function(_,l=null){At(_)||(_=Gs({},_)),l!=null&&!Zt(l)&&(l=null);const c=qx(),T=new WeakSet;let E=!1;const u=c.app={_uid:w8++,_component:_,_props:l,_container:null,_context:c,_instance:null,version:l6,get config(){return c.config},set config(d){},use(d,...O){return T.has(d)||(d&&At(d.install)?(T.add(d),d.install(u,...O)):At(d)&&(T.add(d),d(u,...O))),u},mixin(d){return c.mixins.includes(d)||c.mixins.push(d),u},component(d,O){return O?(c.components[d]=O,u):c.components[d]},directive(d,O){return O?(c.directives[d]=O,u):c.directives[d]},mount(d,O,h){if(!E){const I=ne(_,l);return I.appContext=c,h===!0?h="svg":h===!1&&(h=void 0),O&&e?e(I,d):t(I,d,h),E=!0,u._container=d,d.__vue_app__=u,lS(I.component)||I.component.proxy}},unmount(){E&&(t(null,u._container),delete u._container.__vue_app__)},provide(d,O){return c.provides[d]=O,u},runWithContext(d){dd=u;try{return d()}finally{dd=null}}};return u}}let dd=null;function Jt(t,e){if(js){let o=js.provides;const _=js.parent&&js.parent.provides;_===o&&(o=js.provides=Object.create(_)),o[t]=e}}function lt(t,e,o=!1){const _=js||$s;if(_||dd){const l=_?_.parent==null?_.vnode.appContext&&_.vnode.appContext.provides:_.parent.provides:dd._context.provides;if(l&&t in l)return l[t];if(arguments.length>1)return o&&At(e)?e.call(_&&_.proxy):e}}function k8(){return!!(js||$s||dd)}function H8(t,e,o,_=!1){const l={},c={};KR(c,rS,1),t.propsDefaults=Object.create(null),Qx(t,e,l,c);for(const T in t.propsOptions[0])T in l||(l[T]=void 0);o?t.props=_?l:iP(l):t.type.props?t.props=l:t.props=c,t.attrs=c}function x8(t,e,o,_){const{props:l,attrs:c,vnode:{patchFlag:T}}=t,E=Mo(l),[u]=t.propsOptions;let d=!1;if((_||T>0)&&!(T&16)){if(T&8){const O=t.vnode.dynamicProps;for(let h=0;h<O.length;h++){let I=O[h];if(eS(t.emitsOptions,I))continue;const S=e[I];if(u)if(so(c,I))S!==c[I]&&(c[I]=S,d=!0);else{const L=bn(I);l[L]=mA(u,E,L,S,t,!1)}else S!==c[I]&&(c[I]=S,d=!0)}}}else{Qx(t,e,l,c)&&(d=!0);let O;for(const h in E)(!e||!so(e,h)&&((O=Aa(h))===h||!so(e,O)))&&(u?o&&(o[h]!==void 0||o[O]!==void 0)&&(l[h]=mA(u,E,h,void 0,t,!0)):delete l[h]);if(c!==E)for(const h in c)(!e||!so(e,h))&&(delete c[h],d=!0)}d&&K_(t,"set","$attrs")}function Qx(t,e,o,_){const[l,c]=t.propsOptions;let T=!1,E;if(e)for(let u in e){if(sR(u))continue;const d=e[u];let O;l&&so(l,O=bn(u))?!c||!c.includes(O)?o[O]=d:(E||(E={}))[O]=d:eS(t.emitsOptions,u)||(!(u in _)||d!==_[u])&&(_[u]=d,T=!0)}if(c){const u=Mo(o),d=E||Ts;for(let O=0;O<c.length;O++){const h=c[O];o[h]=mA(l,u,h,d[h],t,!so(d,h))}}return T}function mA(t,e,o,_,l,c){const T=t[o];if(T!=null){const E=so(T,"default");if(E&&_===void 0){const u=T.default;if(T.type!==Function&&!T.skipFactory&&At(u)){const{propsDefaults:d}=l;if(o in d)_=d[o];else{const O=nO(l);_=d[o]=u.call(null,e),O()}}else _=u}T[0]&&(c&&!E?_=!1:T[1]&&(_===""||_===Aa(o))&&(_=!0))}return _}function Jx(t,e,o=!1){const _=e.propsCache,l=_.get(t);if(l)return l;const c=t.props,T={},E=[];let u=!1;if(!At(t)){const O=h=>{u=!0;const[I,S]=Jx(h,e,!0);Gs(T,I),S&&E.push(...S)};!o&&e.mixins.length&&e.mixins.forEach(O),t.extends&&O(t.extends),t.mixins&&t.mixins.forEach(O)}if(!c&&!u)return Zt(t)&&_.set(t,mE),mE;if(rt(c))for(let O=0;O<c.length;O++){const h=bn(c[O]);R1(h)&&(T[h]=Ts)}else if(c)for(const O in c){const h=bn(O);if(R1(h)){const I=c[O],S=T[h]=rt(I)||At(I)?{type:I}:Gs({},I);if(S){const L=p1(Boolean,S.type),p=p1(String,S.type);S[0]=L>-1,S[1]=p<0||L<p,(L>-1||so(S,"default"))&&E.push(h)}}}const d=[T,E];return Zt(t)&&_.set(t,d),d}function R1(t){return t[0]!=="$"}function I1(t){const e=t&&t.toString().match(/^\s*(function|class) (\w+)/);return e?e[2]:t===null?"null":""}function S1(t,e){return I1(t)===I1(e)}function p1(t,e){return rt(e)?e.findIndex(o=>S1(o,t)):At(e)&&S1(e,t)?0:-1}const e2=t=>t[0]==="_"||t==="$stable",gP=t=>rt(t)?t.map(Qr):[Qr(t)],F8=(t,e,o)=>{if(e._n)return e;const _=de((...l)=>gP(e(...l)),o);return _._c=!1,_},t2=(t,e,o)=>{const _=t._ctx;for(const l in t){if(e2(l))continue;const c=t[l];if(At(c))e[l]=F8(l,c,_);else if(c!=null){const T=gP(c);e[l]=()=>T}}},o2=(t,e)=>{const o=gP(e);t.slots.default=()=>o},V8=(t,e)=>{if(t.vnode.shapeFlag&32){const o=e._;o?(t.slots=Mo(e),KR(e,"_",o)):t2(e,t.slots={})}else t.slots={},e&&o2(t,e);KR(t.slots,rS,1)},W8=(t,e,o)=>{const{vnode:_,slots:l}=t;let c=!0,T=Ts;if(_.shapeFlag&32){const E=e._;E?o&&E===1?c=!1:(Gs(l,e),!o&&E===1&&delete l._):(c=!e.$stable,t2(e,l)),T=e}else e&&(o2(t,e),T={default:1});if(c)for(const E in l)!e2(E)&&T[E]==null&&delete l[E]};function CA(t,e,o,_,l=!1){if(rt(t)){t.forEach((I,S)=>CA(I,e&&(rt(e)?e[S]:e),o,_,l));return}if(Fg(_)&&!l)return;const c=_.shapeFlag&4?lS(_.component)||_.component.proxy:_.el,T=l?null:c,{i:E,r:u}=t,d=e&&e.r,O=E.refs===Ts?E.refs={}:E.refs,h=E.setupState;if(d!=null&&d!==u&&(vt(d)?(O[d]=null,so(h,d)&&(h[d]=null)):bo(d)&&(d.value=null)),At(u))_a(u,E,12,[T,O]);else{const I=vt(u),S=bo(u);if(I||S){const L=()=>{if(t.f){const p=I?so(h,u)?h[u]:O[u]:u.value;l?rt(p)&&zN(p,c):rt(p)?p.includes(c)||p.push(c):I?(O[u]=[c],so(h,u)&&(h[u]=O[u])):(u.value=[c],t.k&&(O[t.k]=u.value))}else I?(O[u]=T,so(h,u)&&(h[u]=T)):S&&(u.value=T,t.k&&(O[t.k]=T))};T?(L.id=-1,Ki(L,o)):L()}}}const Ki=M8;function X8(t){return Y8(t)}function Y8(t,e){const o=cx();o.__VUE__=!0;const{insert:_,remove:l,patchProp:c,createElement:T,createText:E,createComment:u,setText:d,setElementText:O,parentNode:h,nextSibling:I,setScopeId:S=Ro,insertStaticContent:L}=t,p=(Te,Re,Ue,Ye=null,De=null,Xe=null,Ke=void 0,Be=null,qe=!!Re.dynamicChildren)=>{if(Te===Re)return;Te&&!Oc(Te,Re)&&(Ye=Me(Te),ge(Te,De,Xe,!0),Te=null),Re.patchFlag===-2&&(qe=!1,Re.dynamicChildren=null);const{type:xe,ref:Le,shapeFlag:je}=Re;switch(xe){case Ru:C(Te,Re,Ue,Ye);break;case Pi:m(Te,Re,Ue,Ye);break;case Km:Te==null&&A(Re,Ue,Ye,Ke);break;case ht:K(Te,Re,Ue,Ye,De,Xe,Ke,Be,qe);break;default:je&1?U(Te,Re,Ue,Ye,De,Xe,Ke,Be,qe):je&6?ee(Te,Re,Ue,Ye,De,Xe,Ke,Be,qe):(je&64||je&128)&&xe.process(Te,Re,Ue,Ye,De,Xe,Ke,Be,qe,Ae)}Le!=null&&De&&CA(Le,Te&&Te.ref,Xe,Re||Te,!Re)},C=(Te,Re,Ue,Ye)=>{if(Te==null)_(Re.el=E(Re.children),Ue,Ye);else{const De=Re.el=Te.el;Re.children!==Te.children&&d(De,Re.children)}},m=(Te,Re,Ue,Ye)=>{Te==null?_(Re.el=u(Re.children||""),Ue,Ye):Re.el=Te.el},A=(Te,Re,Ue,Ye)=>{[Te.el,Te.anchor]=L(Te.children,Re,Ue,Ye,Te.el,Te.anchor)},b=({el:Te,anchor:Re},Ue,Ye)=>{let De;for(;Te&&Te!==Re;)De=I(Te),_(Te,Ue,Ye),Te=De;_(Re,Ue,Ye)},N=({el:Te,anchor:Re})=>{let Ue;for(;Te&&Te!==Re;)Ue=I(Te),l(Te),Te=Ue;l(Re)},U=(Te,Re,Ue,Ye,De,Xe,Ke,Be,qe)=>{Re.type==="svg"?Ke="svg":Re.type==="math"&&(Ke="mathml"),Te==null?P(Re,Ue,Ye,De,Xe,Ke,Be,qe):F(Te,Re,De,Xe,Ke,Be,qe)},P=(Te,Re,Ue,Ye,De,Xe,Ke,Be)=>{let qe,xe;const{props:Le,shapeFlag:je,transition:He,dirs:Je}=Te;if(qe=Te.el=T(Te.type,Xe,Le&&Le.is,Le),je&8?O(qe,Te.children):je&16&&w(Te.children,qe,null,Ye,De,Ym(Te,Xe),Ke,Be),Je&&lc(Te,null,Ye,"created"),G(qe,Te,Te.scopeId,Ke,Ye),Le){for(const Ot in Le)Ot!=="value"&&!sR(Ot)&&c(qe,Ot,null,Le[Ot],Xe,Te.children,Ye,De,be);"value"in Le&&c(qe,"value",null,Le.value,Xe),(xe=Le.onVnodeBeforeMount)&&Kr(xe,Ye,Te)}Je&&lc(Te,null,Ye,"beforeMount");const St=K8(De,He);St&&He.beforeEnter(qe),_(qe,Re,Ue),((xe=Le&&Le.onVnodeMounted)||St||Je)&&Ki(()=>{xe&&Kr(xe,Ye,Te),St&&He.enter(qe),Je&&lc(Te,null,Ye,"mounted")},De)},G=(Te,Re,Ue,Ye,De)=>{if(Ue&&S(Te,Ue),Ye)for(let Xe=0;Xe<Ye.length;Xe++)S(Te,Ye[Xe]);if(De){let Xe=De.subTree;if(Re===Xe){const Ke=De.vnode;G(Te,Ke,Ke.scopeId,Ke.slotScopeIds,De.parent)}}},w=(Te,Re,Ue,Ye,De,Xe,Ke,Be,qe=0)=>{for(let xe=qe;xe<Te.length;xe++){const Le=Te[xe]=Be?Xl(Te[xe]):Qr(Te[xe]);p(null,Le,Re,Ue,Ye,De,Xe,Ke,Be)}},F=(Te,Re,Ue,Ye,De,Xe,Ke)=>{const Be=Re.el=Te.el;let{patchFlag:qe,dynamicChildren:xe,dirs:Le}=Re;qe|=Te.patchFlag&16;const je=Te.props||Ts,He=Re.props||Ts;let Je;if(Ue&&ac(Ue,!1),(Je=He.onVnodeBeforeUpdate)&&Kr(Je,Ue,Re,Te),Le&&lc(Re,Te,Ue,"beforeUpdate"),Ue&&ac(Ue,!0),xe?V(Te.dynamicChildren,xe,Be,Ue,Ye,Ym(Re,De),Xe):Ke||re(Te,Re,Be,null,Ue,Ye,Ym(Re,De),Xe,!1),qe>0){if(qe&16)W(Be,Re,je,He,Ue,Ye,De);else if(qe&2&&je.class!==He.class&&c(Be,"class",null,He.class,De),qe&4&&c(Be,"style",je.style,He.style,De),qe&8){const St=Re.dynamicProps;for(let Ot=0;Ot<St.length;Ot++){const Nt=St[Ot],z=je[Nt],y=He[Nt];(y!==z||Nt==="value")&&c(Be,Nt,z,y,De,Te.children,Ue,Ye,be)}}qe&1&&Te.children!==Re.children&&O(Be,Re.children)}else!Ke&&xe==null&&W(Be,Re,je,He,Ue,Ye,De);((Je=He.onVnodeUpdated)||Le)&&Ki(()=>{Je&&Kr(Je,Ue,Re,Te),Le&&lc(Re,Te,Ue,"updated")},Ye)},V=(Te,Re,Ue,Ye,De,Xe,Ke)=>{for(let Be=0;Be<Re.length;Be++){const qe=Te[Be],xe=Re[Be],Le=qe.el&&(qe.type===ht||!Oc(qe,xe)||qe.shapeFlag&70)?h(qe.el):Ue;p(qe,xe,Le,null,Ye,De,Xe,Ke,!0)}},W=(Te,Re,Ue,Ye,De,Xe,Ke)=>{if(Ue!==Ye){if(Ue!==Ts)for(const Be in Ue)!sR(Be)&&!(Be in Ye)&&c(Te,Be,Ue[Be],null,Ke,Re.children,De,Xe,be);for(const Be in Ye){if(sR(Be))continue;const qe=Ye[Be],xe=Ue[Be];qe!==xe&&Be!=="value"&&c(Te,Be,xe,qe,Ke,Re.children,De,Xe,be)}"value"in Ye&&c(Te,"value",Ue.value,Ye.value,Ke)}},K=(Te,Re,Ue,Ye,De,Xe,Ke,Be,qe)=>{const xe=Re.el=Te?Te.el:E(""),Le=Re.anchor=Te?Te.anchor:E("");let{patchFlag:je,dynamicChildren:He,slotScopeIds:Je}=Re;Je&&(Be=Be?Be.concat(Je):Je),Te==null?(_(xe,Ue,Ye),_(Le,Ue,Ye),w(Re.children||[],Ue,Le,De,Xe,Ke,Be,qe)):je>0&&je&64&&He&&Te.dynamicChildren?(V(Te.dynamicChildren,He,Ue,De,Xe,Ke,Be),(Re.key!=null||De&&Re===De.subTree)&&dP(Te,Re,!0)):re(Te,Re,Ue,Le,De,Xe,Ke,Be,qe)},ee=(Te,Re,Ue,Ye,De,Xe,Ke,Be,qe)=>{Re.slotScopeIds=Be,Te==null?Re.shapeFlag&512?De.ctx.activate(Re,Ue,Ye,Ke,qe):j(Re,Ue,Ye,De,Xe,Ke,qe):J(Te,Re,qe)},j=(Te,Re,Ue,Ye,De,Xe,Ke)=>{const Be=Te.component=o6(Te,Ye,De);if(sS(Te)&&(Be.ctx.renderer=Ae),s6(Be),Be.asyncDep){if(De&&De.registerDep(Be,ie),!Te.el){const qe=Be.subTree=ne(Pi);m(null,qe,Re,Ue)}}else ie(Be,Te,Re,Ue,De,Xe,Ke)},J=(Te,Re,Ue)=>{const Ye=Re.component=Te.component;if(g8(Te,Re,Ue))if(Ye.asyncDep&&!Ye.asyncResolved){Y(Ye,Re,Ue);return}else Ye.next=Re,l8(Ye.update),Ye.effect.dirty=!0,Ye.update();else Re.el=Te.el,Ye.vnode=Re},ie=(Te,Re,Ue,Ye,De,Xe,Ke)=>{const Be=()=>{if(Te.isMounted){let{next:Le,bu:je,u:He,parent:Je,vnode:St}=Te;{const x=s2(Te);if(x){Le&&(Le.el=St.el,Y(Te,Le,Ke)),x.asyncDep.then(()=>{Te.isUnmounted||Be()});return}}let Ot=Le,Nt;ac(Te,!1),Le?(Le.el=St.el,Y(Te,Le,Ke)):Le=St,je&&nR(je),(Nt=Le.props&&Le.props.onVnodeBeforeUpdate)&&Kr(Nt,Je,Le,St),ac(Te,!0);const z=Vm(Te),y=Te.subTree;Te.subTree=z,p(y,z,h(y.el),Me(y),Te,De,Xe),Le.el=z.el,Ot===null&&d8(Te,z.el),He&&Ki(He,De),(Nt=Le.props&&Le.props.onVnodeUpdated)&&Ki(()=>Kr(Nt,Je,Le,St),De)}else{let Le;const{el:je,props:He}=Re,{bm:Je,m:St,parent:Ot}=Te,Nt=Fg(Re);if(ac(Te,!1),Je&&nR(Je),!Nt&&(Le=He&&He.onVnodeBeforeMount)&&Kr(Le,Ot,Re),ac(Te,!0),je&&ve){const z=()=>{Te.subTree=Vm(Te),ve(je,Te.subTree,Te,De,null)};Nt?Re.type.__asyncLoader().then(()=>!Te.isUnmounted&&z()):z()}else{const z=Te.subTree=Vm(Te);p(null,z,Ue,Ye,Te,De,Xe),Re.el=z.el}if(St&&Ki(St,De),!Nt&&(Le=He&&He.onVnodeMounted)){const z=Re;Ki(()=>Kr(Le,Ot,z),De)}(Re.shapeFlag&256||Ot&&Fg(Ot.vnode)&&Ot.vnode.shapeFlag&256)&&Te.a&&Ki(Te.a,De),Te.isMounted=!0,Re=Ue=Ye=null}},qe=Te.effect=new JN(Be,Ro,()=>lP(xe),Te.scope),xe=Te.update=()=>{qe.dirty&&qe.run()};xe.id=Te.uid,ac(Te,!0),xe()},Y=(Te,Re,Ue)=>{Re.component=Te;const Ye=Te.vnode.props;Te.vnode=Re,Te.next=null,x8(Te,Re.props,Ye,Ue),W8(Te,Re.children,Ue),qc(),T1(Te),Qc()},re=(Te,Re,Ue,Ye,De,Xe,Ke,Be,qe=!1)=>{const xe=Te&&Te.children,Le=Te?Te.shapeFlag:0,je=Re.children,{patchFlag:He,shapeFlag:Je}=Re;if(He>0){if(He&128){Q(xe,je,Ue,Ye,De,Xe,Ke,Be,qe);return}else if(He&256){H(xe,je,Ue,Ye,De,Xe,Ke,Be,qe);return}}Je&8?(Le&16&&be(xe,De,Xe),je!==xe&&O(Ue,je)):Le&16?Je&16?Q(xe,je,Ue,Ye,De,Xe,Ke,Be,qe):be(xe,De,Xe,!0):(Le&8&&O(Ue,""),Je&16&&w(je,Ue,Ye,De,Xe,Ke,Be,qe))},H=(Te,Re,Ue,Ye,De,Xe,Ke,Be,qe)=>{Te=Te||mE,Re=Re||mE;const xe=Te.length,Le=Re.length,je=Math.min(xe,Le);let He;for(He=0;He<je;He++){const Je=Re[He]=qe?Xl(Re[He]):Qr(Re[He]);p(Te[He],Je,Ue,null,De,Xe,Ke,Be,qe)}xe>Le?be(Te,De,Xe,!0,!1,je):w(Re,Ue,Ye,De,Xe,Ke,Be,qe,je)},Q=(Te,Re,Ue,Ye,De,Xe,Ke,Be,qe)=>{let xe=0;const Le=Re.length;let je=Te.length-1,He=Le-1;for(;xe<=je&&xe<=He;){const Je=Te[xe],St=Re[xe]=qe?Xl(Re[xe]):Qr(Re[xe]);if(Oc(Je,St))p(Je,St,Ue,null,De,Xe,Ke,Be,qe);else break;xe++}for(;xe<=je&&xe<=He;){const Je=Te[je],St=Re[He]=qe?Xl(Re[He]):Qr(Re[He]);if(Oc(Je,St))p(Je,St,Ue,null,De,Xe,Ke,Be,qe);else break;je--,He--}if(xe>je){if(xe<=He){const Je=He+1,St=Je<Le?Re[Je].el:Ye;for(;xe<=He;)p(null,Re[xe]=qe?Xl(Re[xe]):Qr(Re[xe]),Ue,St,De,Xe,Ke,Be,qe),xe++}}else if(xe>He)for(;xe<=je;)ge(Te[xe],De,Xe,!0),xe++;else{const Je=xe,St=xe,Ot=new Map;for(xe=St;xe<=He;xe++){const ze=Re[xe]=qe?Xl(Re[xe]):Qr(Re[xe]);ze.key!=null&&Ot.set(ze.key,xe)}let Nt,z=0;const y=He-St+1;let x=!1,oe=0;const Ee=new Array(y);for(xe=0;xe<y;xe++)Ee[xe]=0;for(xe=Je;xe<=je;xe++){const ze=Te[xe];if(z>=y){ge(ze,De,Xe,!0);continue}let _t;if(ze.key!=null)_t=Ot.get(ze.key);else for(Nt=St;Nt<=He;Nt++)if(Ee[Nt-St]===0&&Oc(ze,Re[Nt])){_t=Nt;break}_t===void 0?ge(ze,De,Xe,!0):(Ee[_t-St]=xe+1,_t>=oe?oe=_t:x=!0,p(ze,Re[_t],Ue,null,De,Xe,Ke,Be,qe),z++)}const _e=x?z8(Ee):mE;for(Nt=_e.length-1,xe=y-1;xe>=0;xe--){const ze=St+xe,_t=Re[ze],wt=ze+1<Le?Re[ze+1].el:Ye;Ee[xe]===0?p(null,_t,Ue,wt,De,Xe,Ke,Be,qe):x&&(Nt<0||xe!==_e[Nt]?ae(_t,Ue,wt,2):Nt--)}}},ae=(Te,Re,Ue,Ye,De=null)=>{const{el:Xe,type:Ke,transition:Be,children:qe,shapeFlag:xe}=Te;if(xe&6){ae(Te.component.subTree,Re,Ue,Ye);return}if(xe&128){Te.suspense.move(Re,Ue,Ye);return}if(xe&64){Ke.move(Te,Re,Ue,Ae);return}if(Ke===ht){_(Xe,Re,Ue);for(let je=0;je<qe.length;je++)ae(qe[je],Re,Ue,Ye);_(Te.anchor,Re,Ue);return}if(Ke===Km){b(Te,Re,Ue);return}if(Ye!==2&&xe&1&&Be)if(Ye===0)Be.beforeEnter(Xe),_(Xe,Re,Ue),Ki(()=>Be.enter(Xe),De);else{const{leave:je,delayLeave:He,afterLeave:Je}=Be,St=()=>_(Xe,Re,Ue),Ot=()=>{je(Xe,()=>{St(),Je&&Je()})};He?He(Xe,St,Ot):Ot()}else _(Xe,Re,Ue)},ge=(Te,Re,Ue,Ye=!1,De=!1)=>{const{type:Xe,props:Ke,ref:Be,children:qe,dynamicChildren:xe,shapeFlag:Le,patchFlag:je,dirs:He}=Te;if(Be!=null&&CA(Be,null,Ue,Te,!0),Le&256){Re.ctx.deactivate(Te);return}const Je=Le&1&&He,St=!Fg(Te);let Ot;if(St&&(Ot=Ke&&Ke.onVnodeBeforeUnmount)&&Kr(Ot,Re,Te),Le&6)We(Te.component,Ue,Ye);else{if(Le&128){Te.suspense.unmount(Ue,Ye);return}Je&&lc(Te,null,Re,"beforeUnmount"),Le&64?Te.type.remove(Te,Re,Ue,De,Ae,Ye):xe&&(Xe!==ht||je>0&&je&64)?be(xe,Re,Ue,!1,!0):(Xe===ht&&je&384||!De&&Le&16)&&be(qe,Re,Ue),Ye&&Se(Te)}(St&&(Ot=Ke&&Ke.onVnodeUnmounted)||Je)&&Ki(()=>{Ot&&Kr(Ot,Re,Te),Je&&lc(Te,null,Re,"unmounted")},Ue)},Se=Te=>{const{type:Re,el:Ue,anchor:Ye,transition:De}=Te;if(Re===ht){pe(Ue,Ye);return}if(Re===Km){N(Te);return}const Xe=()=>{l(Ue),De&&!De.persisted&&De.afterLeave&&De.afterLeave()};if(Te.shapeFlag&1&&De&&!De.persisted){const{leave:Ke,delayLeave:Be}=De,qe=()=>Ke(Ue,Xe);Be?Be(Te.el,Xe,qe):qe()}else Xe()},pe=(Te,Re)=>{let Ue;for(;Te!==Re;)Ue=I(Te),l(Te),Te=Ue;l(Re)},We=(Te,Re,Ue)=>{const{bum:Ye,scope:De,update:Xe,subTree:Ke,um:Be}=Te;Ye&&nR(Ye),De.stop(),Xe&&(Xe.active=!1,ge(Ke,Te,Re,Ue)),Be&&Ki(Be,Re),Ki(()=>{Te.isUnmounted=!0},Re),Re&&Re.pendingBranch&&!Re.isUnmounted&&Te.asyncDep&&!Te.asyncResolved&&Te.suspenseId===Re.pendingId&&(Re.deps--,Re.deps===0&&Re.resolve())},be=(Te,Re,Ue,Ye=!1,De=!1,Xe=0)=>{for(let Ke=Xe;Ke<Te.length;Ke++)ge(Te[Ke],Re,Ue,Ye,De)},Me=Te=>Te.shapeFlag&6?Me(Te.component.subTree):Te.shapeFlag&128?Te.suspense.next():I(Te.anchor||Te.el);let Ie=!1;const Pe=(Te,Re,Ue)=>{Te==null?Re._vnode&&ge(Re._vnode,null,null,!0):p(Re._vnode||null,Te,Re,null,null,null,Ue),Ie||(Ie=!0,T1(),$x(),Ie=!1),Re._vnode=Te},Ae={p,um:ge,m:ae,r:Se,mt:j,mc:w,pc:re,pbc:V,n:Me,o:t};let ke,ve;return e&&([ke,ve]=e(Ae)),{render:Pe,hydrate:ke,createApp:G8(Pe,ke)}}function Ym({type:t,props:e},o){return o==="svg"&&t==="foreignObject"||o==="mathml"&&t==="annotation-xml"&&e&&e.encoding&&e.encoding.includes("html")?void 0:o}function ac({effect:t,update:e},o){t.allowRecurse=e.allowRecurse=o}function K8(t,e){return(!t||t&&!t.pendingBranch)&&e&&!e.persisted}function dP(t,e,o=!1){const _=t.children,l=e.children;if(rt(_)&&rt(l))for(let c=0;c<_.length;c++){const T=_[c];let E=l[c];E.shapeFlag&1&&!E.dynamicChildren&&((E.patchFlag<=0||E.patchFlag===32)&&(E=l[c]=Xl(l[c]),E.el=T.el),o||dP(T,E)),E.type===Ru&&(E.el=T.el)}}function z8(t){const e=t.slice(),o=[0];let _,l,c,T,E;const u=t.length;for(_=0;_<u;_++){const d=t[_];if(d!==0){if(l=o[o.length-1],t[l]<d){e[_]=l,o.push(_);continue}for(c=0,T=o.length-1;c<T;)E=c+T>>1,t[o[E]]<d?c=E+1:T=E;d<t[o[c]]&&(c>0&&(e[_]=o[c-1]),o[c]=_)}}for(c=o.length,T=o[c-1];c-- >0;)o[c]=T,T=e[T];return o}function s2(t){const e=t.subTree.component;if(e)return e.asyncDep&&!e.asyncResolved?e:s2(e)}const Z8=t=>t.__isTeleport,Wg=t=>t&&(t.disabled||t.disabled===""),L1=t=>typeof SVGElement<"u"&&t instanceof SVGElement,f1=t=>typeof MathMLElement=="function"&&t instanceof MathMLElement,AA=(t,e)=>{const o=t&&t.to;return vt(o)?e?e(o):null:o},j8={name:"Teleport",__isTeleport:!0,process(t,e,o,_,l,c,T,E,u,d){const{mc:O,pc:h,pbc:I,o:{insert:S,querySelector:L,createText:p,createComment:C}}=d,m=Wg(e.props);let{shapeFlag:A,children:b,dynamicChildren:N}=e;if(t==null){const U=e.el=p(""),P=e.anchor=p("");S(U,o,_),S(P,o,_);const G=e.target=AA(e.props,L),w=e.targetAnchor=p("");G&&(S(w,G),T==="svg"||L1(G)?T="svg":(T==="mathml"||f1(G))&&(T="mathml"));const F=(V,W)=>{A&16&&O(b,V,W,l,c,T,E,u)};m?F(o,P):G&&F(G,w)}else{e.el=t.el;const U=e.anchor=t.anchor,P=e.target=t.target,G=e.targetAnchor=t.targetAnchor,w=Wg(t.props),F=w?o:P,V=w?U:G;if(T==="svg"||L1(P)?T="svg":(T==="mathml"||f1(P))&&(T="mathml"),N?(I(t.dynamicChildren,N,F,l,c,T,E),dP(t,e,!0)):u||h(t,e,F,V,l,c,T,E,!1),m)w?e.props&&t.props&&e.props.to!==t.props.to&&(e.props.to=t.props.to):EM(e,o,U,d,1);else if((e.props&&e.props.to)!==(t.props&&t.props.to)){const W=e.target=AA(e.props,L);W&&EM(e,W,null,d,0)}else w&&EM(e,P,G,d,1)}i2(e)},remove(t,e,o,_,{um:l,o:{remove:c}},T){const{shapeFlag:E,children:u,anchor:d,targetAnchor:O,target:h,props:I}=t;if(h&&c(O),T&&c(d),E&16){const S=T||!Wg(I);for(let L=0;L<u.length;L++){const p=u[L];l(p,e,o,S,!!p.dynamicChildren)}}},move:EM,hydrate:q8};function EM(t,e,o,{o:{insert:_},m:l},c=2){c===0&&_(t.targetAnchor,e,o);const{el:T,anchor:E,shapeFlag:u,children:d,props:O}=t,h=c===2;if(h&&_(T,e,o),(!h||Wg(O))&&u&16)for(let I=0;I<d.length;I++)l(d[I],e,o,2);h&&_(E,e,o)}function q8(t,e,o,_,l,c,{o:{nextSibling:T,parentNode:E,querySelector:u}},d){const O=e.target=AA(e.props,u);if(O){const h=O._lpa||O.firstChild;if(e.shapeFlag&16)if(Wg(e.props))e.anchor=d(T(t),e,E(t),o,_,l,c),e.targetAnchor=h;else{e.anchor=T(t);let I=h;for(;I;)if(I=T(I),I&&I.nodeType===8&&I.data==="teleport anchor"){e.targetAnchor=I,O._lpa=e.targetAnchor&&T(e.targetAnchor);break}d(h,e,O,o,_,l,c)}i2(e)}return e.anchor&&T(e.anchor)}const Mu=j8;function i2(t){const e=t.ctx;if(e&&e.ut){let o=t.children[0].el;for(;o&&o!==t.targetAnchor;)o.nodeType===1&&o.setAttribute("data-v-owner",e.uid),o=o.nextSibling;e.ut()}}const ht=Symbol.for("v-fgt"),Ru=Symbol.for("v-txt"),Pi=Symbol.for("v-cmt"),Km=Symbol.for("v-stc"),Xg=[];let Er=null;function B(t=!1){Xg.push(Er=t?null:[])}function Q8(){Xg.pop(),Er=Xg[Xg.length-1]||null}let Od=1;function m1(t){Od+=t}function n2(t){return t.dynamicChildren=Od>0?Er||mE:null,Q8(),Od>0&&Er&&Er.push(t),t}function se(t,e,o,_,l,c){return n2(te(t,e,o,_,l,c,!0))}function Ne(t,e,o,_,l){return n2(ne(t,e,o,_,l,!0))}function Fo(t){return t?t.__v_isVNode===!0:!1}function Oc(t,e){return t.type===e.type&&t.key===e.key}const rS="__vInternal",r2=({key:t})=>t??null,rR=({ref:t,ref_key:e,ref_for:o})=>(typeof t=="number"&&(t=""+t),t!=null?vt(t)||bo(t)||At(t)?{i:$s,r:t,k:e,f:!!o}:t:null);function te(t,e=null,o=null,_=0,l=null,c=t===ht?0:1,T=!1,E=!1){const u={__v_isVNode:!0,__v_skip:!0,type:t,props:e,key:e&&r2(e),ref:e&&rR(e),scopeId:tS,slotScopeIds:null,children:o,component:null,suspense:null,ssContent:null,ssFallback:null,dirs:null,transition:null,el:null,anchor:null,target:null,targetAnchor:null,staticCount:0,shapeFlag:c,patchFlag:_,dynamicProps:l,dynamicChildren:null,appContext:null,ctx:$s};return E?(OP(u,o),c&128&&t.normalize(u)):o&&(u.shapeFlag|=vt(o)?8:16),Od>0&&!T&&Er&&(u.patchFlag>0||c&6)&&u.patchFlag!==32&&Er.push(u),u}const ne=J8;function J8(t,e=null,o=null,_=0,l=null,c=!1){if((!t||t===Hx)&&(t=Pi),Fo(t)){const E=Q_(t,e,!0);return o&&OP(E,o),Od>0&&!c&&Er&&(E.shapeFlag&6?Er[Er.indexOf(t)]=E:Er.push(E)),E.patchFlag|=-2,E}if(_6(t)&&(t=t.__vccOpts),e){e=iO(e);let{class:E,style:u}=e;E&&!vt(E)&&(e.class=k(E)),Zt(u)&&(Cx(u)&&!rt(u)&&(u=Gs({},u)),e.style=dt(u))}const T=vt(t)?1:h8(t)?128:Z8(t)?64:Zt(t)?4:At(t)?2:0;return te(t,e,o,_,l,T,c,!0)}function iO(t){return t?Cx(t)||rS in t?Gs({},t):t:null}function Q_(t,e,o=!1){const{props:_,ref:l,patchFlag:c,children:T}=t,E=e?Yt(_||{},e):_;return{__v_isVNode:!0,__v_skip:!0,type:t.type,props:E,key:E&&r2(E),ref:e&&e.ref?o&&l?rt(l)?l.concat(rR(e)):[l,rR(e)]:rR(e):l,scopeId:t.scopeId,slotScopeIds:t.slotScopeIds,children:T,target:t.target,targetAnchor:t.targetAnchor,staticCount:t.staticCount,shapeFlag:t.shapeFlag,patchFlag:e&&t.type!==ht?c===-1?16:c|16:c,dynamicProps:t.dynamicProps,dynamicChildren:t.dynamicChildren,appContext:t.appContext,dirs:t.dirs,transition:t.transition,component:t.component,suspense:t.suspense,ssContent:t.ssContent&&Q_(t.ssContent),ssFallback:t.ssFallback&&Q_(t.ssFallback),el:t.el,anchor:t.anchor,ctx:t.ctx,ce:t.ce}}function qt(t=" ",e=0){return ne(Ru,null,t,e)}function Ce(t="",e=!1){return e?(B(),Ne(Pi,null,t)):ne(Pi,null,t)}function Qr(t){return t==null||typeof t=="boolean"?ne(Pi):rt(t)?ne(ht,null,t.slice()):typeof t=="object"?Xl(t):ne(Ru,null,String(t))}function Xl(t){return t.el===null&&t.patchFlag!==-1||t.memo?t:Q_(t)}function OP(t,e){let o=0;const{shapeFlag:_}=t;if(e==null)e=null;else if(rt(e))o=16;else if(typeof e=="object")if(_&65){const l=e.default;l&&(l._c&&(l._d=!1),OP(t,l()),l._c&&(l._d=!0));return}else{o=32;const l=e._;!l&&!(rS in e)?e._ctx=$s:l===3&&$s&&($s.slots._===1?e._=1:(e._=2,t.patchFlag|=1024))}else At(e)?(e={default:e,_ctx:$s},o=32):(e=String(e),_&64?(o=16,e=[qt(e)]):o=8);t.children=e,t.shapeFlag|=o}function Yt(...t){const e={};for(let o=0;o<t.length;o++){const _=t[o];for(const l in _)if(l==="class")e.class!==_.class&&(e.class=k([e.class,_.class]));else if(l==="style")e.style=dt([e.style,_.style]);else if(ZI(l)){const c=e[l],T=_[l];T&&c!==T&&!(rt(c)&&c.includes(T))&&(e[l]=c?[].concat(c,T):T)}else l!==""&&(e[l]=_[l])}return e}function Kr(t,e,o,_=null){Hn(t,e,7,[o,_])}const e6=qx();let t6=0;function o6(t,e,o){const _=t.type,l=(e?e.appContext:t.appContext)||e6,c={uid:t6++,vnode:t,type:_,parent:e,appContext:l,root:null,next:null,subTree:null,effect:null,update:null,scope:new gx(!0),render:null,proxy:null,exposed:null,exposeProxy:null,withProxy:null,provides:e?e.provides:Object.create(l.provides),accessCache:null,renderCache:[],components:null,directives:null,propsOptions:Jx(_,l),emitsOptions:wx(_,l),emit:null,emitted:null,propsDefaults:Ts,inheritAttrs:_.inheritAttrs,ctx:Ts,data:Ts,props:Ts,attrs:Ts,slots:Ts,refs:Ts,setupState:Ts,setupContext:null,attrsProxy:null,slotsProxy:null,suspense:o,suspenseId:o?o.pendingId:0,asyncDep:null,asyncResolved:!1,isMounted:!1,isUnmounted:!1,isDeactivated:!1,bc:null,c:null,bm:null,m:null,bu:null,u:null,um:null,bum:null,da:null,a:null,rtg:null,rtc:null,ec:null,sp:null};return c.ctx={_:c},c.root=e?e.root:c,c.emit=T8.bind(null,c),t.ce&&t.ce(c),c}let js=null;const Ht=()=>js||$s;let QR,bA;{const t=cx(),e=(o,_)=>{let l;return(l=t[o])||(l=t[o]=[]),l.push(_),c=>{l.length>1?l.forEach(T=>T(c)):l[0](c)}};QR=e("__VUE_INSTANCE_SETTERS__",o=>js=o),bA=e("__VUE_SSR_SETTERS__",o=>_S=o)}const nO=t=>{const e=js;return QR(t),t.scope.on(),()=>{t.scope.off(),QR(e)}},C1=()=>{js&&js.scope.off(),QR(null)};function _2(t){return t.vnode.shapeFlag&4}let _S=!1;function s6(t,e=!1){e&&bA(e);const{props:o,children:_}=t.vnode,l=_2(t);H8(t,o,l,e),V8(t,_);const c=l?i6(t,e):void 0;return e&&bA(!1),c}function i6(t,e){const o=t.type;t.accessCache=Object.create(null),t.proxy=z_(new Proxy(t.ctx,v8));const{setup:_}=o;if(_){const l=t.setupContext=_.length>1?a2(t):null,c=nO(t);qc();const T=_a(_,t,0,[t.props,l]);if(Qc(),c(),ad(T)){if(T.then(C1,C1),e)return T.then(E=>{A1(t,E,e)}).catch(E=>{JI(E,t,0)});t.asyncDep=T}else A1(t,T,e)}else l2(t,e)}function A1(t,e,o){At(e)?t.type.__ssrInlineRender?t.ssrRender=e:t.render=e:Zt(e)&&(t.setupState=vx(e)),l2(t,o)}let b1;function l2(t,e,o){const _=t.type;if(!t.render){if(!e&&b1&&!_.render){const l=_.template||uP(t).template;if(l){const{isCustomElement:c,compilerOptions:T}=t.appContext.config,{delimiters:E,compilerOptions:u}=_,d=Gs(Gs({isCustomElement:c,delimiters:E},T),u);_.render=b1(l,d)}}t.render=_.render||Ro}{const l=nO(t);qc();try{D8(t)}finally{Qc(),l()}}}function n6(t){return t.attrsProxy||(t.attrsProxy=new Proxy(t.attrs,{get(e,o){return on(t,"get","$attrs"),e[o]}}))}function a2(t){const e=o=>{t.exposed=o||{}};return{get attrs(){return n6(t)},slots:t.slots,emit:t.emit,expose:e}}function lS(t){if(t.exposed)return t.exposeProxy||(t.exposeProxy=new Proxy(vx(z_(t.exposed)),{get(e,o){if(o in e)return e[o];if(o in Vg)return Vg[o](t)},has(e,o){return o in e||o in Vg}}))}function r6(t,e=!0){return At(t)?t.displayName||t.name:t.name||e&&t.__name}function _6(t){return At(t)&&"__vccOpts"in t}const v=(t,e)=>bx(t,e,_S);function pt(t,e,o){const _=arguments.length;return _===2?Zt(e)&&!rt(e)?Fo(e)?ne(t,null,[e]):ne(t,e):ne(t,null,e):(_>3?o=Array.prototype.slice.call(arguments,2):_===3&&Fo(o)&&(o=[o]),ne(t,e,o))}const l6="3.4.10",a6=Ro;/**
- * @vue/runtime-dom v3.4.10
- * (c) 2018-present Yuxi (Evan) You and Vue contributors
- * @license MIT
- **/const c6="http://www.w3.org/2000/svg",T6="http://www.w3.org/1998/Math/MathML",Yl=typeof document<"u"?document:null,N1=Yl&&Yl.createElement("template"),E6={insert:(t,e,o)=>{e.insertBefore(t,o||null)},remove:t=>{const e=t.parentNode;e&&e.removeChild(t)},createElement:(t,e,o,_)=>{const l=e==="svg"?Yl.createElementNS(c6,t):e==="mathml"?Yl.createElementNS(T6,t):Yl.createElement(t,o?{is:o}:void 0);return t==="select"&&_&&_.multiple!=null&&l.setAttribute("multiple",_.multiple),l},createText:t=>Yl.createTextNode(t),createComment:t=>Yl.createComment(t),setText:(t,e)=>{t.nodeValue=e},setElementText:(t,e)=>{t.textContent=e},parentNode:t=>t.parentNode,nextSibling:t=>t.nextSibling,querySelector:t=>Yl.querySelector(t),setScopeId(t,e){t.setAttribute(e,"")},insertStaticContent(t,e,o,_,l,c){const T=o?o.previousSibling:e.lastChild;if(l&&(l===c||l.nextSibling))for(;e.insertBefore(l.cloneNode(!0),o),!(l===c||!(l=l.nextSibling)););else{N1.innerHTML=_==="svg"?`<svg>${t}</svg>`:_==="mathml"?`<math>${t}</math>`:t;const E=N1.content;if(_==="svg"||_==="mathml"){const u=E.firstChild;for(;u.firstChild;)E.appendChild(u.firstChild);E.removeChild(u)}e.insertBefore(E,o)}return[T?T.nextSibling:e.firstChild,o?o.previousSibling:e.lastChild]}},yl="transition",Mg="animation",FE=Symbol("_vtc"),Ns=(t,{slots:e})=>pt(L8,T2(t),e);Ns.displayName="Transition";const c2={name:String,type:String,css:{type:Boolean,default:!0},duration:[String,Number,Object],enterFromClass:String,enterActiveClass:String,enterToClass:String,appearFromClass:String,appearActiveClass:String,appearToClass:String,leaveFromClass:String,leaveActiveClass:String,leaveToClass:String},u6=Ns.props=Gs({},Vx,c2),cc=(t,e=[])=>{rt(t)?t.forEach(o=>o(...e)):t&&t(...e)},P1=t=>t?rt(t)?t.some(e=>e.length>1):t.length>1:!1;function T2(t){const e={};for(const K in t)K in c2||(e[K]=t[K]);if(t.css===!1)return e;const{name:o="v",type:_,duration:l,enterFromClass:c=`${o}-enter-from`,enterActiveClass:T=`${o}-enter-active`,enterToClass:E=`${o}-enter-to`,appearFromClass:u=c,appearActiveClass:d=T,appearToClass:O=E,leaveFromClass:h=`${o}-leave-from`,leaveActiveClass:I=`${o}-leave-active`,leaveToClass:S=`${o}-leave-to`}=t,L=g6(l),p=L&&L[0],C=L&&L[1],{onBeforeEnter:m,onEnter:A,onEnterCancelled:b,onLeave:N,onLeaveCancelled:U,onBeforeAppear:P=m,onAppear:G=A,onAppearCancelled:w=b}=e,F=(K,ee,j)=>{Gl(K,ee?O:E),Gl(K,ee?d:T),j&&j()},V=(K,ee)=>{K._isLeaving=!1,Gl(K,h),Gl(K,S),Gl(K,I),ee&&ee()},W=K=>(ee,j)=>{const J=K?G:A,ie=()=>F(ee,K,j);cc(J,[ee,ie]),v1(()=>{Gl(ee,K?u:c),F_(ee,K?O:E),P1(J)||D1(ee,_,p,ie)})};return Gs(e,{onBeforeEnter(K){cc(m,[K]),F_(K,c),F_(K,T)},onBeforeAppear(K){cc(P,[K]),F_(K,u),F_(K,d)},onEnter:W(!1),onAppear:W(!0),onLeave(K,ee){K._isLeaving=!0;const j=()=>V(K,ee);F_(K,h),u2(),F_(K,I),v1(()=>{K._isLeaving&&(Gl(K,h),F_(K,S),P1(N)||D1(K,_,C,j))}),cc(N,[K,j])},onEnterCancelled(K){F(K,!1),cc(b,[K])},onAppearCancelled(K){F(K,!0),cc(w,[K])},onLeaveCancelled(K){V(K),cc(U,[K])}})}function g6(t){if(t==null)return null;if(Zt(t))return[zm(t.enter),zm(t.leave)];{const e=zm(t);return[e,e]}}function zm(t){return A5(t)}function F_(t,e){e.split(/\s+/).forEach(o=>o&&t.classList.add(o)),(t[FE]||(t[FE]=new Set)).add(e)}function Gl(t,e){e.split(/\s+/).forEach(_=>_&&t.classList.remove(_));const o=t[FE];o&&(o.delete(e),o.size||(t[FE]=void 0))}function v1(t){requestAnimationFrame(()=>{requestAnimationFrame(t)})}let d6=0;function D1(t,e,o,_){const l=t._endId=++d6,c=()=>{l===t._endId&&_()};if(o)return setTimeout(c,o);const{type:T,timeout:E,propCount:u}=E2(t,e);if(!T)return _();const d=T+"end";let O=0;const h=()=>{t.removeEventListener(d,I),c()},I=S=>{S.target===t&&++O>=u&&h()};setTimeout(()=>{O<u&&h()},E+1),t.addEventListener(d,I)}function E2(t,e){const o=window.getComputedStyle(t),_=L=>(o[L]||"").split(", "),l=_(`${yl}Delay`),c=_(`${yl}Duration`),T=U1(l,c),E=_(`${Mg}Delay`),u=_(`${Mg}Duration`),d=U1(E,u);let O=null,h=0,I=0;e===yl?T>0&&(O=yl,h=T,I=c.length):e===Mg?d>0&&(O=Mg,h=d,I=u.length):(h=Math.max(T,d),O=h>0?T>d?yl:Mg:null,I=O?O===yl?c.length:u.length:0);const S=O===yl&&/\b(transform|all)(,|$)/.test(_(`${yl}Property`).toString());return{type:O,timeout:h,propCount:I,hasTransform:S}}function U1(t,e){for(;t.length<e.length;)t=t.concat(t);return Math.max(...e.map((o,_)=>y1(o)+y1(t[_])))}function y1(t){return t==="auto"?0:Number(t.slice(0,-1).replace(",","."))*1e3}function u2(){return document.body.offsetHeight}function O6(t,e,o){const _=t[FE];_&&(e=(e?[e,..._]:[..._]).join(" ")),e==null?t.removeAttribute("class"):o?t.setAttribute("class",e):t.className=e}const hP=Symbol("_vod"),ao={beforeMount(t,{value:e},{transition:o}){t[hP]=t.style.display==="none"?"":t.style.display,o&&e?o.beforeEnter(t):Rg(t,e)},mounted(t,{value:e},{transition:o}){o&&e&&o.enter(t)},updated(t,{value:e,oldValue:o},{transition:_}){!e!=!o&&(_?e?(_.beforeEnter(t),Rg(t,!0),_.enter(t)):_.leave(t,()=>{Rg(t,!1)}):Rg(t,e))},beforeUnmount(t,{value:e}){Rg(t,e)}};function Rg(t,e){t.style.display=e?t[hP]:"none"}const h6=Symbol("");function M6(t,e,o){const _=t.style,l=_.display,c=vt(o);if(o&&!c){if(e&&!vt(e))for(const T in e)o[T]==null&&NA(_,T,"");for(const T in o)NA(_,T,o[T])}else if(c){if(e!==o){const T=_[h6];T&&(o+=";"+T),_.cssText=o}}else e&&t.removeAttribute("style");hP in t&&(_.display=l)}const $1=/\s*!important$/;function NA(t,e,o){if(rt(o))o.forEach(_=>NA(t,e,_));else if(o==null&&(o=""),e.startsWith("--"))t.setProperty(e,o);else{const _=R6(t,e);$1.test(o)?t.setProperty(Aa(_),o.replace($1,""),"important"):t[_]=o}}const B1=["Webkit","Moz","ms"],Zm={};function R6(t,e){const o=Zm[e];if(o)return o;let _=bn(e);if(_!=="filter"&&_ in t)return Zm[e]=_;_=sO(_);for(let l=0;l<B1.length;l++){const c=B1[l]+_;if(c in t)return Zm[e]=c}return e}const w1="http://www.w3.org/1999/xlink";function I6(t,e,o,_,l){if(_&&e.startsWith("xlink:"))o==null?t.removeAttributeNS(w1,e.slice(6,e.length)):t.setAttributeNS(w1,e,o);else{const c=U5(e);o==null||c&&!Tx(o)?t.removeAttribute(e):t.setAttribute(e,c?"":o)}}function S6(t,e,o,_,l,c,T){if(e==="innerHTML"||e==="textContent"){_&&T(_,l,c),t[e]=o??"";return}const E=t.tagName;if(e==="value"&&E!=="PROGRESS"&&!E.includes("-")){t._value=o;const d=E==="OPTION"?t.getAttribute("value"):t.value,O=o??"";d!==O&&(t.value=O),o==null&&t.removeAttribute(e);return}let u=!1;if(o===""||o==null){const d=typeof t[e];d==="boolean"?o=Tx(o):o==null&&d==="string"?(o="",u=!0):d==="number"&&(o=0,u=!0)}try{t[e]=o}catch{}u&&t.removeAttribute(e)}function ql(t,e,o,_){t.addEventListener(e,o,_)}function p6(t,e,o,_){t.removeEventListener(e,o,_)}const G1=Symbol("_vei");function L6(t,e,o,_,l=null){const c=t[G1]||(t[G1]={}),T=c[e];if(_&&T)T.value=_;else{const[E,u]=f6(e);if(_){const d=c[e]=A6(_,l);ql(t,E,d,u)}else T&&(p6(t,E,T,u),c[e]=void 0)}}const k1=/(?:Once|Passive|Capture)$/;function f6(t){let e;if(k1.test(t)){e={};let _;for(;_=t.match(k1);)t=t.slice(0,t.length-_[0].length),e[_[0].toLowerCase()]=!0}return[t[2]===":"?t.slice(3):Aa(t.slice(2)),e]}let jm=0;const m6=Promise.resolve(),C6=()=>jm||(m6.then(()=>jm=0),jm=Date.now());function A6(t,e){const o=_=>{if(!_._vts)_._vts=Date.now();else if(_._vts<=o.attached)return;Hn(b6(_,o.value),e,5,[_])};return o.value=t,o.attached=C6(),o}function b6(t,e){if(rt(e)){const o=t.stopImmediatePropagation;return t.stopImmediatePropagation=()=>{o.call(t),t._stopped=!0},e.map(_=>l=>!l._stopped&&_&&_(l))}else return e}const H1=t=>t.charCodeAt(0)===111&&t.charCodeAt(1)===110&&t.charCodeAt(2)>96&&t.charCodeAt(2)<123,N6=(t,e,o,_,l,c,T,E,u)=>{const d=l==="svg";e==="class"?O6(t,_,d):e==="style"?M6(t,o,_):ZI(e)?KN(e)||L6(t,e,o,_,T):(e[0]==="."?(e=e.slice(1),!0):e[0]==="^"?(e=e.slice(1),!1):P6(t,e,_,d))?S6(t,e,_,c,T,E,u):(e==="true-value"?t._trueValue=_:e==="false-value"&&(t._falseValue=_),I6(t,e,_,d))};function P6(t,e,o,_){if(_)return!!(e==="innerHTML"||e==="textContent"||e in t&&H1(e)&&At(o));if(e==="spellcheck"||e==="draggable"||e==="translate"||e==="form"||e==="list"&&t.tagName==="INPUT"||e==="type"&&t.tagName==="TEXTAREA")return!1;if(e==="width"||e==="height"){const l=t.tagName;if(l==="IMG"||l==="VIDEO"||l==="CANVAS"||l==="SOURCE")return!1}return H1(e)&&vt(o)?!1:e in t}const g2=new WeakMap,d2=new WeakMap,JR=Symbol("_moveCb"),x1=Symbol("_enterCb"),O2={name:"TransitionGroup",props:Gs({},u6,{tag:String,moveClass:String}),setup(t,{slots:e}){const o=Ht(),_=Fx();let l,c;return _l(()=>{if(!l.length)return;const T=t.moveClass||`${t.name||"v"}-move`;if(!$6(l[0].el,o.vnode.el,T))return;l.forEach(D6),l.forEach(U6);const E=l.filter(y6);u2(),E.forEach(u=>{const d=u.el,O=d.style;F_(d,T),O.transform=O.webkitTransform=O.transitionDuration="";const h=d[JR]=I=>{I&&I.target!==d||(!I||/transform$/.test(I.propertyName))&&(d.removeEventListener("transitionend",h),d[JR]=null,Gl(d,T))};d.addEventListener("transitionend",h)})}),()=>{const T=Mo(t),E=T2(T);let u=T.tag||ht;l=c,c=e.default?EP(e.default()):[];for(let d=0;d<c.length;d++){const O=c[d];O.key!=null&&gd(O,ud(O,E,_,o))}if(l)for(let d=0;d<l.length;d++){const O=l[d];gd(O,ud(O,E,_,o)),g2.set(O,O.el.getBoundingClientRect())}return ne(u,null,c)}}},v6=t=>delete t.mode;O2.props;const h2=O2;function D6(t){const e=t.el;e[JR]&&e[JR](),e[x1]&&e[x1]()}function U6(t){d2.set(t,t.el.getBoundingClientRect())}function y6(t){const e=g2.get(t),o=d2.get(t),_=e.left-o.left,l=e.top-o.top;if(_||l){const c=t.el.style;return c.transform=c.webkitTransform=`translate(${_}px,${l}px)`,c.transitionDuration="0s",t}}function $6(t,e,o){const _=t.cloneNode(),l=t[FE];l&&l.forEach(E=>{E.split(/\s+/).forEach(u=>u&&_.classList.remove(u))}),o.split(/\s+/).forEach(E=>E&&_.classList.add(E)),_.style.display="none";const c=e.nodeType===1?e:e.parentNode;c.appendChild(_);const{hasTransform:T}=E2(_);return c.removeChild(_),T}const VE=t=>{const e=t.props["onUpdate:modelValue"]||!1;return rt(e)?o=>nR(e,o):e};function B6(t){t.target.composing=!0}function F1(t){const e=t.target;e.composing&&(e.composing=!1,e.dispatchEvent(new Event("input")))}const Z_=Symbol("_assign"),MP={created(t,{modifiers:{lazy:e,trim:o,number:_}},l){t[Z_]=VE(l);const c=_||l.props&&l.props.type==="number";ql(t,e?"change":"input",T=>{if(T.target.composing)return;let E=t.value;o&&(E=E.trim()),c&&(E=OA(E)),t[Z_](E)}),o&&ql(t,"change",()=>{t.value=t.value.trim()}),e||(ql(t,"compositionstart",B6),ql(t,"compositionend",F1),ql(t,"change",F1))},mounted(t,{value:e}){t.value=e??""},beforeUpdate(t,{value:e,modifiers:{lazy:o,trim:_,number:l}},c){if(t[Z_]=VE(c),t.composing)return;const T=l||t.type==="number"?OA(t.value):t.value,E=e??"";T!==E&&(document.activeElement===t&&t.type!=="range"&&(o||_&&t.value.trim()===E)||(t.value=E))}},eI={deep:!0,created(t,e,o){t[Z_]=VE(o),ql(t,"change",()=>{const _=t._modelValue,l=R2(t),c=t.checked,T=t[Z_];if(rt(_)){const E=Ex(_,l),u=E!==-1;if(c&&!u)T(_.concat(l));else if(!c&&u){const d=[..._];d.splice(E,1),T(d)}}else if(jI(_)){const E=new Set(_);c?E.add(l):E.delete(l),T(E)}else T(I2(t,c))})},mounted:V1,beforeUpdate(t,e,o){t[Z_]=VE(o),V1(t,e,o)}};function V1(t,{value:e,oldValue:o},_){t._modelValue=e,rt(e)?t.checked=Ex(e,_.props.value)>-1:jI(e)?t.checked=e.has(_.props.value):e!==o&&(t.checked=HE(e,I2(t,!0)))}const M2={created(t,{value:e},o){t.checked=HE(e,o.props.value),t[Z_]=VE(o),ql(t,"change",()=>{t[Z_](R2(t))})},beforeUpdate(t,{value:e,oldValue:o},_){t[Z_]=VE(_),e!==o&&(t.checked=HE(e,_.props.value))}};function R2(t){return"_value"in t?t._value:t.value}function I2(t,e){const o=e?"_trueValue":"_falseValue";return o in t?t[o]:e}const w6=["ctrl","shift","alt","meta"],G6={stop:t=>t.stopPropagation(),prevent:t=>t.preventDefault(),self:t=>t.target!==t.currentTarget,ctrl:t=>!t.ctrlKey,shift:t=>!t.shiftKey,alt:t=>!t.altKey,meta:t=>!t.metaKey,left:t=>"button"in t&&t.button!==0,middle:t=>"button"in t&&t.button!==1,right:t=>"button"in t&&t.button!==2,exact:(t,e)=>w6.some(o=>t[`${o}Key`]&&!e.includes(o))},Ct=(t,e)=>{const o=t._withMods||(t._withMods={}),_=e.join(".");return o[_]||(o[_]=(l,...c)=>{for(let T=0;T<e.length;T++){const E=G6[e[T]];if(E&&E(l,e))return}return t(l,...c)})},k6={esc:"escape",space:" ",up:"arrow-up",left:"arrow-left",right:"arrow-right",down:"arrow-down",delete:"backspace"},So=(t,e)=>{const o=t._withKeys||(t._withKeys={}),_=e.join(".");return o[_]||(o[_]=l=>{if(!("key"in l))return;const c=Aa(l.key);if(e.some(T=>T===c||k6[T]===c))return t(l)})},H6=Gs({patchProp:N6},E6);let W1;function S2(){return W1||(W1=X8(H6))}const WE=(...t)=>{S2().render(...t)},p2=(...t)=>{const e=S2().createApp(...t),{mount:o}=e;return e.mount=_=>{const l=F6(_);if(!l)return;const c=e._component;!At(c)&&!c.render&&!c.template&&(c.template=l.innerHTML),l.innerHTML="";const T=o(l,!1,x6(l));return l instanceof Element&&(l.removeAttribute("v-cloak"),l.setAttribute("data-v-app","")),T},e};function x6(t){if(t instanceof SVGElement)return"svg";if(typeof MathMLElement=="function"&&t instanceof MathMLElement)return"mathml"}function F6(t){return vt(t)?document.querySelector(t):t}var Is=typeof globalThis<"u"?globalThis:typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{};function Sr(t){return t&&t.__esModule&&Object.prototype.hasOwnProperty.call(t,"default")?t.default:t}var L2={exports:{}},qm={exports:{}},Qm={exports:{}},Jm={exports:{}},eC={exports:{}},X1;function aS(){return X1||(X1=1,function(t,e){(function(o,_){t.exports=_()})(Is,function(){var o={},_,l,c,T,E,u,d,O,h,I,S,L,p,C,m,A,b,N,U,P,G,w,F,V,W,K,ee,j,J,ie,Y,re,H,Q,ae,ge,Se,pe,We,be,Me,Ie,Pe,Ae,ke,ve,Te,Re,Ue,Ye,De,Xe,Ke,Be,qe,xe,Le,je,He,Je,St,Ot,Nt,z,y,x,oe,Ee,_e,ze,_t,wt,Ho,_o,Ko,no,io,go,zo,q,ue,D,Z,he,ce,Ge,It,bt,wo,Wo,ps,Ls,ei,L_,nt,jt,to,co,Qn,f_,wO,GO,bu,FD,kO,VD,WD,HO,XD,ap,lT,YD,xO,cp,Tp,KD,FO,aT,VO,zD,Ep,up,ZD,jD,ya,qD,WO,XO,QD,gp,Nu,Ar,JD,dp,YO,eU,Op,tU,hp,Pu,oU,sU,gl,Mp,br,iU,nU,rU,dl,Rp,_U,lU,aU,cU,TU,Ip,EU,uU,KO,gU,dU,Sp,zO,ZO,OU,Nr,hU,MU,RU,IU,SU,pU,LU,pp,Ol,cT,Lp,fU,mU,CU,AU,bU,NU,PU,vU,fp,DU,UU,yU,$U,BU,wU,TT,mp,GU,kU,Jn,is,$a,HU,Cp,jO,Nn,Ap,qO,bp,Np,xU,FU,VU,Pp,WU,vp,vu,XU,YU,KU,zU,Du,Dp,Up,yp,ZU,ET,$p,uT,Bp,wp,Gp,gT,QO,JO,jU,Uu,kp,Hp,xp,Fp,Vp,Wp,qU,yu,Xp,dT,eh,er,Yp,Kp,zp,Zp,jp,qp,Qp,OT,QU,$u,Jp,eL,JU,th,tL,ey,ty,oy,sy,iy,hT,oL,sL,MT,oh,ny,ry,iL,nL,m_,rL,_L,_y,ly,ay,cy,C_,hl,sh,lL,ih,aL,Ml,Bu,nh,rh,Ba,cL,_h,TL,Ms,Ty,RT,Rl,lh,ln,Ey,uy,gy,dy,EL,Oy,uL,ah,hy,My,Ry,gL,ch,dL,Th,Iy,Sy,py,Ly,Wt,ki,ti,ns,Pr,IT,Ut,fs,OL,fy,Eh,hL,my,ML,uh,RL,IL,Cy,SL,Ay,pL,wu,by,Ny,Py,ST,vy,LL,fL,mL,CL,gh,AL,Gu,bL,NL,PL,vL,DL,UL,yL,$L,BL,wL,GL,kL,Dy,Uy,pT,HL,yy,dh,xL,FL,VL,WL,XL,YL,KL,zL,Oh,ku,ZL,$y,jL,qL,QL,JL,ef,tf,of,By,sf,wy,Gy,ky,Hy,xy,Fy,Vy,Wy,Xy,Yy,Ky,Qt;_=function(n,a,g,R){if(!(n instanceof Mt)&&typeof n!="string"||`${n}`.trim()==="")throw Error('Invalid type "'+n+'". The type must be a non-empty string or a Blockly.registry.Type.');if(n=`${n}`.toLowerCase(),typeof a!="string"||a.trim()==="")throw Error('Invalid name "'+a+'". The name must be a non-empty string.');const f=a.toLowerCase();if(!g)throw Error("Can not register a null value");let $=Il[n],le=hh[n];if($||($=Il[n]=Object.create(null),le=hh[n]=Object.create(null)),l(n,g),!R&&$[f])throw Error('Name "'+f+'" with type "'+n+'" already registered.');$[f]=g,le[f]=a},l=function(n,a){switch(n){case String(Mt.FIELD):if(typeof a.fromJson!="function")throw Error('Type "'+n+'" must have a fromJson function')}},c=function(n,a){n=`${n}`.toLowerCase(),a=a.toLowerCase();const g=Il[n];g&&g[a]?(delete Il[n][a],delete hh[n][a]):console.warn("Unable to unregister ["+a+"]["+n+"] from the registry.")},T=function(n,a,g){n=`${n}`.toLowerCase(),a=a.toLowerCase();const R=Il[n];if(!R||!R[a]){if(a="Unable to find ["+a+"]["+n+"] in the registry.",g)throw Error(a+" You must require or register a "+n+" plugin.");return console.warn(a),null}return R[a]},E=function(n,a){return n=`${n}`.toLowerCase(),a=a.toLowerCase(),(n=Il[n])?!!n[a]:!1},u=function(n,a,g){return T(n,a,g)},d=function(n,a,g){return T(n,a,g)},O=function(n,a,g){n=`${n}`.toLowerCase();var R=Il[n];if(!R){if(R=`Unable to find [${n}] in the registry.`,g)throw Error(`${R} You must require or register a ${n} plugin.`);return console.warn(R),null}if(!a)return R;n=hh[n],g=Object.create(null);for(const f of Object.keys(R))g[n[f]]=R[f];return g},h=function(n,a,g){return a=a.plugins[String(n)]||A_,typeof a=="function"?a:u(n,a,g)},I=function(n){return Hu[n]||null},S=function(){const n=[];for(const a in Hu)n.push(Hu[a]);return n},L=function(n){Hu[n.id]=n},p=function(n){delete Hu[n.id]},C=function(){return zy},m=function(n){zy=n},A=function(){return Zy},b=function(n){Zy=n},N=function(){return jy},U=function(n){jy=n},P=function(n){for(;n.options.parentWorkspace;)n=n.options.parentWorkspace;const a=n.getParentSvg(),g=n.getCachedParentSvgSize();var R=a.parentElement;if(R instanceof HTMLElement){var f=R.offsetWidth;R=R.offsetHeight,g.width!==f&&(a.setAttribute("width",f+"px"),n.setCachedParentSvgSize(f,null)),g.height!==R&&(a.setAttribute("height",R+"px"),n.setCachedParentSvgSize(null,R)),n.resize()}},G=function(n,a){const g=Object.create(null),R=n.getDescendants(!0);a&&(n=n.getNextBlock())&&(n=R.indexOf(n),R.splice(n,R.length-n));for(let f=0,$;$=R[f];f++)g[$.type]?g[$.type]++:g[$.type]=1;return g},w=function(n){return function(){this.jsonInit(n)}},F=function(n){qy.defineBlocksWithJsonArrayInternal(n)},V=function(n){o.defineBlocks$$module$build$src$core$common(o.createBlockDefinitionsFromJsonArray$$module$build$src$core$common(n))},o.createBlockDefinitionsFromJsonArray$$module$build$src$core$common=function(n){const a={};for(let g=0;g<n.length;g++){const R=n[g];if(!R){console.warn(`Block definition #${g} in JSON array is ${R}. Skipping`);continue}const f=R.type;f?a[f]={init:w(R)}:console.warn(`Block definition #${g} in JSON array is missing a type attribute. Skipping.`)}return a},o.defineBlocks$$module$build$src$core$common=function(n){for(const a of Object.keys(n)){const g=n[a];a in Hi&&console.warn(`Block definiton "${a}" overwrites previous definition.`),Hi[a]=g}},W=function(){return"blockly-"+(Lz++).toString(36)},K=function(){return Jy.genUid()},ee=function(n){fT=n},j=function(){return fT},J=function(n){Sh.fireInternal(n)},ie=function(n){if(Q()){if(!xa.length)try{requestAnimationFrame(()=>{setTimeout(Y,0)})}catch{setTimeout(Y,0)}xa.push(n)}},Y=function(){var n=re(xa,!0);xa.length=0;for(let g=0,R;R=n[g];g++)if(R.workspaceId){var a=I(R.workspaceId);a&&a.fireChangeListener(R)}n=new Set(n.map(g=>g.workspaceId));for(const g of n){if(!g||(n=I(g),!n))continue;n=n.getUndoStack();let R;for(a=n.length;0<a;a--){const f=n[a-1];if(f.group==="")break;if(R===void 0)R=f.group;else if(f.group!==R)break}R&&a!=n.length-1&&(a=n.splice(a,n.length-a),a=re(a,!0),n.push(...a))}},re=function(n,a){n=n.slice(),a||n.reverse();const g=[],R=Object.create(null);for(let le=0,fe;fe=n[le];le++)if(!fe.isNull()){var f=[fe.isUiEvent?Rh:fe.type,fe.blockId,fe.workspaceId].join(" "),$=R[f];const it=$?$.event:null;$?fe.type===o.MOVE$$module$build$src$core$events$utils&&$.index===le-1?(f=fe,it.newParentId=f.newParentId,it.newInputName=f.newInputName,it.newCoordinate=f.newCoordinate,f.reason&&(it.reason?(f=new Set(f.reason.concat(it.reason)),it.reason=Array.from(f)):it.reason=f.reason),$.index=le):fe.type===o.CHANGE$$module$build$src$core$events$utils&&fe.element===it.element&&fe.name===it.name?it.newValue=fe.newValue:fe.type===Ll?($=fe,it.viewTop=$.viewTop,it.viewLeft=$.viewLeft,it.scale=$.scale,it.oldScale=$.oldScale):(fe.type!==P_||it.type!==vr)&&(R[f]={event:fe,index:le},g.push(fe)):(R[f]={event:fe,index:le},g.push(fe))}n=g.filter(function(le){return!le.isNull()}),a||n.reverse();for(let le=1,fe;fe=n[le];le++)fe.type===o.CHANGE$$module$build$src$core$events$utils&&fe.element==="mutation"&&n.unshift(n.splice(le,1)[0]);return n},H=function(){for(let n=0,a;a=xa[n];n++)a.recordUndo=!1},o.disable$$module$build$src$core$events$utils=function(){Mh++},o.enable$$module$build$src$core$events$utils=function(){Mh--},Q=function(){return Mh===0},o.getGroup$$module$build$src$core$events$utils=function(){return rf},o.setGroup$$module$build$src$core$events$utils=function(n){Sh.setGroupInternal(n)},ae=function(n){rf=typeof n=="boolean"?n?K():"":n},ge=function(n){const a=[];n=n.getDescendants(!1);for(let g=0,R;R=n[g];g++)a[g]=R.id;return a},Se=function(n,a){const g=pe(n.type);if(!g)throw Error("Unknown event type.");return g.fromJson(n,a)},pe=function(n){const a=u(Mt.EVENT,n);if(!a)throw Error(`Event type ${n} not found in registry.`);return a},We=function(n){if((n.type===o.MOVE$$module$build$src$core$events$utils||n.type===o.CREATE$$module$build$src$core$events$utils)&&n.workspaceId){var a=I(n.workspaceId);if(!n.blockId)throw Error("Encountered a blockEvent without a proper blockId");if(n=a.getBlockById(n.blockId)){const g=fT;try{fT=!1;const R=n.getParent();if(R&&R.isEnabled()){const f=n.getDescendants(!1);for(let $=0,le;le=f[$];$++)le.setEnabled(!0)}else if((n.outputConnection||n.previousConnection)&&!a.isDragging())do n.setEnabled(!1),n=n.getNextBlock();while(n)}finally{fT=g}}}},be=function(n,a){Me(),Lh=setTimeout(function(){a&&a.handleRightClick(n)},fz)},Me=function(){Lh&&(clearTimeout(Lh),Lh=0)},Ie=function(){ph=null},Pe=function(n){return!n.type.startsWith("pointer")||n instanceof PointerEvent&&ke(n)},Ae=function(n){return`${n.pointerId}`},ke=function(n){const a=Ae(n);return ph?ph===a:n.type==="pointerdown"?(ph=a,!0):!1},ve=function(n,a,g,R,f){function $(fe){(f||Pe(fe))&&(g?R.call(g,fe):R(fe))}const le=[];if(a in Fa)for(let fe=0;fe<Fa[a].length;fe++){const it=Fa[a][fe];n.addEventListener(it,$,!1),le.push([n,it,$])}else n.addEventListener(a,$,!1),le.push([n,a,$]);return le},Te=function(n,a,g,R){function f(le){g?R.call(g,le):R(le)}const $=[];if(a in Fa)for(let le=0;le<Fa[a].length;le++){const fe=Fa[a][le];n.addEventListener(fe,f,!1),$.push([n,fe,f])}else n.addEventListener(a,f,!1),$.push([n,a,f]);return $},Re=function(n){const a=n[n.length-1][2];for(;n.length;){const[g,R,f]=n.pop();g.removeEventListener(R,f,!1)}return a},Ue=function(n){if(n.target instanceof HTMLElement){if(n.target.isContentEditable||n.target.getAttribute("data-is-text-input")==="true")return!0;if(n.target instanceof HTMLInputElement)return n=n.target,n.type==="text"||n.type==="number"||n.type==="email"||n.type==="password"||n.type==="search"||n.type==="tel"||n.type==="url";if(n.target instanceof HTMLTextAreaElement)return!0}return!1},Ye=function(n){return n.ctrlKey&&Ef?!0:n.button===2},De=function(n,a,g){const R=a.createSVGPoint();return R.x=n.clientX,R.y=n.clientY,g||(g=a.getScreenCTM().inverse()),R.matrixTransform(g)},Xe=function(n){switch(n.deltaMode){default:return{x:n.deltaX,y:n.deltaY};case 1:return{x:n.deltaX*a0,y:n.deltaY*a0};case 2:return{x:n.deltaX*c0,y:n.deltaY*c0}}},Ke=function(n,a){return a=n.indexOf(a),a===-1?!1:(n.splice(a,1),!0)},Be=function(n){if(gf)throw Error("CSS already injected");df+=`
- `+n},qe=function(n,a){gf||(gf=!0,n&&(n=a.replace(/[\\/]$/,""),a=df.replace(/<<<PATH>>>/g,n),df="",n=document.createElement("style"),n.id="blockly-common-style",a=document.createTextNode(a),n.appendChild(a),document.head.insertBefore(n,document.head.firstChild)))},xe=function(n,a,g,R){n=n+" was deprecated in "+a+" and will be deleted in "+g+".",R&&(n+=`
- Use `+R+" instead."),console.warn(n)},Le=function(n,a,g){n=document.createElementNS(xu,`${n}`);for(const R in a)n.setAttribute(R,`${a[R]}`);return g&&g.appendChild(n),n},je=function(n,a){return a=a.split(" "),a.every(g=>n.classList.contains(g))?!1:(n.classList.add(...a),!0)},He=function(n,a){n.classList.remove(...a.split(" "))},Je=function(n,a){return a=a.split(" "),a.every(g=>!n.classList.contains(g))?!1:(n.classList.remove(...a),!0)},St=function(n,a){return n.classList.contains(a)},Ot=function(n){return n&&n.parentNode?n.parentNode.removeChild(n):null},Nt=function(n,a){const g=a.nextSibling;if(a=a.parentNode,!a)throw Error("Reference node has no parent.");g?a.insertBefore(n,g):a.appendChild(n)},z=function(n,a){return xe("Blockly.utils.dom.containsNode","version 10","version 11",'Use native "contains" DOM method'),n.contains(a)},y=function(n,a){n.style.transform=a,n.style["-webkit-transform"]=a},x=function(){hf++,tr||(tr=Object.create(null))},oe=function(){hf--,hf||(tr=null)},Ee=function(n){const a=n.textContent+`
- `+n.className.baseVal;let g;if(tr&&(g=tr[a]))return g;try{g=n.getComputedTextLength()}catch{return 8*n.textContent.length}return tr&&(tr[a]=g),g},_e=function(n,a,g,R){return ze(n,a+"pt",g,R)},ze=function(n,a,g,R){const f=n.textContent;n=f+`
- `+n.className.baseVal;var $;return tr&&($=tr[n])||(Ah||($=document.createElement("canvas"),$.className="blocklyComputeCanvas",document.body.appendChild($),Ah=$.getContext("2d")),Ah.font=g+" "+a+" "+R,$=f?Ah.measureText(f).width:0,tr&&(tr[n]=$)),$},_t=function(n,a,g,R){const f=document.createElement("span");f.style.font=g+" "+a+" "+R,f.textContent=n,n=document.createElement("div"),n.style.width="1px",n.style.height="0",a=document.createElement("div"),a.style.display="flex",a.style.position="fixed",a.style.top="0",a.style.left="0",a.appendChild(f),a.appendChild(n),document.body.appendChild(a),g={height:0,baseline:0};try{a.style.alignItems="baseline",g.baseline=n.offsetTop-f.offsetTop,a.style.alignItems="flex-end",g.height=n.offsetTop-f.offsetTop}finally{document.body.removeChild(a)}return g},wt=function(n){return u0.getSizeInternal(n)},Ho=function(n){if(Ko(n,"display")!=="none")return _o(n);const a=n.style,g=a.display,R=a.visibility,f=a.position;a.visibility="hidden",a.position="absolute",a.display="inline";const $=n.offsetWidth;return n=n.offsetHeight,a.display=g,a.position=f,a.visibility=R,new Jo($,n)},_o=function(n){return new Jo(n.offsetWidth,n.offsetHeight)},Ko=function(n,a){return n=window.getComputedStyle(n),n[a]||n.getPropertyValue(a)},no=function(n){const a=new ft(0,0);n=n.getBoundingClientRect();var g=document.documentElement;return g=new ft(window.pageXOffset||g.scrollLeft,window.pageYOffset||g.scrollTop),a.x=n.left+g.x,a.y=n.top+g.y,a},io=function(){const n=document.body,a=document.documentElement;return new ft(n.scrollLeft||a.scrollLeft,n.scrollTop||a.scrollTop)},go=function(n){const a=parseFloat(Ko(n,"borderLeftWidth")),g=parseFloat(Ko(n,"borderRightWidth")),R=parseFloat(Ko(n,"borderTopWidth"));return n=parseFloat(Ko(n,"borderBottomWidth")),new Zo(R,n,a,g)},zo=function(n,a,g){n=q(n,a,g),a.scrollLeft=n.x,a.scrollTop=n.y},q=function(n,a,g){var R=no(n),f=no(a),$=go(a);const le=R.x-f.x-$.left;return R=R.y-f.y-$.top,f=_o(n),n=a.clientWidth-f.width,f=a.clientHeight-f.height,$=a.scrollLeft,a=a.scrollTop,g?($+=le-n/2,a+=R-f/2):($+=Math.min(le,Math.max(le-n,0)),a+=Math.min(R,Math.max(R-f,0))),new ft($,a)},ue=function(n){const a=new ft(0,0);var g=n.x&&n.getAttribute("x");const R=n.y&&n.getAttribute("y");return g&&(a.x=parseInt(g)),R&&(a.y=parseInt(R)),(g=(g=n.getAttribute("transform"))&&g.match(g0))&&(a.x+=Number(g[1]),g[3]&&(a.y+=Number(g[3]))),(n=n.getAttribute("style"))&&-1<n.indexOf("translate")&&(n=n.match(d0))&&(a.x+=Number(n[1]),n[3]&&(a.y+=Number(n[3]))),a},D=function(n){let a=0,g=0;for(;n;){const R=ue(n);if(a+=R.x,g+=R.y,(" "+(n.getAttribute("class")||"")+" ").indexOf(" injectionDiv ")!==-1)break;n=n.parentNode}return new ft(a,g)},Z=function(){const n=io();return new Zo(n.y,document.documentElement.clientHeight+n.y,n.x,document.documentElement.clientWidth+n.x)},he=function(){const n=document.documentElement,a=window;return new ft(a.pageXOffset||n.scrollLeft,a.pageYOffset||n.scrollTop)},ce=function(n,a){var g=a.x;a=a.y;const R=n.getInjectionDiv().getBoundingClientRect();return g=new ft(g-R.left,a-R.top),a=n.getOriginOffsetInPixels(),ft.difference(g,a).scale(1/n.scale)},Ge=function(n,a){var g=a.scale(n.scale);a=g.x,g=g.y;const R=n.getInjectionDiv().getBoundingClientRect();return n=n.getOriginOffsetInPixels(),new ft(a+R.left+n.x,g+R.top+n.y)},It=function(n){({document:Nh=Nh,DOMParser:Fu=Fu,XMLSerializer:Vu=Vu}=n),bh=new Fu,Mf=new Vu},o.createElement$$module$build$src$core$utils$xml=function(n){return Nh.createElementNS(O0,n)},o.createTextNode$$module$build$src$core$utils$xml=function(n){return Nh.createTextNode(n)},o.textToDom$$module$build$src$core$utils$xml=function(n){let a=bh.parseFromString(n,"text/xml");if(a&&a.documentElement&&!a.getElementsByTagName("parsererror").length)return a.documentElement;if((a=bh.parseFromString(n,"text/html"))&&a.body.firstChild&&a.body.firstChild.nodeName.toLowerCase()==="xml")return a.body.firstChild;throw Error(`DOMParser was unable to parse: ${n}`)},bt=function(n){return wo(Mf.serializeToString(n))},wo=function(n){return n.replace(bz,a=>`&#${a.charCodeAt(0)};`)},Wo=function(n){return n?((n instanceof Element||typeof n=="string")&&(n=Qn(n),n=jt(n)),ps(n),n):null},ps=function(n){const a=n.kind;if(n=n.contents,a&&a!==h0&&a!==Rf)throw Error("Invalid toolbox kind "+a+". Please supply either "+h0+" or "+Rf);if(!n)throw Error("Toolbox must have a contents attribute.")},Ls=function(n){return n?n.contents?n.contents:Array.isArray(n)&&0<n.length&&!n[0].nodeType?n:to(n):[]},ei=function(n){return M0.hasCategoriesInternal(n)},L_=function(n){if(!n)return!1;const a=n.kind;return a?a===Rf:!!n.contents.filter(function(g){return g.kind.toUpperCase()==="CATEGORY"}).length},nt=function(n){return n&&n.contents?!!n.contents.filter(function(a){return a.kind.toUpperCase()==="CATEGORY"}).length:!1},jt=function(n){const a={contents:to(n)};return n instanceof Node&&co(n,a),a},to=function(n){const a=[];let g=n.childNodes;g||(g=n);for(let R=0,f;f=g[R];R++){if(!f.tagName)continue;n={};const $=f.tagName.toUpperCase();n.kind=$,$==="BLOCK"?n.blockxml=f:f.childNodes&&0<f.childNodes.length&&(n.contents=to(f)),co(f,n),a.push(n)}return a},co=function(n,a){for(let g=0;g<n.attributes.length;g++){const R=n.attributes[g];-1<R.nodeName.indexOf("css-")?(a.cssconfig=a.cssconfig||{},a.cssconfig[R.nodeName.replace("css-","")]=R.value):a[R.nodeName]=R.value}},Qn=function(n){let a=null;if(n)if(typeof n=="string"){if(a=o.textToDom$$module$build$src$core$utils$xml(n),a.nodeName.toLowerCase()!=="xml")throw TypeError("Toolbox should be an <xml> document.")}else n instanceof Element&&(a=n);return a},f_=function(n,a,g,R,f,$){const le=$.scrollbar&&$.scrollbar.canScrollVertically();return n.horizontal===yT.LEFT?(g=f.absoluteMetrics.left+g,le&&$.RTL&&(g+=ms.scrollbarThickness)):(g=f.absoluteMetrics.left+f.viewMetrics.width-a.width-g,le&&!$.RTL&&(g-=ms.scrollbarThickness)),n.vertical===y_.TOP?n=f.absoluteMetrics.top+R:(n=f.absoluteMetrics.top+f.viewMetrics.height-a.height-R,$.scrollbar&&$.scrollbar.canScrollHorizontally()&&(n-=ms.scrollbarThickness)),new Zo(n,n+a.height,g,g+a.width)},wO=function(n,a){return{horizontal:a.toolboxMetrics.position===To.LEFT||n.horizontalLayout&&!n.RTL?yT.RIGHT:yT.LEFT,vertical:a.toolboxMetrics.position===To.BOTTOM?y_.TOP:y_.BOTTOM}},GO=function(n,a,g,R){const f=n.left,$=n.right-n.left,le=n.bottom-n.top;for(let fe=0;fe<R.length;fe++){const it=R[fe];n.intersects(it)&&(n=g===Al.UP?it.top-le-a:it.bottom+a,n=new Zo(n,n+le,f,f+$),fe=-1)}return n},bu=function(n,a){I0(n,a)},FD=function(n){I0=n},kO=function(n,a){L0.confirmInternal(n,a)},VD=function(n,a){S0(n,a)},WD=function(n){S0=n},HO=function(n,a,g){p0(n,a,g)},XD=function(n){p0=n},ap=function(n){return n.getVariableModel!==void 0},lT=function(n){return n.getProcedureDef!==void 0},YD=function(n){return n.getProcedureCall!==void 0&&n.renameProcedure!==void 0},o.allUsedVarModels$$module$build$src$core$variables=function(n){n=n.getAllBlocks(!1);const a=new Set;for(let g=0;g<n.length;g++){const R=n[g].getVarModels();if(R)for(let f=0;f<R.length;f++){const $=R[f];$.getId()&&a.add($)}}return Array.from(a.values())},o.allDeveloperVariables$$module$build$src$core$variables=function(n){n=n.getAllBlocks(!1);const a=new Set;for(let R=0,f;f=n[R];R++){var g=f.getDeveloperVariables;if(g){g=g();for(let $=0;$<g.length;$++)a.add(g[$])}}return Array.from(a.values())},xO=function(n){let a=[];const g=document.createElement("button");return g.setAttribute("text","%{BKY_NEW_VARIABLE}"),g.setAttribute("callbackKey","CREATE_VARIABLE"),n.registerButtonCallback("CREATE_VARIABLE",function(R){aT(R.getTargetWorkspace())}),a.push(g),n=cp(n),a=a.concat(n)},cp=function(n){n=n.getVariablesOfType("");const a=[];if(0<n.length){var g=n[n.length-1];if(Hi.variables_set){var R=o.createElement$$module$build$src$core$utils$xml("block");R.setAttribute("type","variables_set"),R.setAttribute("gap",Hi.math_change?"8":"24"),R.appendChild(ya(g)),a.push(R)}if(Hi.math_change&&(R=o.createElement$$module$build$src$core$utils$xml("block"),R.setAttribute("type","math_change"),R.setAttribute("gap",Hi.variables_get?"20":"8"),R.appendChild(ya(g)),g=o.textToDom$$module$build$src$core$utils$xml('<value name="DELTA"><shadow type="math_number"><field name="NUM">1</field></shadow></value>'),R.appendChild(g),a.push(R)),Hi.variables_get){n.sort(Xu.compareByName);for(let f=0,$;$=n[f];f++)g=o.createElement$$module$build$src$core$utils$xml("block"),g.setAttribute("type","variables_get"),g.setAttribute("gap","8"),g.appendChild(ya($)),a.push(g)}}return a},Tp=function(n){return m0.generateUniqueNameInternal(n)},KD=function(n){return FO(Lf.charAt(0),n.getAllVariableNames())},FO=function(n,a){if(!a.length)return n;const g=Lf;let R="",f=g.indexOf(n);for(;;){let $=!1;for(let le=0;le<a.length;le++)if(a[le].toLowerCase()===n){$=!0;break}if(!$)break;f++,f===g.length&&(f=0,R=`${Number(R)+1}`),n=g.charAt(f)+R}return n},aT=function(n,a,g){function R($){VO(o.Msg$$module$build$src$core$msg.NEW_VARIABLE_TITLE,$,function(le){if(le){var fe=Ep(le,n);if(fe){if(fe.type===f)var it=o.Msg$$module$build$src$core$msg.VARIABLE_ALREADY_EXISTS.replace("%1",fe.name);else it=o.Msg$$module$build$src$core$msg.VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE,it=it.replace("%1",fe.name).replace("%2",fe.type);bu(it,function(){R(le)})}else n.createVariable(le,f),a&&a(le)}else a&&a(null)})}const f=g||"";R("")},o.renameVariable$$module$build$src$core$variables=function(n,a,g){function R(f){const $=o.Msg$$module$build$src$core$msg.RENAME_VARIABLE_TITLE.replace("%1",a.name);VO($,f,function(le){if(le){var fe=zD(le,a.type,n),it=up(a.name,le,n);if(fe||it){var Pt="";fe?Pt=o.Msg$$module$build$src$core$msg.VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE.replace("%1",fe.name).replace("%2",fe.type):it&&(Pt=o.Msg$$module$build$src$core$msg.VARIABLE_ALREADY_EXISTS_FOR_A_PARAMETER.replace("%1",le).replace("%2",it)),bu(Pt,function(){R(le)})}else n.renameVariableById(a.getId(),le),g&&g(le)}else g&&g(null)})}R("")},VO=function(n,a,g){HO(n,a,function(R){R&&(R=R.replace(/[\s\xa0]+/g," ").trim(),R===o.Msg$$module$build$src$core$msg.RENAME_VARIABLE||R===o.Msg$$module$build$src$core$msg.NEW_VARIABLE)&&(R=null),g(R)})},zD=function(n,a,g){g=g.getVariableMap().getAllVariables(),n=n.toLowerCase();for(let R=0,f;f=g[R];R++)if(f.name.toLowerCase()===n&&f.type!==a)return f;return null},Ep=function(n,a){a=a.getVariableMap().getAllVariables(),n=n.toLowerCase();for(let g=0,R;R=a[g];g++)if(R.name.toLowerCase()===n)return R;return null},up=function(n,a,g){return g.getProcedureMap().getProcedures().length?ZD(n,a,g):jD(n,a,g)},ZD=function(n,a,g){n=n.toLowerCase(),a=a.toLowerCase(),g=g.getProcedureMap().getProcedures();for(const f of g){var R=f.getParameters().filter(ap).map($=>$.getVariableModel().name);if(R&&(g=R.some($=>$.toLowerCase()===n),R=R.some($=>$.toLowerCase()===a),g&&R))return f.getName()}return null},jD=function(n,a,g){n=n.toLowerCase(),a=a.toLowerCase(),g=g.getAllBlocks(!1);for(const f of g){if(!lT(f))continue;g=f.getProcedureDef();var R=g[1];const $=R.some(le=>le.toLowerCase()===n);if(R=R.some(le=>le.toLowerCase()===a),$&&R)return g[0]}return null},ya=function(n){const a=o.createElement$$module$build$src$core$utils$xml("field");return a.setAttribute("name","VAR"),a.setAttribute("id",n.getId()),a.setAttribute("variabletype",n.type),n=o.createTextNode$$module$build$src$core$utils$xml(n.name),a.appendChild(n),a},o.getOrCreateVariablePackage$$module$build$src$core$variables=function(n,a,g,R){let f=o.getVariable$$module$build$src$core$variables(n,a,g,R);return f||(f=qD(n,a,g,R)),f},o.getVariable$$module$build$src$core$variables=function(n,a,g,R){const f=n.getPotentialVariableMap();let $=null;if(a&&($=n.getVariableById(a),!$&&f&&($=f.getVariableById(a)),$))return $;if(g){if(R===void 0)throw Error("Tried to look up a variable by name without a type");$=n.getVariable(g,R),!$&&f&&($=f.getVariable(g,R))}return $},qD=function(n,a,g,R){const f=n.getPotentialVariableMap();return g||(g=Tp(n.isFlyout?n.targetWorkspace:n)),f?f.createVariable(g,R,a):n.createVariable(g,R,a)},WO=function(n,a){n=n.getAllVariables();const g=[];if(a.length!==n.length)for(let R=0;R<n.length;R++){const f=n[R];a.indexOf(f)===-1&&g.push(f)}return g},XO=function(n,a){_(Mt.PASTER,n,a)},QD=function(n){c(Mt.PASTER,n)},gp=function(n){return dp(n),JD()?(YO(),Promise.resolve()):($T||($T=new Promise(a=>{Af=a,C0=window.requestAnimationFrame(()=>{YO(),a()})})),$T)},Nu=function(){return $T||Promise.resolve()},Ar=function(){window.cancelAnimationFrame(C0),YO(),Af&&Af()},JD=function(){return _0},dp=function(n){Cf.add(n);const a=n.getParent();a?dp(a):Dh.add(n)},YO=function(){var n=new Set([...Dh].map(g=>g.workspace));const a=[...Dh].filter(eU);for(const g of a)Op(g);for(const g of n)g.resizeContents();for(const g of a)n=g.getRelativeToSurfaceXY(),g.updateComponentLocations(n);Dh.clear(),Cf=new Set,$T=null},eU=function(n){return!n.isDisposed()&&!n.getParent()},Op=function(n){if(Cf.has(n)){for(const a of n.getChildren(!1))Op(a);n.renderEfficiently()}},tU=function(n,a){const g=o.createElement$$module$build$src$core$utils$xml("xml");var R=hp(o.allUsedVarModels$$module$build$src$core$variables(n));R.hasChildNodes()&&g.appendChild(R),R=n.getTopComments(!0);for(let f=0;f<R.length;f++)g.appendChild(R[f].toXmlWithXY(a));for(n=n.getTopBlocks(!0),R=0;R<n.length;R++)g.appendChild(Pu(n[R],a));return g},hp=function(n){const a=o.createElement$$module$build$src$core$utils$xml("variables");for(let g=0;g<n.length;g++){const R=n[g],f=o.createElement$$module$build$src$core$utils$xml("variable");f.appendChild(o.createTextNode$$module$build$src$core$utils$xml(R.name)),R.type&&f.setAttribute("type",R.type),f.id=R.getId(),a.appendChild(f)}return a},Pu=function(n,a){if(n.isInsertionMarker()&&(n=n.getChildren(!1)[0],!n))return new DocumentFragment;let g=0;if(n.workspace.RTL&&(g=n.workspace.getWidth()),a=gl(n,a),Sp(a)){const R=n.getRelativeToSurfaceXY();a.setAttribute("x",String(Math.round(n.workspace.RTL?g-R.x:R.x))),a.setAttribute("y",String(Math.round(R.y)))}return a},oU=function(n){if(n.isSerializable()){const a=o.createElement$$module$build$src$core$utils$xml("field");return a.setAttribute("name",n.name||""),n.toXml(a)}return null},sU=function(n,a){for(let g=0;g<n.inputList.length;g++){const R=n.inputList[g];for(let f=0;f<R.fieldRow.length;f++){const $=oU(R.fieldRow[f]);$&&a.appendChild($)}}},gl=function(n,a){if(n.isInsertionMarker())return(a=n.getChildren(!1)[0])?gl(a):new DocumentFragment;const g=o.createElement$$module$build$src$core$utils$xml(n.isShadow()?"shadow":"block");if(g.setAttribute("type",n.type),a||(g.id=n.id),n.mutationToDom){var R=n.mutationToDom();R&&(R.hasChildNodes()||R.hasAttributes())&&g.appendChild(R)}if(sU(n,g),R=n.getCommentText()){var f=n.getIcon(xi.COMMENT),$=f.getBubbleSize();f=f.bubbleIsVisible();var le=o.createElement$$module$build$src$core$utils$xml("comment");le.appendChild(o.createTextNode$$module$build$src$core$utils$xml(R)),le.setAttribute("pinned",`${f}`),le.setAttribute("h",String($.height)),le.setAttribute("w",String($.width)),g.appendChild(le)}for(n.data&&(R=o.createElement$$module$build$src$core$utils$xml("data"),R.appendChild(o.createTextNode$$module$build$src$core$utils$xml(n.data)),g.appendChild(R)),R=0;R<n.inputList.length;R++){$=n.inputList[R];var fe=void 0;if(f=!0,$.type!==o.inputTypes$$module$build$src$core$inputs$input_types.DUMMY&&$.type!==o.inputTypes$$module$build$src$core$inputs$input_types.END_ROW){le=$.connection.targetBlock(),$.type===o.inputTypes$$module$build$src$core$inputs$input_types.VALUE?fe=o.createElement$$module$build$src$core$utils$xml("value"):$.type===o.inputTypes$$module$build$src$core$inputs$input_types.STATEMENT&&(fe=o.createElement$$module$build$src$core$utils$xml("statement"));const Pt=$.connection.getShadowDom();!Pt||le&&le.isShadow()||fe.appendChild(Mp(Pt,a)),le&&(le=gl(le,a),le.nodeType===U_.ELEMENT_NODE&&(fe.appendChild(le),f=!1)),fe.setAttribute("name",$.name),f||g.appendChild(fe)}}n.inputsInline!==void 0&&n.inputsInline!==n.inputsInlineDefault&&g.setAttribute("inline",String(n.inputsInline)),n.isCollapsed()&&g.setAttribute("collapsed","true"),n.isEnabled()||g.setAttribute("disabled","true"),n.isDeletable()||n.isShadow()||g.setAttribute("deletable","false"),n.isMovable()||n.isShadow()||g.setAttribute("movable","false"),n.isEditable()||g.setAttribute("editable","false"),fe=n.getNextBlock();let it;return fe&&(R=gl(fe,a),R.nodeType===U_.ELEMENT_NODE&&(it=o.createElement$$module$build$src$core$utils$xml("next"),it.appendChild(R),g.appendChild(it))),n=n.nextConnection&&n.nextConnection.getShadowDom(),!n||fe&&fe.isShadow()||it.appendChild(Mp(n,a)),g},Mp=function(n,a){let g=n=n.cloneNode(!0),R;for(;g;)if(a&&g.nodeName==="shadow"&&g.removeAttribute("id"),g.firstChild)g=g.firstChild;else{for(;g&&!g.nextSibling;){R=g,g=g.parentNode;let f;R.nodeType===U_.TEXT_NODE&&R.data.trim()===""&&((f=g)==null?void 0:f.firstChild)!==R&&Ot(R)}g&&(R=g,g=g.nextSibling,R.nodeType===U_.TEXT_NODE&&R.data.trim()===""&&Ot(R))}return n},br=function(n){return bt(n).replace(/<(\w+)([^<]*)\/>/g,"<$1$2></$1>")},iU=function(n){n=br(n).split("<");let a="";for(let g=1;g<n.length;g++){const R=n[g];R[0]==="/"&&(a=a.substring(2)),n[g]=a+"<"+R,R[0]!=="/"&&R.slice(-2)!=="/>"&&(a+=" ")}return n=n.join(`
- `),n=n.replace(/(<(\w+)\b[^>]*>[^\n]*)\n *<\/\2>/g,"$1</$2>"),n.replace(/^\n/,"")},nU=function(n,a){return a.setResizesEnabled(!1),a.clear(),n=o.domToWorkspace$$module$build$src$core$xml(n,a),a.setResizesEnabled(!0),n},o.domToWorkspace$$module$build$src$core$xml=function(n,a){let g=0;a.RTL&&(g=a.getWidth());const R=[];x();const f=o.getGroup$$module$build$src$core$events$utils();f||o.setGroup$$module$build$src$core$events$utils(!0),a.setResizesEnabled&&a.setResizesEnabled(!1);let $=!0;try{for(let le=0,fe;fe=n.childNodes[le];le++){const it=fe.nodeName.toLowerCase(),Pt=fe;if(it==="block"||it==="shadow"&&!j()){const ts=dl(Pt,a);R.push(ts.id);let qo;const Wi=parseInt((qo=Pt.getAttribute("x"))!=null?qo:"10",10);let oE;const sE=parseInt((oE=Pt.getAttribute("y"))!=null?oE:"10",10);isNaN(Wi)||isNaN(sE)||ts.moveBy(a.RTL?g-Wi:Wi,sE,["create"]),$=!1}else{if(it==="shadow")throw TypeError("Shadow block cannot be a top-level block.");if(it==="comment")a.rendered?ii.fromXmlRendered(Pt,a,g):$r.fromXml(Pt,a);else if(it==="variables"){if($)Rp(Pt,a);else throw Error("'variables' tag must exist once before block and shadow tag elements in the workspace XML, but it was found in another location.");$=!1}}}}finally{o.setGroup$$module$build$src$core$events$utils(f),a.setResizesEnabled&&a.setResizesEnabled(!0),a.rendered&&Ar(),oe()}return J(new(pe(Ha))(a)),R},rU=function(n,a){if(!a.getBlocksBoundingBox)return o.domToWorkspace$$module$build$src$core$xml(n,a);var g=a.getBlocksBoundingBox();if(n=o.domToWorkspace$$module$build$src$core$xml(n,a),g&&g.top!==g.bottom){var R=g.bottom;g=a.RTL?g.right:g.left;var f=1/0;let $=-1/0,le=1/0;for(let fe=0;fe<n.length;fe++){const it=a.getBlockById(n[fe]).getRelativeToSurfaceXY();it.y<le&&(le=it.y),it.x<f&&(f=it.x),it.x>$&&($=it.x)}for(R=R-le+10,g=a.RTL?g-$:g-f,f=0;f<n.length;f++)a.getBlockById(n[f]).moveBy(g,R,["create"])}return n},o.domToBlock$$module$build$src$core$xml=function(n,a){return n=dl(n,a),a.rendered&&Ar(),n},dl=function(n,a){o.disable$$module$build$src$core$events$utils();var g=a.getAllVariables();let R;try{if(R=KO(n,a),a.rendered){const f=R,$=R.getDescendants(!1);f.setConnectionTracking(!1);for(let le=$.length-1;0<=le;le--)$[le].initSvg();for(let le=$.length-1;0<=le;le--)$[le].queueRender();setTimeout(function(){f.disposed||f.setConnectionTracking(!0)},1),a.resizeContents()}else{const f=R.getDescendants(!1);for(let $=f.length-1;0<=$;$--)f[$].initModel()}}finally{o.enable$$module$build$src$core$events$utils()}if(Q()){for(n=WO(a,g),a=0;a<n.length;a++)g=n[a],J(new(pe(pl))(g));J(new(pe(o.CREATE$$module$build$src$core$events$utils))(R))}return R},Rp=function(n,a){for(let R=0;R<n.children.length;R++){var g=n.children[R];const f=g.getAttribute("type"),$=g.getAttribute("id");if(g=g.textContent,!g)break;a.createVariable(g,f,$)}},_U=function(n){const a={mutation:[],comment:[],data:[],field:[],input:[],next:[]};for(let g=0;g<n.children.length;g++){const R=n.children[g];if(R.nodeType!==U_.TEXT_NODE)switch(R.nodeName.toLowerCase()){case"mutation":a.mutation.push(R);break;case"comment":a.comment.push(R);break;case"data":a.data.push(R);break;case"title":case"field":a.field.push(R);break;case"value":case"statement":a.input.push(R);break;case"next":a.next.push(R);break;default:console.warn("Ignoring unknown tag: "+R.nodeName)}}return a},lU=function(n,a){let g=!1;for(let R=0;R<n.length;R++){const f=n[R];a.domToMutation&&(a.domToMutation(f),a.initSvg&&(g=!0))}return g},aU=function(n,a){for(let R=0;R<n.length;R++){var g=n[R];const f=g.textContent,$=g.getAttribute("pinned")==="true";let le;const fe=parseInt((le=g.getAttribute("w"))!=null?le:"50",10);let it;g=parseInt((it=g.getAttribute("h"))!=null?it:"50",10),a.setCommentText(f);const Pt=a.getIcon(xi.COMMENT);isNaN(fe)||isNaN(g)||Pt.setBubbleSize(new Jo(fe,g)),Pt.setBubbleVisible($),setTimeout(()=>Pt.setBubbleVisible($),1)}},cU=function(n,a){for(let g=0;g<n.length;g++)a.data=n[g].textContent},TU=function(n,a){for(let g=0;g<n.length;g++){const R=n[g],f=R.getAttribute("name");f?gU(a,f,R):console.warn(`Ignoring unnamed field in block ${a.type}`)}},Ip=function(n){let a=null,g=null;for(let R=0;R<n.childNodes.length;R++){const f=n.childNodes[R];Sp(f)&&(f.nodeName.toLowerCase()==="block"?a=f:f.nodeName.toLowerCase()==="shadow"&&(g=f))}return{childBlockElement:a,childShadowElement:g}},EU=function(n,a,g,R){for(let $=0;$<n.length;$++){var f=n[$];const le=f.getAttribute("name"),fe=le?g.getInput(le):null;if(!fe){console.warn("Ignoring non-existent input "+le+" in block "+R);break}if(f=Ip(f),f.childBlockElement){if(!fe.connection)throw TypeError("Input connection does not exist.");KO(f.childBlockElement,a,fe.connection,!1)}if(f.childShadowElement){let it;(it=fe.connection)==null||it.setShadowDom(f.childShadowElement)}}},uU=function(n,a,g){for(let R=0;R<n.length;R++){const f=Ip(n[R]);if(f.childBlockElement){if(!g.nextConnection)throw TypeError("Next statement does not exist.");if(g.nextConnection.isConnected())throw TypeError("Next statement is already connected.");KO(f.childBlockElement,a,g.nextConnection,!0)}f.childShadowElement&&g.nextConnection&&g.nextConnection.setShadowDom(f.childShadowElement)}},KO=function(n,a,g,R){var f;const $=n.getAttribute("type");if(!$)throw TypeError("Block type unspecified: "+n.outerHTML);var le=(f=n.getAttribute("id"))!=null?f:void 0;f=a.newBlock($,le),le=_U(n);const fe=lU(le.mutation,f);if(aU(le.comment,f),cU(le.data,f),g)if(R)if(f.previousConnection)g.connect(f.previousConnection);else throw TypeError("Next block does not have previous statement.");else if(f.outputConnection)g.connect(f.outputConnection);else if(f.previousConnection)g.connect(f.previousConnection);else throw TypeError("Child block does not have output or previous statement.");if(TU(le.field,f),EU(le.input,a,f,$),uU(le.next,a,f),fe&&f.initSvg(),(a=n.getAttribute("inline"))&&f.setInputsInline(a==="true"),(a=n.getAttribute("disabled"))&&f.setEnabled(a!=="true"&&a!=="disabled"),(a=n.getAttribute("deletable"))&&f.setDeletable(a==="true"),(a=n.getAttribute("movable"))&&f.setMovable(a==="true"),(a=n.getAttribute("editable"))&&f.setEditable(a==="true"),(a=n.getAttribute("collapsed"))&&f.setCollapsed(a==="true"),n.nodeName.toLowerCase()==="shadow"){for(n=f.getChildren(!1),a=0;a<n.length;a++)if(!n[a].isShadow())throw TypeError("Shadow block not allowed non-shadow child.");if(f.getVarModels().length)throw TypeError("Shadow blocks cannot have variable references.");f.setShadow(!0)}return f},gU=function(n,a,g){const R=n.getField(a);R?R.fromXml(g):console.warn("Ignoring non-existent field "+a+" in block "+n.type)},dU=function(n){for(let a=0;a<n.childNodes.length;a++){const g=n.childNodes[a];if(g.nodeName.toLowerCase()==="next"){n.removeChild(g);break}}},Sp=function(n){return n.nodeType===U_.ELEMENT_NODE},zO=function(n){return n.saveState!==void 0&&n.loadState!==void 0},ZO=function(n,a){_(Mt.SERIALIZER,n,a)},OU=function(n){c(Mt.SERIALIZER,n)},Nr=function(n,{addCoordinates:a=!1,addInputBlocks:g=!0,addNextBlocks:R=!0,doFullSerialization:f=!0,saveIds:$=!0}={}){if(n.isInsertionMarker())return null;const le={type:n.type,id:$?n.id:void 0};return a&&MU(n,le),hU(n,le),RU(n,le,f),IU(n,le,f),SU(n,le,f),g&&pU(n,le,f,$),R&&LU(n,le,f,$),le},hU=function(n,a){n.isCollapsed()&&(a.collapsed=!0),n.isEnabled()||(a.enabled=!1),n.isOwnDeletable()||(a.deletable=!1),n.isOwnMovable()||(a.movable=!1),n.isOwnEditable()||(a.editable=!1),n.inputsInline!==void 0&&n.inputsInline!==n.inputsInlineDefault&&(a.inline=n.inputsInline),n.data&&(a.data=n.data)},MU=function(n,a){const g=n.workspace;n=n.getRelativeToSurfaceXY(),a.x=Math.round(g.RTL?g.getWidth()-n.x:n.x),a.y=Math.round(n.y)},RU=function(n,a,g){n.saveExtraState?(n=n.saveExtraState(g),n!==null&&(a.extraState=n)):n.mutationToDom&&(n=n.mutationToDom(),n!==null&&(a.extraState=br(n).replace(' xmlns="https://developers.google.com/blockly/xml"',"")))},IU=function(n,a,g){const R=Object.create(null);for(const f of n.getIcons())zO(f)&&(n=f.saveState(g))&&(R[f.getType().toString()]=n);Object.keys(R).length&&(a.icons=R)},SU=function(n,a,g){const R=Object.create(null);for(let f=0;f<n.inputList.length;f++){const $=n.inputList[f];for(let le=0;le<$.fieldRow.length;le++){const fe=$.fieldRow[le];fe.isSerializable()&&(R[fe.name]=fe.saveState(g))}}Object.keys(R).length&&(a.fields=R)},pU=function(n,a,g,R){const f=Object.create(null);for(let $=0;$<n.inputList.length;$++){const le=n.inputList[$];if(!le.connection)continue;const fe=pp(le.connection,g,R);fe&&(f[le.name]=fe)}Object.keys(f).length&&(a.inputs=f)},LU=function(n,a,g,R){n.nextConnection&&(n=pp(n.nextConnection,g,R))&&(a.next=n)},pp=function(n,a,g){const R=n.getShadowState(!0);if(n=n.targetBlock(),!R&&!n)return null;const f=Object.create(null);return R&&(f.shadow=R),n&&!n.isShadow()&&(f.block=Nr(n,{doFullSerialization:a,saveIds:g})),f},Ol=function(n,a,{recordUndo:g=!1}={}){return n=cT(n,a,{recordUndo:g}),a.rendered&&Ar(),n},cT=function(n,a,{parentConnection:g,isShadow:R=!1,recordUndo:f=!1}={}){const $=j();ee(f),(f=o.getGroup$$module$build$src$core$events$utils())||o.setGroup$$module$build$src$core$events$utils(!0),o.disable$$module$build$src$core$events$utils();let le;try{le=Lp(n,a,{parentConnection:g,isShadow:R})}finally{o.enable$$module$build$src$core$events$utils()}if(Q()&&J(new(pe(o.CREATE$$module$build$src$core$events$utils))(le)),o.setGroup$$module$build$src$core$events$utils(f),ee($),a.rendered){const fe=le;setTimeout(()=>{fe.disposed||fe.setConnectionTracking(!0)},1)}return le},Lp=function(n,a,{parentConnection:g,isShadow:R=!1}={}){if(!n.type)throw new A0(n);const f=a.newBlock(n.type,n.id);return f.setShadow(R),fU(f,n),mU(f,n),CU(f,n),AU(g,f,n),bU(f,n),NU(f,n),PU(f,n),vU(f,n),DU(f,a.rendered),f},fU=function(n,a){let g=a.x===void 0?0:a.x;a=a.y===void 0?0:a.y;const R=n.workspace;g=R.RTL?R.getWidth()-g:g,n.moveBy(g,a)},mU=function(n,a){a.collapsed&&n.setCollapsed(!0),a.deletable===!1&&n.setDeletable(!1),a.movable===!1&&n.setMovable(!1),a.editable===!1&&n.setEditable(!1),a.enabled===!1&&n.setEnabled(!1),a.inline!==void 0&&n.setInputsInline(a.inline),a.data!==void 0&&(n.data=a.data)},CU=function(n,a){a.extraState&&(n.loadExtraState?n.loadExtraState(a.extraState):n.domToMutation&&n.domToMutation(o.textToDom$$module$build$src$core$utils$xml(a.extraState)))},AU=function(n,a,g){if(n){if(n.getSourceBlock().isShadow()&&!a.isShadow())throw new N0(g);if(n.type===o.inputTypes$$module$build$src$core$inputs$input_types.VALUE){var R=a.outputConnection;if(!R)throw new Yu("output",a,g)}else if(R=a.previousConnection,!R)throw new Yu("previous",a,g);if(!n.connect(R)){const f=a.workspace.connectionChecker;throw new b0(f.getErrorMessage(f.canConnectWithReason(R,n,!1),R,n),n.type===o.inputTypes$$module$build$src$core$inputs$input_types.VALUE?"output connection":"previous connection",a,g)}}},bU=function(n,a){if(a.icons){var g=Object.keys(a.icons);for(const f of g){g=a.icons[f];var R=n.getIcon(f);if(!R){if(R=u(Mt.ICON,f,!1),!R)throw new P0(f,n,a);R=new R(n),n.addIcon(R)}zO(R)&&R.loadState(g)}}},NU=function(n,a){if(a.fields){var g=Object.keys(a.fields);for(let R=0;R<g.length;R++){const f=g[R],$=a.fields[f],le=n.getField(f);le?le.loadState($):console.warn(`Ignoring non-existant field ${f} in block ${n.type}`)}}},PU=function(n,a){if(a.inputs){var g=Object.keys(a.inputs);for(let R=0;R<g.length;R++){const f=g[R],$=n.getInput(f);if(!$||!$.connection)throw new Yu(f,n,a);fp($.connection,a.inputs[f])}}},vU=function(n,a){if(a.next){if(!n.nextConnection)throw new Yu("next",n,a);fp(n.nextConnection,a.next)}},fp=function(n,a){a.shadow&&n.setShadowState(a.shadow),a.block&&Lp(a.block,n.getSourceBlock().workspace,{parentConnection:n})},DU=function(n,a){if(a){n.setConnectionTracking(!1),n.initSvg(),n.queueRender();for(const g of n.getIcons())g.onLocationChange(n.getRelativeToSurfaceXY())}else n.initModel()},UU=function(n){const a=n.workspace,g=o.config$$module$build$src$core$config.snapRadius,R=n.getRelativeToSurfaceXY(),f=new ft(0,0),$=a.getAllBlocks(!1).filter(le=>le.id!=n.id).map(le=>le.getRelativeToSurfaceXY());for(;yU(ft.sum(R,f),$)||$U(n,f,g);)a.RTL?f.translate(-g,2*g):f.translate(g,2*g);n.moveTo(ft.sum(R,f))},yU=function(n,a){return a.some(g=>1>=Math.abs(g.x-n.x)&&1>=Math.abs(g.y-n.y))},$U=function(n,a,g){return n.getConnections_(!1).some(R=>!!R.closest(g,a).connection)},BU=function(n){return xe("Blockly.clipboard.copy","v11","v12","myCopyable.toCopyData()"),$f.copyInternal(n)},wU=function(n){const a=n.toCopyData();Uf=a;let g;return yf=(g=n.workspace)!=null?g:null,a},TT=function(n,a,g){return n&&a?mp(n,a,g):Uf&&yf?mp(Uf,yf):null},mp=function(n,a,g){let R;a=(R=a.getRootWorkspace())!=null?R:a;let f,$;return($=(f=d(Mt.PASTER,n.paster,!1))==null?void 0:f.paste(n,a,g))!=null?$:null},GU=function(n){return xe("Blockly.clipboard.duplicate","v11","v12","Blockly.clipboard.paste(myCopyable.toCopyData(), myWorkspace)"),$f.duplicateInternal(n)},kU=function(n){const a=n.toCopyData();return a?TT(a,n.workspace):null},Jn=function(n,a){n.setAttribute(Uz,a)},is=function(n,a,g){Array.isArray(g)&&(g=g.join(" ")),n.setAttribute(Dz+a,`${g}`)},$a=function(){return Br},HU=function(n){if(Br=n,n===null){let a;(a=document.querySelector("."+Gf))==null||a.remove()}},Cp=function(){document.querySelector("."+Gf)||(Br=document.createElement("div"),Br.className=Gf,(N()||document.body).appendChild(Br))},jO=function(n,a,g){Nn(),GT=n,yh=g,(n=Br)&&(n.style.direction=a?"rtl":"ltr",n.style.display="block",a=C(),kT=a.getRenderer().getClassName(),HT=a.getTheme().getClassName(),kT&&je(n,kT),HT&&je(n,HT))},Nn=function(){if(Ap()){GT=null;var n=Br;n&&(n.style.display="none",n.style.left="",n.style.top="",yh&&yh(),yh=null,n.textContent="",kT&&(Je(n,kT),kT=""),HT&&(Je(n,HT),HT=""),C().markFocused())}},Ap=function(){return!!GT},qO=function(n){GT===n&&Nn()},bp=function(n,a,g){Br.style.left=n+"px",Br.style.top=a+"px",Br.style.height=g+"px"},Np=function(n,a,g,R){const f=FU(n,a,g);n=xU(n,a,g,R),0>f?bp(n,0,g.height+f):bp(n,f,g.height)},xU=function(n,a,g,R){return R?Math.min(Math.max(a.right-g.width,n.left),n.right-g.width):Math.max(Math.min(a.left,n.right-g.width),n.left)},FU=function(n,a,g){return a.bottom+g.height>=n.bottom?a.top-g.height:a.bottom},VU=function(n){return!(n==null||!n.repositionForWindowResize)},Pp=function(){VU(GT)&>.repositionForWindowResize()||Nn()},WU=function(){return $h},vp=function(n){$h=n},vu=function(n,a,g){if(jO($0,g,Dp),a.length){var R=XU(a,g);Bh=R,YU(R,n,g),setTimeout(function(){R.focus()},1),$h=null}else Du()},XU=function(n,a){const g=new Bf;g.setRole(Vi.MENU);for(let R=0;R<n.length;R++){const f=n[R],$=new wf(f.text);$.setRightToLeft(a),$.setRole(Vi.MENUITEM),g.addChild($),$.setEnabled(f.enabled),f.enabled&&$.onAction(function(){Du(),requestAnimationFrame(()=>{setTimeout(()=>{f.callback(f.scope)},0)})},{})}return g},YU=function(n,a,g){const R=Z();a=new Zo(a.clientY+R.top,a.clientY+R.top,a.clientX+R.left,a.clientX+R.left),KU(n);const f=n.getSize();g&&(a.left+=f.width,a.right+=f.width,R.left+=f.width,R.right+=f.width),Np(R,a,f,g),n.focus()},KU=function(n){var a=$a();if(!a)throw Error("Attempting to create a context menu when widget div is null");a=n.render(a),je(a,"blocklyContextMenu"),ve(a,"contextmenu",null,zU),n.focus()},zU=function(n){n.preventDefault(),n.stopPropagation()},Du=function(){qO($0),$h=null},Dp=function(){Bh&&(Bh.dispose(),Bh=null)},o.callbackFactory$$module$build$src$core$contextmenu=function(n,a){return()=>{o.disable$$module$build$src$core$events$utils();let g;try{g=a instanceof Element?dl(a,n.workspace):cT(a,n.workspace);const R=n.getRelativeToSurfaceXY();R.x=n.RTL?R.x-o.config$$module$build$src$core$config.snapRadius:R.x+o.config$$module$build$src$core$config.snapRadius,R.y+=2*o.config$$module$build$src$core$config.snapRadius,g.moveBy(R.x,R.y)}finally{o.enable$$module$build$src$core$events$utils()}return Q()&&!g.isShadow()&&J(new(pe(o.CREATE$$module$build$src$core$events$utils))(g)),g.select(),g}},Up=function(n){return{text:o.Msg$$module$build$src$core$msg.REMOVE_COMMENT,enabled:!0,callback:function(){o.setGroup$$module$build$src$core$events$utils(!0),n.dispose(),o.setGroup$$module$build$src$core$events$utils(!1)}}},yp=function(n){return{text:o.Msg$$module$build$src$core$msg.DUPLICATE_COMMENT,enabled:!0,callback:function(){const a=n.toCopyData();a&&TT(a,n.workspace)}}},ZU=function(n,a){const g={enabled:!0};return g.text=o.Msg$$module$build$src$core$msg.ADD_COMMENT,g.callback=function(){const R=new ii(n,o.Msg$$module$build$src$core$msg.WORKSPACE_COMMENT_DEFAULT_TEXT,ii.DEFAULT_SIZE,ii.DEFAULT_SIZE);var f=n.getInjectionDiv().getBoundingClientRect();f=new ft(a.clientX-f.left,a.clientY-f.top);const $=n.getOriginOffsetInPixels();f=ft.difference(f,$),f.scale(1/n.scale),R.moveBy(f.x,f.y),n.rendered&&(R.initSvg(),R.render(),R.select())},g},ET=function(n){return n*Math.PI/180},$p=function(n){return 180*n/Math.PI},uT=function(n,a,g){if(g<n){const R=g;g=n,n=R}return Math.max(n,Math.min(a,g))},Bp=function(){document.querySelector(".blocklyDropDownDiv")||(Uo=document.createElement("div"),Uo.className="blocklyDropDownDiv",(N()||document.body).appendChild(Uo),VT=document.createElement("div"),VT.className="blocklyDropDownContent",Uo.appendChild(VT),qa=document.createElement("div"),qa.className="blocklyDropDownArrow",Uo.appendChild(qa),Uo.style.opacity="0",Uo.style.transition="transform "+Gh+"s, opacity "+Gh+"s",Uo.addEventListener("focusin",function(){je(Uo,"blocklyFocused")}),Uo.addEventListener("focusout",function(){Je(Uo,"blocklyFocused")}))},wp=function(n){Ff=n},Gp=function(){return bl},gT=function(){return VT},QO=function(){VT.textContent="",VT.style.width=""},JO=function(n,a){Uo.style.backgroundColor=n,Uo.style.borderColor=a},jU=function(n,a,g,R){return xp(kp(a),n,g,R)},Uu=function(n,a,g){return w0=!0,xp(Hp(n),n,a,g)},kp=function(n){var a=n.getSvgRoot();const g=n.workspace.scale,R=n.height*g;return n=n.width*g,a=no(a),new Zo(a.y,a.y+R,a.x,a.x+n)},Hp=function(n){return n=n.getScaledBBox(),new Zo(n.top,n.bottom,n.left,n.right)},xp=function(n,a,g,R){const f=n.left+(n.right-n.left)/2,$=n.bottom;n=n.top,R&&(n+=R),R=a.getSourceBlock();let le=R.workspace;for(;le.options.parentWorkspace;)le=le.options.parentWorkspace;return wp(le.getParentSvg().parentNode),Fp(a,R.RTL,f,$,f,n,g)},Fp=function(n,a,g,R,f,$,le){return bl=n,ja=le||null,Uo.style.direction=a?"rtl":"ltr",n=C(),xT=n.getRenderer().getClassName(),FT=n.getTheme().getClassName(),xT&&je(Uo,xT),FT&&je(Uo,FT),Yp(g,R,f,$)},Vp=function(n,a,g,R){return n=yu(n,g.left,g.right,R.width),{initialX:n.divX,initialY:a,finalX:n.divX,finalY:a+Hf,arrowX:n.arrowX,arrowY:-(ju/2+kf),arrowAtTop:!0,arrowVisible:!0}},Wp=function(n,a,g,R){return n=yu(n,g.left,g.right,R.width),{initialX:n.divX,initialY:a-R.height,finalX:n.divX,finalY:a-R.height-Hf,arrowX:n.arrowX,arrowY:R.height-2*kf-ju/2,arrowAtTop:!1,arrowVisible:!0}},qU=function(n,a,g){return n=yu(n,a.left,a.right,g.width),{initialX:n.divX,initialY:0,finalX:n.divX,finalY:0,arrowAtTop:null,arrowX:null,arrowY:null,arrowVisible:!1}},yu=function(n,a,g,R){return a=uT(a,n-R/2,g-R),n=n-ju/2-a,g=B0,n=uT(g,n,R-g-ju),{arrowX:n,divX:a}},Xp=function(){return!!bl},dT=function(n,a){return bl===n?(a?er():eh(),!0):!1},eh=function(){Uo.style.transform="translate(0, 0)",Uo.style.opacity="0",xf=setTimeout(function(){er()},1e3*Gh),ja&&(ja(),ja=null)},er=function(){Xp()&&(xf&&clearTimeout(xf),Uo.style.transform="",Uo.style.left="",Uo.style.top="",Uo.style.opacity="0",Uo.style.display="none",Uo.style.backgroundColor="",Uo.style.borderColor="",ja&&(ja(),ja=null),QO(),bl=null,xT&&(Je(Uo,xT),xT=""),FT&&(Je(Uo,FT),FT=""),C().markFocused())},Yp=function(n,a,g,R){n=Vf.getPositionMetrics(n,a,g,R),n.arrowVisible?(qa.style.display="",qa.style.transform="translate("+n.arrowX+"px,"+n.arrowY+"px) rotate(45deg)",qa.setAttribute("class",n.arrowAtTop?"blocklyDropDownArrow blocklyArrowTop":"blocklyDropDownArrow blocklyArrowBottom")):qa.style.display="none",a=Math.floor(n.initialX),g=Math.floor(n.initialY),R=Math.floor(n.finalX);const f=Math.floor(n.finalY);return Uo.style.left=a+"px",Uo.style.top=g+"px",Uo.style.display="block",Uo.style.opacity="1",Uo.style.transform="translate("+(R-a)+"px,"+(f-g)+"px)",!!n.arrowAtTop},Kp=function(){if(bl){var n=bl.getSourceBlock();n=w0?Hp(bl):kp(n);const a=n.left+(n.right-n.left)/2;Yp(a,n.bottom,a,n.top)}else eh()},zp=function(n){if(!(100<n.getDescendants(!1).length)){var a=n.workspace,g=n.getSvgRoot();a.getAudioManager().play("delete");var R=a.getSvgXY(g);g=g.cloneNode(!0),g.setAttribute("transform","translate("+R.x+","+R.y+")"),a.getParentSvg().appendChild(g),Zp(g,{x:R.x,y:R.y,width:n.width,height:n.height},a.RTL,new Date,a.scale)}},Zp=function(n,a,g,R,f){const $=(new Date().getTime()-R.getTime())/150;1<$?Ot(n):(n.setAttribute("transform","translate("+(a.x+(g?-1:1)*a.width*f/2*$)+","+(a.y+a.height*f*$)+") scale("+(1-$)*f+")"),setTimeout(Zp,10,n,a,g,R,f))},jp=function(n){var a=n.workspace;const g=a.scale;if(a.getAudioManager().play("click"),!(1>g)){var R=a.getSvgXY(n.getSvgRoot());n.outputConnection?(R.x+=(n.RTL?3:-3)*g,R.y+=13*g):n.previousConnection&&(R.x+=(n.RTL?-23:23)*g,R.y+=3*g);var f=Le(Ve.CIRCLE,{cx:R.x,cy:R.y,r:0,fill:"none",stroke:"#888","stroke-width":10},a.getParentSvg());n=Le(Ve.ANIMATE,{id:"animationCircle",begin:"indefinite",attributeName:"r",dur:"150ms",from:0,to:25*g},f),a=Le(Ve.ANIMATE,{id:"animationOpacity",begin:"indefinite",attributeName:"opacity",dur:"150ms",from:1,to:0},f),n.beginElement(),a.beginElement(),setTimeout(()=>void Ot(f),150)}},qp=function(n){if(OT(),n.workspace.getAudioManager().play("disconnect"),!(1>n.workspace.scale)){var a=n.getHeightWidth().height;a=Math.atan(10/a)/Math.PI*180,n.RTL||(a*=-1),qu=n,Qp(n,a,new Date)}},Qp=function(n,a,g){const R=(new Date().getTime()-g.getTime())/200;let f="";1>=R&&(f=`skewX(${Math.round(Math.sin(R*Math.PI*3)*(1-R)*a)})`,kh=setTimeout(Qp,10,n,a,g)),n.getSvgRoot().setAttribute("transform",`${n.getTranslation()} ${f}`)},OT=function(){qu&&(kh&&(clearTimeout(kh),kh=null),qu.getSvgRoot().setAttribute("transform",qu.getTranslation()),qu=null)},QU=function(n,a){return xe("Blockly.utils.string.startsWith()","April 2022","April 2023","Use built-in string.startsWith"),n.startsWith(a)},$u=function(n){return n.length?n.reduce(function(a,g){return a.length<g.length?a:g}).length:0},Jp=function(n,a){if(!n.length)return 0;if(n.length===1)return n[0].length;let g=0;a=a||$u(n);let R;for(R=0;R<a;R++){for(var f=n[0][R],$=1;$<n.length;$++)if(f!==n[$][R])return g;f===" "&&(g=R+1)}for(f=1;f<n.length;f++)if(($=n[f][R])&&$!==" ")return g;return a},eL=function(n,a){if(!n.length)return 0;if(n.length===1)return n[0].length;let g=0;a=a||$u(n);let R;for(R=0;R<a;R++){for(var f=n[0].substr(-R-1,1),$=1;$<n.length;$++)if(f!==n[$].substr(-R-1,1))return g;f===" "&&(g=R+1)}for(f=1;f<n.length;f++)if(($=n[f].charAt(n[f].length-R-1))&&$!==" ")return g;return a},o.wrap$$module$build$src$core$utils$string=function(n,a){n=n.split(`
- `);for(let g=0;g<n.length;g++)n[g]=JU(n[g],a);return n.join(`
- `)},JU=function(n,a){if(n.length<=a)return n;const g=n.trim().split(/\s+/);for(var R=0;R<g.length;R++)g[R].length>a&&(a=g[R].length);var f=-1/0;let $,le=1;do{R=f,$=n,n=[],f=g.length/le;let fe=1;for(let it=0;it<g.length-1;it++)fe<(it+1.5)/f?(fe++,n[it]=!0):n[it]=!1;n=tL(g,n,a),f=th(g,n,a),n=ey(g,n),le++}while(f>R);return $},th=function(n,a,g){const R=[0],f=[];for(var $=0;$<n.length;$++)R[R.length-1]+=n[$].length,a[$]===!0?(R.push(0),f.push(n[$].charAt(n[$].length-1))):a[$]===!1&&R[R.length-1]++;for(n=Math.max(...R),a=0,$=0;$<R.length;$++)a-=2*Math.pow(Math.abs(g-R[$]),1.5),a-=Math.pow(n-R[$],1.5),".?!".indexOf(f[$])!==-1?a+=g/3:",;)]}".indexOf(f[$])!==-1&&(a+=g/4);return 1<R.length&&R[R.length-1]<=R[R.length-2]&&(a+=.5),a},tL=function(n,a,g){let R=th(n,a,g),f;for(let $=0;$<a.length-1;$++){if(a[$]===a[$+1])continue;const le=[].concat(a);le[$]=!le[$],le[$+1]=!le[$+1];const fe=th(n,le,g);fe>R&&(R=fe,f=le)}return f?tL(n,f,g):a},ey=function(n,a){const g=[];for(let R=0;R<n.length;R++)g.push(n[R]),a[R]!==void 0&&g.push(a[R]?`
- `:" ");return g.join("")},o.isNumber$$module$build$src$core$utils$string=function(n){return/^\s*-?\d+(\.\d+)?\s*$/.test(n)},ty=function(n){Hh=n},oy=function(){return Hh},sy=function(){return Ju},iy=function(){return ys},hT=function(n){if(n=oL(n)){for(n=n.tooltip;typeof n=="function";)n=n();if(typeof n!="string")throw Error("Tooltip function must return a string.");return n}return""},oL=function(n){for(;n&&n.tooltip;){if(typeof n.tooltip=="string"||typeof n.tooltip=="function")return n;n=n.tooltip}return null},sL=function(){document.querySelector(".blocklyTooltipDiv")||(ys=document.createElement("div"),ys.className="blocklyTooltipDiv",(N()||document.body).appendChild(ys))},MT=function(n){n.mouseOverWrapper_=Te(n,"pointerover",null,ny),n.mouseOutWrapper_=Te(n,"pointerout",null,ry),n.addEventListener("pointermove",iL,!1)},oh=function(n){n&&(Re(n.mouseOverWrapper_),Re(n.mouseOutWrapper_),n.removeEventListener("pointermove",iL))},ny=function(n){WT||(n=oL(n.currentTarget),Pn!==n&&(m_(),eg=null,Pn=n),clearTimeout(F0))},ry=function(n){WT||(F0=setTimeout(function(){eg=Pn=null,m_()},1),clearTimeout(ec),ec=0)},iL=function(n){if(Pn&&Pn.tooltip&&!WT)if(Ju){const a=zf-n.pageX;n=Zf-n.pageY,Math.sqrt(a*a+n*n)>V0&&m_()}else eg!==Pn&&(clearTimeout(ec),zf=n.pageX,Zf=n.pageY,ec=setTimeout(cy,W0))},nL=function(){eg=Pn=null,m_()},m_=function(){Ju&&(Ju=!1,ys&&(ys.style.display="none")),ec&&(clearTimeout(ec),ec=0)},rL=function(){m_(),WT=!0},_L=function(){WT=!1},_y=function(){ys&&Pn&&(typeof Hh=="function"?Hh(ys,Pn):ly())},ly=function(){var n=hT(Pn);n=o.wrap$$module$build$src$core$utils$string(n,x0),n=n.split(`
- `);for(let a=0;a<n.length;a++){const g=document.createElement("div");g.appendChild(document.createTextNode(n[a])),ys.appendChild(g)}},ay=function(n){const a=document.documentElement.clientWidth,g=document.documentElement.clientHeight;let R=zf;R=n?R-(jf+ys.offsetWidth):R+jf;let f=Zf+qf;return f+ys.offsetHeight>g+window.scrollY&&(f-=ys.offsetHeight+2*qf),n?R=Math.max(xh-window.scrollX,R):R+ys.offsetWidth>a+window.scrollX-2*xh&&(R=a-ys.offsetWidth-2*xh),{x:R,y:f}},cy=function(){if(!WT&&(eg=Pn,ys)){ys.textContent="",_y();var n=Pn.RTL;ys.style.direction=n?"rtl":"ltr",ys.style.display="block",Ju=!0;var{x:a,y:g}=ay(n);ys.style.left=a+"px",ys.style.top=g+"px"}},C_=function(n,a){for(const g in a)n[g]=a[g]!==null&&typeof a[g]=="object"?C_(n[g]||Object.create(null),a[g]):a[g];return n},hl=function(n){return n.bubbleIsVisible!==void 0&&n.setBubbleVisible!==void 0},sh=function(){return Jf},lL=function(n){Jf=n},ih=function(){return em},aL=function(n){em=n},Ml=function(n){n=`${n}`.toLowerCase().trim();var a=K0[n];if(a||(a=n.substring(0,2)==="0x"?"#"+n.substring(2):n,a=a[0]==="#"?a:"#"+a,/^#[0-9a-f]{6}$/.test(a)))return a;if(/^#[0-9a-f]{3}$/.test(a))return["#",a[1],a[1],a[2],a[2],a[3],a[3]].join("");var g=n.match(/^(?:rgb)?\s*\(\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*\)$/);return g&&(n=Number(g[1]),a=Number(g[2]),g=Number(g[3]),0<=n&&256>n&&0<=a&&256>a&&0<=g&&256>g)?Bu(n,a,g):null},Bu=function(n,a,g){return a=n<<16|a<<8|g,16>n?"#"+(16777216|a).toString(16).substr(1):"#"+a.toString(16)},nh=function(n){return n=Ml(n),n?(n=parseInt(n.substr(1),16),[n>>16,n>>8&255,n&255]):[0,0,0]},rh=function(n,a,g){let R=0,f=0,$=0;if(a===0)$=f=R=g;else{const le=Math.floor(n/60),fe=n/60-le;n=g*(1-a);const it=g*(1-a*fe);switch(a=g*(1-a*(1-fe)),le){case 1:R=it,f=g,$=n;break;case 2:R=n,f=g,$=a;break;case 3:R=n,f=it,$=g;break;case 4:R=a,f=n,$=g;break;case 5:R=g,f=n,$=it;break;case 6:case 0:R=g,f=a,$=n}}return Bu(Math.floor(R),Math.floor(f),Math.floor($))},Ba=function(n,a,g){return n=Ml(n),!n||(a=Ml(a),!a)?null:(n=nh(n),a=nh(a),Bu(Math.round(a[0]+g*(n[0]-a[0])),Math.round(a[1]+g*(n[1]-a[1])),Math.round(a[2]+g*(n[2]-a[2]))))},cL=function(n){return rh(n,Jf,255*em)},_h=function(n,a,g){const R=[];var f=n.split("");f.push("");var $=0;n=[];let le=null;for(let Pt=0;Pt<f.length;Pt++){var fe=f[Pt];if($===0)if(fe==="%")($=n.join(""))&&R.push($),n.length=0,$=1;else if(g&&fe===`
- `){const ts=n.join("");ts&&R.push(ts),n.length=0,R.push(fe)}else n.push(fe);else if($===1)fe==="%"?(n.push(fe),$=0):a&&"0"<=fe&&"9">=fe?($=2,le=fe,(fe=n.join(""))&&R.push(fe),n.length=0):fe==="{"?$=3:(n.push("%",fe),$=0);else if($===2)if("0"<=fe&&"9">=fe)le+=fe;else{var it=void 0;R.push(parseInt((it=le)!=null?it:"",10)),Pt--,$=0}else $===3&&(fe===""?(n.splice(0,0,"%{"),Pt--,$=0):fe!=="}"?n.push(fe):($=n.join(""),/[A-Z]\w*/i.test($)?(fe=$.toUpperCase(),(fe=fe.startsWith("BKY_")?fe.substring(4):null)&&fe in o.Msg$$module$build$src$core$msg?($=o.Msg$$module$build$src$core$msg[fe],typeof $=="string"?Array.prototype.push.apply(R,_h($,a,g)):a?R.push(`${$}`):R.push($)):R.push("%{"+$+"}")):R.push("%{"+$+"}"),$=n.length=0))}for((a=n.join(""))&&R.push(a),it=[],n.length=0,f=0;f<R.length;f++)typeof R[f]!="string"||g&&R[f]===`
- `?((a=n.join(""))&&it.push(a),n.length=0,it.push(R[f])):n.push(R[f]);return(a=n.join(""))&&it.push(a),n.length=0,it},TL=function(n){return _h(n,!0,!0)},Ms=function(n){return typeof n!="string"?n:(n=_h(n,!1,!1),n.length?String(n[0]):"")},Ty=function(n){let a=!0;const g=o.Msg$$module$build$src$core$msg,R=n.match(/%{BKY_[A-Z]\w*}/gi);if(R)for(let f=0;f<R.length;f++){const $=R[f].toUpperCase();g[$.slice(6,-1)]===void 0&&(console.warn("No message string for "+R[f]+" in "+n),a=!1)}return a},RT=function(n){const a=typeof n=="string"?Ms(n):n;var g=Number(a);if(!isNaN(g)&&0<=g&&360>=g)return{hue:g,hex:rh(g,sh(),255*ih())};if(g=Ml(a))return{hue:null,hex:g};throw g='Invalid colour: "'+a+'"',n!==a&&(g+=' (from "'+n+'")'),Error(g)},Rl=function(n){return n.getProcedureModel!==void 0&&n.doProcedureUpdate!==void 0&&n.isProcedureDef!==void 0},lh=function(n){return n.startPublishing!==void 0&&n.stopPublishing!==void 0},ln=function(n,a){_(Mt.FIELD,n,a)},Ey=function(n){c(Mt.FIELD,n)},o.fromJson$$module$build$src$core$field_registry=function(n){return Z0.fromJsonInternal(n)},uy=function(n){const a=d(Mt.FIELD,n.type);if(a){if(typeof a.fromJson!="function")throw new TypeError("returned Field was not a IRegistrableField");return a.fromJson(n)}return console.warn("Blockly could not create a field of type "+n.type+". The field is probably not being registered. This could be because the file is not loaded, the field does not register itself (Issue #1584), or the registration is not being reached."),null},gy=function(n){let a=!1;const g=n.map(([le,fe])=>typeof le=="string"?[Ms(le),fe]:(a=!0,[le.alt!==null?Object.assign({},le,{alt:Ms(le.alt)}):Object.assign({},le),fe]));if(a||2>n.length)return{options:g};var R=g.map(([le])=>le),f=$u(R);n=Jp(R,f);const $=eL(R,f);return!n&&!$||f<=n+$?{options:g}:(f=n?R[0].substring(0,n-1):void 0,R=$?R[0].substr(1-$):void 0,{options:dy(g,n,$),prefix:f,suffix:R})},dy=function(n,a,g){return n.map(([R,f])=>[R.substring(a,R.length-g),f])},EL=function(n){if(!Array.isArray(n))throw TypeError("FieldDropdown options must be an array.");if(!n.length)throw TypeError("FieldDropdown options must not be an empty array.");let a=!1;for(let g=0;g<n.length;g++){const R=n[g];Array.isArray(R)?typeof R[1]!="string"?(a=!0,console.error("Invalid option["+g+"]: Each FieldDropdown option id must be a string. Found "+R[1]+" in: ",R)):R[0]&&typeof R[0]!="string"&&typeof R[0].src!="string"&&(a=!0,console.error("Invalid option["+g+"]: Each FieldDropdown option must have a string label or image description. Found"+R[0]+" in: ",R)):(a=!0,console.error("Invalid option["+g+"]: Each FieldDropdown option must be an array. Found: ",R))}if(a)throw TypeError("Found invalid FieldDropdown options.")},o.register$$module$build$src$core$extensions=function(n,a){if(typeof n!="string"||n.trim()==="")throw Error('Error: Invalid extension name "'+n+'"');if(XT[n])throw Error('Error: Extension "'+n+'" is already registered.');if(typeof a!="function")throw Error('Error: Extension "'+n+'" must be a function');XT[n]=a},o.registerMixin$$module$build$src$core$extensions=function(n,a){if(!a||typeof a!="object")throw Error('Error: Mixin "'+n+'" must be a object');o.register$$module$build$src$core$extensions(n,function(){this.mixin(a)})},o.registerMutator$$module$build$src$core$extensions=function(n,a,g,R){const f='Error when registering mutator "'+n+'": ';dL(f,a);const $=gL(a,f);if(g&&typeof g!="function")throw Error(f+'Extension "'+n+'" is not a function');o.register$$module$build$src$core$extensions(n,function(){$&&this.setMutator(new o.MutatorIcon$$module$build$src$core$icons$mutator_icon(R||[],this)),this.mixin(a),g&&g.apply(this)})},Oy=function(n){uL(n)?delete XT[n]:console.warn('No extension mapping for name "'+n+'" found to unregister')},uL=function(n){return!!XT[n]},ah=function(n,a,g){const R=XT[n];if(typeof R!="function")throw Error('Error: Extension "'+n+'" not found.');let f;if(g?hy(n,a):f=Th(a),R.apply(a),g)dL('Error after applying mutator "'+n+'": ',a);else if(!Iy(f,a))throw Error('Error when applying extension "'+n+'": mutation properties changed when applying a non-mutator extension.')},hy=function(n,a){if(Th(a).length)throw Error('Error: tried to apply mutation "'+n+'" to a block that already has mutator functions. Block id: '+a.id)},My=function(n,a){return ch(n.mutationToDom,n.domToMutation,a+" mutationToDom/domToMutation")},Ry=function(n,a){return ch(n.saveExtraState,n.loadExtraState,a+" saveExtraState/loadExtraState")},gL=function(n,a){return ch(n.compose,n.decompose,a+" compose/decompose")},ch=function(n,a,g){if(n&&a){if(typeof n!="function"||typeof a!="function")throw Error(g+" must be a function");return!0}if(!n&&!a)return!1;throw Error(g+"Must have both or neither functions")},dL=function(n,a){const g=My(a,n),R=Ry(a,n);if(!g&&!R)throw Error(n+"Mutations must contain either XML hooks, or JSON hooks, or both");gL(a,n)},Th=function(n){const a=[];return n.domToMutation!==void 0&&a.push(n.domToMutation),n.mutationToDom!==void 0&&a.push(n.mutationToDom),n.saveExtraState!==void 0&&a.push(n.saveExtraState),n.loadExtraState!==void 0&&a.push(n.loadExtraState),n.compose!==void 0&&a.push(n.compose),n.decompose!==void 0&&a.push(n.decompose),a},Iy=function(n,a){if(a=Th(a),a.length!==n.length)return!1;for(let g=0;g<a.length;g++)if(n[g]!==a[g])return!1;return!0},Sy=function(n){if(typeof document!="object")throw Error("runAfterPageLoad() requires browser document.");if(document.readyState==="complete")n();else{const a=setInterval(function(){document.readyState==="complete"&&(clearInterval(a),n())},10)}},o.buildTooltipForDropdown$$module$build$src$core$extensions=function(n,a){const g=[];return function(){g.indexOf(this.type)===-1&&(py(this,n,a),g.push(this.type)),this.setTooltip((function(){const R=String(this.getFieldValue(n));return Ms(a[R])}).bind(this))}},py=function(n,a,g){var R=n.getField(a);if(R instanceof kr&&!R.isOptionListDynamic()){R=R.getOptions();for(const[,f]of R)g[f]===void 0&&console.warn(`No tooltip mapping for value ${f} of field ${a} of block type ${n.type}.`)}},o.buildTooltipWithFieldText$$module$build$src$core$extensions=function(n,a){return function(){this.setTooltip((function(){const g=this.getField(a);return Ms(n).replace("%1",g?g.getText():"")}).bind(this))}},Ly=function(){const n=this.tooltip;this.setTooltip((function(){const a=this.getParent();return a&&a.getInputsInline()&&a.tooltip||n}).bind(this))},Wt=function(n,a){return" "+n+","+a+" "},ki=function(n,a){return" "+n+a.join("")},ti=function(n,a){return" M "+n+","+a+" "},ns=function(n,a){return" m "+n+","+a+" "},Pr=function(n,a){return" l "+n+","+a+" "},IT=function(n){return" l"+n.join("")},Ut=function(n,a){return" "+n+" "+a+" "},fs=function(n,a,g,R){return n+" "+g+" "+g+" "+a+R},OL=function(n,a){_(Mt.ICON,n.toString(),a)},fy=function(n){c(Mt.ICON,n)},Eh=function(n){const a=n.getProcedureMap().getProcedures().filter(R=>!R.getReturnTypes()).map(R=>[R.getName(),R.getParameters().map(f=>f.getName()),!1]);n.getBlocksByType("procedures_defnoreturn",!1).forEach(R=>{!Rl(R)&&lT(R)&&a.push(R.getProcedureDef())});const g=n.getProcedureMap().getProcedures().filter(R=>!!R.getReturnTypes()).map(R=>[R.getName(),R.getParameters().map(f=>f.getName()),!0]);return n.getBlocksByType("procedures_defreturn",!1).forEach(R=>{!Rl(R)&&lT(R)&&g.push(R.getProcedureDef())}),a.sort(hL),g.sort(hL),[a,g]},hL=function(n,a){return n[0].localeCompare(a[0],void 0,{sensitivity:"base"})},o.findLegalName$$module$build$src$core$procedures=function(n,a){if(a.isInFlyout)return n;for(n=n||o.Msg$$module$build$src$core$msg.UNNAMED_KEY||"unnamed";!my(n,a.workspace,a);){const g=n.match(/^(.*?)(\d+)$/);n=g?g[1]+(parseInt(g[2])+1):n+"2"}return n},my=function(n,a,g){return!ML(n,a,g)},ML=function(n,a,g){for(const R of a.getAllBlocks(!1))if(R!==g&&lT(R)&&o.Names$$module$build$src$core$names.equals(R.getProcedureDef()[0],n))return!0;g=g&&Rl(g)?g==null?void 0:g.getProcedureModel():void 0;for(const R of a.getProcedureMap().getProcedures())if(R!==g&&o.Names$$module$build$src$core$names.equals(R.getName(),n))return!0;return!1},o.rename$$module$build$src$core$procedures=function(n){var a=this.getSourceBlock();if(!a)throw new jo;n=n.trim();const g=o.findLegalName$$module$build$src$core$procedures(n,a);Rl(a)&&!a.isInsertionMarker()&&a.getProcedureModel().setName(g);const R=this.getValue();if(R!==n&&R!==g)for(n=a.workspace.getAllBlocks(!1),a=0;a<n.length;a++){const f=n[a];f.renameProcedure&&f.renameProcedure(R,g)}return g},uh=function(n){function a($,le){for(let it=0;it<$.length;it++){var fe=$[it][0];const Pt=$[it][1],ts=o.createElement$$module$build$src$core$utils$xml("block");ts.setAttribute("type",le),ts.setAttribute("gap","16");const qo=o.createElement$$module$build$src$core$utils$xml("mutation");for(qo.setAttribute("name",fe),ts.appendChild(qo),fe=0;fe<Pt.length;fe++){const Wi=o.createElement$$module$build$src$core$utils$xml("arg");Wi.setAttribute("name",Pt[fe]),qo.appendChild(Wi)}g.push(ts)}}const g=[];if(Hi.procedures_defnoreturn){var R=o.createElement$$module$build$src$core$utils$xml("block");R.setAttribute("type","procedures_defnoreturn"),R.setAttribute("gap","16");var f=o.createElement$$module$build$src$core$utils$xml("field");f.setAttribute("name","NAME"),f.appendChild(o.createTextNode$$module$build$src$core$utils$xml(o.Msg$$module$build$src$core$msg.PROCEDURES_DEFNORETURN_PROCEDURE)),R.appendChild(f),g.push(R)}return Hi.procedures_defreturn&&(R=o.createElement$$module$build$src$core$utils$xml("block"),R.setAttribute("type","procedures_defreturn"),R.setAttribute("gap","16"),f=o.createElement$$module$build$src$core$utils$xml("field"),f.setAttribute("name","NAME"),f.appendChild(o.createTextNode$$module$build$src$core$utils$xml(o.Msg$$module$build$src$core$msg.PROCEDURES_DEFRETURN_PROCEDURE)),R.appendChild(f),g.push(R)),Hi.procedures_ifreturn&&(R=o.createElement$$module$build$src$core$utils$xml("block"),R.setAttribute("type","procedures_ifreturn"),R.setAttribute("gap","16"),g.push(R)),g.length&&g[g.length-1].setAttribute("gap","24"),n=Eh(n),a(n[0],"procedures_callnoreturn"),a(n[1],"procedures_callreturn"),g},RL=function(n){var a=[],g=n.getBlocksByType("procedures_mutatorarg",!1);for(let $=0,le;le=g[$];$++)a.push(le.getFieldValue("NAME"));g=o.createElement$$module$build$src$core$utils$xml("xml");const R=o.createElement$$module$build$src$core$utils$xml("block");R.setAttribute("type","procedures_mutatorarg");const f=o.createElement$$module$build$src$core$utils$xml("field");f.setAttribute("name","NAME"),a=FO(o.DEFAULT_ARG$$module$build$src$core$procedures,a),a=o.createTextNode$$module$build$src$core$utils$xml(a),f.appendChild(a),R.appendChild(f),g.appendChild(R),n.updateToolbox(g)},IL=function(n){if(n.type===vr&&n.bubbleType==="mutator"&&n.isOpen&&n.blockId){n=I(n.workspaceId).getBlockById(n.blockId);var a=n.type;(a==="procedures_defnoreturn"||a==="procedures_defreturn")&&(n=n.getIcon(o.MutatorIcon$$module$build$src$core$icons$mutator_icon.TYPE).getWorkspace(),RL(n),n.addChangeListener(Cy))}},Cy=function(n){(n.type===o.CREATE$$module$build$src$core$events$utils||n.type===o.DELETE$$module$build$src$core$events$utils||n.type===o.CHANGE$$module$build$src$core$events$utils||n.type===Sl)&&(n=I(n.workspaceId),RL(n))},SL=function(n,a){return a.getAllBlocks(!1).filter(g=>Ay(g,n)||YD(g)&&o.Names$$module$build$src$core$names.equals(g.getProcedureCall(),n))},Ay=function(n,a){return Rl(n)&&!n.isProcedureDef()&&n.getProcedureModel()&&o.Names$$module$build$src$core$names.equals(n.getProcedureModel().getName(),a)},o.mutateCallers$$module$build$src$core$procedures=function(n){const a=j();var g=n.getProcedureDef()[0];const R=n.mutationToDom(!0);n=SL(g,n.workspace);for(let $=0,le;le=n[$];$++){g=(g=le.mutationToDom())&&bt(g),le.domToMutation&&le.domToMutation(R);var f=le.mutationToDom();f=f&&bt(f),g!==f&&(ee(!1),J(new(pe(o.CHANGE$$module$build$src$core$events$utils))(le,"mutation",null,g,f)),ee(a))}},o.getDefinition$$module$build$src$core$procedures=function(n,a){for(const g of a.getAllBlocks(!1))if(Rl(g)&&g.isProcedureDef()&&o.Names$$module$build$src$core$names.equals(g.getProcedureModel().getName(),n)||lT(g)&&o.Names$$module$build$src$core$names.equals(g.getProcedureDef()[0],n))return g;return null},pL=function(n){return n.isDynamic},wu=function(n){let a=n.outputConnection;return(!a||n.previousConnection&&n.previousConnection.isConnected())&&(a=n.previousConnection),a},by=function(n,a){if(!n||!a)throw Error("Cannot connect null connections.");n.targetConnection=a,a.targetConnection=n},Ny=function(n,a){let g=null;a=a.outputConnection;const R=a==null?void 0:a.getConnectionChecker();for(let f=0,$;$=n.inputList[f];f++){const le=$.connection;let fe;if(le&&((fe=R)!=null&&fe.canConnect(a,le,!1))){if(g)return null;g=le}}return g},Py=function(n,a){let g;for(;g=Ny(n,a);)if(n=g.targetBlock(),!n||n.isShadow())return g;return null},ST=function(n,a){_(Mt.RENDERER,n,a)},vy=function(n){c(Mt.RENDERER,n)},LL=function(n,a,g){return n=new(u(Mt.RENDERER,n))(n),n.init(a,g),n},fL=function(n){aT(n.getTargetWorkspace(),void 0,"String")},mL=function(n){aT(n.getTargetWorkspace(),void 0,"Number")},CL=function(n){aT(n.getTargetWorkspace(),void 0,"Colour")},gh=function(n){let a=[],g=document.createElement("button");return g.setAttribute("text",o.Msg$$module$build$src$core$msg.NEW_STRING_VARIABLE),g.setAttribute("callbackKey","CREATE_VARIABLE_STRING"),a.push(g),g=document.createElement("button"),g.setAttribute("text",o.Msg$$module$build$src$core$msg.NEW_NUMBER_VARIABLE),g.setAttribute("callbackKey","CREATE_VARIABLE_NUMBER"),a.push(g),g=document.createElement("button"),g.setAttribute("text",o.Msg$$module$build$src$core$msg.NEW_COLOUR_VARIABLE),g.setAttribute("callbackKey","CREATE_VARIABLE_COLOUR"),a.push(g),n.registerButtonCallback("CREATE_VARIABLE_STRING",fL),n.registerButtonCallback("CREATE_VARIABLE_NUMBER",mL),n.registerButtonCallback("CREATE_VARIABLE_COLOUR",CL),n=AL(n),a=a.concat(n)},AL=function(n){n=n.getAllVariables();const a=[];if(0<n.length){if(Hi.variables_set_dynamic){var g=n[n.length-1];const R=o.createElement$$module$build$src$core$utils$xml("block");R.setAttribute("type","variables_set_dynamic"),R.setAttribute("gap","24"),R.appendChild(ya(g)),a.push(R)}if(Hi.variables_get_dynamic){n.sort(Xu.compareByName);for(let R=0,f;f=n[R];R++)g=o.createElement$$module$build$src$core$utils$xml("block"),g.setAttribute("type","variables_get_dynamic"),g.setAttribute("gap","8"),g.appendChild(ya(f)),a.push(g)}}return a},Gu=function(n){return n.toCopyData!==void 0},bL=function(){$o.registry.register({name:Wr.ESCAPE,preconditionFn(n){return!n.options.readOnly},callback(n){return n.hideChaff(),!0},keyCodes:[Oo.ESC]})},NL=function(){$o.registry.register({name:Wr.DELETE,preconditionFn(n){const a=A();return!n.options.readOnly&&a!=null&&a.isDeletable()},callback(n,a){return a.preventDefault(),$_.inProgress()?!1:(A().checkAndDelete(),!0)},keyCodes:[Oo.DELETE,Oo.BACKSPACE]})},PL=function(){const n=$o.registry.createSerializedKey(Oo.C,[Oo.CTRL]),a=$o.registry.createSerializedKey(Oo.C,[Oo.ALT]),g=$o.registry.createSerializedKey(Oo.C,[Oo.META]);$o.registry.register({name:Wr.COPY,preconditionFn(R){const f=A();return!R.options.readOnly&&!$_.inProgress()&&f!=null&&f.isDeletable()&&f.isMovable()&&Gu(f)},callback(R,f){return f.preventDefault(),R.hideChaff(),f=A(),!f||!Gu(f)?!1:(Eg=f.toCopyData(),eM=R,!!Eg)},keyCodes:[n,a,g]})},vL=function(){const n=$o.registry.createSerializedKey(Oo.X,[Oo.CTRL]),a=$o.registry.createSerializedKey(Oo.X,[Oo.ALT]),g=$o.registry.createSerializedKey(Oo.X,[Oo.META]);$o.registry.register({name:Wr.CUT,preconditionFn(R){const f=A();return!R.options.readOnly&&!$_.inProgress()&&f!=null&&f instanceof Vr&&f.isDeletable()&&f.isMovable()&&!f.workspace.isFlyout},callback(R){const f=A();return!f||!Gu(f)?!1:(Eg=f.toCopyData(),eM=R,f.checkAndDelete(),!0)},keyCodes:[n,a,g]})},DL=function(){const n=$o.registry.createSerializedKey(Oo.V,[Oo.CTRL]),a=$o.registry.createSerializedKey(Oo.V,[Oo.ALT]),g=$o.registry.createSerializedKey(Oo.V,[Oo.META]);$o.registry.register({name:Wr.PASTE,preconditionFn(R){return!R.options.readOnly&&!$_.inProgress()},callback(){return Eg&&eM?!!TT(Eg,eM):!1},keyCodes:[n,a,g]})},UL=function(){const n=$o.registry.createSerializedKey(Oo.Z,[Oo.CTRL]),a=$o.registry.createSerializedKey(Oo.Z,[Oo.ALT]),g=$o.registry.createSerializedKey(Oo.Z,[Oo.META]);$o.registry.register({name:Wr.UNDO,preconditionFn(R){return!R.options.readOnly&&!$_.inProgress()},callback(R){return R.hideChaff(),R.undo(!1),!0},keyCodes:[n,a,g]})},yL=function(){const n=$o.registry.createSerializedKey(Oo.Z,[Oo.SHIFT,Oo.CTRL]),a=$o.registry.createSerializedKey(Oo.Z,[Oo.SHIFT,Oo.ALT]),g=$o.registry.createSerializedKey(Oo.Z,[Oo.SHIFT,Oo.META]),R=$o.registry.createSerializedKey(Oo.Y,[Oo.CTRL]);$o.registry.register({name:Wr.REDO,preconditionFn(f){return!$_.inProgress()&&!f.options.readOnly},callback(f){return f.hideChaff(),f.undo(!0),!0},keyCodes:[n,a,g,R]})},$L=function(){bL(),NL(),PL(),vL(),DL(),UL(),yL()},BL=function(n){const a={id:n.getId(),name:n.getName(),returnTypes:n.getReturnTypes()};return n.getParameters().length&&(a.parameters=n.getParameters().map(g=>wL(g))),a},wL=function(n){const a={id:n.getId(),name:n.getName()};return n.getTypes().length&&(a.types=n.getTypes()),a},GL=function(n,a,g,R){if(n=new n(R,g.name,g.id).setReturnTypes(g.returnTypes),!g.parameters)return n;for(const[f,$]of g.parameters.entries())n.insertParameter(kL(a,$,R),f);return n},kL=function(n,a,g){return n=new n(g,a.name,a.id),a.types&&n.setTypes(a.types),n},Dy=function(n){const a=Object.create(null),g=O(Mt.SERIALIZER,!0);for(const R in g){let f;const $=(f=g[R])==null?void 0:f.save(n);$&&(a[R]=$)}return a},Uy=function(n,a,{recordUndo:g=!1}={}){var R=O(Mt.SERIALIZER,!0);if(R){R=Object.entries(R).sort(($,le)=>le[1].priority-$[1].priority);var f=j();ee(g),(g=o.getGroup$$module$build$src$core$events$utils())||o.setGroup$$module$build$src$core$events$utils(!0),x(),a instanceof ir&&a.setResizesEnabled(!1);for(const[,$]of R.reverse()){let le;(le=$)==null||le.clear(a)}for(let[$,le]of R.reverse())if(n[$]){let fe;(fe=le)==null||fe.load(n[$],a)}a instanceof ir&&a.setResizesEnabled(!0),oe(),J(new(pe(Ha))(a)),o.setGroup$$module$build$src$core$events$utils(g),ee(f)}},pT=function(n,a,g){const R=g.getBoundingRectangle(),f=R.right-R.left,$=uT(a.top,R.top,a.top+a.height-(R.bottom-R.top))-R.top;let le=a.left;return a=a.left+a.width-f,n.RTL?le=Math.min(a,le):a=Math.max(le,a),(n=uT(le,R.left,a)-R.left)||$?(g.moveBy(n,$,["inbounds"]),!0):!1},HL=function(n){return a=>{var g=n.getMetricsManager();if(g.hasFixedEdges()&&!n.isDragging()){var R;if(Ih.indexOf((R=a.type)!=null?R:"")!==-1){R=g.getScrollMetrics(!0);const f=yy(n,a);f&&(g=o.getGroup$$module$build$src$core$events$utils()||!1,o.setGroup$$module$build$src$core$events$utils(a.group),pT(n,R,f)&&!a.group&&console.warn("Moved object in bounds but there was no event group. This may break undo."),o.setGroup$$module$build$src$core$events$utils(g))}else a.type===Ll&&a.scale&&a.oldScale&&a.scale>a.oldScale&&dh(n)}}},yy=function(n,a){let g=null;switch(a.type){case o.CREATE$$module$build$src$core$events$utils:case o.MOVE$$module$build$src$core$events$utils:(g=n.getBlockById(a.blockId))&&(g=g.getRootBlock());break;case fl:case Dr:g=n.getCommentById(a.commentId)}return g},dh=function(n){var a=n.getMetricsManager();if(a.hasFixedEdges()&&!n.isDragging()){a=a.getScrollMetrics(!0);var g=n.getTopBoundedElements();for(let R=0,f;f=g[R];R++)pT(n,a,f)}},xL=function(n,a){const g=[];for(const R of n.getIcons())(!hl(R)||R.bubbleIsVisible())&&(g.push({location:a,icon:R}),R.onLocationChange(a));for(const R of n.getChildren(!1))g.push(...xL(R,ft.sum(a,R.relativeCoords)));return g},FL=function(){No.registry.register({displayText(){return o.Msg$$module$build$src$core$msg.UNDO},preconditionFn(n){return 0<n.workspace.getUndoStack().length?"enabled":"disabled"},callback(n){n.workspace.undo(!1)},scopeType:No.ScopeType.WORKSPACE,id:"undoWorkspace",weight:1})},VL=function(){No.registry.register({displayText(){return o.Msg$$module$build$src$core$msg.REDO},preconditionFn(n){return 0<n.workspace.getRedoStack().length?"enabled":"disabled"},callback(n){n.workspace.undo(!0)},scopeType:No.ScopeType.WORKSPACE,id:"redoWorkspace",weight:2})},WL=function(){No.registry.register({displayText(){return o.Msg$$module$build$src$core$msg.CLEAN_UP},preconditionFn(n){return n.workspace.isMovable()?1<n.workspace.getTopBlocks(!1).length?"enabled":"disabled":"hidden"},callback(n){n.workspace.cleanUp()},scopeType:No.ScopeType.WORKSPACE,id:"cleanWorkspace",weight:3})},XL=function(n,a){function g($){f--,$.setCollapsed(n),f===0&&o.setGroup$$module$build$src$core$events$utils(!1)}let R=0,f=0;o.setGroup$$module$build$src$core$events$utils(!0);for(let $=0;$<a.length;$++){let le=a[$];for(;le;)f++,setTimeout(g.bind(null,le),R),le=le.getNextBlock(),R+=10}},YL=function(){No.registry.register({displayText(){return o.Msg$$module$build$src$core$msg.COLLAPSE_ALL},preconditionFn(n){if(n.workspace.options.collapse){n=n.workspace.getTopBlocks(!1);for(let a=0;a<n.length;a++){let g=n[a];for(;g;){if(!g.isCollapsed())return"enabled";g=g.getNextBlock()}}return"disabled"}return"hidden"},callback(n){XL(!0,n.workspace.getTopBlocks(!0))},scopeType:No.ScopeType.WORKSPACE,id:"collapseWorkspace",weight:4})},KL=function(){No.registry.register({displayText(){return o.Msg$$module$build$src$core$msg.EXPAND_ALL},preconditionFn(n){if(n.workspace.options.collapse){n=n.workspace.getTopBlocks(!1);for(let a=0;a<n.length;a++){let g=n[a];for(;g;){if(g.isCollapsed())return"enabled";g=g.getNextBlock()}}return"disabled"}return"hidden"},callback(n){XL(!1,n.workspace.getTopBlocks(!0))},scopeType:No.ScopeType.WORKSPACE,id:"expandWorkspace",weight:5})},zL=function(n,a){if(n.isDeletable())Array.prototype.push.apply(a,n.getDescendants(!1));else{n=n.getChildren(!1);for(let g=0;g<n.length;g++)zL(n[g],a)}},Oh=function(n){const a=[];n=n.getTopBlocks(!0);for(let g=0;g<n.length;g++)zL(n[g],a);return a},ku=function(n,a){a?o.setGroup$$module$build$src$core$events$utils(a):(o.setGroup$$module$build$src$core$events$utils(!0),a=o.getGroup$$module$build$src$core$events$utils());const g=n.shift();g&&(g.isDeadOrDying()?ku(n,a):(g.dispose(!1,!0),setTimeout(ku,10,n,a))),o.setGroup$$module$build$src$core$events$utils(!1)},ZL=function(){No.registry.register({displayText(n){return n.workspace?(n=Oh(n.workspace).length,n===1?o.Msg$$module$build$src$core$msg.DELETE_BLOCK:o.Msg$$module$build$src$core$msg.DELETE_X_BLOCKS.replace("%1",`${n}`)):""},preconditionFn(n){return n.workspace&&0<Oh(n.workspace).length?"enabled":"disabled"},callback(n){if(n.workspace){n.workspace.cancelCurrentGesture();var a=Oh(n.workspace);2>a.length?ku(a):kO(o.Msg$$module$build$src$core$msg.DELETE_ALL_BLOCKS.replace("%1",String(a.length)),function(g){g&&ku(a)})}},scopeType:No.ScopeType.WORKSPACE,id:"workspaceDelete",weight:6})},$y=function(){FL(),VL(),WL(),YL(),KL(),ZL()},jL=function(){No.registry.register({displayText(){return o.Msg$$module$build$src$core$msg.DUPLICATE_BLOCK},preconditionFn(n){return n=n.block,!n.isInFlyout&&n.isDeletable()&&n.isMovable()?n.isDuplicatable()?"enabled":"disabled":"hidden"},callback(n){if(n.block){var a=n.block.toCopyData();a&&TT(a,n.block.workspace)}},scopeType:No.ScopeType.BLOCK,id:"blockDuplicate",weight:1})},qL=function(){No.registry.register({displayText(n){return n.block.hasIcon(Li.TYPE)?o.Msg$$module$build$src$core$msg.REMOVE_COMMENT:o.Msg$$module$build$src$core$msg.ADD_COMMENT},preconditionFn(n){return n=n.block,!n.isInFlyout&&n.workspace.options.comments&&!n.isCollapsed()&&n.isEditable()?"enabled":"hidden"},callback(n){n=n.block,n.hasIcon(Li.TYPE)?n.setCommentText(null):n.setCommentText("")},scopeType:No.ScopeType.BLOCK,id:"blockComment",weight:2})},QL=function(){No.registry.register({displayText(n){return n.block.getInputsInline()?o.Msg$$module$build$src$core$msg.EXTERNAL_INPUTS:o.Msg$$module$build$src$core$msg.INLINE_INPUTS},preconditionFn(n){if(n=n.block,!n.isInFlyout&&n.isMovable()&&!n.isCollapsed()){for(let a=1;a<n.inputList.length;a++)if(!(n.inputList[a-1]instanceof oM||n.inputList[a]instanceof oM))return"enabled"}return"hidden"},callback(n){n.block.setInputsInline(!n.block.getInputsInline())},scopeType:No.ScopeType.BLOCK,id:"blockInline",weight:3})},JL=function(){No.registry.register({displayText(n){return n.block.isCollapsed()?o.Msg$$module$build$src$core$msg.EXPAND_BLOCK:o.Msg$$module$build$src$core$msg.COLLAPSE_BLOCK},preconditionFn(n){return n=n.block,!n.isInFlyout&&n.isMovable()&&n.workspace.options.collapse?"enabled":"hidden"},callback(n){n.block.setCollapsed(!n.block.isCollapsed())},scopeType:No.ScopeType.BLOCK,id:"blockCollapseExpand",weight:4})},ef=function(){No.registry.register({displayText(n){return n.block.isEnabled()?o.Msg$$module$build$src$core$msg.DISABLE_BLOCK:o.Msg$$module$build$src$core$msg.ENABLE_BLOCK},preconditionFn(n){return n=n.block,!n.isInFlyout&&n.workspace.options.disable&&n.isEditable()?n.getInheritedDisabled()?"disabled":"enabled":"hidden"},callback(n){n=n.block;const a=o.getGroup$$module$build$src$core$events$utils();a||o.setGroup$$module$build$src$core$events$utils(!0),n.setEnabled(!n.isEnabled()),o.setGroup$$module$build$src$core$events$utils(a)},scopeType:No.ScopeType.BLOCK,id:"blockDisable",weight:5})},tf=function(){No.registry.register({displayText(n){var a=n.block;return n=a.getDescendants(!1).length,(a=a.getNextBlock())&&(n-=a.getDescendants(!1).length),n===1?o.Msg$$module$build$src$core$msg.DELETE_BLOCK:o.Msg$$module$build$src$core$msg.DELETE_X_BLOCKS.replace("%1",`${n}`)},preconditionFn(n){return!n.block.isInFlyout&&n.block.isDeletable()?"enabled":"hidden"},callback(n){n.block&&n.block.checkAndDelete()},scopeType:No.ScopeType.BLOCK,id:"blockDelete",weight:6})},of=function(){No.registry.register({displayText(){return o.Msg$$module$build$src$core$msg.HELP},preconditionFn(n){return n=n.block,(typeof n.helpUrl=="function"?n.helpUrl():n.helpUrl)?"enabled":"hidden"},callback(n){n.block.showHelp()},scopeType:No.ScopeType.BLOCK,id:"blockHelp",weight:7})},By=function(){jL(),qL(),QL(),JL(),ef(),tf(),of()},sf=function(){$y(),By()},wy=function(n,a){var g=null;g=typeof n=="string"?document.getElementById(n)||document.querySelector(n):n;let R;if(!document.contains(g)&&document!==((R=g)==null?void 0:R.ownerDocument))throw Error("Error: container is not in current document");n=new vn(a||{}),a=document.createElement("div"),a.className="injectionDiv",a.tabIndex=0,is(a,es.LABEL,o.Msg$$module$build$src$core$msg.WORKSPACE_ARIA_LABEL),g.appendChild(a),g=Gy(a,n);const f=ky(a,g,n);return Hy(f),m(f),P(f),a.addEventListener("focusin",function(){m(f)}),f},Gy=function(n,a){n.setAttribute("dir","LTR"),qe(a.hasCss,a.pathToMedia),n=Le(Ve.SVG,{xmlns:xu,"xmlns:html":yr,"xmlns:xlink":an,version:"1.1",class:"blocklySvg",tabindex:"0"},n);const g=Le(Ve.DEFS,{},n),R=String(Math.random()).substring(2);return a.gridPattern=Qf.createDom(R,a.gridOptions,g),n},ky=function(n,a,g){g.parentWorkspace=null,g=new ir(g);const R=g.options;g.scale=R.zoomOptions.startScale,a.appendChild(g.createDom("blocklyMainBackground",n));var f=g.getRenderer().getClassName();return f&&je(n,f),(f=g.getTheme().getClassName())&&je(n,f),!R.hasCategories&&R.languageTree&&(n=g.addFlyout(Ve.SVG),Nt(n,a)),R.hasTrashcan&&g.addTrashcan(),R.zoomOptions&&R.zoomOptions.controls&&g.addZoomControls(),g.getThemeManager().subscribe(a,"workspaceBackgroundColour","background-color"),g.translate(0,0),g.addChangeListener(HL(g)),P(g),Cp(),Bp(),sL(),g},Hy=function(n){const a=n.options;var g=n.getParentSvg();if(ve(g.parentNode,"contextmenu",null,function(R){Ue(R)||R.preventDefault()}),g=ve(window,"resize",null,function(){m_(),n.hideComponents(!0),Kp(),Pp(),P(n),dh(n)}),n.setResizeHandlerWrapper(g),Fy(),a.languageTree){g=n.getToolbox();const R=n.getFlyout(!0);g?g.init():R&&(R.init(n),R.show(a.languageTree),typeof R.scrollToStart=="function"&&R.scrollToStart())}a.hasTrashcan&&n.trashcan.init(),a.zoomOptions&&a.zoomOptions.controls&&n.zoomControls_.init(),a.moveOptions&&a.moveOptions.scrollbars?(n.scrollbar=new fm(n,a.moveOptions.scrollbars===!0||!!a.moveOptions.scrollbars.horizontal,a.moveOptions.scrollbars===!0||!!a.moveOptions.scrollbars.vertical,"blocklyMainWorkspaceScrollbar"),n.scrollbar.resize()):n.setMetrics({x:.5,y:.5}),a.hasSounds&&Vy(a.pathToMedia,n)},xy=function(n){const a=C();a&&!(Ue(n)||a.rendered&&!a.isVisible())&&$o.registry.onKeyDown(a,n)},Fy=function(){B$||(ve(document,"scroll",null,function(){const n=S();for(let a=0,g;g=n[a];a++)g instanceof ir&&g.updateInverseScreenCTM()}),ve(document,"keydown",null,xy),Te(document,"touchend",null,Me),Te(document,"touchcancel",null,Me),DT&&ve(window,"orientationchange",document,function(){P(C())})),B$=!0},Vy=function(n,a){function g(){for(;f.length;){const $=f.pop();$&&Re($)}R.preload()}const R=a.getAudioManager();R.load([n+"click.mp3",n+"click.wav",n+"click.ogg"],"click"),R.load([n+"disconnect.wav",n+"disconnect.mp3",n+"disconnect.ogg"],"disconnect"),R.load([n+"delete.mp3",n+"delete.ogg",n+"delete.wav"],"delete");const f=[];f.push(ve(document,"pointermove",null,g,!0)),f.push(ve(document,"touchstart",null,g,!0))},Wy=function(n){return n.getType!==void 0&&n.initView!==void 0&&n.dispose!==void 0&&n.getWeight!==void 0&&n.getSize!==void 0&&n.applyColour!==void 0&&n.hideForInsertionMarker!==void 0&&n.updateEditable!==void 0&&n.updateCollapsed!==void 0&&n.isShownWhenCollapsed!==void 0&&n.setOffsetInBlock!==void 0&&n.onLocationChange!==void 0&&n.onClick!==void 0},Xy=function(n){return n.paste!==void 0},Yy=function(n){return n.isSelectable()},Ky=function(n){C().hideChaff(n)},Qt=Qt||{},Qt.scope={},Qt.ASSUME_ES5=!1,Qt.ASSUME_NO_NATIVE_MAP=!1,Qt.ASSUME_NO_NATIVE_SET=!1,Qt.SIMPLE_FROUND_POLYFILL=!1,Qt.ISOLATE_POLYFILLS=!1,Qt.FORCE_POLYFILL_PROMISE=!1,Qt.FORCE_POLYFILL_PROMISE_WHEN_NO_UNHANDLED_REJECTION=!1,Qt.defineProperty=Qt.ASSUME_ES5||typeof Object.defineProperties=="function"?Object.defineProperty:function(n,a,g){return n==Array.prototype||n==Object.prototype||(n[a]=g.value),n},Qt.getGlobal=function(n){n=[typeof globalThis=="object"&&globalThis,n,typeof window=="object"&&window,typeof self=="object"&&self,typeof Is=="object"&&Is];for(var a=0;a<n.length;++a){var g=n[a];if(g&&g.Math==Math)return g}throw Error("Cannot find global object")},Qt.global=Qt.getGlobal(this),Qt.IS_SYMBOL_NATIVE=typeof Symbol=="function"&&typeof Symbol("x")=="symbol",Qt.TRUST_ES6_POLYFILLS=!Qt.ISOLATE_POLYFILLS||Qt.IS_SYMBOL_NATIVE,Qt.polyfills={},Qt.propertyToPolyfillSymbol={},Qt.POLYFILL_PREFIX="$jscp$",Qt.polyfill=function(n,a,g,R){a&&(Qt.ISOLATE_POLYFILLS?Qt.polyfillIsolated(n,a,g,R):Qt.polyfillUnisolated(n,a,g,R))},Qt.polyfillUnisolated=function(n,a,g,R){for(g=Qt.global,n=n.split("."),R=0;R<n.length-1;R++){var f=n[R];if(!(f in g))return;g=g[f]}n=n[n.length-1],R=g[n],a=a(R),a!=R&&a!=null&&Qt.defineProperty(g,n,{configurable:!0,writable:!0,value:a})},Qt.polyfillIsolated=function(n,a,g,R){var f=n.split(".");n=f.length===1,R=f[0],R=!n&&R in Qt.polyfills?Qt.polyfills:Qt.global;for(var $=0;$<f.length-1;$++){var le=f[$];if(!(le in R))return;R=R[le]}f=f[f.length-1],g=Qt.IS_SYMBOL_NATIVE&&g==="es6"?R[f]:null,a=a(g),a!=null&&(n?Qt.defineProperty(Qt.polyfills,f,{configurable:!0,writable:!0,value:a}):a!==g&&(Qt.propertyToPolyfillSymbol[f]===void 0&&(g=1e9*Math.random()>>>0,Qt.propertyToPolyfillSymbol[f]=Qt.IS_SYMBOL_NATIVE?Qt.global.Symbol(f):Qt.POLYFILL_PREFIX+g+"$"+f),Qt.defineProperty(R,Qt.propertyToPolyfillSymbol[f],{configurable:!0,writable:!0,value:a})))},Qt.polyfill("globalThis",function(n){return n||Qt.global},"es_2020","es3"),Qt.arrayIteratorImpl=function(n){var a=0;return function(){return a<n.length?{done:!1,value:n[a++]}:{done:!0}}},Qt.arrayIterator=function(n){return{next:Qt.arrayIteratorImpl(n)}},Qt.initSymbol=function(){},Qt.iteratorPrototype=function(n){return n={next:n},n[Symbol.iterator]=function(){return this},n},Qt.iteratorFromArray=function(n,a){n instanceof String&&(n+="");var g=0,R=!1,f={next:function(){if(!R&&g<n.length){var $=g++;return{value:a($,n[$]),done:!1}}return R=!0,{done:!0,value:void 0}}};return f[Symbol.iterator]=function(){return f},f},Qt.polyfill("Array.prototype.values",function(n){return n||function(){return Qt.iteratorFromArray(this,function(a,g){return g})}},"es8","es3"),Qt.polyfill("Array.prototype.flat",function(n){return n||function(a){a=a===void 0?1:a;var g=[];return Array.prototype.forEach.call(this,function(R){Array.isArray(R)&&0<a?(R=Array.prototype.flat.call(R,a-1),g.push.apply(g,R)):g.push(R)}),g}},"es9","es5"),Qt.owns=function(n,a){return Object.prototype.hasOwnProperty.call(n,a)},Qt.polyfill("Object.entries",function(n){return n||function(a){var g=[],R;for(R in a)Qt.owns(a,R)&&g.push([R,a[R]]);return g}},"es8","es3"),Qt.polyfill("Object.values",function(n){return n||function(a){var g=[],R;for(R in a)Qt.owns(a,R)&&g.push(a[R]);return g}},"es8","es3");var Il=Object.create(null),pz={typeMap:Il},hh=Object.create(null),A_="default",Mt=class{constructor(n){this.name=n}toString(){return this.name}};Mt.CONNECTION_CHECKER=new Mt("connectionChecker"),Mt.CURSOR=new Mt("cursor"),Mt.EVENT=new Mt("event"),Mt.FIELD=new Mt("field"),Mt.INPUT=new Mt("input"),Mt.RENDERER=new Mt("renderer"),Mt.TOOLBOX=new Mt("toolbox"),Mt.THEME=new Mt("theme"),Mt.TOOLBOX_ITEM=new Mt("toolboxItem"),Mt.FLYOUTS_VERTICAL_TOOLBOX=new Mt("flyoutsVerticalToolbox"),Mt.FLYOUTS_HORIZONTAL_TOOLBOX=new Mt("flyoutsHorizontalToolbox"),Mt.METRICS_MANAGER=new Mt("metricsManager"),Mt.BLOCK_DRAGGER=new Mt("blockDragger"),Mt.SERIALIZER=new Mt("serializer"),Mt.ICON=new Mt("icon"),Mt.PASTER=new Mt("paster");var b_={DEFAULT:A_,TEST_ONLY:pz};b_.Type=Mt,b_.getAllItems=O,b_.getClass=u,b_.getClassFromOptions=h,b_.getObject=d,b_.hasItem=E,b_.register=_,b_.unregister=c;var Hi=Object.create(null),Hu=Object.create(null),zy,Zy=null,jy,LT=[],qy={defineBlocksWithJsonArrayInternal:V},oi={TEST_ONLY:qy};oi.createBlockDefinitionsFromJsonArray=o.createBlockDefinitionsFromJsonArray$$module$build$src$core$common,oi.defineBlocks=o.defineBlocks$$module$build$src$core$common,oi.defineBlocksWithJsonArray=F,oi.draggingConnections=LT,oi.getAllWorkspaces=S,oi.getBlockTypeCounts=G,oi.getMainWorkspace=C,oi.getParentContainer=N,oi.getSelected=A,oi.getWorkspaceById=I,oi.registerWorkspace=L,oi.setMainWorkspace=m,oi.setParentContainer=U,oi.setSelected=b,oi.svgResize=P,oi.unregisterWorkpace=p;var Qy="!#$%()*+,-./:;=?@[]^_`{|}~ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789",Jy={genUid:()=>{const n=Qy.length,a=[];for(let g=0;20>g;g++)a[g]=Qy.charAt(Math.random()*n);return a.join("")}},Lz=0,nf={TEST_ONLY:Jy};nf.genUid=K,nf.getNextUniqueId=W;var rf,fT,Mh,Sl,pl,wa,mT,Rh,Ga,N_,P_,CT,vr,AT,bT,NT,Ll,fl,ka,PT,Dr,Ha,Ih,xa,Sh,Si;rf="",fT=!0,Mh=0,o.CREATE$$module$build$src$core$events$utils="create",o.CREATE$$module$build$src$core$events$utils,o.DELETE$$module$build$src$core$events$utils="delete",o.DELETE$$module$build$src$core$events$utils,o.CHANGE$$module$build$src$core$events$utils="change",o.CHANGE$$module$build$src$core$events$utils,Sl="block_field_intermediate_change",o.MOVE$$module$build$src$core$events$utils="move",o.MOVE$$module$build$src$core$events$utils,pl="var_create",wa="var_delete",mT="var_rename",Rh="ui",Ga="drag",N_="selected",P_="click",CT="marker_move",vr="bubble_open",AT="trashcan_open",bT="toolbox_item_select",NT="theme_change",Ll="viewport_change",fl="comment_create",ka="comment_delete",PT="comment_change",Dr="comment_move",Ha="finished_loading",Ih=[o.CREATE$$module$build$src$core$events$utils,o.MOVE$$module$build$src$core$events$utils,fl,Dr],xa=[],Sh={FIRE_QUEUE:xa,fireNow:Y,fireInternal:ie,setGroupInternal:ae},Si={BLOCK_CHANGE:o.CHANGE$$module$build$src$core$events$utils,BLOCK_CREATE:o.CREATE$$module$build$src$core$events$utils,BLOCK_DELETE:o.DELETE$$module$build$src$core$events$utils,BLOCK_DRAG:Ga,BLOCK_FIELD_INTERMEDIATE_CHANGE:Sl,BLOCK_MOVE:o.MOVE$$module$build$src$core$events$utils,BUBBLE_OPEN:vr,BUMP_EVENTS:Ih,CHANGE:o.CHANGE$$module$build$src$core$events$utils,CLICK:P_,COMMENT_CHANGE:PT,COMMENT_CREATE:fl,COMMENT_DELETE:ka,COMMENT_MOVE:Dr,CREATE:o.CREATE$$module$build$src$core$events$utils,DELETE:o.DELETE$$module$build$src$core$events$utils,FINISHED_LOADING:Ha,MARKER_MOVE:CT,MOVE:o.MOVE$$module$build$src$core$events$utils,SELECTED:N_,TEST_ONLY:Sh,THEME_CHANGE:NT,TOOLBOX_ITEM_SELECT:bT,TRASHCAN_OPEN:AT,UI:Rh,VAR_CREATE:pl,VAR_DELETE:wa,VAR_RENAME:mT,VIEWPORT_CHANGE:Ll},Si.clearPendingUndo=H,Si.disable=o.disable$$module$build$src$core$events$utils,Si.disableOrphans=We,Si.enable=o.enable$$module$build$src$core$events$utils,Si.filter=re,Si.fire=J,Si.fromJson=Se,Si.get=pe,Si.getDescendantIds=ge,Si.getGroup=o.getGroup$$module$build$src$core$events$utils,Si.getRecordUndo=j,Si.isEnabled=Q,Si.setGroup=o.setGroup$$module$build$src$core$events$utils,Si.setRecordUndo=ee;var vT=class{constructor(){this.workspaceId=void 0,this.isUiEvent=!1,this.type="",this.group=o.getGroup$$module$build$src$core$events$utils(),this.recordUndo=j()}toJson(){return{type:this.type,group:this.group}}static fromJson(n,a,g){return g.isBlank=!1,g.group=n.group||"",g.workspaceId=a.id,g}isNull(){return!1}run(n){}getEventWorkspace_(){let n;if(this.workspaceId&&(n=I(this.workspaceId)),!n)throw Error("Workspace is null. Event must have been generated from real Blockly events.");return n}},Ur=class extends vT{constructor(n){super(),this.recordUndo=!1,this.isUiEvent=!0,this.isBlank=typeof n>"u",this.workspaceId=n||""}},_f=class extends Ur{constructor(n,a,g){a=n?n.workspace.id:a,a===null&&(a=void 0),super(a),this.type=P_,this.blockId=n?n.id:void 0,this.targetType=g}toJson(){const n=super.toJson();if(!this.targetType)throw Error("The click target type is undefined. Either pass a block to the constructor, or call fromJson");return n.targetType=this.targetType,n.blockId=this.blockId,n}static fromJson(n,a,g){return a=super.fromJson(n,a,g??new _f),a.targetType=n.targetType,a.blockId=n.blockId,a}},lf;(function(n){n.BLOCK="block",n.WORKSPACE="workspace",n.ZOOM_CONTROLS="zoom_controls"})(lf||(lf={})),_(Mt.EVENT,P_,_f);var fz=750,e0="ontouchstart"in globalThis||!!(globalThis.document&&document.documentElement&&"ontouchstart"in document.documentElement)||!(!globalThis.navigator||!globalThis.navigator.maxTouchPoints&&!globalThis.navigator.msMaxTouchPoints),ph=null,Fa={mousedown:["pointerdown"],mouseenter:["pointerenter"],mouseleave:["pointerleave"],mousemove:["pointermove"],mouseout:["pointerout"],mouseover:["pointerover"],mouseup:["pointerup","pointercancel"],touchend:["pointerup"],touchcancel:["pointercancel"]},Lh=0,Va={TOUCH_ENABLED:e0,TOUCH_MAP:Fa};Va.checkTouchIdentifier=ke,Va.clearTouchIdentifier=Ie,Va.getTouchIdentifierFromEvent=Ae,Va.longStart=be,Va.longStop=Me,Va.shouldHandleEvent=Pe;var af,t0,o0,s0,fh,mh,cf,i0,n0,r0;(function(n){function a(R){return g.indexOf(R.toUpperCase())!==-1}af=n;const g=af.toUpperCase();t0=a("JavaFX"),o0=a("WebKit"),s0=a("Gecko")&&!o0,fh=a("Android"),n=globalThis.navigator&&globalThis.navigator.maxTouchPoints,mh=a("iPad")||a("Macintosh")&&0<n,cf=a("iPhone")&&!mh,i0=a("Macintosh"),n0=mh||fh&&!a("Mobile")||a("Silk"),r0=!n0&&(cf||fh)})(globalThis.navigator&&globalThis.navigator.userAgent||"");var mz=af,_0=t0,Tf=s0,Ch=fh,DT=mh,l0=cf,Ef=i0,uf=r0,Cz={ANDROID:Ch,GECKO:Tf,IPAD:DT,IPHONE:l0,JavaFx:_0,MAC:Ef,MOBILE:uf,raw:mz},a0=40,c0=125,v_={};v_.bind=Te,v_.conditionalBind=ve,v_.getScrollDeltaPixels=Xe,v_.isRightButton=Ye,v_.isTargetInput=Ue,v_.mouseToSvg=De,v_.unbind=Re;var T0={};T0.removeElem=Ke;var D_=class{constructor(n){this.name_=n}toString(){return this.name_}};D_.POSITIONABLE=new D_("positionable"),D_.DRAG_TARGET=new D_("drag_target"),D_.DELETE_AREA=new D_("delete_area"),D_.AUTOHIDEABLE=new D_("autohideable");var ks=class{constructor(){this.componentData=new Map,this.capabilityToComponentIds=new Map}addComponent(n,a){const g=n.component.id;if(!a&&this.componentData.has(g)){var R;throw Error('Plugin "'+g+'" with capabilities "'+((R=this.componentData.get(g))==null?void 0:R.capabilities)+'" already added.')}for(this.componentData.set(g,n),a=[],R=0;R<n.capabilities.length;R++){const f=String(n.capabilities[R]).toLowerCase();if(a.push(f),this.capabilityToComponentIds.has(f)){let $;($=this.capabilityToComponentIds.get(f))==null||$.push(g)}else this.capabilityToComponentIds.set(f,[g])}this.componentData.get(g).capabilities=a}removeComponent(n){const a=this.componentData.get(n);if(a){for(let g=0;g<a.capabilities.length;g++){const R=String(a.capabilities[g]).toLowerCase();Ke(this.capabilityToComponentIds.get(R),n)}this.componentData.delete(n)}}addCapability(n,a){if(!this.getComponent(n))throw Error('Cannot add capability, "'+a+'". Plugin "'+n+'" has not been added to the ComponentManager');if(this.hasCapability(n,a))console.warn('Plugin "'+n+'already has capability "'+a+'"');else{a=`${a}`.toLowerCase();var g;(g=this.componentData.get(n))==null||g.capabilities.push(a);var R;(R=this.capabilityToComponentIds.get(a))==null||R.push(n)}}removeCapability(n,a){if(!this.getComponent(n))throw Error('Cannot remove capability, "'+a+'". Plugin "'+n+'" has not been added to the ComponentManager');this.hasCapability(n,a)?(a=`${a}`.toLowerCase(),Ke(this.componentData.get(n).capabilities,a),Ke(this.capabilityToComponentIds.get(a),n)):console.warn('Plugin "'+n+`doesn't have capability "`+a+'" to remove')}hasCapability(n,a){return a=`${a}`.toLowerCase(),this.componentData.has(n)&&this.componentData.get(n).capabilities.indexOf(a)!==-1}getComponent(n){let a;return(a=this.componentData.get(n))==null?void 0:a.component}getComponents(n,a){if(n=`${n}`.toLowerCase(),n=this.capabilityToComponentIds.get(n),!n)return[];const g=[];if(a){const R=[];n.forEach(f=>{R.push(this.componentData.get(f))}),R.sort(function(f,$){return f.weight-$.weight}),R.forEach(function(f){g.push(f.component)})}else n.forEach(R=>{g.push(this.componentData.get(R).component)});return g}};ks.Capability=D_;var gf=!1,df=`
- .blocklySvg {
- background-color: #fff;
- outline: none;
- overflow: hidden; /* IE overflows by default. */
- position: absolute;
- display: block;
- }
- .blocklyWidgetDiv {
- display: none;
- position: absolute;
- z-index: 99999; /* big value for bootstrap3 compatibility */
- }
- .injectionDiv {
- height: 100%;
- position: relative;
- overflow: hidden; /* So blocks in drag surface disappear at edges */
- touch-action: none;
- }
- .blocklyNonSelectable {
- user-select: none;
- -ms-user-select: none;
- -webkit-user-select: none;
- }
- .blocklyBlockCanvas.blocklyCanvasTransitioning,
- .blocklyBubbleCanvas.blocklyCanvasTransitioning {
- transition: transform .5s;
- }
- .blocklyTooltipDiv {
- background-color: #ffffc7;
- border: 1px solid #ddc;
- box-shadow: 4px 4px 20px 1px rgba(0,0,0,.15);
- color: #000;
- display: none;
- font: 9pt sans-serif;
- opacity: .9;
- padding: 2px;
- position: absolute;
- z-index: 100000; /* big value for bootstrap3 compatibility */
- }
- .blocklyDropDownDiv {
- position: absolute;
- left: 0;
- top: 0;
- z-index: 1000;
- display: none;
- border: 1px solid;
- border-color: #dadce0;
- background-color: #fff;
- border-radius: 2px;
- padding: 4px;
- box-shadow: 0 0 3px 1px rgba(0,0,0,.3);
- }
- .blocklyDropDownDiv.blocklyFocused {
- box-shadow: 0 0 6px 1px rgba(0,0,0,.3);
- }
- .blocklyDropDownContent {
- max-height: 300px; /* @todo: spec for maximum height. */
- overflow: auto;
- overflow-x: hidden;
- position: relative;
- }
- .blocklyDropDownArrow {
- position: absolute;
- left: 0;
- top: 0;
- width: 16px;
- height: 16px;
- z-index: -1;
- background-color: inherit;
- border-color: inherit;
- }
- .blocklyDropDownButton {
- display: inline-block;
- float: left;
- padding: 0;
- margin: 4px;
- border-radius: 4px;
- outline: none;
- border: 1px solid;
- transition: box-shadow .1s;
- cursor: pointer;
- }
- .blocklyArrowTop {
- border-top: 1px solid;
- border-left: 1px solid;
- border-top-left-radius: 4px;
- border-color: inherit;
- }
- .blocklyArrowBottom {
- border-bottom: 1px solid;
- border-right: 1px solid;
- border-bottom-right-radius: 4px;
- border-color: inherit;
- }
- .blocklyResizeSE {
- cursor: se-resize;
- fill: #aaa;
- }
- .blocklyResizeSW {
- cursor: sw-resize;
- fill: #aaa;
- }
- .blocklyResizeLine {
- stroke: #515A5A;
- stroke-width: 1;
- }
- .blocklyHighlightedConnectionPath {
- fill: none;
- stroke: #fc3;
- stroke-width: 4px;
- }
- .blocklyPathLight {
- fill: none;
- stroke-linecap: round;
- stroke-width: 1;
- }
- .blocklySelected>.blocklyPathLight {
- display: none;
- }
- .blocklyDraggable {
- cursor: grab;
- cursor: -webkit-grab;
- }
- .blocklyDragging {
- cursor: grabbing;
- cursor: -webkit-grabbing;
- }
- /* Changes cursor on mouse down. Not effective in Firefox because of
- https://bugzilla.mozilla.org/show_bug.cgi?id=771241 */
- .blocklyDraggable:active {
- cursor: grabbing;
- cursor: -webkit-grabbing;
- }
- .blocklyDragging.blocklyDraggingDelete {
- cursor: url("<<<PATH>>>/handdelete.cur"), auto;
- }
- .blocklyDragging>.blocklyPath,
- .blocklyDragging>.blocklyPathLight {
- fill-opacity: .8;
- stroke-opacity: .8;
- }
- .blocklyDragging>.blocklyPathDark {
- display: none;
- }
- .blocklyDisabled>.blocklyPath {
- fill-opacity: .5;
- stroke-opacity: .5;
- }
- .blocklyDisabled>.blocklyPathLight,
- .blocklyDisabled>.blocklyPathDark {
- display: none;
- }
- .blocklyInsertionMarker>.blocklyPath,
- .blocklyInsertionMarker>.blocklyPathLight,
- .blocklyInsertionMarker>.blocklyPathDark {
- fill-opacity: .2;
- stroke: none;
- }
- .blocklyMultilineText {
- font-family: monospace;
- }
- .blocklyNonEditableText>text {
- pointer-events: none;
- }
- .blocklyFlyout {
- position: absolute;
- z-index: 20;
- }
- .blocklyText text {
- cursor: default;
- }
- /*
- Don't allow users to select text. It gets annoying when trying to
- drag a block and selected text moves instead.
- */
- .blocklySvg text {
- user-select: none;
- -ms-user-select: none;
- -webkit-user-select: none;
- cursor: inherit;
- }
- .blocklyHidden {
- display: none;
- }
- .blocklyFieldDropdown:not(.blocklyHidden) {
- display: block;
- }
- .blocklyIconGroup {
- cursor: default;
- }
- .blocklyIconGroup:not(:hover),
- .blocklyIconGroupReadonly {
- opacity: .6;
- }
- .blocklyIconShape {
- fill: #00f;
- stroke: #fff;
- stroke-width: 1px;
- }
- .blocklyIconSymbol {
- fill: #fff;
- }
- .blocklyMinimalBody {
- margin: 0;
- padding: 0;
- }
- .blocklyHtmlInput {
- border: none;
- border-radius: 4px;
- height: 100%;
- margin: 0;
- outline: none;
- padding: 0;
- width: 100%;
- text-align: center;
- display: block;
- box-sizing: border-box;
- }
- /* Remove the increase and decrease arrows on the field number editor */
- input.blocklyHtmlInput[type=number]::-webkit-inner-spin-button,
- input.blocklyHtmlInput[type=number]::-webkit-outer-spin-button {
- -webkit-appearance: none;
- margin: 0;
- }
- input[type=number] {
- -moz-appearance: textfield;
- }
- .blocklyMainBackground {
- stroke-width: 1;
- stroke: #c6c6c6; /* Equates to #ddd due to border being off-pixel. */
- }
- .blocklyMutatorBackground {
- fill: #fff;
- stroke: #ddd;
- stroke-width: 1;
- }
- .blocklyFlyoutBackground {
- fill: #ddd;
- fill-opacity: .8;
- }
- .blocklyMainWorkspaceScrollbar {
- z-index: 20;
- }
- .blocklyFlyoutScrollbar {
- z-index: 30;
- }
- .blocklyScrollbarHorizontal,
- .blocklyScrollbarVertical {
- position: absolute;
- outline: none;
- }
- .blocklyScrollbarBackground {
- opacity: 0;
- }
- .blocklyScrollbarHandle {
- fill: #ccc;
- }
- .blocklyScrollbarBackground:hover+.blocklyScrollbarHandle,
- .blocklyScrollbarHandle:hover {
- fill: #bbb;
- }
- /* Darken flyout scrollbars due to being on a grey background. */
- /* By contrast, workspace scrollbars are on a white background. */
- .blocklyFlyout .blocklyScrollbarHandle {
- fill: #bbb;
- }
- .blocklyFlyout .blocklyScrollbarBackground:hover+.blocklyScrollbarHandle,
- .blocklyFlyout .blocklyScrollbarHandle:hover {
- fill: #aaa;
- }
- .blocklyInvalidInput {
- background: #faa;
- }
- .blocklyVerticalMarker {
- stroke-width: 3px;
- fill: rgba(255,255,255,.5);
- pointer-events: none;
- }
- .blocklyComputeCanvas {
- position: absolute;
- width: 0;
- height: 0;
- }
- .blocklyNoPointerEvents {
- pointer-events: none;
- }
- .blocklyContextMenu {
- border-radius: 4px;
- max-height: 100%;
- }
- .blocklyDropdownMenu {
- border-radius: 2px;
- padding: 0 !important;
- }
- .blocklyDropdownMenu .blocklyMenuItem {
- /* 28px on the left for icon or checkbox. */
- padding-left: 28px;
- }
- /* BiDi override for the resting state. */
- .blocklyDropdownMenu .blocklyMenuItemRtl {
- /* Flip left/right padding for BiDi. */
- padding-left: 5px;
- padding-right: 28px;
- }
- .blocklyWidgetDiv .blocklyMenu {
- background: #fff;
- border: 1px solid transparent;
- box-shadow: 0 0 3px 1px rgba(0,0,0,.3);
- font: normal 13px Arial, sans-serif;
- margin: 0;
- outline: none;
- padding: 4px 0;
- position: absolute;
- overflow-y: auto;
- overflow-x: hidden;
- max-height: 100%;
- z-index: 20000; /* Arbitrary, but some apps depend on it... */
- }
- .blocklyWidgetDiv .blocklyMenu.blocklyFocused {
- box-shadow: 0 0 6px 1px rgba(0,0,0,.3);
- }
- .blocklyDropDownDiv .blocklyMenu {
- background: inherit; /* Compatibility with gapi, reset from goog-menu */
- border: inherit; /* Compatibility with gapi, reset from goog-menu */
- font: normal 13px "Helvetica Neue", Helvetica, sans-serif;
- outline: none;
- position: relative; /* Compatibility with gapi, reset from goog-menu */
- z-index: 20000; /* Arbitrary, but some apps depend on it... */
- }
- /* State: resting. */
- .blocklyMenuItem {
- border: none;
- color: #000;
- cursor: pointer;
- list-style: none;
- margin: 0;
- /* 7em on the right for shortcut. */
- min-width: 7em;
- padding: 6px 15px;
- white-space: nowrap;
- }
- /* State: disabled. */
- .blocklyMenuItemDisabled {
- color: #ccc;
- cursor: inherit;
- }
- /* State: hover. */
- .blocklyMenuItemHighlight {
- background-color: rgba(0,0,0,.1);
- }
- /* State: selected/checked. */
- .blocklyMenuItemCheckbox {
- height: 16px;
- position: absolute;
- width: 16px;
- }
- .blocklyMenuItemSelected .blocklyMenuItemCheckbox {
- background: url(<<<PATH>>>/sprites.png) no-repeat -48px -16px;
- float: left;
- margin-left: -24px;
- position: static; /* Scroll with the menu. */
- }
- .blocklyMenuItemRtl .blocklyMenuItemCheckbox {
- float: right;
- margin-right: -24px;
- }
- .blocklyBlockDragSurface {
- position: absolute;
- top: 0;
- left: 0;
- right: 0;
- bottom: 0;
- overflow: visible !important;
- z-index: 80;
- pointer-events: none;
- }
- `,Of={};Of.inject=qe,Of.register=Be;var ft=class{constructor(n,a){this.x=n,this.y=a}clone(){return new ft(this.x,this.y)}scale(n){return this.x*=n,this.y*=n,this}translate(n,a){return this.x+=n,this.y+=a,this}static equals(n,a){return n===a?!0:n&&a?n.x===a.x&&n.y===a.y:!1}static distance(n,a){const g=n.x-a.x;return n=n.y-a.y,Math.sqrt(g*g+n*n)}static magnitude(n){return Math.sqrt(n.x*n.x+n.y*n.y)}static difference(n,a){return new ft(n.x-a.x,n.y-a.y)}static sum(n,a){return new ft(n.x+a.x,n.y+a.y)}},E0={};E0.warn=xe;var xu="http://www.w3.org/2000/svg",yr="http://www.w3.org/1999/xhtml",an="http://www.w3.org/1999/xlink",U_;(function(n){n[n.ELEMENT_NODE=1]="ELEMENT_NODE",n[n.TEXT_NODE=3]="TEXT_NODE",n[n.COMMENT_NODE=8]="COMMENT_NODE"})(U_||(U_={}));var tr=null,hf=0,Ah=null,Hs={HTML_NS:yr};Hs.NodeType=U_,Hs.SVG_NS=xu,Hs.XLINK_NS=an,Hs.addClass=je,Hs.containsNode=z,Hs.createSvgElement=Le,Hs.getFastTextWidth=_e,Hs.getFastTextWidthWithSizeString=ze,Hs.getTextWidth=Ee,Hs.hasClass=St,Hs.insertAfter=Nt,Hs.measureFontMetrics=_t,Hs.removeClass=Je,Hs.removeClasses=He,Hs.removeNode=Ot,Hs.setCssTransform=y,Hs.startTextWidthCache=x,Hs.stopTextWidthCache=oe;var Ve=class{constructor(n){this.tagName=n}toString(){return this.tagName}};Ve.ANIMATE=new Ve("animate"),Ve.CIRCLE=new Ve("circle"),Ve.CLIPPATH=new Ve("clipPath"),Ve.DEFS=new Ve("defs"),Ve.FECOMPOSITE=new Ve("feComposite"),Ve.FECOMPONENTTRANSFER=new Ve("feComponentTransfer"),Ve.FEFLOOD=new Ve("feFlood"),Ve.FEFUNCA=new Ve("feFuncA"),Ve.FEGAUSSIANBLUR=new Ve("feGaussianBlur"),Ve.FEPOINTLIGHT=new Ve("fePointLight"),Ve.FESPECULARLIGHTING=new Ve("feSpecularLighting"),Ve.FILTER=new Ve("filter"),Ve.FOREIGNOBJECT=new Ve("foreignObject"),Ve.G=new Ve("g"),Ve.IMAGE=new Ve("image"),Ve.LINE=new Ve("line"),Ve.PATH=new Ve("path"),Ve.PATTERN=new Ve("pattern"),Ve.POLYGON=new Ve("polygon"),Ve.RECT=new Ve("rect"),Ve.SVG=new Ve("svg"),Ve.TEXT=new Ve("text"),Ve.TSPAN=new Ve("tspan");var Zo=class{constructor(n,a,g,R){this.top=n,this.bottom=a,this.left=g,this.right=R}getHeight(){return this.bottom-this.top}getWidth(){return this.right-this.left}contains(n,a){return n>=this.left&&n<=this.right&&a>=this.top&&a<=this.bottom}intersects(n){return!(this.left>n.right||this.right<n.left||this.top>n.bottom||this.bottom<n.top)}},Jo=class{constructor(n,a){this.width=n,this.height=a}static equals(n,a){return n===a?!0:n&&a?n.width===a.width&&n.height===a.height:!1}},u0={getSizeInternal:Ho},ml={TEST_ONLY:u0};ml.getBorderBox=go,ml.getComputedStyle=Ko,ml.getContainerOffsetToScrollInto=q,ml.getPageOffset=no,ml.getSize=wt,ml.getViewportPageOffset=io,ml.scrollIntoContainerView=zo;var g0=/translate\(\s*([-+\d.e]+)([ ,]\s*([-+\d.e]+)\s*)?/,d0=/transform:\s*translate(?:3d)?\(\s*([-+\d.e]+)\s*px([ ,]\s*([-+\d.e]+)\s*px)?/,Az={XY_REGEX:g0,XY_STYLE_REGEX:d0},Wa={TEST_ONLY:Az};Wa.getDocumentScroll=he,Wa.getInjectionDivXY=D,Wa.getRelativeXY=ue,Wa.getViewportBBox=Z,Wa.screenToWsCoordinates=ce,Wa.wsToScreenCoordinates=Ge;var ms=class{constructor(n,a,g,R,f){this.workspace=n,this.horizontal=a,this.oldHostMetrics=null,this.ratio=1,this.origin=new ft(0,0),this.startDragHandle=this.handlePosition=this.handleLength=this.scrollbarLength=this.startDragMouse=0,this.containerVisible=this.isHandleVisible=!0,this.position=new ft(0,0),this.onMouseMoveWrapper_=this.onMouseUpWrapper_=null,this.pair=g||!1,this.margin=f!==void 0?f:ms.DEFAULT_SCROLLBAR_MARGIN,n="blocklyScrollbar"+(this.horizontal?"Horizontal":"Vertical"),R&&(n+=" "+R),this.outerSvg=Le(Ve.SVG,{class:n}),R=Le(Ve.G,{},this.outerSvg),this.svgBackground=Le(Ve.RECT,{class:"blocklyScrollbarBackground"},R),n=Math.floor((ms.scrollbarThickness-5)/2),this.svgHandle=Le(Ve.RECT,{class:"blocklyScrollbarHandle",rx:n,ry:n},R),this.workspace.getThemeManager().subscribe(this.svgHandle,"scrollbarColour","fill"),this.workspace.getThemeManager().subscribe(this.svgHandle,"scrollbarOpacity","fill-opacity"),Nt(this.outerSvg,this.workspace.getParentSvg()),this.setInitialThickness(),a?(this.lengthAttribute_="width",this.positionAttribute_="x"):(this.lengthAttribute_="height",this.positionAttribute_="y"),this.onMouseDownBarWrapper_=ve(this.svgBackground,"pointerdown",this,this.onMouseDownBar),this.onMouseDownHandleWrapper_=ve(this.svgHandle,"pointerdown",this,this.onMouseDownHandle)}setInitialThickness(){const n=ms.scrollbarThickness;this.horizontal?(this.svgBackground.setAttribute("height",String(n)),this.outerSvg.setAttribute("height",String(n)),this.svgHandle.setAttribute("height",String(n-5)),this.svgHandle.setAttribute("y","2.5")):(this.svgBackground.setAttribute("width",String(n)),this.outerSvg.setAttribute("width",String(n)),this.svgHandle.setAttribute("width",String(n-5)),this.svgHandle.setAttribute("x","2.5"))}dispose(){this.cleanUp(),Re(this.onMouseDownBarWrapper_),Re(this.onMouseDownHandleWrapper_),Ot(this.outerSvg),this.workspace.getThemeManager().unsubscribe(this.svgHandle)}constrainHandleLength(n){return n=0>=n||isNaN(n)?0:Math.min(n,this.scrollbarLength)}setHandleLength(n){this.handleLength=n,this.svgHandle.setAttribute(this.lengthAttribute_,String(this.handleLength))}constrainHandlePosition(n){return n=0>=n||isNaN(n)?0:Math.min(n,this.scrollbarLength-this.handleLength)}setHandlePosition(n){this.handlePosition=n,this.svgHandle.setAttribute(this.positionAttribute_,String(this.handlePosition))}setScrollbarLength(n){this.scrollbarLength=n,this.outerSvg.setAttribute(this.lengthAttribute_,String(this.scrollbarLength)),this.svgBackground.setAttribute(this.lengthAttribute_,String(this.scrollbarLength))}setPosition(n,a){this.position.x=n,this.position.y=a,y(this.outerSvg,"translate("+(this.position.x+this.origin.x)+"px,"+(this.position.y+this.origin.y)+"px)")}resize(n){!n&&(n=this.workspace.getMetrics(),!n)||this.oldHostMetrics&&ms.metricsAreEquivalent(n,this.oldHostMetrics)||(this.horizontal?this.resizeHorizontal(n):this.resizeVertical(n),this.oldHostMetrics=n,this.updateMetrics())}requiresViewResize(n){return this.oldHostMetrics?this.oldHostMetrics.viewWidth!==n.viewWidth||this.oldHostMetrics.viewHeight!==n.viewHeight||this.oldHostMetrics.absoluteLeft!==n.absoluteLeft||this.oldHostMetrics.absoluteTop!==n.absoluteTop:!0}resizeHorizontal(n){this.requiresViewResize(n)?this.resizeViewHorizontal(n):this.resizeContentHorizontal(n)}resizeViewHorizontal(n){var a=n.viewWidth-2*this.margin;this.pair&&(a-=ms.scrollbarThickness),this.setScrollbarLength(Math.max(0,a)),a=n.absoluteLeft+this.margin,this.pair&&this.workspace.RTL&&(a+=ms.scrollbarThickness),this.setPosition(a,n.absoluteTop+n.viewHeight-ms.scrollbarThickness-this.margin),this.resizeContentHorizontal(n)}resizeContentHorizontal(n){if(n.viewWidth>=n.scrollWidth)this.setHandleLength(this.scrollbarLength),this.setHandlePosition(0),this.pair||this.setVisible(!1);else{this.pair||this.setVisible(!0);var a=this.scrollbarLength*n.viewWidth/n.scrollWidth;a=this.constrainHandleLength(a),this.setHandleLength(a),a=n.scrollWidth-n.viewWidth;var g=this.scrollbarLength-this.handleLength;n=(n.viewLeft-n.scrollLeft)/a*g,n=this.constrainHandlePosition(n),this.setHandlePosition(n),this.ratio=g/a}}resizeVertical(n){this.requiresViewResize(n)?this.resizeViewVertical(n):this.resizeContentVertical(n)}resizeViewVertical(n){let a=n.viewHeight-2*this.margin;this.pair&&(a-=ms.scrollbarThickness),this.setScrollbarLength(Math.max(0,a)),this.setPosition(this.workspace.RTL?n.absoluteLeft+this.margin:n.absoluteLeft+n.viewWidth-ms.scrollbarThickness-this.margin,n.absoluteTop+this.margin),this.resizeContentVertical(n)}resizeContentVertical(n){if(n.viewHeight>=n.scrollHeight)this.setHandleLength(this.scrollbarLength),this.setHandlePosition(0),this.pair||this.setVisible(!1);else{this.pair||this.setVisible(!0);var a=this.scrollbarLength*n.viewHeight/n.scrollHeight;a=this.constrainHandleLength(a),this.setHandleLength(a),a=n.scrollHeight-n.viewHeight;var g=this.scrollbarLength-this.handleLength;n=(n.viewTop-n.scrollTop)/a*g,n=this.constrainHandlePosition(n),this.setHandlePosition(n),this.ratio=g/a}}isVisible(){return this.isHandleVisible}setContainerVisible(n){const a=n!==this.containerVisible;this.containerVisible=n,a&&this.updateDisplay_()}setVisible(n){if(this.pair)throw Error("Unable to toggle visibility of paired scrollbars.");this.setVisibleInternal(n)}setVisibleInternal(n){const a=n!==this.isVisible();this.isHandleVisible=n,a&&this.updateDisplay_()}updateDisplay_(){this.containerVisible&&this.isVisible()?this.outerSvg.setAttribute("display","block"):this.outerSvg.setAttribute("display","none")}onMouseDownBar(n){if(this.workspace.markFocused(),Ie(),this.cleanUp(),Ye(n))n.stopPropagation();else{var a=De(n,this.workspace.getParentSvg(),this.workspace.getInverseScreenCTM());a=this.horizontal?a.x:a.y;var g=D(this.svgHandle);g=this.horizontal?g.x:g.y;var R=this.handlePosition,f=.95*this.handleLength;a<=g?R-=f:a>=g+this.handleLength&&(R+=f),this.setHandlePosition(this.constrainHandlePosition(R)),this.updateMetrics(),n.stopPropagation(),n.preventDefault()}}onMouseDownHandle(n){this.workspace.markFocused(),this.cleanUp(),Ye(n)?n.stopPropagation():(this.startDragHandle=this.handlePosition,this.startDragMouse=this.horizontal?n.clientX:n.clientY,this.onMouseUpWrapper_=ve(document,"pointerup",this,this.onMouseUpHandle),this.onMouseMoveWrapper_=ve(document,"pointermove",this,this.onMouseMoveHandle),n.stopPropagation(),n.preventDefault())}onMouseMoveHandle(n){this.setHandlePosition(this.constrainHandlePosition(this.startDragHandle+((this.horizontal?n.clientX:n.clientY)-this.startDragMouse))),this.updateMetrics()}onMouseUpHandle(){Ie(),this.cleanUp()}cleanUp(){this.workspace.hideChaff(!0),this.onMouseUpWrapper_&&(Re(this.onMouseUpWrapper_),this.onMouseUpWrapper_=null),this.onMouseMoveWrapper_&&(Re(this.onMouseMoveWrapper_),this.onMouseMoveWrapper_=null)}getRatio_(){let n=this.handlePosition/(this.scrollbarLength-this.handleLength);return isNaN(n)&&(n=0),n}updateMetrics(){const n=this.getRatio_();this.horizontal?this.workspace.setMetrics({x:n}):this.workspace.setMetrics({y:n})}set(n,a){this.setHandlePosition(this.constrainHandlePosition(n*this.ratio)),(a||a===void 0)&&this.updateMetrics()}setOrigin(n,a){this.origin=new ft(n,a)}static metricsAreEquivalent(n,a){return n.viewWidth===a.viewWidth&&n.viewHeight===a.viewHeight&&n.viewLeft===a.viewLeft&&n.viewTop===a.viewTop&&n.absoluteTop===a.absoluteTop&&n.absoluteLeft===a.absoluteLeft&&n.scrollWidth===a.scrollWidth&&n.scrollHeight===a.scrollHeight&&n.scrollLeft===a.scrollLeft&&n.scrollTop===a.scrollTop}};ms.scrollbarThickness=e0?25:15,ms.DEFAULT_SCROLLBAR_MARGIN=.5;var bh={parseFromString:function(){throw Error("DOMParser was not found in the global scope and was not properly injected using injectDependencies")}},Mf={serializeToString:function(){throw Error("XMLSerializer was not foundin the global scope and was not properly injected using injectDependencies")}},{document:Nh,DOMParser:Fu,XMLSerializer:Vu}=globalThis;Fu&&(bh=new Fu),Vu&&(Mf=new Vu);var O0="https://developers.google.com/blockly/xml",bz=/[\x00-\x09\x0B\x0C\x0E-\x1F]/g,UT={NAME_SPACE:O0};UT.createElement=o.createElement$$module$build$src$core$utils$xml,UT.createTextNode=o.createTextNode$$module$build$src$core$utils$xml,UT.domToText=bt,UT.injectDependencies=It,UT.textToDom=o.textToDom$$module$build$src$core$utils$xml;var Rf="categoryToolbox",h0="flyoutToolbox",To;(function(n){n[n.TOP=0]="TOP",n[n.BOTTOM=1]="BOTTOM",n[n.LEFT=2]="LEFT",n[n.RIGHT=3]="RIGHT"})(To||(To={}));var M0={hasCategoriesInternal:L_},Cl={};Cl.Position=To,Cl.TEST_ONLY=M0,Cl.convertFlyoutDefToJsonArray=Ls,Cl.convertToolboxDefToJson=Wo,Cl.hasCategories=ei,Cl.isCategoryCollapsible=nt,Cl.parseToolboxTree=Qn;var y_;(function(n){n[n.TOP=0]="TOP",n[n.BOTTOM=1]="BOTTOM"})(y_||(y_={}));var yT;(function(n){n[n.LEFT=0]="LEFT",n[n.RIGHT=1]="RIGHT"})(yT||(yT={}));var Al;(function(n){n[n.UP=0]="UP",n[n.DOWN=1]="DOWN"})(Al||(Al={}));var Xa={};Xa.bumpDirection=Al,Xa.bumpPositionRect=GO,Xa.getCornerOppositeToolbox=wO,Xa.getStartPositionRect=f_,Xa.horizontalPosition=yT,Xa.verticalPosition=y_;var pi={width:96,height:124,url:"sprites.png"},R0=class{constructor(n){this.workspace=n,this.id="zoomControls",this.boundEvents=[],this.zoomResetGroup=this.zoomOutGroup=this.zoomInGroup=null,this.HEIGHT=this.WIDTH=32,this.SMALL_SPACING=2,this.LARGE_SPACING=11,this.MARGIN_HORIZONTAL=this.MARGIN_VERTICAL=20,this.svgGroup=null,this.top=this.left=0,this.initialized=!1}createDom(){this.svgGroup=Le(Ve.G,{});const n=String(Math.random()).substring(2);return this.createZoomOutSvg(n),this.createZoomInSvg(n),this.workspace.isMovable()&&this.createZoomResetSvg(n),this.svgGroup}init(){this.workspace.getComponentManager().addComponent({component:this,weight:2,capabilities:[ks.Capability.POSITIONABLE]}),this.initialized=!0}dispose(){this.workspace.getComponentManager().removeComponent("zoomControls"),this.svgGroup&&Ot(this.svgGroup);for(const n of this.boundEvents)Re(n);this.boundEvents.length=0}getBoundingRectangle(){let n=this.SMALL_SPACING+2*this.HEIGHT;return this.zoomResetGroup&&(n+=this.LARGE_SPACING+this.HEIGHT),new Zo(this.top,this.top+n,this.left,this.left+this.WIDTH)}position(n,a){if(this.initialized){var g=wO(this.workspace,n),R=this.SMALL_SPACING+2*this.HEIGHT;if(this.zoomResetGroup&&(R+=this.LARGE_SPACING+this.HEIGHT),n=f_(g,new Jo(this.WIDTH,R),this.MARGIN_HORIZONTAL,this.MARGIN_VERTICAL,n,this.workspace),g=g.vertical,a=GO(n,this.MARGIN_VERTICAL,g===y_.TOP?Al.DOWN:Al.UP,a),g===y_.TOP){var f=this.SMALL_SPACING+this.HEIGHT,$;($=this.zoomInGroup)==null||$.setAttribute("transform","translate(0, "+f+")"),this.zoomResetGroup&&this.zoomResetGroup.setAttribute("transform","translate(0, "+(f+this.LARGE_SPACING+this.HEIGHT)+")")}else{$=this.zoomResetGroup?this.LARGE_SPACING+this.HEIGHT:0;let fe;(fe=this.zoomInGroup)==null||fe.setAttribute("transform","translate(0, "+$+")"),$=$+this.SMALL_SPACING+this.HEIGHT,(f=this.zoomOutGroup)==null||f.setAttribute("transform","translate(0, "+$+")")}this.top=a.top,this.left=a.left;var le;(le=this.svgGroup)==null||le.setAttribute("transform","translate("+this.left+","+this.top+")")}}createZoomOutSvg(n){this.zoomOutGroup=Le(Ve.G,{class:"blocklyZoom blocklyZoomOut"},this.svgGroup);const a=Le(Ve.CLIPPATH,{id:"blocklyZoomoutClipPath"+n},this.zoomOutGroup);Le(Ve.RECT,{width:32,height:32},a),Le(Ve.IMAGE,{width:pi.width,height:pi.height,x:-64,y:-92,"clip-path":"url(#blocklyZoomoutClipPath"+n+")"},this.zoomOutGroup).setAttributeNS(an,"xlink:href",this.workspace.options.pathToMedia+pi.url),this.boundEvents.push(ve(this.zoomOutGroup,"pointerdown",null,this.zoom.bind(this,-1)))}createZoomInSvg(n){this.zoomInGroup=Le(Ve.G,{class:"blocklyZoom blocklyZoomIn"},this.svgGroup);const a=Le(Ve.CLIPPATH,{id:"blocklyZoominClipPath"+n},this.zoomInGroup);Le(Ve.RECT,{width:32,height:32},a),Le(Ve.IMAGE,{width:pi.width,height:pi.height,x:-32,y:-92,"clip-path":"url(#blocklyZoominClipPath"+n+")"},this.zoomInGroup).setAttributeNS(an,"xlink:href",this.workspace.options.pathToMedia+pi.url),this.boundEvents.push(ve(this.zoomInGroup,"pointerdown",null,this.zoom.bind(this,1)))}zoom(n,a){this.workspace.markFocused(),this.workspace.zoomCenter(n),this.fireZoomEvent(),Ie(),a.stopPropagation(),a.preventDefault()}createZoomResetSvg(n){this.zoomResetGroup=Le(Ve.G,{class:"blocklyZoom blocklyZoomReset"},this.svgGroup);const a=Le(Ve.CLIPPATH,{id:"blocklyZoomresetClipPath"+n},this.zoomResetGroup);Le(Ve.RECT,{width:32,height:32},a),Le(Ve.IMAGE,{width:pi.width,height:pi.height,y:-92,"clip-path":"url(#blocklyZoomresetClipPath"+n+")"},this.zoomResetGroup).setAttributeNS(an,"xlink:href",this.workspace.options.pathToMedia+pi.url),this.boundEvents.push(ve(this.zoomResetGroup,"pointerdown",null,this.resetZoom.bind(this)))}resetZoom(n){this.workspace.markFocused();const a=Math.log(this.workspace.options.zoomOptions.startScale/this.workspace.scale)/Math.log(this.workspace.options.zoomOptions.scaleSpeed);this.workspace.beginCanvasTransition(),this.workspace.zoomCenter(a),this.workspace.scrollCenter(),setTimeout(this.workspace.endCanvasTransition.bind(this.workspace),500),this.fireZoomEvent(),Ie(),n.stopPropagation(),n.preventDefault()}fireZoomEvent(){const n=new(pe(P_))(null,this.workspace.id,"zoom_controls");J(n)}};Be(`
- .blocklyZoom>image, .blocklyZoom>svg>image {
- opacity: .4;
- }
- .blocklyZoom>image:hover, .blocklyZoom>svg>image:hover {
- opacity: .6;
- }
- .blocklyZoom>image:active, .blocklyZoom>svg>image:active {
- opacity: .8;
- }
- `);var xi=class{constructor(n){this.name=n}toString(){return this.name}equals(n){return this.name===n.toString()}};xi.MUTATOR=new xi("mutator"),xi.WARNING=new xi("warning"),xi.COMMENT=new xi("comment"),function(n){n[n.VALUE=1]="VALUE",n[n.STATEMENT=3]="STATEMENT",n[n.DUMMY=5]="DUMMY",n[n.CUSTOM=6]="CUSTOM",n[n.END_ROW=7]="END_ROW"}(o.inputTypes$$module$build$src$core$inputs$input_types||(o.inputTypes$$module$build$src$core$inputs$input_types={})),o.inputTypes$$module$build$src$core$inputs$input_types;var I0=function(n,a){window.alert(n),a&&a()},S0=function(n,a){a(window.confirm(n))},p0=function(n,a,g){g(window.prompt(n,a))},L0={confirmInternal:VD},Ya={TEST_ONLY:L0};Ya.alert=bu,Ya.confirm=kO,Ya.prompt=HO,Ya.setAlert=FD,Ya.setConfirm=WD,Ya.setPrompt=XD;var If,f0;o.Msg$$module$build$src$core$msg=Object.create(null),If=function(n){Object.keys(n).forEach(function(a){o.Msg$$module$build$src$core$msg[a]=n[a]})},f0={Msg:o.Msg$$module$build$src$core$msg,setLocale:If};var Wu=class extends vT{constructor(n){super(),this.isBlank=typeof n>"u",n&&(this.varId=n.getId(),this.workspaceId=n.workspace.id)}toJson(){const n=super.toJson();if(!this.varId)throw Error("The var ID is undefined. Either pass a variable to the constructor, or call fromJson");return n.varId=this.varId,n}static fromJson(n,a,g){return a=super.fromJson(n,a,g??new Wu),a.varId=n.varId,a}},Sf=class extends Wu{constructor(n){super(n),this.type=pl,n&&(this.varType=n.type,this.varName=n.name)}toJson(){const n=super.toJson();if(this.varType===void 0)throw Error("The var type is undefined. Either pass a variable to the constructor, or call fromJson");if(!this.varName)throw Error("The var name is undefined. Either pass a variable to the constructor, or call fromJson");return n.varType=this.varType,n.varName=this.varName,n}static fromJson(n,a,g){return a=super.fromJson(n,a,g??new Sf),a.varType=n.varType,a.varName=n.varName,a}run(n){const a=this.getEventWorkspace_();if(!this.varId)throw Error("The var ID is undefined. Either pass a variable to the constructor, or call fromJson");if(!this.varName)throw Error("The var name is undefined. Either pass a variable to the constructor, or call fromJson");n?a.createVariable(this.varName,this.varType,this.varId):a.deleteVariableById(this.varId)}};_(Mt.EVENT,pl,Sf);var Xu=class{constructor(n,a,g,R){this.workspace=n,this.name=a,this.type=g||"",this.id_=R||K()}getId(){return this.id_}static compareByName(n,a){return n.name.localeCompare(a.name,void 0,{sensitivity:"base"})}},pf="VARIABLE",Lf="ijkmnopqrstuvwxyzabcdefgh",m0={generateUniqueNameInternal:KD},si={CATEGORY_NAME:pf,TEST_ONLY:m0,VAR_LETTER_OPTIONS:Lf};si.allDeveloperVariables=o.allDeveloperVariables$$module$build$src$core$variables,si.allUsedVarModels=o.allUsedVarModels$$module$build$src$core$variables,si.createVariableButtonHandler=aT,si.flyoutCategory=xO,si.flyoutCategoryBlocks=cp,si.generateUniqueName=Tp,si.generateUniqueNameFromOptions=FO,si.generateVariableFieldDom=ya,si.getAddedVariables=WO,si.getOrCreateVariablePackage=o.getOrCreateVariablePackage$$module$build$src$core$variables,si.getVariable=o.getVariable$$module$build$src$core$variables,si.nameUsedWithAnyType=Ep,si.nameUsedWithConflictingParam=up,si.promptName=VO,si.renameVariable=o.renameVariable$$module$build$src$core$variables;var $r=class{constructor(n,a,g,R,f){this.workspace=n,this.editable=this.movable=this.deletable=!0,this.disposed_=!1,this.isComment=!0,this.id=f&&!n.getCommentById(f)?f:K(),n.addTopComment(this),this.xy_=new ft(0,0),this.height_=g,this.width_=R,this.RTL=n.RTL,this.content_=a,$r.fireCreateEvent(this)}dispose(){this.disposed_||(Q()&&J(new(pe(ka))(this)),this.workspace.removeTopComment(this),this.disposed_=!0)}getHeight(){return this.height_}setHeight(n){this.height_=n}getWidth(){return this.width_}setWidth(n){this.width_=n}getRelativeToSurfaceXY(){return new ft(this.xy_.x,this.xy_.y)}moveBy(n,a){const g=new(pe(Dr))(this);this.xy_.translate(n,a),g.recordNew(),J(g)}isDeletable(){return this.deletable&&!(this.workspace&&this.workspace.options.readOnly)}setDeletable(n){this.deletable=n}isMovable(){return this.movable&&!(this.workspace&&this.workspace.options.readOnly)}setMovable(n){this.movable=n}isEditable(){return this.editable&&!(this.workspace&&this.workspace.options.readOnly)}setEditable(n){this.editable=n}getContent(){return this.content_}setContent(n){this.content_!==n&&(J(new(pe(PT))(this,this.content_,n)),this.content_=n)}toXmlWithXY(n){return n=this.toXml(n),n.setAttribute("x",String(Math.round(this.xy_.x))),n.setAttribute("y",String(Math.round(this.xy_.y))),n.setAttribute("h",String(this.height_)),n.setAttribute("w",String(this.width_)),n}toXml(n){const a=o.createElement$$module$build$src$core$utils$xml("comment");return n||(a.id=this.id),a.textContent=this.getContent(),a}static fireCreateEvent(n){if(Q()){const a=o.getGroup$$module$build$src$core$events$utils();a||o.setGroup$$module$build$src$core$events$utils(!0);try{J(new(pe(fl))(n))}finally{o.setGroup$$module$build$src$core$events$utils(a)}}}static fromXml(n,a){var g=$r.parseAttributes(n);return a=new $r(a,g.content,g.h,g.w,g.id),g=n.getAttribute("x"),n=n.getAttribute("y"),g=g?parseInt(g,10):NaN,n=n?parseInt(n,10):NaN,isNaN(g)||isNaN(n)||a.moveBy(g,n),$r.fireCreateEvent(a),a}static parseAttributes(n){const a=n.getAttribute("h"),g=n.getAttribute("w"),R=n.getAttribute("x"),f=n.getAttribute("y"),$=n.getAttribute("id");if(!$)throw Error("No ID present in XML comment definition.");let le;return{id:$,h:a?parseInt(a):100,w:g?parseInt(g):100,x:R?parseInt(R):NaN,y:f?parseInt(f):NaN,content:(le=n.textContent)!=null?le:""}}},ff=class extends Ur{constructor(n,a,g){super(g),this.type=N_,this.oldElementId=n??void 0,this.newElementId=a??void 0}toJson(){const n=super.toJson();return n.oldElementId=this.oldElementId,n.newElementId=this.newElementId,n}static fromJson(n,a,g){return a=super.fromJson(n,a,g??new ff),a.oldElementId=n.oldElementId,a.newElementId=n.newElementId,a}};_(Mt.EVENT,N_,ff);var mf={};mf.register=XO,mf.unregister=QD;var Ph=class{paste(n,a,g){const R=n.commentState;if(g)R.setAttribute("x",`${g.x}`),R.setAttribute("y",`${g.y}`);else{var f;g=parseInt((f=R.getAttribute("x"))!=null?f:"0")+50;let $;f=parseInt(($=R.getAttribute("y"))!=null?$:"0")+50,R.setAttribute("x",`${g}`),R.setAttribute("y",`${f}`)}return ii.fromXmlRendered(n.commentState,a)}};Ph.TYPE="workspace-comment",XO(Ph.TYPE,new Ph);var Us=8,vh=3,Nz=2,ii=class extends $r{constructor(n,a,g,R,f){super(n,a,g,R,f),this.onMouseMoveWrapper=this.onMouseUpWrapper=null,this.eventsInit=!1,this.deleteIconBorder=this.deleteGroup=this.resizeGroup=this.foreignObject=this.svgHandleTarget=this.svgRectTarget=this.textarea=null,this.rendered=this.autoLayout=this.focused=!1,this.svgGroup=Le(Ve.G,{class:"blocklyComment"}),this.workspace=n,this.svgRect_=Le(Ve.RECT,{class:"blocklyCommentRect",x:0,y:0,rx:vh,ry:vh}),this.svgGroup.appendChild(this.svgRect_),this.render()}dispose(){this.disposed_||(A()===this&&(this.unselect(),this.workspace.cancelCurrentGesture()),Q()&&J(new(pe(ka))(this)),Ot(this.svgGroup),o.disable$$module$build$src$core$events$utils(),super.dispose(),o.enable$$module$build$src$core$events$utils())}initSvg(n){if(!this.workspace.rendered)throw TypeError("Workspace is headless.");this.workspace.options.readOnly||this.eventsInit||(ve(this.svgRectTarget,"pointerdown",this,this.pathMouseDown),ve(this.svgHandleTarget,"pointerdown",this,this.pathMouseDown)),this.eventsInit=!0,this.updateMovable(),this.getSvgRoot().parentNode||this.workspace.getBubbleCanvas().appendChild(this.getSvgRoot()),!n&&this.textarea&&this.textarea.select()}pathMouseDown(n){const a=this.workspace.getGesture(n);a&&a.handleBubbleStart(n,this)}showContextMenu(n){throw Error("The implementation of showContextMenu should be monkey-patched in by blockly.ts")}select(){if(A()!==this){var n=null;if(A()){n=A().id,o.disable$$module$build$src$core$events$utils();try{A().unselect()}finally{o.enable$$module$build$src$core$events$utils()}}n=new(pe(N_))(n,this.id,this.workspace.id),J(n),b(this),this.addSelect()}}unselect(){if(A()===this){var n=new(pe(N_))(this.id,null,this.workspace.id);J(n),b(null),this.removeSelect(),this.blurFocus()}}addSelect(){je(this.svgGroup,"blocklySelected"),this.setFocus()}removeSelect(){je(this.svgGroup,"blocklySelected"),this.blurFocus()}addFocus(){je(this.svgGroup,"blocklyFocused")}removeFocus(){Je(this.svgGroup,"blocklyFocused")}getRelativeToSurfaceXY(){const n=this.workspace.getLayerManager();if(!n)throw Error("Cannot calculate position because the workspace has not been appended");let a=0,g=0,R=this.getSvgRoot();if(R)do{const f=ue(R);a+=f.x,g+=f.y,R=R.parentNode}while(R&&!n.hasLayer(R)&&R!==null);return this.xy_=new ft(a,g)}moveBy(n,a){const g=new(pe(Dr))(this),R=this.getRelativeToSurfaceXY();this.translate(R.x+n,R.y+a),this.xy_=new ft(R.x+n,R.y+a),g.recordNew(),J(g),this.workspace.resizeContents()}translate(n,a){this.xy_=new ft(n,a),this.getSvgRoot().setAttribute("transform","translate("+n+","+a+")")}moveDuringDrag(n){n=`translate(${n.x}, ${n.y})`,this.getSvgRoot().setAttribute("transform",n)}moveTo(n,a){this.translate(n,a)}clearTransformAttributes(){this.getSvgRoot().removeAttribute("transform")}getBoundingRectangle(){var n=this.getRelativeToSurfaceXY();const a=this.getHeightWidth(),g=n.y,R=n.y+a.height;let f;return this.RTL?(f=n.x-a.width,n=n.x):(f=n.x,n=n.x+a.width),new Zo(g,R,f,n)}updateMovable(){this.isMovable()?je(this.svgGroup,"blocklyDraggable"):Je(this.svgGroup,"blocklyDraggable")}setMovable(n){super.setMovable(n),this.updateMovable()}setEditable(n){super.setEditable(n),this.textarea&&(this.textarea.readOnly=!n)}setDragging(n){n?je(this.getSvgRoot(),"blocklyDragging"):Je(this.getSvgRoot(),"blocklyDragging")}getSvgRoot(){return this.svgGroup}getContent(){return this.textarea?this.textarea.value:this.content_}setContent(n){super.setContent(n),this.textarea&&(this.textarea.value=n)}setDeleteStyle(n){n?je(this.svgGroup,"blocklyDraggingDelete"):Je(this.svgGroup,"blocklyDraggingDelete")}setAutoLayout(n){}toXmlWithXY(n){let a=0;this.workspace.RTL&&(a=this.workspace.getWidth()),n=this.toXml(n);const g=this.getRelativeToSurfaceXY();return n.setAttribute("x",String(Math.round(this.workspace.RTL?a-g.x:g.x))),n.setAttribute("y",String(Math.round(g.y))),n.setAttribute("h",String(this.getHeight())),n.setAttribute("w",String(this.getWidth())),n}toCopyData(){return{paster:Ph.TYPE,commentState:this.toXmlWithXY()}}getHeightWidth(){return{width:this.getWidth(),height:this.getHeight()}}render(){if(!this.rendered){var n=this.getHeightWidth(),a=this.createEditor();this.svgGroup.appendChild(a),this.svgHandleTarget=Le(Ve.RECT,{class:"blocklyCommentHandleTarget",x:0,y:0}),this.svgGroup.appendChild(this.svgHandleTarget),this.svgRectTarget=Le(Ve.RECT,{class:"blocklyCommentTarget",x:0,y:0,rx:vh,ry:vh}),this.svgGroup.appendChild(this.svgRectTarget),this.addResizeDom(),this.isDeletable()&&this.addDeleteDom(),this.setSize(n.width,n.height),this.textarea.value=this.content_,this.rendered=!0,this.resizeGroup&&ve(this.resizeGroup,"pointerdown",this,this.resizeMouseDown),this.isDeletable()&&(ve(this.deleteGroup,"pointerdown",this,this.deleteMouseDown),ve(this.deleteGroup,"pointerout",this,this.deleteMouseOut),ve(this.deleteGroup,"pointerup",this,this.deleteMouseUp))}}createEditor(){this.foreignObject=Le(Ve.FOREIGNOBJECT,{x:0,y:ii.TOP_OFFSET,class:"blocklyCommentForeignObject"});const n=document.createElementNS(yr,"body");n.setAttribute("xmlns",yr),n.className="blocklyMinimalBody";const a=document.createElementNS(yr,"textarea");return a.className="blocklyCommentTextarea",a.setAttribute("dir",this.RTL?"RTL":"LTR"),a.readOnly=!this.isEditable(),n.appendChild(a),this.textarea=a,this.foreignObject.appendChild(n),ve(a,"wheel",this,function(g){g.stopPropagation()}),ve(a,"change",this,function(g){this.setContent(a.value)}),this.foreignObject}addResizeDom(){this.resizeGroup=Le(Ve.G,{class:this.RTL?"blocklyResizeSW":"blocklyResizeSE"},this.svgGroup),Le(Ve.POLYGON,{points:`0,${Us} ${Us},${Us} ${Us},0`},this.resizeGroup),Le(Ve.LINE,{class:"blocklyResizeLine",x1:Us/3,y1:Us-1,x2:Us-1,y2:Us/3},this.resizeGroup),Le(Ve.LINE,{class:"blocklyResizeLine",x1:2*Us/3,y1:Us-1,x2:Us-1,y2:2*Us/3},this.resizeGroup)}addDeleteDom(){this.deleteGroup=Le(Ve.G,{class:"blocklyCommentDeleteIcon"},this.svgGroup),this.deleteIconBorder=Le(Ve.CIRCLE,{class:"blocklyDeleteIconShape",r:"7",cx:"7.5",cy:"7.5"},this.deleteGroup),Le(Ve.LINE,{x1:"5",y1:"10",x2:"10",y2:"5",stroke:"#fff","stroke-width":"2"},this.deleteGroup),Le(Ve.LINE,{x1:"5",y1:"5",x2:"10",y2:"10",stroke:"#fff","stroke-width":"2"},this.deleteGroup)}resizeMouseDown(n){this.unbindDragEvents(),Ye(n)||(this.workspace.startDrag(n,new ft(this.workspace.RTL?-this.width_:this.width_,this.height_)),this.onMouseUpWrapper=ve(document,"pointerup",this,this.resizeMouseUp),this.onMouseMoveWrapper=ve(document,"pointermove",this,this.resizeMouseMove),this.workspace.hideChaff()),n.stopPropagation()}deleteMouseDown(n){this.deleteIconBorder&&je(this.deleteIconBorder,"blocklyDeleteIconHighlighted"),n.stopPropagation()}deleteMouseOut(n){this.deleteIconBorder&&Je(this.deleteIconBorder,"blocklyDeleteIconHighlighted")}deleteMouseUp(n){this.dispose(),n.stopPropagation()}unbindDragEvents(){this.onMouseUpWrapper&&(Re(this.onMouseUpWrapper),this.onMouseUpWrapper=null),this.onMouseMoveWrapper&&(Re(this.onMouseMoveWrapper),this.onMouseMoveWrapper=null)}resizeMouseUp(n){Ie(),this.unbindDragEvents()}resizeMouseMove(n){this.autoLayout=!1,n=this.workspace.moveDrag(n),this.setSize(this.RTL?-n.x:n.x,n.y)}resizeComment(){const n=this.getHeightWidth(),a=ii.TOP_OFFSET,g=2*Nz;let R;(R=this.foreignObject)==null||R.setAttribute("width",String(n.width));let f;if((f=this.foreignObject)==null||f.setAttribute("height",String(n.height-a)),this.RTL){let $;($=this.foreignObject)==null||$.setAttribute("x",String(-n.width))}this.textarea&&(this.textarea.style.width=n.width-g+"px",this.textarea.style.height=n.height-g-a+"px")}setSize(n,a){n=Math.max(n,45),a=Math.max(a,20+ii.TOP_OFFSET),this.width_=n,this.height_=a,this.svgRect_.setAttribute("width",`${n}`),this.svgRect_.setAttribute("height",`${a}`);let g;(g=this.svgRectTarget)==null||g.setAttribute("width",`${n}`);let R;(R=this.svgRectTarget)==null||R.setAttribute("height",`${a}`);let f;(f=this.svgHandleTarget)==null||f.setAttribute("width",`${n}`);let $;if(($=this.svgHandleTarget)==null||$.setAttribute("height",String(ii.TOP_OFFSET)),this.RTL){this.svgRect_.setAttribute("transform","scale(-1 1)");let le;(le=this.svgRectTarget)==null||le.setAttribute("transform","scale(-1 1)")}if(this.resizeGroup)if(this.RTL){this.resizeGroup.setAttribute("transform","translate("+(-n+Us)+","+(a-Us)+") scale(-1 1)");let le;(le=this.deleteGroup)==null||le.setAttribute("transform","translate("+(-n+Us)+","+-Us+") scale(-1 1)")}else{this.resizeGroup.setAttribute("transform","translate("+(n-Us)+","+(a-Us)+")");let le;(le=this.deleteGroup)==null||le.setAttribute("transform","translate("+(n-Us)+","+-Us+")")}this.resizeComment()}setFocus(){this.focused=!0,setTimeout(()=>{this.disposed_||(this.textarea.focus(),this.addFocus(),this.svgRectTarget&&je(this.svgRectTarget,"blocklyCommentTargetFocused"),this.svgHandleTarget&&je(this.svgHandleTarget,"blocklyCommentHandleTargetFocused"))},0)}blurFocus(){this.focused=!1,setTimeout(()=>{this.disposed_||(this.textarea.blur(),this.removeFocus(),this.svgRectTarget&&Je(this.svgRectTarget,"blocklyCommentTargetFocused"),this.svgHandleTarget&&Je(this.svgHandleTarget,"blocklyCommentHandleTargetFocused"))},0)}static fromXmlRendered(n,a,g){o.disable$$module$build$src$core$events$utils();let R;try{const f=$r.parseAttributes(n);if(R=new ii(a,f.content,f.h,f.w,f.id),a.rendered&&(R.initSvg(!0),R.render()),!isNaN(f.x)&&!isNaN(f.y))if(a.RTL){const $=g||a.getWidth();R.moveBy($-f.x,f.y)}else R.moveBy(f.x,f.y)}finally{o.enable$$module$build$src$core$events$utils()}return $r.fireCreateEvent(R),R}};ii.DEFAULT_SIZE=100,ii.TOP_OFFSET=10,Be(`
- .blocklyCommentForeignObject {
- position: relative;
- z-index: 0;
- }
- .blocklyCommentRect {
- fill: #E7DE8E;
- stroke: #bcA903;
- stroke-width: 1px;
- }
- .blocklyCommentTarget {
- fill: transparent;
- stroke: #bcA903;
- }
- .blocklyCommentTargetFocused {
- fill: none;
- }
- .blocklyCommentHandleTarget {
- fill: none;
- }
- .blocklyCommentHandleTargetFocused {
- fill: transparent;
- }
- .blocklyFocused>.blocklyCommentRect {
- fill: #B9B272;
- stroke: #B9B272;
- }
- .blocklySelected>.blocklyCommentTarget {
- stroke: #fc3;
- stroke-width: 3px;
- }
- .blocklyCommentDeleteIcon {
- cursor: pointer;
- fill: #000;
- display: none;
- }
- .blocklySelected > .blocklyCommentDeleteIcon {
- display: block;
- }
- .blocklyDeleteIconShape {
- fill: #000;
- stroke: #000;
- stroke-width: 1px;
- }
- .blocklyDeleteIconShape.blocklyDeleteIconHighlighted {
- stroke: #fc3;
- }
- `);var Dh=new Set,Cf=new WeakSet,$T=null,Af=null,C0=0,Uh={};Uh.finishQueuedRenders=Nu,Uh.queueRender=gp,Uh.triggerQueuedRenders=Ar;var Fi={};Fi.appendDomToWorkspace=rU,Fi.blockToDom=gl,Fi.blockToDomWithXY=Pu,Fi.clearWorkspaceAndLoadFromXml=nU,Fi.deleteNext=dU,Fi.domToBlock=o.domToBlock$$module$build$src$core$xml,Fi.domToBlockInternal=dl,Fi.domToPrettyText=iU,Fi.domToText=br,Fi.domToVariables=Rp,Fi.domToWorkspace=o.domToWorkspace$$module$build$src$core$xml,Fi.variablesToDom=hp,Fi.workspaceToDom=tU;var BT=class extends Error{},A0=class extends BT{constructor(n){super("Expected to find a 'type' property, defining the block type"),this.state=n}},Yu=class extends BT{constructor(n,a,g){super(`The block ${a.toDevString()} is missing a(n) ${n}
- connection`),this.block=a,this.state=g}},b0=class extends BT{constructor(n,a,g,R){super(`The block ${g.toDevString()} could not connect its
- ${a} to its parent, because: ${n}`),this.childBlock=g,this.childState=R}},N0=class extends BT{constructor(n){super(`Encountered a real block which is defined as a child of a shadow
- block. It is an invariant of Blockly that shadow blocks only have shadow
- children`),this.state=n}},P0=class extends BT{constructor(n,a,g){super(`Cannot add an icon of type '${n}' to the block ${a.toDevString()}, because there is no icon registered with type '${n}'. Make sure that all of your icons have been registered.`),this.block=a,this.state=g}},Ka={};Ka.BadConnectionCheck=b0,Ka.DeserializationError=BT,Ka.MissingBlockType=A0,Ka.MissingConnection=Yu,Ka.RealChildOfShadow=N0,Ka.UnregisteredIcon=P0;var v0=100,D0=75,U0=50,Pz={BLOCKS:U0,PROCEDURES:D0,VARIABLES:v0},bf={};bf.register=ZO,bf.unregister=OU;var y0=class{constructor(){this.priority=U0}save(n){const a=[];for(const g of n.getTopBlocks(!1))(n=Nr(g,{addCoordinates:!0,doFullSerialization:!1}))&&a.push(n);return a.length?{languageVersion:0,blocks:a}:null}load(n,a){n=n.blocks;for(const g of n)Ol(g,a,{recordUndo:j()})}clear(n){for(const a of n.getTopBlocks(!1))a.dispose(!1)}};ZO("blocks",new y0);var Ku={};Ku.BlockSerializer=y0,Ku.append=Ol,Ku.appendInternal=cT,Ku.save=Nr;var za=class extends vT{constructor(n){super(),this.isBlank=!n,n&&(this.blockId=n.id,this.workspaceId=n.workspace.id)}toJson(){const n=super.toJson();if(!this.blockId)throw Error("The block ID is undefined. Either pass a block to the constructor, or call fromJson");return n.blockId=this.blockId,n}static fromJson(n,a,g){return a=super.fromJson(n,a,g??new za),a.blockId=n.blockId,a}},Nf=class extends za{constructor(n){super(n),this.type=o.CREATE$$module$build$src$core$events$utils,n&&(n.isShadow()&&(this.recordUndo=!1),this.xml=Pu(n),this.ids=ge(n),this.json=Nr(n,{addCoordinates:!0}))}toJson(){const n=super.toJson();if(!this.xml)throw Error("The block XML is undefined. Either pass a block to the constructor, or call fromJson");if(!this.ids)throw Error("The block IDs are undefined. Either pass a block to the constructor, or call fromJson");if(!this.json)throw Error("The block JSON is undefined. Either pass a block to the constructor, or call fromJson");return n.xml=br(this.xml),n.ids=this.ids,n.json=this.json,this.recordUndo||(n.recordUndo=this.recordUndo),n}static fromJson(n,a,g){return a=super.fromJson(n,a,g??new Nf),a.xml=o.textToDom$$module$build$src$core$utils$xml(n.xml),a.ids=n.ids,a.json=n.json,n.recordUndo!==void 0&&(a.recordUndo=n.recordUndo),a}run(n){const a=this.getEventWorkspace_();if(!this.json)throw Error("The block JSON is undefined. Either pass a block to the constructor, or call fromJson");if(!this.ids)throw Error("The block IDs are undefined. Either pass a block to the constructor, or call fromJson");if(!vz(a,this.ids))if(n)Ol(this.json,a);else for(n=0;n<this.ids.length;n++){const g=this.ids[n],R=a.getBlockById(g);R?R.dispose(!1):g===this.blockId&&console.warn("Can't uncreate non-existent block: "+g)}}},vz=function(n,a){return a.map(g=>n.getBlockById(g)).filter(g=>g&&g.isShadow()).length===a.length};_(Mt.EVENT,o.CREATE$$module$build$src$core$events$utils,Nf);var Pf=class extends Ur{constructor(n,a){super(a),this.type=NT,this.themeName=n}toJson(){const n=super.toJson();if(!this.themeName)throw Error("The theme name is undefined. Either pass a theme name to the constructor, or call fromJson");return n.themeName=this.themeName,n}static fromJson(n,a,g){return a=super.fromJson(n,a,g??new Pf),a.themeName=n.themeName,a}};_(Mt.EVENT,NT,Pf);var vf=class extends Ur{constructor(n,a,g,R,f){super(R),this.type=Ll,this.viewTop=n,this.viewLeft=a,this.scale=g,this.oldScale=f}toJson(){const n=super.toJson();if(this.viewTop===void 0)throw Error("The view top is undefined. Either pass a value to the constructor, or call fromJson");if(this.viewLeft===void 0)throw Error("The view left is undefined. Either pass a value to the constructor, or call fromJson");if(this.scale===void 0)throw Error("The scale is undefined. Either pass a value to the constructor, or call fromJson");if(this.oldScale===void 0)throw Error("The old scale is undefined. Either pass a value to the constructor, or call fromJson");return n.viewTop=this.viewTop,n.viewLeft=this.viewLeft,n.scale=this.scale,n.oldScale=this.oldScale,n}static fromJson(n,a,g){return a=super.fromJson(n,a,g??new vf),a.viewTop=n.viewTop,a.viewLeft=n.viewLeft,a.scale=n.scale,a.oldScale=n.oldScale,a}};_(Mt.EVENT,Ll,vf);var Df;Df=28,o.config$$module$build$src$core$config={dragRadius:5,flyoutDragRadius:10,snapRadius:Df,connectingSnapRadius:Df,currentConnectionPreference:8,bumpDelay:250},o.config$$module$build$src$core$config;var kt;(function(n){n[n.INPUT_VALUE=1]="INPUT_VALUE",n[n.OUTPUT_VALUE=2]="OUTPUT_VALUE",n[n.NEXT_STATEMENT=3]="NEXT_STATEMENT",n[n.PREVIOUS_STATEMENT=4]="PREVIOUS_STATEMENT"})(kt||(kt={}));var wT=class{constructor(n){this.connectionChecker=n,this.connections=[]}addConnection(n,a){a=this.calculateIndexForYPos(a),this.connections.splice(a,0,n)}findIndexOfConnection(n,a){if(!this.connections.length)return-1;const g=this.calculateIndexForYPos(a);if(g>=this.connections.length)return-1;a=n.y;let R=g;for(;0<=R&&this.connections[R].y===a;){if(this.connections[R]===n)return R;R--}for(R=g;R<this.connections.length&&this.connections[R].y===a;){if(this.connections[R]===n)return R;R++}return-1}calculateIndexForYPos(n){if(!this.connections.length)return 0;let a=0,g=this.connections.length;for(;a<g;){const R=Math.floor((a+g)/2);if(this.connections[R].y<n)a=R+1;else if(this.connections[R].y>n)g=R;else{a=R;break}}return a}removeConnection(n,a){if(n=this.findIndexOfConnection(n,a),n===-1)throw Error("Unable to find connection in connectionDB.");this.connections.splice(n,1)}getNeighbours(n,a){function g(Pt){const ts=f-R[Pt].x,qo=$-R[Pt].y;return Math.sqrt(ts*ts+qo*qo)<=a&&it.push(R[Pt]),qo<a}const R=this.connections,f=n.x,$=n.y;n=0;let le=R.length-2,fe=le;for(;n<fe;)R[fe].y<$?n=fe:le=fe,fe=Math.floor((n+le)/2);const it=[];if(le=n=fe,R.length){for(;0<=n&&g(n);)n--;do le++;while(le<R.length&&g(le))}return it}isInYRange(n,a,g){return Math.abs(this.connections[n].y-a)<=g}searchForClosest(n,a,g){if(!this.connections.length)return{connection:null,radius:a};const R=n.y,f=n.x;n.x=f+g.x,n.y=R+g.y;var $=this.calculateIndexForYPos(n.y);g=null;let le=a,fe,it=$-1;for(;0<=it&&this.isInYRange(it,n.y,a);)fe=this.connections[it],this.connectionChecker.canConnect(n,fe,!0,le)&&(g=fe,le=fe.distanceFrom(n)),it--;for(;$<this.connections.length&&this.isInYRange($,n.y,a);)fe=this.connections[$],this.connectionChecker.canConnect(n,fe,!0,le)&&(g=fe,le=fe.distanceFrom(n)),$++;return n.x=f,n.y=R,{connection:g,radius:le}}static init(n){const a=[];return a[kt.INPUT_VALUE]=new wT(n),a[kt.OUTPUT_VALUE]=new wT(n),a[kt.NEXT_STATEMENT]=new wT(n),a[kt.PREVIOUS_STATEMENT]=new wT(n),a}},zu=class{paste(n,a,g){if(!a.isCapacityAvailable(n.typeCounts))return null;g&&(n.blockState.x=g.x,n.blockState.y=g.y),o.disable$$module$build$src$core$events$utils();let R;try{R=Ol(n.blockState,a),UU(R)}finally{o.enable$$module$build$src$core$events$utils()}return R&&(Q()&&!R.isShadow()&&J(new(pe(o.CREATE$$module$build$src$core$events$utils))(R)),R.select(),R)}};zu.TYPE="block",XO(zu.TYPE,new zu);var Uf=null,yf=null,$f={duplicateInternal:kU,copyInternal:wU},Za={};Za.BlockPaster=zu,Za.TEST_ONLY=$f,Za.copy=BU,Za.duplicate=GU,Za.paste=TT,Za.registry=mf;var Dz="aria-",Uz="role",Vi;(function(n){n.GRID="grid",n.GRIDCELL="gridcell",n.GROUP="group",n.LISTBOX="listbox",n.MENU="menu",n.MENUITEM="menuitem",n.MENUITEMCHECKBOX="menuitemcheckbox",n.OPTION="option",n.PRESENTATION="presentation",n.ROW="row",n.TREE="tree",n.TREEITEM="treeitem"})(Vi||(Vi={}));var es;(function(n){n.ACTIVEDESCENDANT="activedescendant",n.COLCOUNT="colcount",n.DISABLED="disabled",n.EXPANDED="expanded",n.INVALID="invalid",n.LABEL="label",n.LABELLEDBY="labelledby",n.LEVEL="level",n.ORIENTATION="orientation",n.POSINSET="posinset",n.ROWCOUNT="rowcount",n.SELECTED="selected",n.SETSIZE="setsize",n.VALUEMAX="valuemax",n.VALUEMIN="valuemin"})(es||(es={}));var Zu={};Zu.Role=Vi,Zu.State=es,Zu.setRole=Jn,Zu.setState=is;var Bf=class{constructor(){this.menuItems=[],this.roleName=this.element=this.onKeyDownHandler=this.mouseLeaveHandler=this.mouseEnterHandler=this.clickHandler=this.mouseOverHandler=this.highlightedItem=this.openingCoords=null}addChild(n){this.menuItems.push(n)}render(n){const a=document.createElement("div");a.className="blocklyMenu goog-menu blocklyNonSelectable",a.tabIndex=0,this.roleName&&Jn(a,this.roleName),this.element=a;for(let g=0,R;R=this.menuItems[g];g++)a.appendChild(R.createDom());return this.mouseOverHandler=ve(a,"pointerover",this,this.handleMouseOver,!0),this.clickHandler=ve(a,"pointerup",this,this.handleClick,!0),this.mouseEnterHandler=ve(a,"pointerenter",this,this.handleMouseEnter,!0),this.mouseLeaveHandler=ve(a,"pointerleave",this,this.handleMouseLeave,!0),this.onKeyDownHandler=ve(a,"keydown",this,this.handleKeyEvent),n.appendChild(a),a}getElement(){return this.element}focus(){const n=this.getElement();n&&(n.focus({preventScroll:!0}),je(n,"blocklyFocused"))}blur(){const n=this.getElement();n&&(n.blur(),Je(n,"blocklyFocused"))}setRole(n){this.roleName=n}dispose(){this.mouseOverHandler&&(Re(this.mouseOverHandler),this.mouseOverHandler=null),this.clickHandler&&(Re(this.clickHandler),this.clickHandler=null),this.mouseEnterHandler&&(Re(this.mouseEnterHandler),this.mouseEnterHandler=null),this.mouseLeaveHandler&&(Re(this.mouseLeaveHandler),this.mouseLeaveHandler=null),this.onKeyDownHandler&&(Re(this.onKeyDownHandler),this.onKeyDownHandler=null);for(let n=0,a;a=this.menuItems[n];n++)a.dispose();this.element=null}getMenuItem(n){const a=this.getElement();for(;n&&n!==a;){if(n.classList.contains("blocklyMenuItem")){for(let g=0,R;R=this.menuItems[g];g++)if(R.getElement()===n)return R}n=n.parentElement}return null}setHighlighted(n){var a=this.highlightedItem;a&&(a.setHighlighted(!1),this.highlightedItem=null),n&&(n.setHighlighted(!0),this.highlightedItem=n,a=this.getElement(),zo(n.getElement(),a),is(a,es.ACTIVEDESCENDANT,n.getId()))}highlightNext(){const n=this.highlightedItem?this.menuItems.indexOf(this.highlightedItem):-1;this.highlightHelper(n,1)}highlightPrevious(){const n=this.highlightedItem?this.menuItems.indexOf(this.highlightedItem):-1;this.highlightHelper(0>n?this.menuItems.length:n,-1)}highlightFirst(){this.highlightHelper(-1,1)}highlightLast(){this.highlightHelper(this.menuItems.length,-1)}highlightHelper(n,a){n+=a;let g;for(;g=this.menuItems[n];){if(g.isEnabled()){this.setHighlighted(g);break}n+=a}}handleMouseOver(n){(n=this.getMenuItem(n.target))&&(n.isEnabled()?this.highlightedItem!==n&&this.setHighlighted(n):this.setHighlighted(null))}handleClick(n){const a=this.openingCoords;if(this.openingCoords=null,a&&typeof n.clientX=="number"){const g=new ft(n.clientX,n.clientY);if(1>ft.distance(a,g))return}(n=this.getMenuItem(n.target))&&n.performAction()}handleMouseEnter(n){this.focus()}handleMouseLeave(n){this.getElement()&&(this.blur(),this.setHighlighted(null))}handleKeyEvent(n){if(this.menuItems.length&&!(n.shiftKey||n.ctrlKey||n.metaKey||n.altKey)){var a=this.highlightedItem;switch(n.key){case"Enter":case" ":a&&a.performAction();break;case"ArrowUp":this.highlightPrevious();break;case"ArrowDown":this.highlightNext();break;case"PageUp":case"Home":this.highlightFirst();break;case"PageDown":case"End":this.highlightLast();break;default:return}n.preventDefault(),n.stopPropagation()}}getSize(){const n=this.getElement(),a=wt(n);return a.height=n.scrollHeight,a}},wf=class{constructor(n,a){this.content=n,this.opt_value=a,this.enabled=!0,this.element=null,this.rightToLeft=!1,this.roleName=null,this.highlight=this.checked=this.checkable=!1,this.actionHandler=null}createDom(){const n=document.createElement("div");n.id=W(),this.element=n,n.className="blocklyMenuItem goog-menuitem "+(this.enabled?"":"blocklyMenuItemDisabled goog-menuitem-disabled ")+(this.checked?"blocklyMenuItemSelected goog-option-selected ":"")+(this.highlight?"blocklyMenuItemHighlight goog-menuitem-highlight ":"")+(this.rightToLeft?"blocklyMenuItemRtl goog-menuitem-rtl ":"");const a=document.createElement("div");if(a.className="blocklyMenuItemContent goog-menuitem-content",this.checkable){var g=document.createElement("div");g.className="blocklyMenuItemCheckbox goog-menuitem-checkbox",a.appendChild(g)}return g=this.content,typeof this.content=="string"&&(g=document.createTextNode(this.content)),a.appendChild(g),n.appendChild(a),this.roleName&&Jn(n,this.roleName),is(n,es.SELECTED,this.checkable&&this.checked||!1),is(n,es.DISABLED,!this.enabled),n}dispose(){this.element=null}getElement(){return this.element}getId(){return this.element.id}getValue(){let n;return(n=this.opt_value)!=null?n:null}setRightToLeft(n){this.rightToLeft=n}setRole(n){this.roleName=n}setCheckable(n){this.checkable=n}setChecked(n){this.checked=n}setHighlighted(n){this.highlight=n;const a=this.getElement();a&&this.isEnabled()&&(n?(je(a,"blocklyMenuItemHighlight"),je(a,"goog-menuitem-highlight")):(Je(a,"blocklyMenuItemHighlight"),Je(a,"goog-menuitem-highlight")))}isEnabled(){return this.enabled}setEnabled(n){this.enabled=n}performAction(){this.isEnabled()&&this.actionHandler&&this.actionHandler(this)}onAction(n,a){this.actionHandler=n.bind(a)}},GT=null,yh=null,Gf="blocklyWidgetDiv",kT="",HT="",Br,wr={};wr.createDom=Cp,wr.getDiv=$a,wr.hide=Nn,wr.hideIfOwner=qO,wr.isVisible=Ap,wr.positionWithAnchor=Np,wr.repositionForWindowResize=Pp,wr.show=jO,wr.testOnly_setDiv=HU;var $h=null,$0={},Bh=null,Gr={};Gr.callbackFactory=o.callbackFactory$$module$build$src$core$contextmenu,Gr.commentDeleteOption=Up,Gr.commentDuplicateOption=yp,Gr.dispose=Dp,Gr.getCurrentBlock=WU,Gr.hide=Du,Gr.setCurrentBlock=vp,Gr.show=vu,Gr.workspaceCommentOption=ZU;var No=class{constructor(){this.registry_=new Map,this.reset()}reset(){this.registry_.clear()}register(n){if(this.registry_.has(n.id))throw Error('Menu item with ID "'+n.id+'" is already registered.');this.registry_.set(n.id,n)}unregister(n){if(!this.registry_.has(n))throw Error('Menu item with ID "'+n+'" not found.');this.registry_.delete(n)}getItem(n){let a;return(a=this.registry_.get(n))!=null?a:null}getContextMenuOptions(n,a){const g=[];for(const f of this.registry_.values())if(n===f.scopeType){var R=f.preconditionFn(a);R!=="hidden"&&(R={text:typeof f.displayText=="function"?f.displayText(a):f.displayText,enabled:R==="enabled",callback:f.callback,scope:a,weight:f.weight},g.push(R))}return g.sort(function(f,$){return f.weight-$.weight}),g}};(function(n){var a=n.ScopeType||(n.ScopeType={});a.BLOCK="block",a.WORKSPACE="workspace",n.registry=new n})(No||(No={})),No.ScopeType;var wh={};wh.clamp=uT,wh.toDegrees=$p,wh.toRadians=ET;var ju=16,kf=1,B0=12,Hf=16,Gh=.25,xf=null,ja=null,xT="",FT="",Uo,VT,qa,Ff=null,bl=null,w0=null,Vf={getBoundsInfo:function(){const n=no(Ff),a=wt(Ff);return{left:n.x,right:n.x+a.width,top:n.y,bottom:n.y+a.height,width:a.width,height:a.height}},getPositionMetrics:function(n,a,g,R){const f=Vf.getBoundsInfo(),$=wt(Uo);return a+$.height<f.bottom?Vp(n,a,f,$):R-$.height>f.top?Wp(g,R,f,$):a+$.height<document.documentElement.clientHeight?Vp(n,a,f,$):R-$.height>document.documentElement.clientTop?Wp(g,R,f,$):qU(n,f,$)}},di={ANIMATION_TIME:Gh,ARROW_HORIZONTAL_PADDING:B0,ARROW_SIZE:ju,BORDER_SIZE:kf,PADDING_Y:Hf,TEST_ONLY:Vf};di.clearContent=QO,di.createDom=Bp,di.getContentDiv=gT,di.getOwner=Gp,di.getPositionX=yu,di.hide=eh,di.hideIfOwner=dT,di.hideWithoutAnimation=er,di.isVisible=Xp,di.repositionForWindowResize=Kp,di.setBoundsElement=wp,di.setColour=JO,di.show=Fp,di.showPositionedByBlock=jU,di.showPositionedByField=Uu;var kh=null,qu=null,Qu={};Qu.connectionUiEffect=jp,Qu.disconnectUiEffect=qp,Qu.disconnectUiStop=OT,Qu.disposeUiEffect=zp;var Wf=50,Xf=100,G0=class{constructor(n,a){this.bubble=n,this.workspace=a,this.dragTarget_=null,this.wouldDeleteBubble_=!1,this.startXY_=this.bubble.getRelativeToSurfaceXY()}startBubbleDrag(){o.getGroup$$module$build$src$core$events$utils()||o.setGroup$$module$build$src$core$events$utils(!0),this.workspace.setResizesEnabled(!1),this.bubble.setAutoLayout&&this.bubble.setAutoLayout(!1);let n;(n=this.workspace.getLayerManager())==null||n.moveToDragLayer(this.bubble),this.bubble.setDragging&&this.bubble.setDragging(!0)}dragBubble(n,a){a=this.pixelsToWorkspaceUnits_(a),a=ft.sum(this.startXY_,a),this.bubble.moveDuringDrag(a),a=this.dragTarget_,this.dragTarget_=this.workspace.getDragTarget(n),n=this.wouldDeleteBubble_,this.wouldDeleteBubble_=this.shouldDelete_(this.dragTarget_),n!==this.wouldDeleteBubble_&&this.updateCursorDuringBubbleDrag_(),this.dragTarget_!==a&&(a&&a.onDragExit(this.bubble),this.dragTarget_&&this.dragTarget_.onDragEnter(this.bubble)),this.dragTarget_&&this.dragTarget_.onDragOver(this.bubble)}shouldDelete_(n){return n&&this.workspace.getComponentManager().hasCapability(n.id,ks.Capability.DELETE_AREA)?n.wouldDelete(this.bubble,!1):!1}updateCursorDuringBubbleDrag_(){this.bubble.setDeleteStyle(this.wouldDeleteBubble_)}endBubbleDrag(n,a){if(this.dragBubble(n,a),this.dragTarget_&&this.dragTarget_.shouldPreventMove(this.bubble)?n=this.startXY_:(n=this.pixelsToWorkspaceUnits_(a),n=ft.sum(this.startXY_,n)),this.bubble.moveTo(n.x,n.y),this.dragTarget_&&this.dragTarget_.onDrop(this.bubble),this.wouldDeleteBubble_)this.fireMoveEvent_(),this.bubble.dispose();else{if(this.bubble.setDragging){this.bubble.setDragging(!1);let g;(g=this.workspace.getLayerManager())==null||g.moveOffDragLayer(this.bubble,Xf)}this.fireMoveEvent_()}this.workspace.setResizesEnabled(!0),o.setGroup$$module$build$src$core$events$utils(!1)}fireMoveEvent_(){if(this.bubble instanceof ii){const n=new(pe(Dr))(this.bubble);n.setOldCoordinate(this.startXY_),n.recordNew(),J(n)}}pixelsToWorkspaceUnits_(n){return n=new ft(n.x/this.workspace.scale,n.y/this.workspace.scale),this.workspace.isMutator&&n.scale(1/this.workspace.options.parentWorkspace.scale),n}},k0=30,H0=!0,Qa=[];Qa[kt.INPUT_VALUE]=kt.OUTPUT_VALUE,Qa[kt.OUTPUT_VALUE]=kt.INPUT_VALUE,Qa[kt.NEXT_STATEMENT]=kt.PREVIOUS_STATEMENT,Qa[kt.PREVIOUS_STATEMENT]=kt.NEXT_STATEMENT;var Yf="RENAME_VARIABLE_ID",Kf="DELETE_VARIABLE_ID",Ja={};Ja.commonWordPrefix=Jp,Ja.commonWordSuffix=eL,Ja.isNumber=o.isNumber$$module$build$src$core$utils$string,Ja.shortestStringLength=$u,Ja.startsWith=QU,Ja.wrap=o.wrap$$module$build$src$core$utils$string;var Hh=void 0,Ju=!1,WT=!1,x0=50,F0=0,ec=0,zf=0,Zf=0,Pn=null,eg=null,jf=0,qf=10,V0=10,W0=750,xh=5,ys=null,cn={HOVER_MS:W0,LIMIT:x0,MARGINS:xh,OFFSET_X:jf,OFFSET_Y:qf,RADIUS_OK:V0};cn.bindMouseEvents=MT,cn.block=rL,cn.createDom=sL,cn.dispose=nL,cn.getCustomTooltip=oy,cn.getDiv=iy,cn.getTooltipOfObject=hT,cn.hide=m_,cn.isVisible=sy,cn.setCustomTooltip=ty,cn.unbindMouseEvents=oh,cn.unblock=_L;var X0=class{constructor(n){this.workspace=n,this.horizontalScrollEnabled_=this.workspace.isMovableHorizontally(),this.verticalScrollEnabled_=this.workspace.isMovableVertically(),this.startScrollXY_=new ft(n.scrollX,n.scrollY)}dispose(){this.workspace=null}startDrag(){A()&&A().unselect()}endDrag(n){this.drag(n)}drag(n){if(n=ft.sum(this.startScrollXY_,n),this.horizontalScrollEnabled_&&this.verticalScrollEnabled_)this.workspace.scroll(n.x,n.y);else if(this.horizontalScrollEnabled_)this.workspace.scroll(n.x,this.workspace.scrollY);else if(this.verticalScrollEnabled_)this.workspace.scroll(this.workspace.scrollX,n.y);else throw new TypeError("Invalid state.")}},yz=5,$z=6,$_=class{constructor(n,a){this.creatorWorkspace=a,this.mouseDownXY=new ft(0,0),this.startWorkspace_=this.targetBlock=this.startBlock=this.startIcon=this.startField=this.startBubble=null,this.hasExceededDragRadius=!1,this.boundEvents=[],this.flyout=this.workspaceDragger=this.blockDragger=this.bubbleDragger=null,this.isMultiTouch_=this.isEnding_=this.gestureHasStarted=this.calledUpdateIsDragging=!1,this.cachedPoints=new Map,this.startDistance=this.previousScale=0,this.currentDropdownOwner=this.isPinchZoomEnabled=null,this.mostRecentEvent=n,this.currentDragDeltaXY=new ft(0,0),this.healStack=!H0}dispose(){Ie(),_L(),this.creatorWorkspace.clearGesture();for(const n of this.boundEvents)Re(n);this.boundEvents.length=0,this.blockDragger&&this.blockDragger.dispose(),this.workspaceDragger&&this.workspaceDragger.dispose()}updateFromEvent(n){const a=new ft(n.clientX,n.clientY);this.updateDragDelta(a)&&(this.updateIsDragging(),Me()),this.mostRecentEvent=n}updateDragDelta(n){return this.currentDragDeltaXY=ft.difference(n,this.mouseDownXY),this.hasExceededDragRadius?!1:this.hasExceededDragRadius=ft.magnitude(this.currentDragDeltaXY)>(this.flyout?o.config$$module$build$src$core$config.flyoutDragRadius:o.config$$module$build$src$core$config.dragRadius)}updateIsDraggingFromFlyout(){let n;if(!this.targetBlock||(n=this.flyout)==null||!n.isBlockCreatable(this.targetBlock))return!1;if(!this.flyout.targetWorkspace)throw Error(`Cannot update dragging from the flyout because the ' +
- 'flyout's target workspace is undefined`);return!this.flyout.isScrollable()||this.flyout.isDragTowardWorkspace(this.currentDragDeltaXY)?(this.startWorkspace_=this.flyout.targetWorkspace,this.startWorkspace_.updateScreenCalculationsIfScrolled(),o.getGroup$$module$build$src$core$events$utils()||o.setGroup$$module$build$src$core$events$utils(!0),this.startBlock=null,this.targetBlock=this.flyout.createBlock(this.targetBlock),this.targetBlock.select(),!0):!1}updateIsDraggingBubble(){return this.startBubble?(this.startDraggingBubble(),!0):!1}updateIsDraggingBlock(){if(!this.targetBlock)return!1;if(this.flyout){if(this.updateIsDraggingFromFlyout())return this.startDraggingBlock(),!0}else if(this.targetBlock.isMovable())return this.startDraggingBlock(),!0;return!1}updateIsDraggingWorkspace(){if(!this.startWorkspace_)throw Error("Cannot update dragging the workspace because the start workspace is undefined");(this.flyout?this.flyout.isScrollable():this.startWorkspace_&&this.startWorkspace_.isDraggable())&&(this.workspaceDragger=new X0(this.startWorkspace_),this.workspaceDragger.startDrag())}updateIsDragging(){if(this.calledUpdateIsDragging)throw Error("updateIsDragging_ should only be called once per gesture.");this.calledUpdateIsDragging=!0,this.updateIsDraggingBubble()||this.updateIsDraggingBlock()||this.updateIsDraggingWorkspace()}startDraggingBlock(){this.blockDragger=new(h(Mt.BLOCK_DRAGGER,this.creatorWorkspace.options,!0))(this.targetBlock,this.startWorkspace_),this.blockDragger.startDrag(this.currentDragDeltaXY,this.healStack),this.blockDragger.drag(this.mostRecentEvent,this.currentDragDeltaXY)}startDraggingBubble(){if(!this.startBubble)throw Error("Cannot update dragging the bubble because the start bubble is undefined");if(!this.startWorkspace_)throw Error("Cannot update dragging the bubble because the start workspace is undefined");this.bubbleDragger=new G0(this.startBubble,this.startWorkspace_),this.bubbleDragger.startBubbleDrag(),this.bubbleDragger.dragBubble(this.mostRecentEvent,this.currentDragDeltaXY)}doStart(n){if(!this.startWorkspace_)throw Error("Cannot start the touch gesture becauase the start workspace is undefined");this.isPinchZoomEnabled=this.startWorkspace_.options.zoomOptions&&this.startWorkspace_.options.zoomOptions.pinch,Ue(n)?this.cancel():(this.gestureHasStarted=!0,OT(),this.startWorkspace_.updateScreenCalculationsIfScrolled(),this.startWorkspace_.isMutator&&this.startWorkspace_.resize(),this.currentDropdownOwner=Gp(),this.startWorkspace_.hideChaff(!!this.flyout),this.startWorkspace_.markFocused(),this.mostRecentEvent=n,rL(),this.targetBlock&&this.targetBlock.select(),Ye(n)?this.handleRightClick(n):(n.type.toLowerCase()==="pointerdown"&&n.pointerType!=="mouse"&&be(n,this),this.mouseDownXY=new ft(n.clientX,n.clientY),this.healStack=n.altKey||n.ctrlKey||n.metaKey,this.bindMouseEvents(n),this.isEnding_||this.handleTouchStart(n)))}bindMouseEvents(n){this.boundEvents.push(ve(document,"pointerdown",null,this.handleStart.bind(this),!0)),this.boundEvents.push(ve(document,"pointermove",null,this.handleMove.bind(this),!0)),this.boundEvents.push(ve(document,"pointerup",null,this.handleUp.bind(this),!0)),n.preventDefault(),n.stopPropagation()}handleStart(n){this.isDragging()||(this.handleTouchStart(n),this.isMultiTouch()&&Me())}handleMove(n){this.isDragging()&&Pe(n)||!this.isMultiTouch()?(this.updateFromEvent(n),this.workspaceDragger?this.workspaceDragger.drag(this.currentDragDeltaXY):this.blockDragger?this.blockDragger.drag(this.mostRecentEvent,this.currentDragDeltaXY):this.bubbleDragger&&this.bubbleDragger.dragBubble(this.mostRecentEvent,this.currentDragDeltaXY),n.preventDefault(),n.stopPropagation()):this.isMultiTouch()&&(this.handleTouchMove(n),Me())}handleUp(n){if(this.isDragging()||this.handleTouchEnd(n),!this.isMultiTouch()||this.isDragging()){if(!Pe(n))return;if(this.updateFromEvent(n),Me(),this.isEnding_){console.log("Trying to end a gesture recursively.");return}this.isEnding_=!0,this.bubbleDragger?this.bubbleDragger.endBubbleDrag(n,this.currentDragDeltaXY):this.blockDragger?this.blockDragger.endDrag(n,this.currentDragDeltaXY):this.workspaceDragger?this.workspaceDragger.endDrag(this.currentDragDeltaXY):this.isBubbleClick()?this.doBubbleClick():this.isFieldClick()?this.doFieldClick():this.isIconClick()?this.doIconClick():this.isBlockClick()?this.doBlockClick():this.isWorkspaceClick()&&this.doWorkspaceClick(n)}n.preventDefault(),n.stopPropagation(),this.dispose()}handleTouchStart(n){var a=Ae(n);this.cachedPoints.set(a,this.getTouchPoint(n));var g=Array.from(this.cachedPoints.keys());g.length===2&&(a=this.cachedPoints.get(g[0]),g=this.cachedPoints.get(g[1]),this.startDistance=ft.distance(a,g),this.isMultiTouch_=!0,n.preventDefault())}handleTouchMove(n){const a=Ae(n);this.cachedPoints.set(a,this.getTouchPoint(n)),this.isPinchZoomEnabled&&this.cachedPoints.size===2?this.handlePinch(n):this.handleMove(n)}handlePinch(n){var a=Array.from(this.cachedPoints.keys()),g=this.cachedPoints.get(a[0]);if(a=this.cachedPoints.get(a[1]),g=ft.distance(g,a)/this.startDistance,0<this.previousScale&&1/0>this.previousScale){if(a=g-this.previousScale,a=0<a?a*yz:a*$z,!this.startWorkspace_)throw Error("Cannot handle a pinch because the start workspace is undefined");const R=this.startWorkspace_,f=De(n,R.getParentSvg(),R.getInverseScreenCTM());R.zoom(f.x,f.y,a)}this.previousScale=g,n.preventDefault()}handleTouchEnd(n){n=Ae(n),this.cachedPoints.has(n)&&this.cachedPoints.delete(n),2>this.cachedPoints.size&&(this.cachedPoints.clear(),this.previousScale=0)}getTouchPoint(n){return this.startWorkspace_?new ft(n.pageX,n.pageY):null}isMultiTouch(){return this.isMultiTouch_}cancel(){this.isEnding_||(Me(),this.bubbleDragger?this.bubbleDragger.endBubbleDrag(this.mostRecentEvent,this.currentDragDeltaXY):this.blockDragger?this.blockDragger.endDrag(this.mostRecentEvent,this.currentDragDeltaXY):this.workspaceDragger&&this.workspaceDragger.endDrag(this.currentDragDeltaXY),this.dispose())}handleRightClick(n){this.targetBlock?(this.bringBlockToFront(),this.targetBlock.workspace.hideChaff(!!this.flyout),this.targetBlock.showContextMenu(n)):this.startBubble?this.startBubble.showContextMenu(n):this.startWorkspace_&&!this.flyout&&(this.startWorkspace_.hideChaff(),this.startWorkspace_.showContextMenu(n)),n.preventDefault(),n.stopPropagation(),this.dispose()}handleWsStart(n,a){if(this.gestureHasStarted)throw Error("Tried to call gesture.handleWsStart, but the gesture had already been started.");this.setStartWorkspace(a),this.mostRecentEvent=n,this.doStart(n)}fireWorkspaceClick(n){J(new(pe(P_))(null,n.id,"workspace"))}handleFlyoutStart(n,a){if(this.gestureHasStarted)throw Error("Tried to call gesture.handleFlyoutStart, but the gesture had already been started.");this.setStartFlyout(a),this.handleWsStart(n,a.getWorkspace())}handleBlockStart(n,a){if(this.gestureHasStarted)throw Error("Tried to call gesture.handleBlockStart, but the gesture had already been started.");this.setStartBlock(a),this.mostRecentEvent=n}handleBubbleStart(n,a){if(this.gestureHasStarted)throw Error("Tried to call gesture.handleBubbleStart, but the gesture had already been started.");this.setStartBubble(a),this.mostRecentEvent=n}doBubbleClick(){this.startBubble instanceof ii&&(this.startBubble.setFocus(),this.startBubble.select())}doFieldClick(){if(!this.startField)throw Error("Cannot do a field click because the start field is undefined");this.currentDropdownOwner!==this.startField&&this.startField.showEditor(this.mostRecentEvent),this.bringBlockToFront()}doIconClick(){if(!this.startIcon)throw Error("Cannot do an icon click because the start icon is undefined");this.bringBlockToFront(),this.startIcon.onClick()}doBlockClick(){if(this.flyout&&this.flyout.autoClose){if(!this.targetBlock)throw Error("Cannot do a block click because the target block is undefined");this.targetBlock.isEnabled()&&(o.getGroup$$module$build$src$core$events$utils()||o.setGroup$$module$build$src$core$events$utils(!0),this.flyout.createBlock(this.targetBlock).scheduleSnapAndBump())}else{if(!this.startWorkspace_)throw Error("Cannot do a block click because the start workspace is undefined");const n=new(pe(P_))(this.startBlock,this.startWorkspace_.id,"block");J(n)}this.bringBlockToFront(),o.setGroup$$module$build$src$core$events$utils(!1)}doWorkspaceClick(n){n=this.creatorWorkspace,A()&&A().unselect(),this.fireWorkspaceClick(this.startWorkspace_||n)}bringBlockToFront(){this.targetBlock&&!this.flyout&&this.targetBlock.bringToFront()}setStartField(n){if(this.gestureHasStarted)throw Error("Tried to call gesture.setStartField, but the gesture had already been started.");this.startField||(this.startField=n)}setStartIcon(n){if(this.gestureHasStarted)throw Error("Tried to call gesture.setStartIcon, but the gesture had already been started.");this.startIcon||(this.startIcon=n)}setStartBubble(n){this.startBubble||(this.startBubble=n)}setStartBlock(n){this.startBlock||this.startBubble||(this.startBlock=n,n.isInFlyout&&n!==n.getRootBlock()?this.setTargetBlock(n.getRootBlock()):this.setTargetBlock(n))}setTargetBlock(n){n.isShadow()?this.setTargetBlock(n.getParent()):this.targetBlock=n}setStartWorkspace(n){this.startWorkspace_||(this.startWorkspace_=n)}setStartFlyout(n){this.flyout||(this.flyout=n)}isBubbleClick(){return!!this.startBubble&&!this.hasExceededDragRadius}isBlockClick(){return!!this.startBlock&&!this.hasExceededDragRadius&&!this.isFieldClick()&&!this.isIconClick()}isFieldClick(){return this.startField?this.startField.isClickable()&&!this.hasExceededDragRadius&&(!this.flyout||this.startField.isClickableInFlyout(this.flyout.autoClose)):!1}isIconClick(){if(!this.startIcon)return!1;const n=!this.flyout||!this.startIcon.isClickableInFlyout||this.startIcon.isClickableInFlyout(this.flyout.autoClose);return!this.hasExceededDragRadius&&n}isWorkspaceClick(){return!this.startBlock&&!this.startBubble&&!this.startField&&!this.hasExceededDragRadius}isDragging(){return!!this.workspaceDragger||!!this.blockDragger||!!this.bubbleDragger}hasStarted(){return this.gestureHasStarted}getInsertionMarkers(){return this.blockDragger?this.blockDragger.getInsertionMarkers():[]}getCurrentDragger(){let n,a;return(a=(n=this.blockDragger)!=null?n:this.workspaceDragger)!=null?a:this.bubbleDragger}static inProgress(){const n=S();for(let a=0,g;g=n[a];a++)if(g.currentGesture_)return!0;return!1}},Qf=class{constructor(n,a){this.pattern=n;let g;this.spacing=(g=a.spacing)!=null?g:0;let R;this.length=(R=a.length)!=null?R:1,this.line2=(this.line1=n.firstChild)&&this.line1.nextSibling;let f;this.snapToGrid=(f=a.snap)!=null?f:!1}shouldSnap(){return this.snapToGrid}getSpacing(){return this.spacing}getPatternId(){return this.pattern.id}update(n){var a=this.spacing*n;this.pattern.setAttribute("width",`${a}`),this.pattern.setAttribute("height",`${a}`),a=Math.floor(this.spacing/2)+.5;let g=a-this.length/2,R=a+this.length/2;a*=n,g*=n,R*=n,this.setLineAttributes(this.line1,n,g,R,a,a),this.setLineAttributes(this.line2,n,a,a,g,R)}setLineAttributes(n,a,g,R,f,$){n&&(n.setAttribute("stroke-width",`${a}`),n.setAttribute("x1",`${g}`),n.setAttribute("y1",`${f}`),n.setAttribute("x2",`${R}`),n.setAttribute("y2",`${$}`))}moveTo(n,a){this.pattern.setAttribute("x",`${n}`),this.pattern.setAttribute("y",`${a}`)}static createDom(n,a,g){n=Le(Ve.PATTERN,{id:"blocklyGridPattern"+n,patternUnits:"userSpaceOnUse"},g);let R,f;if(0<((R=a.length)!=null?R:1)&&0<((f=a.spacing)!=null?f:0)){Le(Ve.LINE,{stroke:a.colour},n);let $;($=a.length)!=null&&$&&Le(Ve.LINE,{stroke:a.colour},n)}else Le(Ve.LINE,{},n);return n}},tg=class{constructor(n){this.workspace=n,this.cursorSvg_=this.cursor_=null,this.markers=new Map,this.markerSvg_=null}registerMarker(n,a){this.markers.has(n)&&this.unregisterMarker(n),a.setDrawer(this.workspace.getRenderer().makeMarkerDrawer(this.workspace,a)),this.setMarkerSvg(a.getDrawer().createDom()),this.markers.set(n,a)}unregisterMarker(n){const a=this.markers.get(n);if(a)a.dispose(),this.markers.delete(n);else throw Error("Marker with ID "+n+" does not exist. Can only unregister markers that exist.")}getCursor(){return this.cursor_}getMarker(n){return this.markers.get(n)||null}setCursor(n){this.cursor_&&this.cursor_.getDrawer()&&this.cursor_.getDrawer().dispose(),(this.cursor_=n)&&(n=this.workspace.getRenderer().makeMarkerDrawer(this.workspace,this.cursor_),this.cursor_.setDrawer(n),this.setCursorSvg(this.cursor_.getDrawer().createDom()))}setCursorSvg(n){n?(this.workspace.getBlockCanvas().appendChild(n),this.cursorSvg_=n):this.cursorSvg_=null}setMarkerSvg(n){n?this.workspace.getBlockCanvas()&&(this.cursorSvg_?this.workspace.getBlockCanvas().insertBefore(n,this.cursorSvg_):this.workspace.getBlockCanvas().appendChild(n)):this.markerSvg_=null}updateMarkers(){this.workspace.keyboardAccessibilityMode&&this.cursorSvg_&&this.workspace.getCursor().draw()}dispose(){const n=Object.keys(this.markers);for(let a=0,g;g=n[a];a++)this.unregisterMarker(g);this.markers.clear(),this.cursor_&&(this.cursor_.dispose(),this.cursor_=null)}};tg.LOCAL_MARKER="local_marker_1";var Y0={};Y0.deepMerge=C_;var tc=class{constructor(n,a,g,R){this.name=n,this.startHats=!1,this.blockStyles=a||Object.create(null),this.categoryStyles=g||Object.create(null),this.componentStyles=R||Object.create(null),this.fontStyle=Object.create(null),_(Mt.THEME,n,this,!0)}getClassName(){return this.name+"-theme"}setBlockStyle(n,a){this.blockStyles[n]=a}setCategoryStyle(n,a){this.categoryStyles[n]=a}getComponentStyle(n){if(n=this.componentStyles[n],!n)return null;if(typeof n=="string"){const a=this.getComponentStyle(n);if(a)return a}return`${n}`}setComponentStyle(n,a){this.componentStyles[n]=a}setFontStyle(n){this.fontStyle=n}setStartHats(n){this.startHats=n}static defineTheme(n,a){n=n.toLowerCase();const g=new tc(n);let R=a.base;if(R){if(typeof R=="string"){let f;R=(f=d(Mt.THEME,R))!=null?f:void 0}R instanceof tc&&(C_(g,R),g.name=n)}return C_(g.blockStyles,a.blockStyles),C_(g.categoryStyles,a.categoryStyles),C_(g.componentStyles,a.componentStyles),C_(g.fontStyle,a.fontStyle),a.startHats!==null&&(g.startHats=a.startHats),g}},Bz={colour_blocks:{colourPrimary:"20"},list_blocks:{colourPrimary:"260"},logic_blocks:{colourPrimary:"210"},loop_blocks:{colourPrimary:"120"},math_blocks:{colourPrimary:"230"},procedure_blocks:{colourPrimary:"290"},text_blocks:{colourPrimary:"160"},variable_blocks:{colourPrimary:"330"},variable_dynamic_blocks:{colourPrimary:"310"},hat_blocks:{colourPrimary:"330",hat:"cap"}},wz={colour_category:{colour:"20"},list_category:{colour:"260"},logic_category:{colour:"210"},loop_category:{colour:"120"},math_category:{colour:"230"},procedure_category:{colour:"290"},text_category:{colour:"160"},variable_category:{colour:"330"},variable_dynamic_category:{colour:"310"}},Fh=new tc("classic",Bz,wz),vn=class{constructor(n){this.gridPattern=null,this.getMetrics=this.setMetrics=void 0;let a=null,g=!1;var R=!1,f=!1,$=!1,le=!1,fe=!1;const it=!!n.readOnly;if(!it){var Pt;a=Wo((Pt=n.toolbox)!=null?Pt:null),g=ei(a),R=n.trashcan,R=R===void 0?g:R,f=n.collapse,f=f===void 0?g:f,$=n.comments,$=$===void 0?g:$,le=n.disable,le=le===void 0?g:le,fe=n.sounds,fe=fe===void 0?!0:fe}Pt=n.maxTrashcanContents,R?Pt===void 0&&(Pt=32):Pt=0;const ts=!!n.rtl;let qo=n.horizontalLayout;qo===void 0&&(qo=!1);var Wi=n.toolboxPosition!=="end";Wi=qo?Wi?To.TOP:To.BOTTOM:Wi===ts?To.RIGHT:To.LEFT;let oE=n.css;oE===void 0&&(oE=!0);let sE="https://blockly-demo.appspot.com/static/media/";n.media?sE=n.media.endsWith("/")?n.media:n.media+"/":"path"in n&&(xe("path","Nov 2014","Jul 2023","media"),sE=n.path+"media/");const J$=n.oneBasedIndex,I5=n.renderer||"geras",S5=n.plugins||{};let xm=n.modalInputs;xm===void 0&&(xm=!0),this.RTL=ts,this.oneBasedIndex=J$===void 0?!0:J$,this.collapse=f,this.comments=$,this.disable=le,this.readOnly=it,this.maxBlocks=n.maxBlocks||1/0;let e1;this.maxInstances=(e1=n.maxInstances)!=null?e1:null,this.modalInputs=xm,this.pathToMedia=sE,this.hasCategories=g,this.moveOptions=vn.parseMoveOptions_(n,g),this.hasScrollbars=!!this.moveOptions.scrollbars,this.hasTrashcan=R,this.maxTrashcanContents=Pt,this.hasSounds=fe,this.hasCss=oE,this.horizontalLayout=qo,this.languageTree=a,this.gridOptions=vn.parseGridOptions_(n),this.zoomOptions=vn.parseZoomOptions_(n),this.toolboxPosition=Wi,this.theme=vn.parseThemeOptions_(n),this.renderer=I5;let t1;this.rendererOverrides=(t1=n.rendererOverrides)!=null?t1:null;let o1;this.parentWorkspace=(o1=n.parentWorkspace)!=null?o1:null,this.plugins=S5}static parseMoveOptions_(n,a){const g=n.move||{},R={};return g.scrollbars===void 0&&n.scrollbars===void 0?R.scrollbars=a:typeof g.scrollbars=="object"?(R.scrollbars={horizontal:!!g.scrollbars.horizontal,vertical:!!g.scrollbars.vertical},R.scrollbars.horizontal&&R.scrollbars.vertical?R.scrollbars=!0:R.scrollbars.horizontal||R.scrollbars.vertical||(R.scrollbars=!1)):R.scrollbars=!!g.scrollbars||!!n.scrollbars,R.wheel=R.scrollbars&&g.wheel!==void 0?!!g.wheel:typeof R.scrollbars=="object",R.drag=R.scrollbars?g.drag===void 0?!0:!!g.drag:!1,R}static parseZoomOptions_(n){n=n.zoom||{};const a={};return a.controls=n.controls===void 0?!1:!!n.controls,a.wheel=n.wheel===void 0?!1:!!n.wheel,a.startScale=n.startScale===void 0?1:Number(n.startScale),a.maxScale=n.maxScale===void 0?3:Number(n.maxScale),a.minScale=n.minScale===void 0?.3:Number(n.minScale),a.scaleSpeed=n.scaleSpeed===void 0?1.2:Number(n.scaleSpeed),a.pinch=n.pinch===void 0?a.wheel||a.controls:!!n.pinch,a}static parseGridOptions_(n){n=n.grid||{};const a={};return a.spacing=Number(n.spacing)||0,a.colour=n.colour||"#888",a.length=n.length===void 0?1:Number(n.length),a.snap=0<a.spacing&&!!n.snap,a}static parseThemeOptions_(n){return n=n.theme||Fh,typeof n=="string"?d(Mt.THEME,n):n instanceof tc?n:tc.defineTheme(n.name||"builtin"+W(),n)}},oc=class extends za{constructor(n,a,g,R,f){super(n),this.type=o.CHANGE$$module$build$src$core$events$utils,n&&(this.element=a,this.name=g||void 0,this.oldValue=R,this.newValue=f)}toJson(){const n=super.toJson();if(!this.element)throw Error("The changed element is undefined. Either pass an element to the constructor, or call fromJson");return n.element=this.element,n.name=this.name,n.oldValue=this.oldValue,n.newValue=this.newValue,n}static fromJson(n,a,g){return a=super.fromJson(n,a,g??new oc),a.element=n.element,a.name=n.name,a.oldValue=n.oldValue,a.newValue=n.newValue,a}isNull(){return this.oldValue===this.newValue}run(n){var a=this.getEventWorkspace_();if(!this.blockId)throw Error("The block ID is undefined. Either pass a block to the constructor, or call fromJson");if(a=a.getBlockById(this.blockId),!a)throw Error("The associated block is undefined. Either pass a block to the constructor, or call fromJson");var g=a.getIcon(xi.MUTATOR);switch(g&&hl(g)&&g.bubbleIsVisible()&&g.setBubbleVisible(!1),n=n?this.newValue:this.oldValue,this.element){case"field":(a=a.getField(this.name))?a.setValue(n):console.warn("Can't set non-existent field: "+this.name);break;case"comment":a.setCommentText(n||null);break;case"collapsed":a.setCollapsed(!!n);break;case"disabled":a.setEnabled(!n);break;case"inline":a.setInputsInline(!!n);break;case"mutation":g=oc.getExtraBlockState_(a),a.loadExtraState?a.loadExtraState(JSON.parse(n||"{}")):a.domToMutation&&a.domToMutation(o.textToDom$$module$build$src$core$utils$xml(n||"<mutation/>")),J(new oc(a,"mutation",null,g,n));break;default:console.warn("Unknown change type: "+this.element)}}static getExtraBlockState_(n){return n.saveExtraState?(n=n.saveExtraState(!0))?JSON.stringify(n):"":n.mutationToDom&&(n=n.mutationToDom())?br(n):""}};_(Mt.EVENT,o.CHANGE$$module$build$src$core$events$utils,oc);var Jf=.45,em=.65,K0={aqua:"#00ffff",black:"#000000",blue:"#0000ff",fuchsia:"#ff00ff",gray:"#808080",green:"#008000",lime:"#00ff00",maroon:"#800000",navy:"#000080",olive:"#808000",purple:"#800080",red:"#ff0000",silver:"#c0c0c0",teal:"#008080",white:"#ffffff",yellow:"#ffff00"},Dn={};Dn.blend=Ba,Dn.getHsvSaturation=sh,Dn.getHsvValue=ih,Dn.hexToRgb=nh,Dn.hsvToHex=rh,Dn.hueToHex=cL,Dn.names=K0,Dn.parse=Ml,Dn.rgbToHex=Bu,Dn.setHsvSaturation=lL,Dn.setHsvValue=aL;var og={};og.checkMessageReferences=Ty,og.parseBlockColour=RT,og.replaceMessageReferences=Ms,og.tokenizeInterpolation=TL;var Io=class{constructor(n,a,g){this.DEFAULT_VALUE=null,this.name=void 0,this.constants_=this.mouseDownWrapper_=this.textContent_=this.textElement_=this.borderRect_=this.fieldGroup_=this.markerSvg_=this.cursorSvg_=this.tooltip_=this.validator_=null,this.disposed=!1,this.maxDisplayLength=50,this.sourceBlock_=null,this.enabled_=this.visible_=this.isDirty_=!0,this.suffixField=this.prefixField=this.clickTarget_=null,this.EDITABLE=!0,this.SERIALIZABLE=!1,this.CURSOR="",this.value_="DEFAULT_VALUE"in new.target.prototype?new.target.prototype.DEFAULT_VALUE:this.DEFAULT_VALUE,this.size_=new Jo(0,0),n!==Io.SKIP_SETUP&&(g&&this.configure_(g),this.setValue(n),a&&this.setValidator(a))}configure_(n){n.tooltip&&this.setTooltip(Ms(n.tooltip))}setSourceBlock(n){if(this.sourceBlock_)throw Error("Field already bound to a block");this.sourceBlock_=n}getConstants(){return!this.constants_&&this.sourceBlock_&&!this.sourceBlock_.isDeadOrDying()&&this.sourceBlock_.workspace.rendered&&(this.constants_=this.sourceBlock_.workspace.getRenderer().getConstants()),this.constants_}getSourceBlock(){return this.sourceBlock_}init(){this.fieldGroup_||(this.fieldGroup_=Le(Ve.G,{}),this.isVisible()||(this.fieldGroup_.style.display="none"),this.sourceBlock_.getSvgRoot().appendChild(this.fieldGroup_),this.initView(),this.updateEditable(),this.setTooltip(this.tooltip_),this.bindEvents_(),this.initModel())}initView(){this.createBorderRect_(),this.createTextElement_()}initModel(){}isFullBlockField(){return!this.borderRect_}createBorderRect_(){this.borderRect_=Le(Ve.RECT,{rx:this.getConstants().FIELD_BORDER_RECT_RADIUS,ry:this.getConstants().FIELD_BORDER_RECT_RADIUS,x:0,y:0,height:this.size_.height,width:this.size_.width,class:"blocklyFieldRect"},this.fieldGroup_)}createTextElement_(){this.textElement_=Le(Ve.TEXT,{class:"blocklyText"},this.fieldGroup_),this.getConstants().FIELD_TEXT_BASELINE_CENTER&&this.textElement_.setAttribute("dominant-baseline","central"),this.textContent_=document.createTextNode(""),this.textElement_.appendChild(this.textContent_)}bindEvents_(){const n=this.getClickTarget_();if(!n)throw Error("A click target has not been set.");MT(n),this.mouseDownWrapper_=ve(n,"pointerdown",this,this.onMouseDown_)}fromXml(n){this.setValue(n.textContent)}toXml(n){return n.textContent=this.getValue(),n}saveState(n){return n=this.saveLegacyState(Io),n!==null?n:this.getValue()}loadState(n){this.loadLegacyState(Io,n)||this.setValue(n)}saveLegacyState(n){return n.prototype.saveState===this.saveState&&n.prototype.toXml!==this.toXml?(n=o.createElement$$module$build$src$core$utils$xml("field"),n.setAttribute("name",this.name||""),bt(this.toXml(n)).replace(' xmlns="https://developers.google.com/blockly/xml"',"")):null}loadLegacyState(n,a){return n.prototype.loadState===this.loadState&&n.prototype.fromXml!==this.fromXml?(this.fromXml(o.textToDom$$module$build$src$core$utils$xml(a)),!0):!1}dispose(){dT(this),qO(this);let n;(n=this.getSourceBlock())!=null&&n.isDeadOrDying()||Ot(this.fieldGroup_),this.disposed=!0}updateEditable(){const n=this.fieldGroup_,a=this.getSourceBlock();this.EDITABLE&&n&&a&&(this.enabled_&&a.isEditable()?(je(n,"blocklyEditableText"),Je(n,"blocklyNonEditableText"),n.style.cursor=this.CURSOR):(je(n,"blocklyNonEditableText"),Je(n,"blocklyEditableText"),n.style.cursor=""))}setEnabled(n){this.enabled_=n,this.updateEditable()}isEnabled(){return this.enabled_}isClickable(){return this.enabled_&&!!this.sourceBlock_&&this.sourceBlock_.isEditable()&&this.showEditor_!==Io.prototype.showEditor_}isClickableInFlyout(n){return!n}isCurrentlyEditable(){return this.enabled_&&this.EDITABLE&&!!this.sourceBlock_&&this.sourceBlock_.isEditable()}isSerializable(){let n=!1;return this.name&&(this.SERIALIZABLE?n=!0:this.EDITABLE&&(console.warn("Detected an editable field that was not serializable. Please define SERIALIZABLE property as true on all editable custom fields. Proceeding with serialization."),n=!0)),n}isVisible(){return this.visible_}setVisible(n){if(this.visible_!==n){this.visible_=n;var a=this.fieldGroup_;a&&(a.style.display=n?"block":"none")}}setValidator(n){this.validator_=n}getValidator(){return this.validator_}getSvgRoot(){return this.fieldGroup_}getBorderRect(){if(!this.borderRect_)throw Error(`The border rectangle is ${this.borderRect_}.`);return this.borderRect_}getTextElement(){if(!this.textElement_)throw Error(`The text element is ${this.textElement_}.`);return this.textElement_}getTextContent(){if(!this.textContent_)throw Error(`The text content is ${this.textContent_}.`);return this.textContent_}applyColour(){}render_(){this.textContent_&&(this.textContent_.nodeValue=this.getDisplayText_()),this.updateSize_()}showEditor(n){this.isClickable()&&this.showEditor_(n)}showEditor_(n){}repositionForWindowResize(){return!1}updateSize_(n){const a=this.getConstants();n=n!==void 0?n:this.isFullBlockField()?0:this.getConstants().FIELD_BORDER_RECT_X_PADDING;let g=2*n,R=a.FIELD_TEXT_HEIGHT,f=0;this.textElement_&&(f=_e(this.textElement_,a.FIELD_TEXT_FONTSIZE,a.FIELD_TEXT_FONTWEIGHT,a.FIELD_TEXT_FONTFAMILY),g+=f),this.isFullBlockField()||(R=Math.max(R,a.FIELD_BORDER_RECT_HEIGHT)),this.size_.height=R,this.size_.width=g,this.positionTextElement_(n,f),this.positionBorderRect_()}positionTextElement_(n,a){if(this.textElement_){var g=this.getConstants(),R=this.size_.height/2,f;this.textElement_.setAttribute("x",String((f=this.getSourceBlock())!=null&&f.RTL?this.size_.width-a-n:n)),this.textElement_.setAttribute("y",String(g.FIELD_TEXT_BASELINE_CENTER?R:R-g.FIELD_TEXT_HEIGHT/2+g.FIELD_TEXT_BASELINE))}}positionBorderRect_(){this.borderRect_&&(this.borderRect_.setAttribute("width",String(this.size_.width)),this.borderRect_.setAttribute("height",String(this.size_.height)),this.borderRect_.setAttribute("rx",String(this.getConstants().FIELD_BORDER_RECT_RADIUS)),this.borderRect_.setAttribute("ry",String(this.getConstants().FIELD_BORDER_RECT_RADIUS)))}getSize(){return this.isVisible()?(this.isDirty_?(this.render_(),this.isDirty_=!1):this.visible_&&this.size_.width===0&&(this.render_(),this.size_.width!==0&&console.warn("Deprecated use of setting size_.width to 0 to rerender a field. Set field.isDirty_ to true instead.")),this.size_):new Jo(0,0)}getScaledBBox(){let n;var a=this.getSourceBlock();if(!a)throw new jo;if(this.isFullBlockField()){var g=this.sourceBlock_.getHeightWidth();const R=a.workspace.scale;n=this.getAbsoluteXY_(),a=(g.width+1)*R,g=(g.height+1)*R,Tf?(n.x+=1.5*R,n.y+=1.5*R):(n.x-=.5*R,n.y-=.5*R)}else g=this.borderRect_.getBoundingClientRect(),n=no(this.borderRect_),a=g.width,g=g.height;return new Zo(n.y,n.y+g,n.x,n.x+a)}onLocationChange(n){}getDisplayText_(){let n=this.getText();return n?(n.length>this.maxDisplayLength&&(n=n.substring(0,this.maxDisplayLength-2)+"…"),n=n.replace(/\s/g,Io.NBSP),this.sourceBlock_&&this.sourceBlock_.RTL&&(n+=""),n):Io.NBSP}getText(){const n=this.getText_();return String(n!==null?n:this.getValue())}getText_(){return null}markDirty(){this.isDirty_=!0,this.constants_=null}forceRerender(){this.isDirty_=!0,this.sourceBlock_&&this.sourceBlock_.rendered&&(this.sourceBlock_.queueRender(),this.sourceBlock_.bumpNeighbours())}setValue(n,a=!0){if(n!==null){var g=this.doClassValidation_(n);if(n=this.processValidation_(n,g),!(n instanceof Error)){var R;g=(R=this.getValidator())==null?void 0:R.call(this,n),R=this.processValidation_(n,g),R instanceof Error||(n=this.sourceBlock_,n&&n.disposed||(g=this.getValue(),g===R?this.doValueUpdate_(R):(this.doValueUpdate_(R),a&&n&&Q()&&J(new(pe(o.CHANGE$$module$build$src$core$events$utils))(n,"field",this.name||null,g,R)),this.isDirty_&&this.forceRerender())))}}}processValidation_(n,a){return a===null?(this.doValueInvalid_(n),this.isDirty_&&this.forceRerender(),Error()):a===void 0?n:a}getValue(){return this.value_}doClassValidation_(n){return n??null}doValueUpdate_(n){this.value_=n,this.isDirty_=!0}doValueInvalid_(n){}onMouseDown_(n){this.sourceBlock_&&!this.sourceBlock_.isDeadOrDying()&&(n=this.sourceBlock_.workspace.getGesture(n))&&n.setStartField(this)}setTooltip(n){n||n===""||(n=this.sourceBlock_);const a=this.getClickTarget_();a?a.tooltip=n:this.tooltip_=n}getTooltip(){const n=this.getClickTarget_();return hT(n||{tooltip:this.tooltip_})}getClickTarget_(){return this.clickTarget_||this.getSvgRoot()}getAbsoluteXY_(){return no(this.getClickTarget_())}referencesVariables(){return!1}refreshVariableName(){}getParentInput(){let n=null;const a=this.getSourceBlock();if(!a)throw new jo;const g=a.inputList;for(let R=0;R<a.inputList.length;R++){const f=g[R],$=f.fieldRow;for(let le=0;le<$.length;le++)if($[le]===this){n=f;break}}return n}getFlipRtl(){return!1}isTabNavigable(){return!1}onShortcut(n){return!1}setCursorSvg(n){if(n){if(!this.fieldGroup_)throw Error(`The field group is ${this.fieldGroup_}.`);this.fieldGroup_.appendChild(n),this.cursorSvg_=n}else this.cursorSvg_=null}setMarkerSvg(n){if(n){if(!this.fieldGroup_)throw Error(`The field group is ${this.fieldGroup_}.`);this.fieldGroup_.appendChild(n),this.markerSvg_=n}else this.markerSvg_=null}updateMarkers_(){var n=this.getSourceBlock();if(!n)throw new jo;n=n.workspace,n.keyboardAccessibilityMode&&this.cursorSvg_&&n.getCursor().draw(),n.keyboardAccessibilityMode&&this.markerSvg_&&n.getMarker(tg.LOCAL_MARKER).draw()}};Io.NBSP=" ",Io.SKIP_SETUP=Symbol("SKIP_SETUP");var jo=class extends Error{constructor(){super("The field has not yet been attached to its input. Call appendField to attach it.")}};o.Names$$module$build$src$core$names=class{constructor(n,a){this.db=new Map,this.dbReverse=new Set,this.variableMap=null,this.variablePrefix=a||"",this.reservedWords=new Set(n?n.split(","):[])}reset(){this.db.clear(),this.dbReverse.clear(),this.variableMap=null}setVariableMap(n){this.variableMap=n}getNameForUserVariable(n){return this.variableMap?(n=this.variableMap.getVariableById(n))?n.name:null:(console.warn(`Deprecated call to Names.prototype.getName without defining a variable map. To fix, add the following code in your generator's init() function:
- Blockly.YourGeneratorName.nameDB_.setVariableMap(workspace.getVariableMap());`),null)}populateVariables(n){n=o.allUsedVarModels$$module$build$src$core$variables(n);for(let a=0;a<n.length;a++)this.getName(n[a].getId(),o.NameType$$module$build$src$core$names.VARIABLE)}populateProcedures(n){throw Error("The implementation of populateProcedures should be monkey-patched in by blockly.ts")}getName(n,a){let g=n;a===o.NameType$$module$build$src$core$names.VARIABLE&&(n=this.getNameForUserVariable(n))&&(g=n),n=g.toLowerCase();const R=a===o.NameType$$module$build$src$core$names.VARIABLE||a===o.NameType$$module$build$src$core$names.DEVELOPER_VARIABLE?this.variablePrefix:"";this.db.has(a)||this.db.set(a,new Map);const f=this.db.get(a);return f.has(n)?R+f.get(n):(a=this.getDistinctName(g,a),f.set(n,a.substr(R.length)),a)}getUserNames(n){let a;return(n=(a=this.db.get(n))==null?void 0:a.keys())?Array.from(n):[]}getDistinctName(n,a){n=this.safeName(n);let g=null,R,f;for(;this.dbReverse.has(n+((R=g)!=null?R:""))||this.reservedWords.has(n+((f=g)!=null?f:""));)g=g?g+1:2;let $;return n+=($=g)!=null?$:"",this.dbReverse.add(n),(a===o.NameType$$module$build$src$core$names.VARIABLE||a===o.NameType$$module$build$src$core$names.DEVELOPER_VARIABLE?this.variablePrefix:"")+n}safeName(n){return n?(n=encodeURI(n.replace(/ /g,"_")).replace(/[^\w]/g,"_"),"0123456789".indexOf(n[0])!==-1&&(n="my_"+n)):n=o.Msg$$module$build$src$core$msg.UNNAMED_KEY||"unnamed",n}static equals(n,a){return n.toLowerCase()===a.toLowerCase()}},function(n){n=n.NameType||(n.NameType={}),n.DEVELOPER_VARIABLE="DEVELOPER_VARIABLE",n.VARIABLE="VARIABLE",n.PROCEDURE="PROCEDURE"}(o.Names$$module$build$src$core$names||(o.Names$$module$build$src$core$names={})),o.NameType$$module$build$src$core$names=o.Names$$module$build$src$core$names.NameType,o.Names$$module$build$src$core$names.DEVELOPER_VARIABLE_TYPE=o.NameType$$module$build$src$core$names.DEVELOPER_VARIABLE,o.NameType$$module$build$src$core$names,o.Names$$module$build$src$core$names;var z0=class extends Map{constructor(){super()}set(n,a){return this.get(n)===a?this:(super.set(n,a),lh(a)&&a.startPublishing(),this)}delete(n){const a=this.get(n);return n=super.delete(n),n&&(lh(a)&&a.stopPublishing(),n)}clear(){if(this.size)for(const n of this.keys())this.delete(n)}add(n){return this.set(n.getId(),n)}getProcedures(){return[...this.values()]}},Vh=class{constructor(n){this.sourceBlock=n,this.offsetInBlock=new ft(0,0),this.workspaceLocation=new ft(0,0),this.svgRoot=null,this.tooltip=n}getType(){throw Error("Icons must implement getType")}initView(n){if(!this.svgRoot){var a=this.sourceBlock;this.svgRoot=Le(Ve.G,{class:"blocklyIconGroup"}),a.getSvgRoot().appendChild(this.svgRoot),this.updateSvgRootOffset(),ve(this.svgRoot,"pointerdown",this,n),this.svgRoot.tooltip=this,MT(this.svgRoot)}}dispose(){oh(this.svgRoot),Ot(this.svgRoot)}getWeight(){return-1}getSize(){return new Jo(0,0)}setTooltip(n){this.tooltip=n??this.sourceBlock}getTooltip(){return this.tooltip}applyColour(){}updateEditable(){}updateCollapsed(){this.svgRoot&&(this.sourceBlock.isCollapsed()?this.svgRoot.style.display="none":this.svgRoot.style.display="block",hl(this)&&this.setBubbleVisible(!1))}hideForInsertionMarker(){this.svgRoot&&(this.svgRoot.style.display="none")}isShownWhenCollapsed(){return!1}setOffsetInBlock(n){this.offsetInBlock=n,this.updateSvgRootOffset()}updateSvgRootOffset(){let n;(n=this.svgRoot)==null||n.setAttribute("transform",`translate(${this.offsetInBlock.x}, ${this.offsetInBlock.y})`)}onLocationChange(n){this.workspaceLocation=ft.sum(n,this.offsetInBlock)}onClick(){}isClickableInFlyout(n){return!0}setVisible(n){xe("setVisible","v10","v11","setBubbleVisible"),hl(this)&&this.setBubbleVisible(n)}},Z0={fromJsonInternal:uy},Wh={TEST_ONLY:Z0};Wh.fromJson=o.fromJson$$module$build$src$core$field_registry,Wh.register=ln,Wh.unregister=Ey;var kr=class extends Io{constructor(n,a,g){super(Io.SKIP_SETUP),this.svgArrow=this.arrow=this.imageElement=this.menu_=this.selectedMenuItem=null,this.SERIALIZABLE=!0,this.CURSOR="default",this.clickTarget_=this.suffixField=this.prefixField=this.generatedOptions=null,n!==Io.SKIP_SETUP&&(Array.isArray(n)?(EL(n),n=gy(n),this.menuGenerator_=n.options,this.prefixField=n.prefix||null,this.suffixField=n.suffix||null):this.menuGenerator_=n,this.selectedOption=this.getOptions(!1)[0],g&&this.configure_(g),this.setValue(this.selectedOption[1]),a&&this.setValidator(a))}fromXml(n){this.isOptionListDynamic()&&this.getOptions(!1),this.setValue(n.textContent)}loadState(n){this.loadLegacyState(kr,n)||(this.isOptionListDynamic()&&this.getOptions(!1),this.setValue(n))}initView(){this.shouldAddBorderRect_()?this.createBorderRect_():this.clickTarget_=this.sourceBlock_.getSvgRoot(),this.createTextElement_(),this.imageElement=Le(Ve.IMAGE,{},this.fieldGroup_),this.getConstants().FIELD_DROPDOWN_SVG_ARROW?this.createSVGArrow_():this.createTextArrow_(),this.borderRect_&&je(this.borderRect_,"blocklyDropdownRect")}shouldAddBorderRect_(){let n;return!this.getConstants().FIELD_DROPDOWN_NO_BORDER_RECT_SHADOW||this.getConstants().FIELD_DROPDOWN_NO_BORDER_RECT_SHADOW&&!((n=this.getSourceBlock())!=null&&n.isShadow())}createTextArrow_(){this.arrow=Le(Ve.TSPAN,{},this.textElement_);let n;this.arrow.appendChild(document.createTextNode((n=this.getSourceBlock())!=null&&n.RTL?kr.ARROW_CHAR+" ":" "+kr.ARROW_CHAR));let a;(a=this.getSourceBlock())!=null&&a.RTL?this.getTextElement().insertBefore(this.arrow,this.textContent_):this.getTextElement().appendChild(this.arrow)}createSVGArrow_(){this.svgArrow=Le(Ve.IMAGE,{height:this.getConstants().FIELD_DROPDOWN_SVG_ARROW_SIZE+"px",width:this.getConstants().FIELD_DROPDOWN_SVG_ARROW_SIZE+"px"},this.fieldGroup_),this.svgArrow.setAttributeNS(an,"xlink:href",this.getConstants().FIELD_DROPDOWN_SVG_ARROW_DATAURI)}showEditor_(n){var a=this.getSourceBlock();if(!a)throw new jo;this.dropdownCreate(),this.menu_.openingCoords=n&&typeof n.clientX=="number"?new ft(n.clientX,n.clientY):null,QO(),n=this.menu_.render(gT()),je(n,"blocklyDropdownMenu"),this.getConstants().FIELD_DROPDOWN_COLOURED_DIV&&(a=a.getColour(),JO(a,this.sourceBlock_.style.colourTertiary)),Uu(this,this.dropdownDispose_.bind(this)),this.menu_.focus(),this.selectedMenuItem&&(this.menu_.setHighlighted(this.selectedMenuItem),zo(this.selectedMenuItem.getElement(),gT(),!0)),this.applyColour()}dropdownCreate(){const n=this.getSourceBlock();if(!n)throw new jo;const a=new Bf;a.setRole(Vi.LISTBOX),this.menu_=a;const g=this.getOptions(!1);this.selectedMenuItem=null;for(let f=0;f<g.length;f++){const[$,le]=g[f];if(typeof $=="object"){var R=new Image($.width,$.height);R.src=$.src,R.alt=$.alt||""}else R=$;R=new wf(R,le),R.setRole(Vi.OPTION),R.setRightToLeft(n.RTL),R.setCheckable(!0),a.addChild(R),R.setChecked(le===this.value_),le===this.value_&&(this.selectedMenuItem=R),R.onAction(this.handleMenuActionEvent,this)}}dropdownDispose_(){this.menu_&&this.menu_.dispose(),this.selectedMenuItem=this.menu_=null,this.applyColour()}handleMenuActionEvent(n){dT(this,!0),this.onItemSelected_(this.menu_,n)}onItemSelected_(n,a){this.setValue(a.getValue())}isOptionListDynamic(){return typeof this.menuGenerator_=="function"}getOptions(n){if(!this.menuGenerator_)throw TypeError("A menu generator was never defined.");return Array.isArray(this.menuGenerator_)?this.menuGenerator_:n&&this.generatedOptions?this.generatedOptions:(this.generatedOptions=this.menuGenerator_(),EL(this.generatedOptions),this.generatedOptions)}doClassValidation_(n){return this.getOptions(!0).some(a=>a[1]===n)?n:(this.sourceBlock_&&console.warn("Cannot set the dropdown's value to an unavailable option. Block type: "+this.sourceBlock_.type+", Field name: "+this.name+", Value: "+n),null)}doValueUpdate_(n){super.doValueUpdate_(n),n=this.getOptions(!0);for(let a=0,g;g=n[a];a++)g[1]===this.value_&&(this.selectedOption=g)}applyColour(){const n=this.sourceBlock_.style;this.borderRect_&&(this.borderRect_.setAttribute("stroke",n.colourTertiary),this.menu_?this.borderRect_.setAttribute("fill",n.colourTertiary):this.borderRect_.setAttribute("fill","transparent")),this.sourceBlock_&&this.arrow&&(this.sourceBlock_.isShadow()?this.arrow.style.fill=n.colourSecondary:this.arrow.style.fill=n.colourPrimary)}render_(){this.getTextContent().nodeValue="",this.imageElement.style.display="none";const n=this.selectedOption&&this.selectedOption[0];n&&typeof n=="object"?this.renderSelectedImage(n):this.renderSelectedText(),this.positionBorderRect_()}renderSelectedImage(n){const a=this.getSourceBlock();if(!a)throw new jo;this.imageElement.style.display="",this.imageElement.setAttributeNS(an,"xlink:href",n.src),this.imageElement.setAttribute("height",String(n.height)),this.imageElement.setAttribute("width",String(n.width));const g=Number(n.height);n=Number(n.width);var R=!!this.borderRect_;const f=Math.max(R?this.getConstants().FIELD_DROPDOWN_BORDER_RECT_HEIGHT:0,g+kz);R=R?this.getConstants().FIELD_BORDER_RECT_X_PADDING:0;let $;$=this.svgArrow?this.positionSVGArrow(n+R,f/2-this.getConstants().FIELD_DROPDOWN_SVG_ARROW_SIZE/2):_e(this.arrow,this.getConstants().FIELD_TEXT_FONTSIZE,this.getConstants().FIELD_TEXT_FONTWEIGHT,this.getConstants().FIELD_TEXT_FONTFAMILY),this.size_.width=n+$+2*R,this.size_.height=f;let le=0;a.RTL?this.imageElement.setAttribute("x",`${R+$}`):(le=n+$,this.getTextElement().setAttribute("text-anchor","end"),this.imageElement.setAttribute("x",`${R}`)),this.imageElement.setAttribute("y",String(f/2-g/2)),this.positionTextElement_(le+R,n+$)}renderSelectedText(){this.getTextContent().nodeValue=this.getDisplayText_();var n=this.getTextElement();je(n,"blocklyDropdownText"),n.setAttribute("text-anchor","start");var a=!!this.borderRect_;n=Math.max(a?this.getConstants().FIELD_DROPDOWN_BORDER_RECT_HEIGHT:0,this.getConstants().FIELD_TEXT_HEIGHT);const g=_e(this.getTextElement(),this.getConstants().FIELD_TEXT_FONTSIZE,this.getConstants().FIELD_TEXT_FONTWEIGHT,this.getConstants().FIELD_TEXT_FONTFAMILY);a=a?this.getConstants().FIELD_BORDER_RECT_X_PADDING:0;let R=0;this.svgArrow&&(R=this.positionSVGArrow(g+a,n/2-this.getConstants().FIELD_DROPDOWN_SVG_ARROW_SIZE/2)),this.size_.width=g+R+2*a,this.size_.height=n,this.positionTextElement_(a,g)}positionSVGArrow(n,a){if(!this.svgArrow)return 0;const g=this.getSourceBlock();if(!g)throw new jo;const R=this.borderRect_?this.getConstants().FIELD_BORDER_RECT_X_PADDING:0,f=this.getConstants().FIELD_DROPDOWN_SVG_ARROW_PADDING,$=this.getConstants().FIELD_DROPDOWN_SVG_ARROW_SIZE;return this.svgArrow.setAttribute("transform","translate("+(g.RTL?R:n+f)+","+a+")"),$+f}getText_(){if(!this.selectedOption)return null;const n=this.selectedOption[0];return typeof n=="object"?n.alt:n}static fromJson(n){if(!n.options)throw Error("options are required for the dropdown field. The options property must be assigned an array of [humanReadableValue, languageNeutralValue] tuples.");return new this(n.options,void 0,n)}};kr.CHECKMARK_OVERHANG=25,kr.MAX_MENU_HEIGHT_VH=.45,kr.ARROW_CHAR="▾";var Gz=5,kz=2*Gz;ln("field_dropdown",kr);var Tn,yo=class{constructor(n,a,g){this.workspace=n,this.anchor=a,this.ownerRect=g,this.size=new Jo(0,0),this.colour="#ffffff",this.disposed=!1,this.relativeLeft=this.relativeTop=0,this.svgRoot=Le(Ve.G,{},n.getBubbleCanvas()),n=Le(Ve.G,{filter:`url(#${this.workspace.getRenderer().getConstants().embossFilterId})`},this.svgRoot),this.tail=Le(Ve.PATH,{},n),this.background=Le(Ve.RECT,{class:"blocklyDraggable",x:0,y:0,rx:Tn.BORDER_WIDTH,ry:Tn.BORDER_WIDTH},n),this.contentContainer=Le(Ve.G,{},this.svgRoot),ve(this.background,"pointerdown",this,this.onMouseDown)}dispose(){Ot(this.svgRoot),this.disposed=!0}setAnchorLocation(n,a=!1){this.anchor=n,a?this.positionByRect(this.ownerRect):this.positionRelativeToAnchor(),this.renderTail()}setPositionRelativeToAnchor(n,a){this.relativeLeft=n,this.relativeTop=a,this.positionRelativeToAnchor(),this.renderTail()}getSize(){return this.size}setSize(n,a=!1){n.width=Math.max(n.width,Tn.MIN_SIZE),n.height=Math.max(n.height,Tn.MIN_SIZE),this.size=n,this.background.setAttribute("width",`${n.width}`),this.background.setAttribute("height",`${n.height}`),a?this.positionByRect(this.ownerRect):this.positionRelativeToAnchor(),this.renderTail()}getColour(){return this.colour}setColour(n){this.colour=n,this.tail.setAttribute("fill",n),this.background.setAttribute("fill",n)}onMouseDown(n){let a;(a=this.workspace.getGesture(n))==null||a.handleBubbleStart(n,this)}positionRelativeToAnchor(){let n=this.anchor.x;n=this.workspace.RTL?n-(this.relativeLeft+this.size.width):n+this.relativeLeft,this.moveTo(n,this.relativeTop+this.anchor.y)}moveTo(n,a){this.svgRoot.setAttribute("transform",`translate(${n}, ${a})`)}positionByRect(n=new Zo(0,0,0,0)){var a=this.workspace.getMetricsManager().getViewMetrics(!0),g=this.getOptimalRelativeLeft(a),R=this.getOptimalRelativeTop(a);const f={x:g,y:-this.size.height-this.workspace.getRenderer().getConstants().MIN_BLOCK_HEIGHT},$={x:-this.size.width-30,y:R};R={x:n.getWidth(),y:R};var le={x:g,y:n.getHeight()};g=n.getWidth()<n.getHeight()?R:le,n=n.getWidth()<n.getHeight()?le:R,R=this.getOverlap(f,a),le=this.getOverlap($,a);const fe=this.getOverlap(g,a);a=this.getOverlap(n,a),a=Math.max(R,le,fe,a),R===a?(this.relativeLeft=f.x,this.relativeTop=f.y):le===a?(this.relativeLeft=$.x,this.relativeTop=$.y):fe===a?(this.relativeLeft=g.x,this.relativeTop=g.y):(this.relativeLeft=n.x,this.relativeTop=n.y),this.positionRelativeToAnchor()}getOverlap(n,a){var g=this.workspace.RTL?this.anchor.x-n.x-this.size.width:n.x+this.anchor.x;return n=n.y+this.anchor.y,Math.max(0,Math.min(1,(Math.min(g+this.size.width,a.left+a.width)-Math.max(g,a.left))*(Math.min(n+this.size.height,a.top+a.height)-Math.max(n,a.top))/(this.size.width*this.size.height)))}getOptimalRelativeLeft(n){let a=-this.size.width/4;if(this.size.width>n.width)return a;if(n=this.getWorkspaceViewRect(n),this.workspace.RTL){var g=this.anchor.x-a;g-this.size.width<n.left?a=-(n.left-this.anchor.x+this.size.width):g>n.right&&(a=-(n.right-this.anchor.x))}else{g=a+this.anchor.x;const R=g+this.size.width;g<n.left?a=n.left-this.anchor.x:R>n.right&&(a=n.right-this.anchor.x-this.size.width)}return a}getOptimalRelativeTop(n){let a=-this.size.height/4;if(this.size.height>n.height)return a;const g=this.anchor.y+a,R=g+this.size.height;return n=this.getWorkspaceViewRect(n),g<n.top?a=n.top-this.anchor.y:R>n.bottom&&(a=n.bottom-this.anchor.y-this.size.height),a}getWorkspaceViewRect(n){const a=n.top;let g=n.top+n.height,R=n.left;return n=n.left+n.width,g-=this.getScrollbarThickness(),this.workspace.RTL?R-=this.getScrollbarThickness():n-=this.getScrollbarThickness(),new Zo(a,g,R,n)}getScrollbarThickness(){return ms.scrollbarThickness/this.workspace.scale}renderTail(){const n=[];var a=this.size.width/2,g=this.size.height/2,R=-this.relativeLeft,f=-this.relativeTop;if(a===R&&g===f)n.push("M "+a+","+g);else{f-=g,R-=a,this.workspace.RTL&&(R*=-1);var $=Math.sqrt(f*f+R*R),le=Math.acos(R/$);0>f&&(le=2*Math.PI-le);var fe=le+Math.PI/2;fe>2*Math.PI&&(fe-=2*Math.PI);var it=Math.sin(fe);const ts=Math.cos(fe);let qo=(this.size.width+this.size.height)/Tn.TAIL_THICKNESS;qo=Math.min(qo,this.size.width,this.size.height)/4,fe=1-Tn.ANCHOR_RADIUS/$,R=a+fe*R,f=g+fe*f,fe=a+qo*ts;const Wi=g+qo*it;a-=qo*ts,g-=qo*it,it=ET(this.workspace.RTL?-Tn.TAIL_ANGLE:Tn.TAIL_ANGLE),it=le+it,it>2*Math.PI&&(it-=2*Math.PI),le=Math.sin(it)*$/Tn.TAIL_BEND,$=Math.cos(it)*$/Tn.TAIL_BEND,n.push("M"+fe+","+Wi),n.push("C"+(fe+$)+","+(Wi+le)+" "+R+","+f+" "+R+","+f),n.push("C"+R+","+f+" "+(a+$)+","+(g+le)+" "+a+","+g)}n.push("z");let Pt;(Pt=this.tail)==null||Pt.setAttribute("d",n.join(" "))}bringToFront(){let n;const a=(n=this.svgRoot)==null?void 0:n.parentNode;return this.svgRoot&&(a==null?void 0:a.lastChild)!==this.svgRoot?(a==null||a.appendChild(this.svgRoot),!0):!1}getRelativeToSurfaceXY(){return new ft(this.workspace.RTL?-this.relativeLeft+this.anchor.x-this.size.width:this.anchor.x+this.relativeLeft,this.anchor.y+this.relativeTop)}getSvgRoot(){return this.svgRoot}moveDuringDrag(n){this.moveTo(n.x,n.y),this.relativeLeft=this.workspace.RTL?this.anchor.x-n.x-this.size.width:n.x-this.anchor.x,this.relativeTop=n.y-this.anchor.y,this.renderTail()}setDragging(n){}setDeleteStyle(n){}isDeletable(){return!1}showContextMenu(n){}};Tn=yo,yo.BORDER_WIDTH=6,yo.DOUBLE_BORDER=2*Tn.BORDER_WIDTH,yo.MIN_SIZE=Tn.DOUBLE_BORDER,yo.TAIL_THICKNESS=1,yo.TAIL_ANGLE=20,yo.TAIL_BEND=4,yo.ANCHOR_RADIUS=8;var B_=class extends yo{constructor(n,a,g,R){super(a,g,R),this.workspace=a,this.anchor=g,this.ownerRect=R,this.autoLayout=!0,a=new vn(n),this.validateWorkspaceOptions(a),this.svgDialog=Le(Ve.SVG,{x:yo.BORDER_WIDTH,y:yo.BORDER_WIDTH},this.contentContainer),n.parentWorkspace=this.workspace,this.miniWorkspace=this.newWorkspaceSvg(new vn(n)),this.miniWorkspace.internalIsMutator=!0,n=this.miniWorkspace.createDom("blocklyMutatorBackground"),this.svgDialog.appendChild(n),a.languageTree&&(n.insertBefore(this.miniWorkspace.addFlyout(Ve.G),this.miniWorkspace.getCanvas()),n=this.miniWorkspace.getFlyout(),n==null||n.init(this.miniWorkspace),n==null||n.show(a.languageTree)),this.miniWorkspace.addChangeListener(this.onWorkspaceChange.bind(this));let f,$;(f=this.miniWorkspace.getFlyout())==null||($=f.getWorkspace())==null||$.addChangeListener(this.onWorkspaceChange.bind(this)),this.updateBubbleSize()}dispose(){this.miniWorkspace.dispose(),super.dispose()}getWorkspace(){return this.miniWorkspace}addWorkspaceChangeListener(n){this.miniWorkspace.addChangeListener(n)}validateWorkspaceOptions(n){if(n.hasCategories)throw Error("The miniworkspace bubble does not support toolboxes with categories");if(n.hasTrashcan)throw Error("The miniworkspace bubble does not support trashcans");if(n.zoomOptions.controls||n.zoomOptions.wheel||n.zoomOptions.pinch)throw Error("The miniworkspace bubble does not support zooming");if(n.moveOptions.scrollbars||n.moveOptions.wheel||n.moveOptions.drag)throw Error("The miniworkspace bubble does not scrolling/moving the workspace");if(n.horizontalLayout)throw Error("The miniworkspace bubble does not support horizontal layouts")}onWorkspaceChange(){this.bumpBlocksIntoBounds(),this.updateBubbleSize()}bumpBlocksIntoBounds(){if(!this.miniWorkspace.isDragging())for(const n of this.miniWorkspace.getTopBlocks(!1)){const a=n.getRelativeToSurfaceXY();if(20>a.y&&n.moveBy(0,20-a.y),n.RTL){let g=-20;const R=this.miniWorkspace.getFlyout();R&&(g-=R.getWidth()),a.x>g&&n.moveBy(g-a.x,0)}else 20>a.x&&n.moveBy(20-a.x,0)}}updateBubbleSize(){if(!this.miniWorkspace.isDragging()){var n=this.getSize(),a=this.calculateWorkspaceSize();Math.abs(n.width-a.width)<B_.MINIMUM_VIEW_CHANGE&&Math.abs(n.height-a.height)<B_.MINIMUM_VIEW_CHANGE||(this.svgDialog.setAttribute("width",`${a.width}px`),this.svgDialog.setAttribute("height",`${a.height}px`),this.miniWorkspace.setCachedParentSvgSize(a.width,a.height),this.miniWorkspace.RTL&&this.miniWorkspace.getCanvas().setAttribute("transform",`translate(${a.width}, 0)`),this.setSize(new Jo(a.width+yo.DOUBLE_BORDER,a.height+yo.DOUBLE_BORDER),this.autoLayout),this.miniWorkspace.resize(),this.miniWorkspace.recordDragTargets())}}calculateWorkspaceSize(){var n=this.miniWorkspace.getCanvas().getBBox();let a=n.width+B_.MARGIN;n=n.height+B_.MARGIN;const g=this.miniWorkspace.getFlyout();if(g){const R=g.getWorkspace().getMetricsManager().getScrollMetrics();n=Math.max(n,R.height+20),a+=g.getWidth()}return new Jo(a,n)}updateBlockStyles(){for(var n of this.miniWorkspace.getAllBlocks(!1))n.setStyle(n.getStyleName());let a;if(n=(a=this.miniWorkspace.getFlyout())==null?void 0:a.getWorkspace())for(const g of n.getAllBlocks(!1))g.setStyle(g.getStyleName())}moveDuringDrag(n){super.moveDuringDrag(n),this.autoLayout=!1}moveTo(n,a){super.moveTo(n,a),this.miniWorkspace.recordDragTargets()}newWorkspaceSvg(n){throw Error("The implementation of newWorkspaceSvg should be monkey-patched in by blockly.ts")}};B_.MINIMUM_VIEW_CHANGE=10,B_.MARGIN=3*yo.DOUBLE_BORDER;var Xh,Yh;Xh=17,Yh=16,o.MutatorIcon$$module$build$src$core$icons$mutator_icon=class extends Vh{constructor(n,a){super(a),this.flyoutBlockTypes=n,this.sourceBlock=a,this.saveConnectionsListener=this.updateWorkspacePid=this.rootBlock=this.miniWorkspaceBubble=null}getType(){return o.MutatorIcon$$module$build$src$core$icons$mutator_icon.TYPE}initView(n){this.svgRoot||(super.initView(n),Le(Ve.RECT,{class:"blocklyIconShape",rx:"4",ry:"4",height:"16",width:"16"},this.svgRoot),Le(Ve.PATH,{class:"blocklyIconSymbol",d:"m4.203,7.296 0,1.368 -0.92,0.677 -0.11,0.41 0.9,1.559 0.41,0.11 1.043,-0.457 1.187,0.683 0.127,1.134 0.3,0.3 1.8,0 0.3,-0.299 0.127,-1.138 1.185,-0.682 1.046,0.458 0.409,-0.11 0.9,-1.559 -0.11,-0.41 -0.92,-0.677 0,-1.366 0.92,-0.677 0.11,-0.41 -0.9,-1.559 -0.409,-0.109 -1.046,0.458 -1.185,-0.682 -0.127,-1.138 -0.3,-0.299 -1.8,0 -0.3,0.3 -0.126,1.135 -1.187,0.682 -1.043,-0.457 -0.41,0.11 -0.899,1.559 0.108,0.409z"},this.svgRoot),Le(Ve.CIRCLE,{class:"blocklyIconShape",r:"2.7",cx:"8",cy:"8"},this.svgRoot),je(this.svgRoot,"blockly-icon-mutator"))}dispose(){super.dispose();let n;(n=this.miniWorkspaceBubble)==null||n.dispose()}getWeight(){return o.MutatorIcon$$module$build$src$core$icons$mutator_icon.WEIGHT}getSize(){return new Jo(Xh,Xh)}applyColour(){super.applyColour();let n;(n=this.miniWorkspaceBubble)==null||n.setColour(this.sourceBlock.style.colourPrimary);let a;(a=this.miniWorkspaceBubble)==null||a.updateBlockStyles()}updateCollapsed(){super.updateCollapsed(),this.sourceBlock.isCollapsed()&&this.setBubbleVisible(!1)}onLocationChange(n){super.onLocationChange(n);let a;(a=this.miniWorkspaceBubble)==null||a.setAnchorLocation(this.getAnchorLocation())}onClick(){super.onClick(),this.sourceBlock.isEditable()&&this.setBubbleVisible(!this.bubbleIsVisible())}isClickableInFlyout(){return!1}bubbleIsVisible(){return!!this.miniWorkspaceBubble}setBubbleVisible(n){if(this.bubbleIsVisible()!==n){if(n){this.miniWorkspaceBubble=new B_(this.getMiniWorkspaceConfig(),this.sourceBlock.workspace,this.getAnchorLocation(),this.getBubbleOwnerRect()),this.applyColour(),this.createRootBlock(),this.addSaveConnectionsListener();let a;(a=this.miniWorkspaceBubble)==null||a.addWorkspaceChangeListener(this.createMiniWorkspaceChangeListener())}else{let a;(a=this.miniWorkspaceBubble)==null||a.dispose(),this.miniWorkspaceBubble=null,this.saveConnectionsListener&&this.sourceBlock.workspace.removeChangeListener(this.saveConnectionsListener),this.saveConnectionsListener=null}J(new(pe(vr))(this.sourceBlock,n,"mutator"))}}getMiniWorkspaceConfig(){let n;const a={disable:!1,media:this.sourceBlock.workspace.options.pathToMedia,rtl:this.sourceBlock.RTL,renderer:this.sourceBlock.workspace.options.renderer,rendererOverrides:(n=this.sourceBlock.workspace.options.rendererOverrides)!=null?n:void 0};return this.flyoutBlockTypes.length&&(a.toolbox={kind:"flyoutToolbox",contents:this.flyoutBlockTypes.map(g=>({kind:"block",type:g}))}),a}getAnchorLocation(){const n=Xh/2;return ft.sum(this.workspaceLocation,new ft(n,n))}getBubbleOwnerRect(){const n=this.sourceBlock.getSvgRoot().getBBox();return new Zo(n.y,n.y+n.height,n.x,n.x+n.width)}createRootBlock(){if(!this.sourceBlock.decompose)throw Error("Blocks with mutator icons must include a decompose method");this.rootBlock=this.sourceBlock.decompose(this.miniWorkspaceBubble.getWorkspace());for(var n of this.rootBlock.getDescendants(!1))n.queueRender();this.rootBlock.setMovable(!1),this.rootBlock.setDeletable(!1);let a,g,R,f;n=(f=(a=this.miniWorkspaceBubble)==null||(g=a.getWorkspace())==null||(R=g.getFlyout())==null?void 0:R.getWidth())!=null?f:0,this.rootBlock.moveBy(this.rootBlock.RTL?-(n+Yh):Yh,Yh)}addSaveConnectionsListener(){this.sourceBlock.saveConnections&&this.rootBlock&&(this.saveConnectionsListener=()=>{this.sourceBlock.saveConnections&&this.rootBlock&&this.sourceBlock.saveConnections(this.rootBlock)},this.saveConnectionsListener(),this.sourceBlock.workspace.addChangeListener(this.saveConnectionsListener))}createMiniWorkspaceChangeListener(){return n=>{o.MutatorIcon$$module$build$src$core$icons$mutator_icon.isIgnorableMutatorEvent(n)||this.updateWorkspacePid||(this.updateWorkspacePid=setTimeout(()=>{this.updateWorkspacePid=null,this.recomposeSourceBlock()},0))}}static isIgnorableMutatorEvent(n){return n.isUiEvent||n.type===o.CREATE$$module$build$src$core$events$utils||n.type===o.CHANGE$$module$build$src$core$events$utils&&n.element==="disabled"}recomposeSourceBlock(){if(this.rootBlock){if(!this.sourceBlock.compose)throw Error("Blocks with mutator icons must include a compose method");var n=o.getGroup$$module$build$src$core$events$utils();n||o.setGroup$$module$build$src$core$events$utils(!0);var a=oc.getExtraBlockState_(this.sourceBlock);this.sourceBlock.compose(this.rootBlock);var g=oc.getExtraBlockState_(this.sourceBlock);a!==g&&J(new(pe(o.CHANGE$$module$build$src$core$events$utils))(this.sourceBlock,"mutation",null,a,g)),o.setGroup$$module$build$src$core$events$utils(n)}}getWorkspace(){let n;return(n=this.miniWorkspaceBubble)==null?void 0:n.getWorkspace()}static reconnect(n,a,g){return xe("MutatorIcon.reconnect","v10","v11","connection.reconnect"),n?n.reconnect(a,g):!1}static findParentWs(n){return xe("MutatorIcon.findParentWs","v10","v11","workspace.getRootWorkspace"),n.getRootWorkspace()}},o.MutatorIcon$$module$build$src$core$icons$mutator_icon.TYPE=xi.MUTATOR,o.MutatorIcon$$module$build$src$core$icons$mutator_icon.WEIGHT=1,o.MutatorIcon$$module$build$src$core$icons$mutator_icon;var XT=Object.create(null),Hz={allExtensions:XT};o.register$$module$build$src$core$extensions("parent_tooltip_when_inline",Ly);var or={TEST_ONLY:Hz};or.apply=ah,or.buildTooltipForDropdown=o.buildTooltipForDropdown$$module$build$src$core$extensions,or.buildTooltipWithFieldText=o.buildTooltipWithFieldText$$module$build$src$core$extensions,or.isRegistered=uL,or.register=o.register$$module$build$src$core$extensions,or.registerMixin=o.registerMixin$$module$build$src$core$extensions,or.registerMutator=o.registerMutator$$module$build$src$core$extensions,or.runAfterPageLoad=Sy,or.unregister=Oy;var Oo;(function(n){n[n.WIN_KEY_FF_LINUX=0]="WIN_KEY_FF_LINUX",n[n.MAC_ENTER=3]="MAC_ENTER",n[n.BACKSPACE=8]="BACKSPACE",n[n.TAB=9]="TAB",n[n.NUM_CENTER=12]="NUM_CENTER",n[n.ENTER=13]="ENTER",n[n.SHIFT=16]="SHIFT",n[n.CTRL=17]="CTRL",n[n.ALT=18]="ALT",n[n.PAUSE=19]="PAUSE",n[n.CAPS_LOCK=20]="CAPS_LOCK",n[n.ESC=27]="ESC",n[n.SPACE=32]="SPACE",n[n.PAGE_UP=33]="PAGE_UP",n[n.PAGE_DOWN=34]="PAGE_DOWN",n[n.END=35]="END",n[n.HOME=36]="HOME",n[n.LEFT=37]="LEFT",n[n.UP=38]="UP",n[n.RIGHT=39]="RIGHT",n[n.DOWN=40]="DOWN",n[n.PLUS_SIGN=43]="PLUS_SIGN",n[n.PRINT_SCREEN=44]="PRINT_SCREEN",n[n.INSERT=45]="INSERT",n[n.DELETE=46]="DELETE",n[n.ZERO=48]="ZERO",n[n.ONE=49]="ONE",n[n.TWO=50]="TWO",n[n.THREE=51]="THREE",n[n.FOUR=52]="FOUR",n[n.FIVE=53]="FIVE",n[n.SIX=54]="SIX",n[n.SEVEN=55]="SEVEN",n[n.EIGHT=56]="EIGHT",n[n.NINE=57]="NINE",n[n.FF_SEMICOLON=59]="FF_SEMICOLON",n[n.FF_EQUALS=61]="FF_EQUALS",n[n.FF_DASH=173]="FF_DASH",n[n.FF_HASH=163]="FF_HASH",n[n.QUESTION_MARK=63]="QUESTION_MARK",n[n.AT_SIGN=64]="AT_SIGN",n[n.A=65]="A",n[n.B=66]="B",n[n.C=67]="C",n[n.D=68]="D",n[n.E=69]="E",n[n.F=70]="F",n[n.G=71]="G",n[n.H=72]="H",n[n.I=73]="I",n[n.J=74]="J",n[n.K=75]="K",n[n.L=76]="L",n[n.M=77]="M",n[n.N=78]="N",n[n.O=79]="O",n[n.P=80]="P",n[n.Q=81]="Q",n[n.R=82]="R",n[n.S=83]="S",n[n.T=84]="T",n[n.U=85]="U",n[n.V=86]="V",n[n.W=87]="W",n[n.X=88]="X",n[n.Y=89]="Y",n[n.Z=90]="Z",n[n.META=91]="META",n[n.WIN_KEY_RIGHT=92]="WIN_KEY_RIGHT",n[n.CONTEXT_MENU=93]="CONTEXT_MENU",n[n.NUM_ZERO=96]="NUM_ZERO",n[n.NUM_ONE=97]="NUM_ONE",n[n.NUM_TWO=98]="NUM_TWO",n[n.NUM_THREE=99]="NUM_THREE",n[n.NUM_FOUR=100]="NUM_FOUR",n[n.NUM_FIVE=101]="NUM_FIVE",n[n.NUM_SIX=102]="NUM_SIX",n[n.NUM_SEVEN=103]="NUM_SEVEN",n[n.NUM_EIGHT=104]="NUM_EIGHT",n[n.NUM_NINE=105]="NUM_NINE",n[n.NUM_MULTIPLY=106]="NUM_MULTIPLY",n[n.NUM_PLUS=107]="NUM_PLUS",n[n.NUM_MINUS=109]="NUM_MINUS",n[n.NUM_PERIOD=110]="NUM_PERIOD",n[n.NUM_DIVISION=111]="NUM_DIVISION",n[n.F1=112]="F1",n[n.F2=113]="F2",n[n.F3=114]="F3",n[n.F4=115]="F4",n[n.F5=116]="F5",n[n.F6=117]="F6",n[n.F7=118]="F7",n[n.F8=119]="F8",n[n.F9=120]="F9",n[n.F10=121]="F10",n[n.F11=122]="F11",n[n.F12=123]="F12",n[n.NUMLOCK=144]="NUMLOCK",n[n.SCROLL_LOCK=145]="SCROLL_LOCK",n[n.FIRST_MEDIA_KEY=166]="FIRST_MEDIA_KEY",n[n.LAST_MEDIA_KEY=183]="LAST_MEDIA_KEY",n[n.SEMICOLON=186]="SEMICOLON",n[n.DASH=189]="DASH",n[n.EQUALS=187]="EQUALS",n[n.COMMA=188]="COMMA",n[n.PERIOD=190]="PERIOD",n[n.SLASH=191]="SLASH",n[n.APOSTROPHE=192]="APOSTROPHE",n[n.TILDE=192]="TILDE",n[n.SINGLE_QUOTE=222]="SINGLE_QUOTE",n[n.OPEN_SQUARE_BRACKET=219]="OPEN_SQUARE_BRACKET",n[n.BACKSLASH=220]="BACKSLASH",n[n.CLOSE_SQUARE_BRACKET=221]="CLOSE_SQUARE_BRACKET",n[n.WIN_KEY=224]="WIN_KEY",n[n.MAC_FF_META=224]="MAC_FF_META",n[n.MAC_WK_CMD_LEFT=91]="MAC_WK_CMD_LEFT",n[n.MAC_WK_CMD_RIGHT=93]="MAC_WK_CMD_RIGHT",n[n.WIN_IME=229]="WIN_IME",n[n.VK_NONAME=252]="VK_NONAME",n[n.PHANTOM=255]="PHANTOM"})(Oo||(Oo={}));var w_={};w_.arc=fs,w_.curve=ki,w_.line=IT,w_.lineOnAxis=Ut,w_.lineTo=Pr,w_.moveBy=ns,w_.moveTo=ti,w_.point=Wt;var gs={};gs.Coordinate=ft,gs.KeyCodes=Oo,gs.Rect=Zo,gs.Size=Jo,gs.Svg=Ve,gs.aria=Zu,gs.array=T0,gs.browserEvents=v_,gs.colour=Dn,gs.deprecation=E0,gs.dom=Hs,gs.extensions=or,gs.idGenerator=nf,gs.math=wh,gs.object=Y0,gs.parsing=og,gs.string=Ja,gs.style=ml,gs.svgMath=Wa,gs.svgPaths=w_,gs.toolbox=Cl,gs.userAgent=Cz,gs.xml=UT;var tm={};tm.register=OL,tm.unregister=fy;var om=class extends yo{constructor(n,a,g,R){super(a,g,R),this.text=n,this.workspace=a,this.anchor=g,this.ownerRect=R,this.paragraph=this.stringToSvg(n,this.contentContainer),this.updateBubbleSize()}getText(){return this.text}setText(n){this.text=n,Ot(this.paragraph),this.paragraph=this.stringToSvg(n,this.contentContainer),this.updateBubbleSize()}stringToSvg(n,a){return a=this.createParagraph(a),n=this.createSpans(a,n),this.workspace.RTL&&this.rightAlignSpans(a.getBBox().width,n),a}createParagraph(n){return Le(Ve.TEXT,{class:"blocklyText blocklyBubbleText blocklyNoPointerEvents",y:yo.BORDER_WIDTH},n)}createSpans(n,a){return a.split(`
- `).map(g=>{const R=Le(Ve.TSPAN,{dy:"1em",x:yo.BORDER_WIDTH},n);return g=document.createTextNode(g),R.appendChild(g),R})}rightAlignSpans(n,a){for(const g of a)g.setAttribute("text-anchor","end"),g.setAttribute("x",`${n+yo.BORDER_WIDTH}`)}updateBubbleSize(){const n=this.paragraph.getBBox();this.setSize(new Jo(n.width+2*yo.BORDER_WIDTH,n.height+2*yo.BORDER_WIDTH),!0)}},j0=class extends yo{constructor(n,a,g){super(n,a,g),this.workspace=n,this.anchor=a,this.ownerRect=g,this.resizePointerMoveListener=this.resizePointerUpListener=null,this.textChangeListeners=[],this.sizeChangeListeners=[],this.text="",this.DEFAULT_SIZE=new Jo(160+yo.DOUBLE_BORDER,80+yo.DOUBLE_BORDER),this.MIN_SIZE=new Jo(45+yo.DOUBLE_BORDER,20+yo.DOUBLE_BORDER),{inputRoot:this.inputRoot,textArea:this.textArea}=this.createEditor(this.contentContainer),this.resizeGroup=this.createResizeHandle(this.svgRoot),this.setSize(this.DEFAULT_SIZE,!0)}getText(){return this.text}setText(n){this.text=n,this.textArea.value=n,this.onTextChange()}addTextChangeListener(n){this.textChangeListeners.push(n)}addSizeChangeListener(n){this.sizeChangeListeners.push(n)}createEditor(n){n=Le(Ve.FOREIGNOBJECT,{x:yo.BORDER_WIDTH,y:yo.BORDER_WIDTH},n);const a=document.createElementNS(yr,"body");a.setAttribute("xmlns",yr),a.className="blocklyMinimalBody";const g=document.createElementNS(yr,"textarea");return g.className="blocklyCommentTextarea",g.setAttribute("dir",this.workspace.RTL?"RTL":"LTR"),a.appendChild(g),n.appendChild(a),this.bindTextAreaEvents(g),setTimeout(()=>{g.focus()},0),{inputRoot:n,textArea:g}}bindTextAreaEvents(n){ve(n,"wheel",this,a=>{a.stopPropagation()}),ve(n,"focus",this,this.onStartEdit,!0),ve(n,"change",this,this.onTextChange)}createResizeHandle(n){n=Le(Ve.G,{class:this.workspace.RTL?"blocklyResizeSW":"blocklyResizeSE"},n);const a=2*yo.BORDER_WIDTH;return Le(Ve.POLYGON,{points:`0,${a} ${a},${a} ${a},0`},n),Le(Ve.LINE,{class:"blocklyResizeLine",x1:a/3,y1:a-1,x2:a-1,y2:a/3},n),Le(Ve.LINE,{class:"blocklyResizeLine",x1:2*a/3,y1:a-1,x2:a-1,y2:2*a/3},n),ve(n,"pointerdown",this,this.onResizePointerDown),n}setSize(n,a=!1){n.width=Math.max(n.width,this.MIN_SIZE.width),n.height=Math.max(n.height,this.MIN_SIZE.height);const g=n.width-yo.DOUBLE_BORDER,R=n.height-yo.DOUBLE_BORDER;this.inputRoot.setAttribute("width",`${g}`),this.inputRoot.setAttribute("height",`${R}`),this.textArea.style.width=`${g-4}px`,this.textArea.style.height=`${R-4}px`,this.workspace.RTL?this.resizeGroup.setAttribute("transform",`translate(${yo.DOUBLE_BORDER}, ${R}) scale(-1 1)`):this.resizeGroup.setAttribute("transform",`translate(${g}, ${R})`),super.setSize(n,a),this.onSizeChange()}getSize(){return super.getSize()}onResizePointerDown(n){this.bringToFront(),Ye(n)||(this.workspace.startDrag(n,new ft(this.workspace.RTL?-this.getSize().width:this.getSize().width,this.getSize().height)),this.resizePointerUpListener=ve(document,"pointerup",this,this.onResizePointerUp),this.resizePointerMoveListener=ve(document,"pointermove",this,this.onResizePointerMove),this.workspace.hideChaff()),n.stopPropagation()}onResizePointerUp(n){Ie(),this.resizePointerUpListener&&(Re(this.resizePointerUpListener),this.resizePointerUpListener=null),this.resizePointerMoveListener&&(Re(this.resizePointerMoveListener),this.resizePointerMoveListener=null)}onResizePointerMove(n){n=this.workspace.moveDrag(n),this.setSize(new Jo(this.workspace.RTL?-n.x:n.x,n.y),!1),this.onSizeChange()}onStartEdit(){this.bringToFront()&&this.textArea.focus()}onTextChange(){this.text=this.textArea.value;for(const n of this.textChangeListeners)n()}onSizeChange(){for(const n of this.sizeChangeListeners)n()}};Be(`
- .blocklyCommentTextarea {
- background-color: #fef49c;
- border: 0;
- display: block;
- margin: 0;
- outline: 0;
- padding: 3px;
- resize: none;
- text-overflow: hidden;
- }
- `);var sm=17,q0=160,Q0=80,Li=class extends Vh{constructor(n){super(n),this.sourceBlock=n,this.textBubble=this.textInputBubble=null,this.text="",this.bubbleSize=new Jo(q0,Q0),this.bubbleVisiblity=!1}getType(){return Li.TYPE}initView(n){this.svgRoot||(super.initView(n),Le(Ve.CIRCLE,{class:"blocklyIconShape",r:"8",cx:"8",cy:"8"},this.svgRoot),Le(Ve.PATH,{class:"blocklyIconSymbol",d:"m6.8,10h2c0.003,-0.617 0.271,-0.962 0.633,-1.266 2.875,-2.4050.607,-5.534 -3.765,-3.874v1.7c3.12,-1.657 3.698,0.118 2.336,1.25-1.201,0.998 -1.201,1.528 -1.204,2.19z"},this.svgRoot),Le(Ve.RECT,{class:"blocklyIconSymbol",x:"6.8",y:"10.78",height:"2",width:"2"},this.svgRoot),je(this.svgRoot,"blockly-icon-comment"))}dispose(){super.dispose();let n;(n=this.textInputBubble)==null||n.dispose();let a;(a=this.textBubble)==null||a.dispose()}getWeight(){return Li.WEIGHT}getSize(){return new Jo(sm,sm)}applyColour(){super.applyColour();const n=this.sourceBlock.style.colourPrimary;let a;(a=this.textInputBubble)==null||a.setColour(n);let g;(g=this.textBubble)==null||g.setColour(n)}updateEditable(){super.updateEditable(),this.bubbleIsVisible()&&(this.setBubbleVisible(!1),this.setBubbleVisible(!0))}onLocationChange(n){super.onLocationChange(n),n=this.getAnchorLocation();let a;(a=this.textInputBubble)==null||a.setAnchorLocation(n);let g;(g=this.textBubble)==null||g.setAnchorLocation(n)}setText(n){const a=this.text;J(new(pe(o.CHANGE$$module$build$src$core$events$utils))(this.sourceBlock,"comment",null,a,n)),this.text=n;let g;(g=this.textInputBubble)==null||g.setText(this.text);let R;(R=this.textBubble)==null||R.setText(this.text)}getText(){return this.text}setBubbleSize(n){this.bubbleSize=n;let a;(a=this.textInputBubble)==null||a.setSize(this.bubbleSize,!0)}getBubbleSize(){return this.bubbleSize}saveState(){return this.text?{text:this.text,pinned:this.bubbleIsVisible(),height:this.bubbleSize.height,width:this.bubbleSize.width}:null}loadState(n){let a;this.text=(a=n.text)!=null?a:"";let g,R;this.bubbleSize=new Jo((g=n.width)!=null?g:q0,(R=n.height)!=null?R:Q0);let f;this.bubbleVisiblity=(f=n.pinned)!=null?f:!1,setTimeout(()=>this.setBubbleVisible(this.bubbleVisiblity),1)}onClick(){super.onClick(),this.setBubbleVisible(!this.bubbleIsVisible())}isClickableInFlyout(){return!1}onTextChange(){if(this.textInputBubble){var n=this.textInputBubble.getText();this.text!==n&&(J(new(pe(o.CHANGE$$module$build$src$core$events$utils))(this.sourceBlock,"comment",null,this.text,n)),this.text=n)}}onSizeChange(){this.textInputBubble&&(this.bubbleSize=this.textInputBubble.getSize())}bubbleIsVisible(){return this.bubbleVisiblity}setBubbleVisible(n){(!n||!this.textBubble&&!this.textInputBubble)&&(n||this.textBubble||this.textInputBubble)&&(this.bubbleVisiblity=n,this.sourceBlock.rendered&&!this.sourceBlock.isInFlyout&&(n?(this.sourceBlock.isEditable()?this.showEditableBubble():this.showNonEditableBubble(),this.applyColour()):this.hideBubble(),J(new(pe(vr))(this.sourceBlock,n,"comment"))))}showEditableBubble(){this.textInputBubble=new j0(this.sourceBlock.workspace,this.getAnchorLocation(),this.getBubbleOwnerRect()),this.textInputBubble.setText(this.getText()),this.textInputBubble.setSize(this.bubbleSize,!0),this.textInputBubble.addTextChangeListener(()=>this.onTextChange()),this.textInputBubble.addSizeChangeListener(()=>this.onSizeChange())}showNonEditableBubble(){this.textBubble=new om(this.getText(),this.sourceBlock.workspace,this.getAnchorLocation(),this.getBubbleOwnerRect())}hideBubble(){let n;(n=this.textInputBubble)==null||n.dispose(),this.textInputBubble=null;let a;(a=this.textBubble)==null||a.dispose(),this.textBubble=null}getAnchorLocation(){const n=sm/2;return ft.sum(this.workspaceLocation,new ft(n,n))}getBubbleOwnerRect(){const n=this.sourceBlock.getSvgRoot().getBBox();return new Zo(n.y,n.y+n.height,n.x,n.x+n.width)}};Li.TYPE=xi.COMMENT,Li.WEIGHT=3,OL(Li.TYPE,Li);var im=17,sr=class extends Vh{constructor(n){super(n),this.sourceBlock=n,this.textMap=new Map,this.textBubble=null}getType(){return sr.TYPE}initView(n){this.svgRoot||(super.initView(n),Le(Ve.PATH,{class:"blocklyIconShape",d:"M2,15Q-1,15 0.5,12L6.5,1.7Q8,-1 9.5,1.7L15.5,12Q17,15 14,15z"},this.svgRoot),Le(Ve.PATH,{class:"blocklyIconSymbol",d:"m7,4.8v3.16l0.27,2.27h1.46l0.27,-2.27v-3.16z"},this.svgRoot),Le(Ve.RECT,{class:"blocklyIconSymbol",x:"7",y:"11",height:"2",width:"2"},this.svgRoot),je(this.svgRoot,"blockly-icon-warning"))}dispose(){super.dispose();let n;(n=this.textBubble)==null||n.dispose()}getWeight(){return sr.WEIGHT}getSize(){return new Jo(im,im)}applyColour(){super.applyColour();let n;(n=this.textBubble)==null||n.setColour(this.sourceBlock.style.colourPrimary)}updateCollapsed(){}isShownWhenCollapsed(){return!0}onLocationChange(n){super.onLocationChange(n);let a;(a=this.textBubble)==null||a.setAnchorLocation(this.getAnchorLocation())}addMessage(n,a){if(this.textMap.get(a)===n)return this;n?this.textMap.set(a,n):this.textMap.delete(a);let g;return(g=this.textBubble)==null||g.setText(this.getText()),this}getText(){return[...this.textMap.values()].join(`
- `)}onClick(){super.onClick(),this.setBubbleVisible(!this.bubbleIsVisible())}isClickableInFlyout(){return!1}bubbleIsVisible(){return!!this.textBubble}setBubbleVisible(n){if(this.bubbleIsVisible()!==n){if(n)this.textBubble=new om(this.getText(),this.sourceBlock.workspace,this.getAnchorLocation(),this.getBubbleOwnerRect()),this.applyColour();else{let a;(a=this.textBubble)==null||a.dispose(),this.textBubble=null}J(new(pe(vr))(this.sourceBlock,n,"warning"))}}getAnchorLocation(){const n=im/2;return ft.sum(this.workspaceLocation,new ft(n,n))}getBubbleOwnerRect(){const n=this.sourceBlock.getSvgRoot().getBBox();return new Zo(n.y,n.y+n.height,n.x,n.x+n.width)}};sr.TYPE=xi.WARNING,sr.WEIGHT=2;var J0=class extends Error{constructor(n){super(`Tried to append an icon of type ${n.getType()} when an icon of that type already exists on the block. Use getIcon to access the existing icon.`),this.icon=n}},e$={};e$.DuplicateIconType=J0;var Nl={};Nl.CommentIcon=Li,Nl.Icon=Vh,Nl.IconType=xi,Nl.MutatorIcon=o.MutatorIcon$$module$build$src$core$icons$mutator_icon,Nl.WarningIcon=sr,Nl.exceptions=e$,Nl.registry=tm;var Kh,fi;Kh="PROCEDURE",o.DEFAULT_ARG$$module$build$src$core$procedures="x",fi={CATEGORY_NAME:Kh,DEFAULT_ARG:o.DEFAULT_ARG$$module$build$src$core$procedures},fi.ObservableProcedureMap=z0,fi.allProcedures=Eh,fi.findLegalName=o.findLegalName$$module$build$src$core$procedures,fi.flyoutCategory=uh,fi.getCallers=SL,fi.getDefinition=o.getDefinition$$module$build$src$core$procedures,fi.isNameUsed=ML,fi.isProcedureBlock=Rl,fi.mutateCallers=o.mutateCallers$$module$build$src$core$procedures,fi.mutatorOpenListener=IL,fi.rename=o.rename$$module$build$src$core$procedures;var xz=class{constructor(){this.NONE=0,this.FIELD=1,this.HAT=2,this.ICON=4,this.SPACER=8,this.BETWEEN_ROW_SPACER=16,this.IN_ROW_SPACER=32,this.EXTERNAL_VALUE_INPUT=64,this.INPUT=128,this.INLINE_INPUT=256,this.STATEMENT_INPUT=512,this.CONNECTION=1024,this.PREVIOUS_CONNECTION=2048,this.NEXT_CONNECTION=4096,this.OUTPUT_CONNECTION=8192,this.CORNER=16384,this.LEFT_SQUARE_CORNER=32768,this.LEFT_ROUND_CORNER=65536,this.RIGHT_SQUARE_CORNER=131072,this.RIGHT_ROUND_CORNER=262144,this.JAGGED_EDGE=524288,this.ROW=1048576,this.TOP_ROW=2097152,this.BOTTOM_ROW=4194304,this.INPUT_ROW=8388608,this.LEFT_CORNER=this.LEFT_SQUARE_CORNER|this.LEFT_ROUND_CORNER,this.RIGHT_CORNER=this.RIGHT_SQUARE_CORNER|this.RIGHT_ROUND_CORNER,this.nextTypeValue_=16777216}getType(n){return Object.prototype.hasOwnProperty.call(this,n)||(this[n]=this.nextTypeValue_,this.nextTypeValue_<<=1),this[n]}isField(n){return n.type&this.FIELD}isHat(n){return n.type&this.HAT}isIcon(n){return n.type&this.ICON}isSpacer(n){return n.type&this.SPACER}isInRowSpacer(n){return n.type&this.IN_ROW_SPACER}isInput(n){return n.type&this.INPUT}isExternalInput(n){return n.type&this.EXTERNAL_VALUE_INPUT}isInlineInput(n){return n.type&this.INLINE_INPUT}isStatementInput(n){return n.type&this.STATEMENT_INPUT}isPreviousConnection(n){return n.type&this.PREVIOUS_CONNECTION}isNextConnection(n){return n.type&this.NEXT_CONNECTION}isPreviousOrNextConnection(n){return n.type&(this.PREVIOUS_CONNECTION|this.NEXT_CONNECTION)}isLeftRoundedCorner(n){return n.type&this.LEFT_ROUND_CORNER}isRightRoundedCorner(n){return n.type&this.RIGHT_ROUND_CORNER}isLeftSquareCorner(n){return n.type&this.LEFT_SQUARE_CORNER}isRightSquareCorner(n){return n.type&this.RIGHT_SQUARE_CORNER}isCorner(n){return n.type&this.CORNER}isJaggedEdge(n){return n.type&this.JAGGED_EDGE}isRow(n){return n.type&this.ROW}isBetweenRowSpacer(n){return n.type&this.BETWEEN_ROW_SPACER}isTopRow(n){return n.type&this.TOP_ROW}isBottomRow(n){return n.type&this.BOTTOM_ROW}isTopOrBottomRow(n){return n.type&(this.TOP_ROW|this.BOTTOM_ROW)}isInputRow(n){return n.type&this.INPUT_ROW}},we=new xz,Hr=class{constructor(n){this.centerline=this.xPos=this.height=this.width=0,this.constants_=n,this.type=we.NONE,this.notchOffset=this.constants_.NOTCH_OFFSET_LEFT}},sg=class{constructor(n){this.elements=[],this.xPos=this.yPos=this.widthWithConnectedBlocks=this.minWidth=this.minHeight=this.width=this.height=0,this.hasStatement=this.hasExternalInput=!1,this.statementEdge=0,this.hasJaggedEdge=this.hasDummyInput=this.hasInlineInput=!1,this.align=null,this.constants_=n,this.type=we.ROW,this.notchOffset=this.constants_.NOTCH_OFFSET_LEFT}getLastInput(){for(let n=this.elements.length-1;0<=n;n--){const a=this.elements[n];if(we.isInput(a))return a}return null}measure(){throw Error("Unexpected attempt to measure a base Row.")}startsWithElemSpacer(){return!0}endsWithElemSpacer(){return!0}getFirstSpacer(){for(let n=0;n<this.elements.length;n++){const a=this.elements[n];if(we.isSpacer(a))return a}return null}getLastSpacer(){for(let n=this.elements.length-1;0<=n;n--){const a=this.elements[n];if(we.isSpacer(a))return a}return null}},nm=class extends sg{constructor(n){super(n),this.hasNextConnection=!1,this.connection=null,this.baseline=this.descenderHeight=0,this.type|=we.BOTTOM_ROW}hasLeftSquareCorner(n){return!!n.outputConnection||!!n.getNextBlock()}hasRightSquareCorner(n){return!0}measure(){let n=0,a=0,g=0;for(let R=0;R<this.elements.length;R++){const f=this.elements[R];a+=f.width,we.isSpacer(f)||(we.isNextConnection(f)?g=Math.max(g,f.height):n=Math.max(n,f.height))}this.width=Math.max(this.minWidth,a),this.height=Math.max(this.minHeight,n)+g,this.descenderHeight=g,this.widthWithConnectedBlocks=this.width}startsWithElemSpacer(){return!1}endsWithElemSpacer(){return!1}},sc=class extends Hr{constructor(n,a){super(n),this.connectionModel=a,this.shape=this.constants_.shapeFor(a),this.isDynamicShape="isDynamic"in this.shape&&this.shape.isDynamic,this.type|=we.CONNECTION}},Pl=class extends sc{constructor(n,a){super(n,a.connection),this.input=a,this.connectionOffsetY=this.connectionOffsetX=0,this.type|=we.INPUT,this.align=a.align,(this.connectedBlock=a.connection&&a.connection.targetBlock()?a.connection.targetBlock():null)?(n=this.connectedBlock.getHeightWidth(),this.connectedBlockWidth=n.width,this.connectedBlockHeight=n.height):this.connectedBlockHeight=this.connectedBlockWidth=0}},zh=class extends Pl{constructor(n,a){super(n,a),this.height=0,this.type|=we.EXTERNAL_VALUE_INPUT,this.height=this.connectedBlock?this.connectedBlockHeight-this.constants_.TAB_OFFSET_FROM_TOP-this.constants_.MEDIUM_PADDING:this.shape.height,this.width=this.shape.width+this.constants_.EXTERNAL_VALUE_INPUT_PADDING,this.connectionOffsetY=this.constants_.TAB_OFFSET_FROM_TOP,this.connectionHeight=this.shape.height,this.connectionWidth=this.shape.width}},YT=class extends Hr{constructor(n,a,g){super(n),this.field=a,this.parentInput=g,this.isEditable=a.EDITABLE,this.flipRtl=a.getFlipRtl(),this.type|=we.FIELD,n=this.field.getSize(),this.height=n.height,this.width=n.width}},rm=class extends Hr{constructor(n){super(n),this.type|=we.HAT,this.height=this.constants_.START_HAT.height,this.width=this.constants_.START_HAT.width,this.ascenderHeight=this.height}},t$=class extends Hr{constructor(n,a){super(n),this.icon=a,this.flipRtl=!1,this.isVisible=hl(a)&&a.bubbleIsVisible(),this.type|=we.ICON,n=a.getSize(),this.height=n.height,this.width=n.width}},En=class extends Hr{constructor(n,a){super(n),this.type=this.type|we.SPACER|we.IN_ROW_SPACER,this.width=a,this.height=this.constants_.SPACER_DEFAULT_HEIGHT}},_m=class extends Pl{constructor(n,a){super(n,a),this.type|=we.INLINE_INPUT,this.connectedBlock?(this.width=this.connectedBlockWidth,this.height=this.connectedBlockHeight):(this.height=this.constants_.EMPTY_INLINE_INPUT_HEIGHT,this.width=this.constants_.EMPTY_INLINE_INPUT_PADDING),this.connectionHeight=this.isDynamicShape?this.shape.height(this.height):this.shape.height,this.connectionWidth=this.isDynamicShape?this.shape.width(this.height):this.shape.width,this.connectedBlock||(this.width+=this.connectionWidth*(this.isDynamicShape?2:1)),this.connectionOffsetY="connectionOffsetY"in this.shape?this.shape.connectionOffsetY(this.connectionHeight):this.constants_.TAB_OFFSET_FROM_TOP,this.connectionOffsetX="connectionOffsetX"in this.shape?this.shape.connectionOffsetX(this.connectionWidth):0}},ig=class extends Pl{constructor(n,a){super(n,a),this.type|=we.STATEMENT_INPUT,this.height=this.connectedBlock?this.connectedBlockHeight+this.constants_.STATEMENT_BOTTOM_SPACER:this.constants_.EMPTY_STATEMENT_INPUT_HEIGHT,this.width=this.constants_.STATEMENT_INPUT_NOTCH_OFFSET+this.shape.width}},lm=class extends sg{constructor(n){super(n),this.connectedBlockWidths=0,this.type|=we.INPUT_ROW}measure(){this.width=this.minWidth,this.height=this.minHeight;let n=0;for(let a=0;a<this.elements.length;a++){const g=this.elements[a];this.width+=g.width,we.isInput(g)&&g instanceof Pl&&(we.isStatementInput(g)&&g instanceof ig?n+=g.connectedBlockWidth:we.isExternalInput(g)&&g instanceof zh&&g.connectedBlockWidth!==0&&(n+=g.connectedBlockWidth-g.connectionWidth)),we.isSpacer(g)||(this.height=Math.max(this.height,g.height))}this.connectedBlockWidths=n,this.widthWithConnectedBlocks=this.width+n}endsWithElemSpacer(){return!this.hasExternalInput&&!this.hasStatement}},o$=class extends Hr{constructor(n){super(n),this.type|=we.JAGGED_EDGE,this.height=this.constants_.JAGGED_TEETH.height,this.width=this.constants_.JAGGED_TEETH.width}},s$=class extends sc{constructor(n,a){super(n,a),this.type|=we.NEXT_CONNECTION,this.height=this.shape.height,this.width=this.shape.width}},i$=class extends sc{constructor(n,a){super(n,a),this.connectionOffsetX=0,this.type|=we.OUTPUT_CONNECTION,this.height=this.isDynamicShape?0:this.shape.height,this.startX=this.width=this.isDynamicShape?0:this.shape.width,this.connectionOffsetY=this.constants_.TAB_OFFSET_FROM_TOP}},n$=class extends sc{constructor(n,a){super(n,a),this.type|=we.PREVIOUS_CONNECTION,this.height=this.shape.height,this.width=this.shape.width}},ng=class extends Hr{constructor(n,a){super(n),this.type=(a&&a!=="left"?we.RIGHT_ROUND_CORNER:we.LEFT_ROUND_CORNER)|we.CORNER,this.width=this.constants_.CORNER_RADIUS,this.height=this.constants_.CORNER_RADIUS/2}},am=class extends sg{constructor(n,a,g){super(n),this.height=a,this.width=g,this.precedesStatement=this.followsStatement=!1,this.widthWithConnectedBlocks=0,this.type=this.type|we.SPACER|we.BETWEEN_ROW_SPACER,this.elements=[new En(this.constants_,g)]}measure(){}},rg=class extends Hr{constructor(n,a){super(n),this.type=(a&&a!=="left"?we.RIGHT_SQUARE_CORNER:we.LEFT_SQUARE_CORNER)|we.CORNER,this.width=this.height=this.constants_.NO_PADDING}},cm=class extends sg{constructor(n){super(n),this.ascenderHeight=this.capline=0,this.hasPreviousConnection=!1,this.connection=null,this.type|=we.TOP_ROW}hasLeftSquareCorner(n){const a=(n.hat?n.hat==="cap":this.constants_.ADD_START_HATS)&&!n.outputConnection&&!n.previousConnection,g=n.getPreviousBlock();return!!n.outputConnection||a||(g?g.getNextBlock()===n:!1)}hasRightSquareCorner(n){return!0}measure(){let n=0,a=0,g=0;for(let R=0;R<this.elements.length;R++){const f=this.elements[R];a+=f.width,we.isSpacer(f)||(we.isHat(f)&&f instanceof rm?g=Math.max(g,f.ascenderHeight):n=Math.max(n,f.height))}this.width=Math.max(this.minWidth,a),this.height=Math.max(this.minHeight,n)+g,this.capline=this.ascenderHeight=g,this.widthWithConnectedBlocks=this.width}startsWithElemSpacer(){return!1}endsWithElemSpacer(){return!1}},_g=class{constructor(){this.NO_PADDING=0,this.SMALL_PADDING=3,this.MEDIUM_PADDING=5,this.MEDIUM_LARGE_PADDING=8,this.LARGE_PADDING=10,this.TAB_HEIGHT=15,this.TAB_OFFSET_FROM_TOP=5,this.TAB_VERTICAL_OVERLAP=2.5,this.TAB_WIDTH=8,this.NOTCH_WIDTH=15,this.NOTCH_HEIGHT=4,this.MIN_BLOCK_WIDTH=12,this.EMPTY_BLOCK_SPACER_HEIGHT=16,this.CORNER_RADIUS=8,this.NOTCH_OFFSET_LEFT=15,this.STATEMENT_BOTTOM_SPACER=0,this.STATEMENT_INPUT_PADDING_LEFT=20,this.BETWEEN_STATEMENT_PADDING_Y=4,this.ADD_START_HATS=!1,this.START_HAT_HEIGHT=15,this.START_HAT_WIDTH=100,this.SPACER_DEFAULT_HEIGHT=15,this.MIN_BLOCK_HEIGHT=24,this.EMPTY_INLINE_INPUT_PADDING=14.5,this.EXTERNAL_VALUE_INPUT_PADDING=2,this.JAGGED_TEETH_HEIGHT=12,this.JAGGED_TEETH_WIDTH=6,this.FIELD_TEXT_FONTSIZE=11,this.FIELD_TEXT_FONTWEIGHT="normal",this.FIELD_TEXT_FONTFAMILY="sans-serif",this.FIELD_TEXT_BASELINE=this.FIELD_TEXT_HEIGHT=-1,this.FIELD_BORDER_RECT_RADIUS=4,this.FIELD_BORDER_RECT_HEIGHT=16,this.FIELD_BORDER_RECT_X_PADDING=5,this.FIELD_BORDER_RECT_Y_PADDING=3,this.FIELD_BORDER_RECT_COLOUR="#fff",this.FIELD_DROPDOWN_SVG_ARROW=this.FIELD_DROPDOWN_COLOURED_DIV=this.FIELD_DROPDOWN_NO_BORDER_RECT_SHADOW=!1,this.FIELD_DROPDOWN_SVG_ARROW_SIZE=12,this.FIELD_COLOUR_FULL_BLOCK=this.FIELD_TEXTINPUT_BOX_SHADOW=!1,this.FIELD_COLOUR_DEFAULT_WIDTH=26,this.defs=null,this.embossFilterId="",this.embossFilter=null,this.disabledPatternId="",this.disabledPattern=null,this.debugFilterId="",this.cssNode=this.debugFilter=null,this.CURSOR_COLOUR="#cc0a0a",this.MARKER_COLOUR="#4286f4",this.CURSOR_WS_WIDTH=100,this.WS_CURSOR_HEIGHT=5,this.CURSOR_STACK_PADDING=10,this.CURSOR_BLOCK_PADDING=2,this.CURSOR_STROKE_WIDTH=4,this.FULL_BLOCK_FIELDS=!1,this.INSERTION_MARKER_COLOUR="#000000",this.INSERTION_MARKER_OPACITY=.2,this.SHAPES={PUZZLE:1,NOTCH:2},this.TALL_INPUT_FIELD_OFFSET_Y=this.MEDIUM_PADDING,this.DUMMY_INPUT_SHADOW_MIN_HEIGHT=this.DUMMY_INPUT_MIN_HEIGHT=this.TAB_HEIGHT,this.STATEMENT_INPUT_NOTCH_OFFSET=this.NOTCH_OFFSET_LEFT,this.TOP_ROW_MIN_HEIGHT=this.MEDIUM_PADDING,this.TOP_ROW_PRECEDES_STATEMENT_MIN_HEIGHT=this.LARGE_PADDING,this.BOTTOM_ROW_MIN_HEIGHT=this.MEDIUM_PADDING,this.BOTTOM_ROW_AFTER_STATEMENT_MIN_HEIGHT=this.LARGE_PADDING,this.EMPTY_INLINE_INPUT_HEIGHT=this.TAB_HEIGHT+11,this.EMPTY_STATEMENT_INPUT_HEIGHT=this.MIN_BLOCK_HEIGHT,this.START_POINT=ns(0,0),this.FIELD_TEXT_BASELINE_CENTER=!0,this.FIELD_DROPDOWN_BORDER_RECT_HEIGHT=this.FIELD_BORDER_RECT_HEIGHT,this.FIELD_DROPDOWN_SVG_ARROW_PADDING=this.FIELD_BORDER_RECT_X_PADDING,this.FIELD_DROPDOWN_SVG_ARROW_DATAURI="data:image/svg+xml;base64,PHN2ZyBpZD0iTGF5ZXJfMSIgZGF0YS1uYW1lPSJMYXllciAxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxMi43MSIgaGVpZ2h0PSI4Ljc5IiB2aWV3Qm94PSIwIDAgMTIuNzEgOC43OSI+PHRpdGxlPmRyb3Bkb3duLWFycm93PC90aXRsZT48ZyBvcGFjaXR5PSIwLjEiPjxwYXRoIGQ9Ik0xMi43MSwyLjQ0QTIuNDEsMi40MSwwLDAsMSwxMiw0LjE2TDguMDgsOC4wOGEyLjQ1LDIuNDUsMCwwLDEtMy40NSwwTDAuNzIsNC4xNkEyLjQyLDIuNDIsMCwwLDEsMCwyLjQ0LDIuNDgsMi40OCwwLDAsMSwuNzEuNzFDMSwwLjQ3LDEuNDMsMCw2LjM2LDBTMTEuNzUsMC40NiwxMiwuNzFBMi40NCwyLjQ0LDAsMCwxLDEyLjcxLDIuNDRaIiBmaWxsPSIjMjMxZjIwIi8+PC9nPjxwYXRoIGQ9Ik02LjM2LDcuNzlhMS40MywxLjQzLDAsMCwxLTEtLjQyTDEuNDIsMy40NWExLjQ0LDEuNDQsMCwwLDEsMC0yYzAuNTYtLjU2LDkuMzEtMC41Niw5Ljg3LDBhMS40NCwxLjQ0LDAsMCwxLDAsMkw3LjM3LDcuMzdBMS40MywxLjQzLDAsMCwxLDYuMzYsNy43OVoiIGZpbGw9IiNmZmYiLz48L3N2Zz4=",this.FIELD_COLOUR_DEFAULT_HEIGHT=this.FIELD_BORDER_RECT_HEIGHT,this.FIELD_CHECKBOX_X_OFFSET=this.FIELD_BORDER_RECT_X_PADDING-3,this.randomIdentifier=String(Math.random()).substring(2)}init(){this.JAGGED_TEETH=this.makeJaggedTeeth(),this.NOTCH=this.makeNotch(),this.START_HAT=this.makeStartHat(),this.PUZZLE_TAB=this.makePuzzleTab(),this.INSIDE_CORNERS=this.makeInsideCorners(),this.OUTSIDE_CORNERS=this.makeOutsideCorners()}setTheme(n){this.blockStyles=Object.create(null);const a=n.blockStyles;for(const g in a)this.blockStyles[g]=this.validatedBlockStyle_(a[g]);this.setDynamicProperties_(n)}setDynamicProperties_(n){this.setFontConstants_(n),this.setComponentConstants_(n),this.ADD_START_HATS=n.startHats!==void 0?n.startHats:this.ADD_START_HATS}setFontConstants_(n){n.fontStyle&&n.fontStyle.family&&(this.FIELD_TEXT_FONTFAMILY=n.fontStyle.family),n.fontStyle&&n.fontStyle.weight&&(this.FIELD_TEXT_FONTWEIGHT=n.fontStyle.weight),n.fontStyle&&n.fontStyle.size&&(this.FIELD_TEXT_FONTSIZE=n.fontStyle.size),n=_t("Hg",this.FIELD_TEXT_FONTSIZE+"pt",this.FIELD_TEXT_FONTWEIGHT,this.FIELD_TEXT_FONTFAMILY),this.FIELD_TEXT_HEIGHT=n.height,this.FIELD_TEXT_BASELINE=n.baseline}setComponentConstants_(n){this.CURSOR_COLOUR=n.getComponentStyle("cursorColour")||this.CURSOR_COLOUR,this.MARKER_COLOUR=n.getComponentStyle("markerColour")||this.MARKER_COLOUR,this.INSERTION_MARKER_COLOUR=n.getComponentStyle("insertionMarkerColour")||this.INSERTION_MARKER_COLOUR,this.INSERTION_MARKER_OPACITY=Number(n.getComponentStyle("insertionMarkerOpacity"))||this.INSERTION_MARKER_OPACITY}getBlockStyleForColour(n){const a="auto_"+n;return this.blockStyles[a]||(this.blockStyles[a]=this.createBlockStyle_(n)),{style:this.blockStyles[a],name:a}}getBlockStyle(n){return this.blockStyles[n||""]||(n&&n.indexOf("auto_")===0?this.getBlockStyleForColour(n.substring(5)).style:this.createBlockStyle_("#000000"))}createBlockStyle_(n){return this.validatedBlockStyle_({colourPrimary:n})}validatedBlockStyle_(n){const a={};return n&&Object.assign(a,n),n=RT(a.colourPrimary||"#000"),a.colourPrimary=n.hex,a.colourSecondary=a.colourSecondary?RT(a.colourSecondary).hex:this.generateSecondaryColour_(a.colourPrimary),a.colourTertiary=a.colourTertiary?RT(a.colourTertiary).hex:this.generateTertiaryColour_(a.colourPrimary),a.hat=a.hat||"",a}generateSecondaryColour_(n){return Ba("#fff",n,.6)||n}generateTertiaryColour_(n){return Ba("#fff",n,.3)||n}dispose(){this.embossFilter&&Ot(this.embossFilter),this.disabledPattern&&Ot(this.disabledPattern),this.debugFilter&&Ot(this.debugFilter),this.cssNode=null}makeJaggedTeeth(){const n=this.JAGGED_TEETH_HEIGHT,a=this.JAGGED_TEETH_WIDTH,g=IT([Wt(a,n/4),Wt(2*-a,n/2),Wt(a,n/4)]);return{height:n,width:a,path:g}}makeStartHat(){const n=this.START_HAT_HEIGHT,a=this.START_HAT_WIDTH,g=ki("c",[Wt(30,-n),Wt(70,-n),Wt(a,0)]);return{height:n,width:a,path:g}}makePuzzleTab(){function n($){$=$?-1:1;const le=-$;var fe=g/2;const it=fe+2.5,Pt=fe+.5,ts=Wt(-a,$*fe);return fe=Wt(a,$*fe),ki("c",[Wt(0,$*it),Wt(-a,le*Pt),ts])+ki("s",[Wt(a,2.5*le),fe])}const a=this.TAB_WIDTH,g=this.TAB_HEIGHT,R=n(!0),f=n(!1);return{type:this.SHAPES.PUZZLE,width:a,height:g,pathDown:f,pathUp:R}}makeNotch(){function n(le){return IT([Wt(le*R,g),Wt(3*le,0),Wt(le*R,-g)])}const a=this.NOTCH_WIDTH,g=this.NOTCH_HEIGHT,R=(a-3)/2,f=n(1),$=n(-1);return{type:this.SHAPES.NOTCH,width:a,height:g,pathLeft:f,pathRight:$}}makeInsideCorners(){const n=this.CORNER_RADIUS,a=fs("a","0 0,0",n,Wt(-n,n)),g=fs("a","0 0,0",n,Wt(n,n));return{width:n,height:n,pathTop:a,pathBottom:g}}makeOutsideCorners(){const n=this.CORNER_RADIUS,a=ns(0,n)+fs("a","0 0,1",n,Wt(n,-n)),g=fs("a","0 0,1",n,Wt(n,n)),R=fs("a","0 0,1",n,Wt(-n,-n)),f=fs("a","0 0,1",n,Wt(-n,n));return{topLeft:a,topRight:g,bottomRight:f,bottomLeft:R,rightHeight:n}}shapeFor(n){switch(n.type){case kt.INPUT_VALUE:case kt.OUTPUT_VALUE:return this.PUZZLE_TAB;case kt.PREVIOUS_STATEMENT:case kt.NEXT_STATEMENT:return this.NOTCH;default:throw Error("Unknown connection type")}}createDom(n,a,g){this.injectCSS_(a,g),this.defs=Le(Ve.DEFS,{},n),n=Le(Ve.FILTER,{id:"blocklyEmbossFilter"+this.randomIdentifier},this.defs),Le(Ve.FEGAUSSIANBLUR,{in:"SourceAlpha",stdDeviation:1,result:"blur"},n),a=Le(Ve.FESPECULARLIGHTING,{in:"blur",surfaceScale:1,specularConstant:.5,specularExponent:10,"lighting-color":"white",result:"specOut"},n),Le(Ve.FEPOINTLIGHT,{x:-5e3,y:-1e4,z:2e4},a),Le(Ve.FECOMPOSITE,{in:"specOut",in2:"SourceAlpha",operator:"in",result:"specOut"},n),Le(Ve.FECOMPOSITE,{in:"SourceGraphic",in2:"specOut",operator:"arithmetic",k1:0,k2:1,k3:1,k4:0},n),this.embossFilterId=n.id,this.embossFilter=n,n=Le(Ve.PATTERN,{id:"blocklyDisabledPattern"+this.randomIdentifier,patternUnits:"userSpaceOnUse",width:10,height:10},this.defs),Le(Ve.RECT,{width:10,height:10,fill:"#aaa"},n),Le(Ve.PATH,{d:"M 0 0 L 10 10 M 10 0 L 0 10",stroke:"#cc0"},n),this.disabledPatternId=n.id,this.disabledPattern=n,this.createDebugFilter()}createDebugFilter(){if(!this.debugFilter){const n=Le(Ve.FILTER,{id:"blocklyDebugFilter"+this.randomIdentifier,height:"160%",width:"180%",y:"-30%",x:"-40%"},this.defs),a=Le(Ve.FECOMPONENTTRANSFER,{result:"outBlur"},n);Le(Ve.FEFUNCA,{type:"table",tableValues:"0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1"},a),Le(Ve.FEFLOOD,{"flood-color":"#ff0000","flood-opacity":.5,result:"outColor"},n),Le(Ve.FECOMPOSITE,{in:"outColor",in2:"outBlur",operator:"in",result:"outGlow"},n),this.debugFilterId=n.id,this.debugFilter=n}}injectCSS_(n,a){a=this.getCSS_(a),n="blockly-renderer-style-"+n,this.cssNode=document.getElementById(n);const g=a.join(`
- `);this.cssNode?this.cssNode.firstChild.textContent=g:(a=document.createElement("style"),a.id=n,n=document.createTextNode(g),a.appendChild(n),document.head.insertBefore(a,document.head.firstChild),this.cssNode=a)}getCSS_(n){return[`${n} .blocklyText, `,`${n} .blocklyFlyoutLabelText {`,`font: ${this.FIELD_TEXT_FONTWEIGHT} ${this.FIELD_TEXT_FONTSIZE}pt ${this.FIELD_TEXT_FONTFAMILY};`,"}",`${n} .blocklyText {`,"fill: #fff;","}",`${n} .blocklyNonEditableText>rect,`,`${n} .blocklyEditableText>rect {`,`fill: ${this.FIELD_BORDER_RECT_COLOUR};`,"fill-opacity: .6;","stroke: none;","}",`${n} .blocklyNonEditableText>text,`,`${n} .blocklyEditableText>text {`,"fill: #000;","}",`${n} .blocklyFlyoutLabelText {`,"fill: #000;","}",`${n} .blocklyText.blocklyBubbleText {`,"fill: #000;","}",`${n} .blocklyEditableText:not(.editing):hover>rect {`,"stroke: #fff;","stroke-width: 2;","}",`${n} .blocklyHtmlInput {`,`font-family: ${this.FIELD_TEXT_FONTFAMILY};`,`font-weight: ${this.FIELD_TEXT_FONTWEIGHT};`,"}",`${n} .blocklySelected>.blocklyPath {`,"stroke: #fc3;","stroke-width: 3px;","}",`${n} .blocklyHighlightedConnectionPath {`,"stroke: #fc3;","}",`${n} .blocklyReplaceable .blocklyPath {`,"fill-opacity: .5;","}",`${n} .blocklyReplaceable .blocklyPathLight,`,`${n} .blocklyReplaceable .blocklyPathDark {`,"display: none;","}",`${n} .blocklyInsertionMarker>.blocklyPath {`,`fill-opacity: ${this.INSERTION_MARKER_OPACITY};`,"stroke: none;","}"]}},lg=class{constructor(n,a){this.inlinePath_=this.outlinePath_="",this.block_=n,this.info_=a,this.topLeft_=n.getRelativeToSurfaceXY(),this.constants_=a.getRenderer().getConstants()}draw(){this.drawOutline_(),this.drawInternals_(),this.block_.pathObject.setPath(this.outlinePath_+`
- `+this.inlinePath_),this.info_.RTL&&this.block_.pathObject.flipRTL(),this.recordSizeOnBlock_()}hideHiddenIcons_(){xe("hideHiddenIcons_","v10","v11")}recordSizeOnBlock_(){this.block_.height=this.info_.height,this.block_.width=this.info_.widthWithChildren}drawOutline_(){this.drawTop_();for(let n=1;n<this.info_.rows.length-1;n++){const a=this.info_.rows[n];a.hasJaggedEdge?this.drawJaggedEdge_(a):a.hasStatement?this.drawStatementInput_(a):a.hasExternalInput?this.drawValueInput_(a):this.drawRightSideRow_(a)}this.drawBottom_(),this.drawLeft_()}drawTop_(){const n=this.info_.topRow,a=n.elements;this.positionPreviousConnection_(),this.outlinePath_+=ns(n.xPos,this.info_.startY);for(let g=0,R;R=a[g];g++)we.isLeftRoundedCorner(R)?this.outlinePath_+=this.constants_.OUTSIDE_CORNERS.topLeft:we.isRightRoundedCorner(R)?this.outlinePath_+=this.constants_.OUTSIDE_CORNERS.topRight:we.isPreviousConnection(R)&&R instanceof sc?this.outlinePath_+=R.shape.pathLeft:we.isHat(R)?this.outlinePath_+=this.constants_.START_HAT.path:we.isSpacer(R)&&(this.outlinePath_+=Ut("h",R.width));this.outlinePath_+=Ut("v",n.height)}drawJaggedEdge_(n){this.outlinePath_+=this.constants_.JAGGED_TEETH.path+Ut("v",n.height-this.constants_.JAGGED_TEETH.height)}drawValueInput_(n){const a=n.getLastInput();this.positionExternalValueConnection_(n);const g=pL(a.shape)?a.shape.pathDown(a.height):a.shape.pathDown;this.outlinePath_+=Ut("H",a.xPos+a.width)+g+Ut("v",n.height-a.connectionHeight)}drawStatementInput_(n){var a=n.getLastInput();if(a){var g=a.xPos+a.notchOffset+a.shape.width;a=a.shape.pathRight+Ut("h",-(a.notchOffset-this.constants_.INSIDE_CORNERS.width))+this.constants_.INSIDE_CORNERS.pathTop;var R=n.height-2*this.constants_.INSIDE_CORNERS.height;this.outlinePath_+=Ut("H",g)+a+Ut("v",R)+this.constants_.INSIDE_CORNERS.pathBottom+Ut("H",n.xPos+n.width),this.positionStatementInputConnection_(n)}}drawRightSideRow_(n){this.outlinePath_+=Ut("V",n.yPos+n.height)}drawBottom_(){const n=this.info_.bottomRow,a=n.elements;this.positionNextConnection_();let g=0,R="";for(let f=a.length-1,$;$=a[f];f--)we.isNextConnection($)&&$ instanceof sc?R+=$.shape.pathRight:we.isLeftSquareCorner($)?R+=Ut("H",n.xPos):we.isLeftRoundedCorner($)?R+=this.constants_.OUTSIDE_CORNERS.bottomLeft:we.isRightRoundedCorner($)?(R+=this.constants_.OUTSIDE_CORNERS.bottomRight,g=this.constants_.OUTSIDE_CORNERS.rightHeight):we.isSpacer($)&&(R+=Ut("h",-1*$.width));this.outlinePath_+=Ut("V",n.baseline-g),this.outlinePath_+=R}drawLeft_(){var n=this.info_.outputConnection;if(this.positionOutputConnection_(),n){const a=n.connectionOffsetY+n.height;n=pL(n.shape)?n.shape.pathUp(n.height):n.shape.pathUp,this.outlinePath_+=Ut("V",a)+n}this.outlinePath_+="z"}drawInternals_(){for(let n=0,a;a=this.info_.rows[n];n++)for(let g=0,R;R=a.elements[g];g++)we.isInlineInput(R)?this.drawInlineInput_(R):(we.isIcon(R)||we.isField(R))&&this.layoutField_(R)}layoutField_(n){const a=n.centerline-n.height/2;let g=n.xPos;var R="";this.info_.RTL&&(g=-(g+n.width),n.flipRtl&&(g+=n.width,R="scale(-1 1)")),we.isIcon(n)?(R=n.icon,R.setOffsetInBlock(new ft(g,a)),this.info_.isInsertionMarker&&R.hideForInsertionMarker()):(n=n.field.getSvgRoot(),n.setAttribute("transform","translate("+g+","+a+")"+R),this.info_.isInsertionMarker&&n.setAttribute("display","none"))}drawInlineInput_(n){const a=n.width,g=n.height,R=n.connectionOffsetY,f=n.connectionHeight+R;this.inlinePath_+=ti(n.xPos+n.connectionWidth,n.centerline-g/2)+Ut("v",R)+n.shape.pathDown+Ut("v",g-f)+Ut("h",a-n.connectionWidth)+Ut("v",-g)+"z",this.positionInlineInputConnection_(n)}positionInlineInputConnection_(n){const a=n.centerline-n.height/2;if(n.connectionModel){let g=n.xPos+n.connectionWidth+n.connectionOffsetX;this.info_.RTL&&(g*=-1),n.connectionModel.setOffsetInBlock(g,a+n.connectionOffsetY)}}positionStatementInputConnection_(n){const a=n.getLastInput();if(a!=null&&a.connectionModel){let g=n.xPos+n.statementEdge+a.notchOffset;this.info_.RTL&&(g*=-1),a.connectionModel.setOffsetInBlock(g,n.yPos)}}positionExternalValueConnection_(n){const a=n.getLastInput();if(a&&a.connectionModel){let g=n.xPos+n.width;this.info_.RTL&&(g*=-1),a.connectionModel.setOffsetInBlock(g,n.yPos)}}positionPreviousConnection_(){const n=this.info_.topRow;if(n.connection){const a=n.xPos+n.notchOffset;n.connection.connectionModel.setOffsetInBlock(this.info_.RTL?-a:a,0)}}positionNextConnection_(){const n=this.info_.bottomRow;if(n.connection){const a=n.connection,g=a.xPos;a.connectionModel.setOffsetInBlock(this.info_.RTL?-g:g,n.baseline)}}positionOutputConnection_(){if(this.info_.outputConnection){const n=this.info_.startX+this.info_.outputConnection.connectionOffsetX;this.block_.outputConnection.setOffsetInBlock(this.info_.RTL?-n:n,this.info_.outputConnection.connectionOffsetY)}}};(function(n){n[n.LEFT=-1]="LEFT",n[n.CENTRE=0]="CENTRE",n[n.RIGHT=1]="RIGHT"})(o.Align$$module$build$src$core$inputs$align||(o.Align$$module$build$src$core$inputs$align={})),o.Align$$module$build$src$core$inputs$align;var ic=class extends Io{constructor(n,a,g){super(Io.SKIP_SETUP),this.class=null,this.EDITABLE=!1,this.maxDisplayLength=1/0,n!==Io.SKIP_SETUP&&(g?this.configure_(g):this.class=a||null,this.setValue(n))}configure_(n){super.configure_(n),n.class&&(this.class=n.class)}initView(){this.createTextElement_(),this.class&&je(this.getTextElement(),this.class)}doClassValidation_(n){return n==null?null:`${n}`}setClass(n){this.textElement_&&(this.class&&Je(this.textElement_,this.class),n&&je(this.textElement_,n)),this.class=n}static fromJson(n){return new this(Ms(n.text),void 0,n)}};ln("field_label",ic),ic.prototype.DEFAULT_VALUE="";var xr=class{constructor(n,a){this.name=n,this.sourceBlock=a,this.fieldRow=[],this.align=o.Align$$module$build$src$core$inputs$input.LEFT,this.visible=!0,this.type=o.inputTypes$$module$build$src$core$inputs$input_types.CUSTOM,this.connection=null}getSourceBlock(){return this.sourceBlock}appendField(n,a){return this.insertFieldAt(this.fieldRow.length,n,a),this}insertFieldAt(n,a,g){if(0>n||n>this.fieldRow.length)throw Error("index "+n+" out of bounds.");return(a||a===""&&g)&&(typeof a=="string"&&(a=o.fromJson$$module$build$src$core$field_registry({type:"field_label",text:a})),a.setSourceBlock(this.sourceBlock),this.sourceBlock.rendered&&(a.init(),a.applyColour()),a.name=g,a.setVisible(this.isVisible()),a.prefixField&&(n=this.insertFieldAt(n,a.prefixField)),this.fieldRow.splice(n,0,a),n++,a.suffixField&&(n=this.insertFieldAt(n,a.suffixField)),this.sourceBlock.rendered&&(this.sourceBlock.queueRender(),this.sourceBlock.bumpNeighbours())),n}removeField(n,a){for(let g=0,R;R=this.fieldRow[g];g++)if(R.name===n)return R.dispose(),this.fieldRow.splice(g,1),this.sourceBlock.rendered&&(this.sourceBlock.queueRender(),this.sourceBlock.bumpNeighbours()),!0;if(a)return!1;throw Error('Field "'+n+'" not found.')}isVisible(){return this.visible}setVisible(n){let a=[];if(this.visible===n)return a;this.visible=n;for(let R=0,f;f=this.fieldRow[R];R++)f.setVisible(n);if(this.connection){var g=this.connection;n?a=g.startTrackingAll():g.stopTrackingAll(),(g=g.targetBlock())&&(g.getSvgRoot().style.display=n?"block":"none")}return a}markDirty(){for(let n=0,a;a=this.fieldRow[n];n++)a.markDirty()}setCheck(n){if(!this.connection)throw Error("This input does not have a connection.");return this.connection.setCheck(n),this}setAlign(n){return this.align=n,this.sourceBlock.rendered&&this.sourceBlock.queueRender(),this}setShadowDom(n){if(!this.connection)throw Error("This input does not have a connection.");return this.connection.setShadowDom(n),this}getShadowDom(){if(!this.connection)throw Error("This input does not have a connection.");return this.connection.getShadowDom()}init(){if(this.sourceBlock.workspace.rendered)for(let n=0;n<this.fieldRow.length;n++)this.fieldRow[n].init()}dispose(){for(let n=0,a;a=this.fieldRow[n];n++)a.dispose();this.connection&&this.connection.dispose()}makeConnection(n){return this.sourceBlock.makeConnection_(n)}},r$;(function(n){n=n.Align||(n.Align={}),n[n.LEFT=-1]="LEFT",n[n.CENTRE=0]="CENTRE",n[n.RIGHT=1]="RIGHT"})(xr||(xr={})),o.Align$$module$build$src$core$inputs$input=xr.Align,r$={Align:o.Align$$module$build$src$core$inputs$input},r$.Input=xr;var Fr=class extends xr{constructor(n,a){super(n,a),this.name=n,this.type=o.inputTypes$$module$build$src$core$inputs$input_types.DUMMY}},G_=class extends xr{constructor(n,a){super(n,a),this.name=n,this.type=o.inputTypes$$module$build$src$core$inputs$input_types.END_ROW}},un=class extends xr{constructor(n,a){if(!n)throw Error("Statement inputs must have a non-empty name");super(n,a),this.name=n,this.type=o.inputTypes$$module$build$src$core$inputs$input_types.STATEMENT,this.connection=this.makeConnection(kt.NEXT_STATEMENT)}},_$;o.ValueInput$$module$build$src$core$inputs$value_input=class extends xr{constructor(n,a){if(!n)throw Error("Value inputs must have a non-empty name");super(n,a),this.name=n,this.type=o.inputTypes$$module$build$src$core$inputs$input_types.VALUE,this.connection=this.makeConnection(kt.INPUT_VALUE)}},_$={},_$.ValueInput=o.ValueInput$$module$build$src$core$inputs$value_input;var KT=class{constructor(n,a){this.statementEdge=this.width=this.widthWithChildren=this.height=0,this.rows=[],this.inputRows=[],this.startY=this.startX=0,this.renderer_=n,this.block_=a,this.constants_=this.renderer_.getConstants(),this.outputConnection=a.outputConnection?new i$(this.constants_,a.outputConnection):null,this.isInline=a.getInputsInline()&&!a.isCollapsed(),this.isCollapsed=a.isCollapsed(),this.isInsertionMarker=a.isInsertionMarker(),this.RTL=a.RTL,this.topRow=new cm(this.constants_),this.bottomRow=new nm(this.constants_)}getRenderer(){return this.renderer_}measure(){this.createRows_(),this.addElemSpacing_(),this.addRowSpacing_(),this.computeBounds_(),this.alignRowElements_(),this.finalize_()}createRows_(){this.populateTopRow_(),this.rows.push(this.topRow);let n=new lm(this.constants_);this.inputRows.push(n);var a=this.block_.getIcons();for(let g=0,R;R=a[g];g++){const f=new t$(this.constants_,R);this.isCollapsed&&!R.isShownWhenCollapsed()||n.elements.push(f)}a=void 0;for(let g=0,R;R=this.block_.inputList[g];g++)if(R.isVisible()){this.shouldStartNewRow_(R,a)&&(this.rows.push(n),n=new lm(this.constants_),this.inputRows.push(n));for(let f=0,$;$=R.fieldRow[f];f++)n.elements.push(new YT(this.constants_,$,R));this.addInput_(R,n),a=R}this.isCollapsed&&(n.hasJaggedEdge=!0,n.elements.push(new o$(this.constants_))),(n.elements.length||n.hasDummyInput)&&this.rows.push(n),this.populateBottomRow_(),this.rows.push(this.bottomRow)}populateTopRow_(){var n=!!this.block_.previousConnection;const a=(this.block_.hat?this.block_.hat==="cap":this.constants_.ADD_START_HATS)&&!this.outputConnection&&!n;let g=this.topRow.hasLeftSquareCorner(this.block_)?rg:ng;this.topRow.elements.push(new g(this.constants_)),a?(n=new rm(this.constants_),this.topRow.elements.push(n),this.topRow.capline=n.ascenderHeight):n&&(this.topRow.hasPreviousConnection=!0,this.topRow.connection=new n$(this.constants_,this.block_.previousConnection),this.topRow.elements.push(this.topRow.connection)),this.block_.inputList.length&&this.block_.inputList[0]instanceof un&&!this.block_.isCollapsed()?this.topRow.minHeight=this.constants_.TOP_ROW_PRECEDES_STATEMENT_MIN_HEIGHT:this.topRow.minHeight=this.constants_.TOP_ROW_MIN_HEIGHT,g=this.topRow.hasRightSquareCorner(this.block_)?rg:ng,this.topRow.elements.push(new g(this.constants_,"right"))}populateBottomRow_(){this.bottomRow.hasNextConnection=!!this.block_.nextConnection,this.bottomRow.minHeight=this.block_.inputList.length&&this.block_.inputList[this.block_.inputList.length-1]instanceof un?this.constants_.BOTTOM_ROW_AFTER_STATEMENT_MIN_HEIGHT:this.constants_.BOTTOM_ROW_MIN_HEIGHT,this.bottomRow.hasLeftSquareCorner(this.block_)?this.bottomRow.elements.push(new rg(this.constants_)):this.bottomRow.elements.push(new ng(this.constants_)),this.bottomRow.hasNextConnection&&(this.bottomRow.connection=new s$(this.constants_,this.block_.nextConnection),this.bottomRow.elements.push(this.bottomRow.connection)),this.bottomRow.hasRightSquareCorner(this.block_)?this.bottomRow.elements.push(new rg(this.constants_,"right")):this.bottomRow.elements.push(new ng(this.constants_,"right"))}addInput_(n,a){this.isInline&&n instanceof o.ValueInput$$module$build$src$core$inputs$value_input?(a.elements.push(new _m(this.constants_,n)),a.hasInlineInput=!0):n instanceof un?(a.elements.push(new ig(this.constants_,n)),a.hasStatement=!0):n instanceof o.ValueInput$$module$build$src$core$inputs$value_input?(a.elements.push(new zh(this.constants_,n)),a.hasExternalInput=!0):(n instanceof Fr||n instanceof G_)&&(a.minHeight=Math.max(a.minHeight,n.getSourceBlock()&&n.getSourceBlock().isShadow()?this.constants_.DUMMY_INPUT_SHADOW_MIN_HEIGHT:this.constants_.DUMMY_INPUT_MIN_HEIGHT),a.hasDummyInput=!0),a.align===null&&(a.align=n.align)}shouldStartNewRow_(n,a){return a?a instanceof G_||n instanceof un||a instanceof un?!0:n instanceof o.ValueInput$$module$build$src$core$inputs$value_input||n instanceof Fr||a instanceof o.ValueInput$$module$build$src$core$inputs$value_input?!this.isInline:!1:!1}addElemSpacing_(){for(let n=0,a;a=this.rows[n];n++){const g=a.elements;if(a.elements=[],a.startsWithElemSpacer()&&a.elements.push(new En(this.constants_,this.getInRowSpacing_(null,g[0]))),g.length){for(let R=0;R<g.length-1;R++){a.elements.push(g[R]);const f=this.getInRowSpacing_(g[R],g[R+1]);a.elements.push(new En(this.constants_,f))}a.elements.push(g[g.length-1]),a.endsWithElemSpacer()&&a.elements.push(new En(this.constants_,this.getInRowSpacing_(g[g.length-1],null)))}}}getInRowSpacing_(n,a){if(!n&&a&&we.isStatementInput(a))return this.constants_.STATEMENT_INPUT_PADDING_LEFT;if(n&&we.isInput(n)&&!a){if(we.isExternalInput(n))return this.constants_.NO_PADDING;if(we.isInlineInput(n))return this.constants_.LARGE_PADDING;if(we.isStatementInput(n))return this.constants_.NO_PADDING}return n&&we.isLeftSquareCorner(n)&&a&&(we.isPreviousConnection(a)||we.isNextConnection(a))?a.notchOffset:n&&we.isLeftRoundedCorner(n)&&a&&(we.isPreviousConnection(a)||we.isNextConnection(a))?a.notchOffset-this.constants_.CORNER_RADIUS:this.constants_.MEDIUM_PADDING}computeBounds_(){let n=0,a=0,g=0;for(let f=0,$;$=this.rows[f];f++){if($.measure(),a=Math.max(a,$.width),$.hasStatement){var R=$.getLastInput();let le,fe;R=$.width-((fe=(le=R)==null?void 0:le.width)!=null?fe:0),n=Math.max(n,R)}g=Math.max(g,$.widthWithConnectedBlocks)}this.statementEdge=n,this.width=a;for(let f=0,$;$=this.rows[f];f++)$.hasStatement&&($.statementEdge=this.statementEdge);this.widthWithChildren=Math.max(a,g),this.outputConnection&&(this.startX=this.outputConnection.width,this.width+=this.outputConnection.width,this.widthWithChildren+=this.outputConnection.width)}alignRowElements_(){for(let a=0,g;g=this.rows[a];a++)if(g.hasStatement)this.alignStatementRow_(g);else{var n=g.width;n=this.getDesiredRowWidth_(g)-n,0<n&&this.addAlignmentPadding_(g,n),we.isTopOrBottomRow(g)&&(g.widthWithConnectedBlocks=g.width)}}getDesiredRowWidth_(n){return this.width-this.startX}addAlignmentPadding_(n,a){const g=n.getFirstSpacer(),R=n.getLastSpacer();if((n.hasExternalInput||n.hasStatement)&&(n.widthWithConnectedBlocks+=a),n.align===o.Align$$module$build$src$core$inputs$align.LEFT&&R)R.width+=a;else if(n.align===o.Align$$module$build$src$core$inputs$align.CENTRE&&g&&R)g.width+=a/2,R.width+=a/2;else if(n.align===o.Align$$module$build$src$core$inputs$align.RIGHT&&g)g.width+=a;else if(R)R.width+=a;else return;n.width+=a}alignStatementRow_(n){const a=n.getLastInput();if(a){var g=n.width-a.width,R=this.statementEdge;g=R-g,0<g&&this.addAlignmentPadding_(n,g),g=n.width,R=this.getDesiredRowWidth_(n),a.width+=R-g,a.height=Math.max(a.height,n.height),n.width+=R-g,n.widthWithConnectedBlocks=Math.max(n.width,this.statementEdge+n.connectedBlockWidths)}}addRowSpacing_(){const n=this.rows;this.rows=[];for(let a=0;a<n.length;a++)this.rows.push(n[a]),a!==n.length-1&&this.rows.push(this.makeSpacerRow_(n[a],n[a+1]))}makeSpacerRow_(n,a){var g=this.getSpacerRowHeight_(n,a);const R=this.getSpacerRowWidth_(n,a);return g=new am(this.constants_,g,R),n.hasStatement&&(g.followsStatement=!0),a.hasStatement&&(g.precedesStatement=!0),g}getSpacerRowWidth_(n,a){return this.width-this.startX}getSpacerRowHeight_(n,a){return this.constants_.MEDIUM_PADDING}getElemCenterline_(n,a){return we.isSpacer(a)?n.yPos+a.height/2:we.isBottomRow(n)?(n=n.yPos+n.height-n.descenderHeight,we.isNextConnection(a)?n+a.height/2:n-a.height/2):we.isTopRow(n)?we.isHat(a)?n.capline-a.height/2:n.capline+a.height/2:n.yPos+n.height/2}recordElemPositions_(n){let a=n.xPos;for(let g=0,R;R=n.elements[g];g++)we.isSpacer(R)&&(R.height=n.height),R.xPos=a,R.centerline=this.getElemCenterline_(n,R),a+=R.width}finalize_(){let n=0,a=0;for(let g=0,R;R=this.rows[g];g++)R.yPos=a,R.xPos=this.startX,a+=R.height,n=Math.max(n,R.widthWithConnectedBlocks),this.recordElemPositions_(R);if(this.outputConnection&&this.block_.nextConnection){const g=this.block_.nextConnection.targetBlock();g&&(n=Math.max(n,g.getHeightWidth().width))}this.widthWithChildren=n+this.startX,this.height=a,this.startY=this.topRow.capline,this.bottomRow.baseline=a-this.bottomRow.descenderHeight}},Tt=class{constructor(n,a,g){if(this.wsCoordinate=null,!a)throw Error("Cannot create a node without a location.");this.type=n,this.isConnectionLocation=Tt.isConnectionType(n),this.location=a,this.processParams(g||null)}processParams(n){n&&n.wsCoordinate&&(this.wsCoordinate=n.wsCoordinate)}getLocation(){return this.location}getType(){return this.type}getWsCoordinate(){return this.wsCoordinate}isConnection(){return this.isConnectionLocation}findNextForInput(){var n=this.location.getParentInput();const a=n.getSourceBlock();for(n=a.inputList.indexOf(n),n+=1;n<a.inputList.length;n++){const g=a.inputList[n],R=g.fieldRow;for(let f=0;f<R.length;f++){const $=R[f];if($.isClickable()||Tt.NAVIGATE_ALL_FIELDS)return Tt.createFieldNode($)}if(g.connection)return Tt.createInputNode(g)}return null}findNextForField(){var n=this.location,a=n.getParentInput();const g=n.getSourceBlock();if(!g)throw Error("The current AST location is not associated with a block");var R=g.inputList.indexOf(a);for(n=a.fieldRow.indexOf(n)+1;R<g.inputList.length;R++){a=g.inputList[R];const f=a.fieldRow;for(;n<f.length;){if(f[n].isClickable()||Tt.NAVIGATE_ALL_FIELDS)return Tt.createFieldNode(f[n]);n++}if(n=0,a.connection)return Tt.createInputNode(a)}return null}findPrevForInput(){const n=this.location.getParentInput(),a=n.getSourceBlock();for(var g=a.inputList.indexOf(n);0<=g;g--){var R=a.inputList[g];if(R.connection&&R!==n)return Tt.createInputNode(R);R=R.fieldRow;for(let f=R.length-1;0<=f;f--){const $=R[f];if($.isClickable()||Tt.NAVIGATE_ALL_FIELDS)return Tt.createFieldNode($)}}return null}findPrevForField(){var n=this.location;const a=n.getParentInput(),g=n.getSourceBlock();if(!g)throw Error("The current AST location is not associated with a block");var R=g.inputList.indexOf(a);for(n=a.fieldRow.indexOf(n)-1;0<=R;R--){var f=g.inputList[R];if(f.connection&&f!==a)return Tt.createInputNode(f);for(f=f.fieldRow;-1<n;){if(f[n].isClickable()||Tt.NAVIGATE_ALL_FIELDS)return Tt.createFieldNode(f[n]);n--}0<=R-1&&(n=g.inputList[R-1].fieldRow.length-1)}return null}navigateBetweenStacks(n){var a=this.getLocation();if(a.getSourceBlock){var g=a.getSourceBlock();g&&(a=g)}if(!a||a.isDeadOrDying())return null;g=a.getRootBlock(),a=g.workspace.getTopBlocks(!0);for(let R=0;R<a.length;R++)if(g.id===a[R].id)return n=R+(n?1:-1),n===-1||n===a.length?null:Tt.createStackNode(a[n]);throw Error("Couldn't find "+(n?"next":"previous")+" stack?!")}findTopASTNodeForBlock(n){const a=wu(n);return a?Tt.createConnectionNode(a):Tt.createBlockNode(n)}getOutAstNodeForBlock(n){if(!n)return null;n=n.getTopStackBlock();const a=wu(n);return a&&a.targetConnection&&a.targetConnection.getParentInput()?Tt.createInputNode(a.targetConnection.getParentInput()):Tt.createStackNode(n)}findFirstFieldOrInput(n){n=n.inputList;for(let a=0;a<n.length;a++){const g=n[a],R=g.fieldRow;for(let f=0;f<R.length;f++){const $=R[f];if($.isClickable()||Tt.NAVIGATE_ALL_FIELDS)return Tt.createFieldNode($)}if(g.connection)return Tt.createInputNode(g)}return null}getSourceBlock(){return this.getType()===Tt.types.BLOCK?this.getLocation():this.getType()===Tt.types.STACK?this.getLocation():this.getType()===Tt.types.WORKSPACE?null:this.getLocation().getSourceBlock()}next(){switch(this.type){case Tt.types.STACK:return this.navigateBetweenStacks(!0);case Tt.types.OUTPUT:return Tt.createBlockNode(this.location.getSourceBlock());case Tt.types.FIELD:return this.findNextForField();case Tt.types.INPUT:return this.findNextForInput();case Tt.types.BLOCK:const n=this.location.nextConnection;if(!n)break;return Tt.createConnectionNode(n);case Tt.types.PREVIOUS:return Tt.createBlockNode(this.location.getSourceBlock());case Tt.types.NEXT:return Tt.createConnectionNode(this.location.targetConnection)}return null}in(){switch(this.type){case Tt.types.WORKSPACE:const n=this.location.getTopBlocks(!0);if(0<n.length)return Tt.createStackNode(n[0]);break;case Tt.types.STACK:return this.findTopASTNodeForBlock(this.location);case Tt.types.BLOCK:return this.findFirstFieldOrInput(this.location);case Tt.types.INPUT:return Tt.createConnectionNode(this.location.targetConnection)}return null}prev(){switch(this.type){case Tt.types.STACK:return this.navigateBetweenStacks(!1);case Tt.types.FIELD:return this.findPrevForField();case Tt.types.INPUT:return this.findPrevForInput();case Tt.types.BLOCK:var n=wu(this.location);if(!n)break;return Tt.createConnectionNode(n);case Tt.types.PREVIOUS:if((n=this.location.targetConnection)&&!n.getParentInput())return Tt.createConnectionNode(n);break;case Tt.types.NEXT:return Tt.createBlockNode(this.location.getSourceBlock())}return null}out(){switch(this.type){case Tt.types.STACK:var n=this.location,a=n.getRelativeToSurfaceXY();return a=new ft(a.x,a.y+Tt.DEFAULT_OFFSET_Y),Tt.createWorkspaceNode(n.workspace,a);case Tt.types.OUTPUT:return n=this.location,(a=n.targetConnection)?Tt.createConnectionNode(a):Tt.createStackNode(n.getSourceBlock());case Tt.types.FIELD:if(n=this.location.getSourceBlock(),!n)throw Error("The current AST location is not associated with a block");return Tt.createBlockNode(n);case Tt.types.INPUT:return Tt.createBlockNode(this.location.getSourceBlock());case Tt.types.BLOCK:return this.getOutAstNodeForBlock(this.location);case Tt.types.PREVIOUS:return this.getOutAstNodeForBlock(this.location.getSourceBlock());case Tt.types.NEXT:return this.getOutAstNodeForBlock(this.location.getSourceBlock())}return null}static isConnectionType(n){switch(n){case Tt.types.PREVIOUS:case Tt.types.NEXT:case Tt.types.INPUT:case Tt.types.OUTPUT:return!0}return!1}static createFieldNode(n){return n?new Tt(Tt.types.FIELD,n):null}static createConnectionNode(n){if(!n)return null;const a=n.type;return a===kt.INPUT_VALUE||a===kt.NEXT_STATEMENT&&n.getParentInput()?Tt.createInputNode(n.getParentInput()):a===kt.NEXT_STATEMENT?new Tt(Tt.types.NEXT,n):a===kt.OUTPUT_VALUE?new Tt(Tt.types.OUTPUT,n):a===kt.PREVIOUS_STATEMENT?new Tt(Tt.types.PREVIOUS,n):null}static createInputNode(n){return n&&n.connection?new Tt(Tt.types.INPUT,n.connection):null}static createBlockNode(n){return n?new Tt(Tt.types.BLOCK,n):null}static createStackNode(n){return n?new Tt(Tt.types.STACK,n):null}static createWorkspaceNode(n,a){return a&&n?new Tt(Tt.types.WORKSPACE,n,{wsCoordinate:a}):null}static createTopNode(n){const a=wu(n);return a?Tt.createConnectionNode(a):Tt.createBlockNode(n)}};Tt.NAVIGATE_ALL_FIELDS=!1,Tt.DEFAULT_OFFSET_Y=-20,function(n){n=n.types||(n.types={}),n.FIELD="field",n.BLOCK="block",n.INPUT="input",n.OUTPUT="output",n.NEXT="next",n.PREVIOUS="previous",n.STACK="stack",n.WORKSPACE="workspace"}(Tt||(Tt={}));var Tm=class extends Ur{constructor(n,a,g,R){let f=n?n.workspace.id:void 0;R&&R.getType()===Tt.types.WORKSPACE&&(f=R.getLocation().id),super(f),this.type=CT,this.blockId=n==null?void 0:n.id,this.oldNode=g||void 0,this.newNode=R,this.isCursor=a}toJson(){const n=super.toJson();if(this.isCursor===void 0)throw Error("Whether this is a cursor event or not is undefined. Either pass a value to the constructor, or call fromJson");if(!this.newNode)throw Error("The new node is undefined. Either pass a node to the constructor, or call fromJson");return n.isCursor=this.isCursor,n.blockId=this.blockId,n.oldNode=this.oldNode,n.newNode=this.newNode,n}static fromJson(n,a,g){return a=super.fromJson(n,a,g??new Tm),a.isCursor=n.isCursor,a.blockId=n.blockId,a.oldNode=n.oldNode,a.newNode=n.newNode,a}};_(Mt.EVENT,CT,Tm);var Fz="blocklyCursor",Vz="blocklyMarker",Wz=.75,Em=class{constructor(n,a,g){this.workspace=n,this.marker=g,this.markerSvgRect_=this.markerSvgLine_=this.markerInput_=this.markerBlock_=this.svgGroup_=this.markerSvg_=this.currentMarkerSvg=this.parent=null,this.constants_=a,n=this.isCursor()?this.constants_.CURSOR_COLOUR:this.constants_.MARKER_COLOUR,this.colour_=g.colour||n}getSvgRoot(){return this.svgGroup_}getMarker(){return this.marker}isCursor(){return this.marker.type==="cursor"}createDom(){const n=this.isCursor()?Fz:Vz;return this.svgGroup_=Le(Ve.G,{class:n}),this.createDomInternal_(),this.svgGroup_}setParent_(n){this.isCursor()?(this.parent&&this.parent.setCursorSvg(null),n.setCursorSvg(this.getSvgRoot())):(this.parent&&this.parent.setMarkerSvg(null),n.setMarkerSvg(this.getSvgRoot())),this.parent=n}draw(n,a){if(a){this.constants_=this.workspace.getRenderer().getConstants();var g=this.isCursor()?this.constants_.CURSOR_COLOUR:this.constants_.MARKER_COLOUR;this.colour_=this.marker.colour||g,this.applyColour_(a),this.showAtLocation_(a),this.fireMarkerEvent(n,a),n=this.currentMarkerSvg.childNodes[0],n!==void 0&&n.beginElement&&n.beginElement()}else this.hide()}showAtLocation_(n){const a=n.getLocation().type;n.getType()===Tt.types.BLOCK?this.showWithBlock_(n):n.getType()===Tt.types.OUTPUT?this.showWithOutput_(n):a===kt.INPUT_VALUE?this.showWithInput_(n):a===kt.NEXT_STATEMENT?this.showWithNext_(n):n.getType()===Tt.types.PREVIOUS?this.showWithPrevious_(n):n.getType()===Tt.types.FIELD?this.showWithField_(n):n.getType()===Tt.types.WORKSPACE?this.showWithCoordinates_(n):n.getType()===Tt.types.STACK&&this.showWithStack_(n)}showWithBlockPrevOutput(n){n=n.getSourceBlock();const a=n.width;var g=n.height,R=g*Wz;const f=this.constants_.CURSOR_BLOCK_PADDING;n.previousConnection?(g=this.constants_.shapeFor(n.previousConnection),this.positionPrevious_(a,f,R,g)):n.outputConnection?(R=this.constants_.shapeFor(n.outputConnection),this.positionOutput_(a,g,R)):this.positionBlock_(a,f,R),this.setParent_(n),this.showCurrent_()}showWithBlock_(n){this.showWithBlockPrevOutput(n)}showWithPrevious_(n){this.showWithBlockPrevOutput(n)}showWithOutput_(n){this.showWithBlockPrevOutput(n)}showWithCoordinates_(n){var a=n.getWsCoordinate();n=a.x,a=a.y,this.workspace.RTL&&(n-=this.constants_.CURSOR_WS_WIDTH),this.positionLine_(n,a,this.constants_.CURSOR_WS_WIDTH),this.setParent_(this.workspace),this.showCurrent_()}showWithField_(n){n=n.getLocation();const a=n.getSize().width,g=n.getSize().height;this.positionRect_(0,0,a,g),this.setParent_(n),this.showCurrent_()}showWithInput_(n){n=n.getLocation();const a=n.getSourceBlock();this.positionInput_(n),this.setParent_(a),this.showCurrent_()}showWithNext_(n){var a=n.getLocation();n=a.getSourceBlock();let g=0;a=a.getOffsetInBlock().y;const R=n.getHeightWidth().width;this.workspace.RTL&&(g=-R),this.positionLine_(g,a,R),this.setParent_(n),this.showCurrent_()}showWithStack_(n){n=n.getLocation();var a=n.getHeightWidth();const g=a.width+this.constants_.CURSOR_STACK_PADDING;a=a.height+this.constants_.CURSOR_STACK_PADDING;const R=-this.constants_.CURSOR_STACK_PADDING/2,f=-this.constants_.CURSOR_STACK_PADDING/2;let $=R;this.workspace.RTL&&($=-(g+R)),this.positionRect_($,f,g,a),this.setParent_(n),this.showCurrent_()}showCurrent_(){this.hide(),this.currentMarkerSvg&&(this.currentMarkerSvg.style.display="")}positionBlock_(n,a,g){if(n=ns(-a,g)+Ut("V",-a)+Ut("H",n+2*a)+Ut("V",g),!this.markerBlock_)throw Error("createDom should be called before positioning the marker");this.markerBlock_.setAttribute("d",n),this.workspace.RTL&&this.flipRtl(this.markerBlock_),this.currentMarkerSvg=this.markerBlock_}positionInput_(n){const a=n.getOffsetInBlock().x,g=n.getOffsetInBlock().y;n=ti(0,0)+this.constants_.shapeFor(n).pathDown,this.markerInput_.setAttribute("d",n),this.markerInput_.setAttribute("transform","translate("+a+","+g+")"+(this.workspace.RTL?" scale(-1 1)":"")),this.currentMarkerSvg=this.markerInput_}positionLine_(n,a,g){if(!this.markerSvgLine_)throw Error("createDom should be called before positioning the line");this.markerSvgLine_.setAttribute("x",`${n}`),this.markerSvgLine_.setAttribute("y",`${a}`),this.markerSvgLine_.setAttribute("width",`${g}`),this.currentMarkerSvg=this.markerSvgLine_}positionOutput_(n,a,g){if(!this.markerBlock_)throw Error("createDom should be called before positioning the output");n=ns(n,0)+Ut("h",-(n-g.width))+Ut("v",this.constants_.TAB_OFFSET_FROM_TOP)+g.pathDown+Ut("V",a)+Ut("H",n),this.markerBlock_.setAttribute("d",n),this.workspace.RTL&&this.flipRtl(this.markerBlock_),this.currentMarkerSvg=this.markerBlock_}positionPrevious_(n,a,g,R){if(!this.markerBlock_)throw Error("createDom should be called before positioning the previous connection marker");n=ns(-a,g)+Ut("V",-a)+Ut("H",this.constants_.NOTCH_OFFSET_LEFT)+R.pathLeft+Ut("H",n+2*a)+Ut("V",g),this.markerBlock_.setAttribute("d",n),this.workspace.RTL&&this.flipRtl(this.markerBlock_),this.currentMarkerSvg=this.markerBlock_}positionRect_(n,a,g,R){if(!this.markerSvgRect_)throw Error("createDom should be called before positioning the rect");this.markerSvgRect_.setAttribute("x",`${n}`),this.markerSvgRect_.setAttribute("y",`${a}`),this.markerSvgRect_.setAttribute("width",`${g}`),this.markerSvgRect_.setAttribute("height",`${R}`),this.currentMarkerSvg=this.markerSvgRect_}flipRtl(n){n.setAttribute("transform","scale(-1 1)")}hide(){if(!(this.markerSvgLine_&&this.markerSvgRect_&&this.markerInput_&&this.markerBlock_))throw Error("createDom should be called before hiding the marker");this.markerSvgLine_.style.display="none",this.markerSvgRect_.style.display="none",this.markerInput_.style.display="none",this.markerBlock_.style.display="none"}fireMarkerEvent(n,a){const g=a.getSourceBlock();n=new(pe(CT))(g,this.isCursor(),n,a),J(n)}getBlinkProperties_(){return{attributeType:"XML",attributeName:"fill",dur:"1s",values:this.colour_+";transparent;transparent;",repeatCount:"indefinite"}}createDomInternal_(){if(this.markerSvg_=Le(Ve.G,{width:this.constants_.CURSOR_WS_WIDTH,height:this.constants_.WS_CURSOR_HEIGHT},this.svgGroup_),this.markerSvgLine_=Le(Ve.RECT,{width:this.constants_.CURSOR_WS_WIDTH,height:this.constants_.WS_CURSOR_HEIGHT},this.markerSvg_),this.markerSvgRect_=Le(Ve.RECT,{class:"blocklyVerticalMarker",rx:10,ry:10},this.markerSvg_),this.markerInput_=Le(Ve.PATH,{transform:""},this.markerSvg_),this.markerBlock_=Le(Ve.PATH,{transform:"",fill:"none","stroke-width":this.constants_.CURSOR_STROKE_WIDTH},this.markerSvg_),this.hide(),this.isCursor()){const n=this.getBlinkProperties_();Le(Ve.ANIMATE,n,this.markerSvgLine_),Le(Ve.ANIMATE,n,this.markerInput_),Le(Ve.ANIMATE,Object.assign({},n,{attributeName:"stroke"}),this.markerBlock_)}return this.markerSvg_}applyColour_(n){if(!(this.markerSvgLine_&&this.markerSvgRect_&&this.markerInput_&&this.markerBlock_))throw Error("createDom should be called before applying color to the markerj");this.markerSvgLine_.setAttribute("fill",this.colour_),this.markerSvgRect_.setAttribute("stroke",this.colour_),this.markerInput_.setAttribute("fill",this.colour_),this.markerBlock_.setAttribute("stroke",this.colour_),this.isCursor()&&(n=this.colour_+";transparent;transparent;",this.markerSvgLine_.firstElementChild.setAttribute("values",n),this.markerInput_.firstElementChild.setAttribute("values",n),this.markerBlock_.firstElementChild.setAttribute("values",n))}dispose(){this.svgGroup_&&Ot(this.svgGroup_)}},Zh=class{constructor(n,a,g){this.markerSvg=this.cursorSvg=null,this.constants=g,this.style=a,this.svgRoot=n,this.svgPath=Le(Ve.PATH,{class:"blocklyPath"},this.svgRoot)}setPath(n){this.svgPath.setAttribute("d",n)}flipRTL(){this.svgPath.setAttribute("transform","scale(-1 1)")}setCursorSvg(n){n?(this.svgRoot.appendChild(n),this.cursorSvg=n):this.cursorSvg=null}setMarkerSvg(n){n?(this.cursorSvg?this.svgRoot.insertBefore(n,this.cursorSvg):this.svgRoot.appendChild(n),this.markerSvg=n):this.markerSvg=null}applyColour(n){this.svgPath.setAttribute("stroke",this.style.colourTertiary),this.svgPath.setAttribute("fill",this.style.colourPrimary),this.updateShadow_(n.isShadow()),this.updateDisabled_(!n.isEnabled()||n.getInheritedDisabled())}setStyle(n){this.style=n}setClass_(n,a){n&&(a?je(this.svgRoot,n):Je(this.svgRoot,n))}updateHighlighted(n){n?this.svgPath.setAttribute("filter","url(#"+this.constants.embossFilterId+")"):this.svgPath.setAttribute("filter","none")}updateShadow_(n){n&&(this.svgPath.setAttribute("stroke","none"),this.svgPath.setAttribute("fill",this.style.colourSecondary))}updateDisabled_(n){this.setClass_("blocklyDisabled",n),n&&this.svgPath.setAttribute("fill","url(#"+this.constants.disabledPatternId+")")}updateSelected(n){this.setClass_("blocklySelected",n)}updateDraggingDelete(n){this.setClass_("blocklyDraggingDelete",n)}updateInsertionMarker(n){this.setClass_("blocklyInsertionMarker",n)}updateMovable(n){this.setClass_("blocklyDraggable",n)}updateReplacementFade(n){this.setClass_("blocklyReplaceable",n)}updateShapeForInputHighlight(n,a){}},Po=class{constructor(n,a){this.type=a,this.targetConnection=null,this.disposed=!1,this.shadowDom=this.check=null,this.y=this.x=0,this.shadowState=null,this.sourceBlock_=n}connect_(n){const a=kt.INPUT_VALUE,g=this.getSourceBlock();var R=n.getSourceBlock();n.isConnected()&&n.disconnectInternal(!1);let f;if(this.isConnected()){const le=this.stashShadowState(),fe=this.targetBlock();fe.isShadow()?fe.dispose(!1):(this.disconnectInternal(),f=fe),this.applyShadowState(le)}let $;Q()&&($=new(pe(o.MOVE$$module$build$src$core$events$utils))(R),$.setReason(["connect"])),by(this,n),R.setParent(g),$&&($.recordNew(),J($)),f&&(n=this.type===a?f.outputConnection:f.previousConnection)&&((R=Po.getConnectionForOrphanedConnection(R,n))?n.connect(R):n.onFailedConnect(this))}dispose(){if(this.isConnected()){this.setShadowStateInternal();const n=this.targetBlock();n&&!n.isDeadOrDying()&&n.unplug()}this.disposed=!0}getSourceBlock(){return this.sourceBlock_}isSuperior(){return this.type===kt.INPUT_VALUE||this.type===kt.NEXT_STATEMENT}isConnected(){return!!this.targetConnection}getConnectionChecker(){return this.sourceBlock_.workspace.connectionChecker}onFailedConnect(n){}connect(n){if(this.targetConnection===n)return!0;if(this.getConnectionChecker().canConnect(this,n,!1)){const a=o.getGroup$$module$build$src$core$events$utils();a||o.setGroup$$module$build$src$core$events$utils(!0),this.isSuperior()?this.connect_(n):n.connect_(this),o.setGroup$$module$build$src$core$events$utils(a)}return this.isConnected()}disconnect(){this.disconnectInternal()}disconnectInternal(n=!0){const{parentConnection:a,childConnection:g}=this.getParentAndChildConnections();if(!a||!g)throw Error("Source connection not connected.");const R=o.getGroup$$module$build$src$core$events$utils();R||o.setGroup$$module$build$src$core$events$utils(!0);let f;Q()&&(f=new(pe(o.MOVE$$module$build$src$core$events$utils))(g.getSourceBlock()),f.setReason(["disconnect"]));const $=this.targetConnection;$&&($.targetConnection=null),this.targetConnection=null,n&&g.getSourceBlock().setParent(null),f&&(f.recordNew(),J(f)),g.getSourceBlock().isShadow()||a.respawnShadow_(),o.setGroup$$module$build$src$core$events$utils(R)}getParentAndChildConnections(){return this.targetConnection?this.isSuperior()?{parentConnection:this,childConnection:this.targetConnection}:{parentConnection:this.targetConnection,childConnection:this}:{}}respawnShadow_(){this.createShadowBlock(!0)}reconnect(n,a){if(this.getSourceBlock().isDeadOrDying())return!1;var g;return a=(g=n.getInput(a))==null?void 0:g.connection,g=this.targetBlock(),g&&g!==n||!a||a.targetConnection===this?!1:(a.isConnected()&&a.disconnect(),a.connect(this),!0)}targetBlock(){if(this.isConnected()){let n,a;return(a=(n=this.targetConnection)==null?void 0:n.getSourceBlock())!=null?a:null}return null}onCheckChanged_(){!this.isConnected()||this.targetConnection&&this.getConnectionChecker().canConnect(this,this.targetConnection,!1)||(this.isSuperior()?this.targetBlock():this.sourceBlock_).unplug()}setCheck(n){return n?(Array.isArray(n)||(n=[n]),this.check=n,this.onCheckChanged_()):this.check=null,this}getCheck(){return this.check}setShadowDom(n){this.setShadowStateInternal({shadowDom:n})}getShadowDom(n){return n&&this.targetBlock().isShadow()?gl(this.targetBlock()):this.shadowDom}setShadowState(n){this.setShadowStateInternal({shadowState:n})}getShadowState(n){return n&&this.targetBlock()&&this.targetBlock().isShadow()?Nr(this.targetBlock()):this.shadowState}neighbours(n){return[]}getParentInput(){let n=null;const a=this.sourceBlock_.inputList;for(let g=0;g<a.length;g++)if(a[g].connection===this){n=a[g];break}return n}toString(){const n=this.sourceBlock_;if(!n)return"Orphan Connection";if(n.outputConnection===this)var a="Output Connection of ";else if(n.previousConnection===this)a="Previous Connection of ";else if(n.nextConnection===this)a="Next Connection of ";else{a=null;for(let g=0,R;R=n.inputList[g];g++)if(R.connection===this){a=R;break}if(a)a='Input "'+a.name+'" connection on ';else return console.warn("Connection not actually connected to sourceBlock_"),"Orphan Connection"}return a+n.toDevString()}stashShadowState(){const n=this.getShadowDom(!0),a=this.getShadowState(!0);return this.shadowState=this.shadowDom=null,{shadowDom:n,shadowState:a}}applyShadowState({shadowDom:n,shadowState:a}){this.shadowDom=n,this.shadowState=a}setShadowStateInternal({shadowDom:n=null,shadowState:a=null}={}){this.shadowDom=n,this.shadowState=a,(n=this.targetBlock())?n.isShadow()?(n.dispose(!1),this.getSourceBlock().isDeadOrDying()||(this.respawnShadow_(),this.targetBlock()&&this.targetBlock().isShadow()&&this.serializeShadow(this.targetBlock()))):(n=this.createShadowBlock(!1),this.serializeShadow(n),n&&n.dispose(!1)):(this.respawnShadow_(),this.targetBlock()&&this.targetBlock().isShadow()&&this.serializeShadow(this.targetBlock()))}createShadowBlock(n){var a=this.getSourceBlock();const g=this.getShadowState(),R=this.getShadowDom();if(a.isDeadOrDying()||!g&&!R)return null;if(g)return a=cT(g,a.workspace,{parentConnection:n?this:void 0,isShadow:!0,recordUndo:!1});if(R){if(a=dl(R,a.workspace),n)if(this.type===kt.INPUT_VALUE){if(!a.outputConnection)throw Error("Shadow block is missing an output connection");if(!this.connect(a.outputConnection))throw Error("Could not connect shadow block to connection")}else if(this.type===kt.NEXT_STATEMENT){if(!a.previousConnection)throw Error("Shadow block is missing previous connection");if(!this.connect(a.previousConnection))throw Error("Could not connect shadow block to connection")}else throw Error("Cannot connect a shadow block to a previous/output connection");return a}return null}serializeShadow(n){n&&(this.shadowDom=gl(n),this.shadowState=Nr(n))}static getConnectionForOrphanedConnection(n,a){if(a.type===kt.OUTPUT_VALUE)return Py(n,a.getSourceBlock());n=n.lastConnectionInStack(!0);const g=a.getConnectionChecker();return n&&g.canConnect(a,n,!1)?n:null}};Po.CAN_CONNECT=0,Po.REASON_SELF_CONNECTION=1,Po.REASON_WRONG_TYPE=2,Po.REASON_TARGET_NULL=3,Po.REASON_CHECKS_FAILED=4,Po.REASON_DIFFERENT_WORKSPACES=5,Po.REASON_SHADOW_PARENT=6,Po.REASON_DRAG_CHECKS_FAILED=7,Po.REASON_PREVIOUS_AND_OUTPUT=8;var zT="_TEMP_COLLAPSED_INPUT",jh="_TEMP_COLLAPSED_FIELD",Xz={COLLAPSED_FIELD_NAME:jh,COLLAPSED_INPUT_NAME:zT},l$="The insertion marker manager tried to create a marker but the result is missing %1. If you are using a mutator, make sure your domToMutation method is properly defined.",gn=class{constructor(n){this.activeCandidate=this.lastMarker=this.lastOnStack=null,this.wouldDeleteBlock=!1,this.fadedBlock=this.highlightedBlock=this.markerConnection=null,b(n),this.topBlock=n,this.workspace=n.workspace,this.firstMarker=this.createMarkerBlock(this.topBlock),this.availableConnections=this.initAvailableConnections(),this.lastOnStack&&(this.lastMarker=this.createMarkerBlock(this.lastOnStack.getSourceBlock()))}dispose(){this.availableConnections.length=0,this.disposeInsertionMarker(this.firstMarker),this.disposeInsertionMarker(this.lastMarker)}updateAvailableConnections(){this.availableConnections=this.initAvailableConnections()}wouldConnectBlock(){return!!this.activeCandidate}applyConnections(){if(this.activeCandidate){o.disable$$module$build$src$core$events$utils(),this.hidePreview(),o.enable$$module$build$src$core$events$utils();var{local:n,closest:a}=this.activeCandidate;if(n.connect(a),this.topBlock.rendered){const g=n.isSuperior()?a:n,R=this.topBlock.getRootBlock();Nu().then(()=>{jp(g.getSourceBlock()),setTimeout(()=>{R.bringToFront()},0)})}}}update(n,a){const g=this.getCandidate(n);((this.wouldDeleteBlock=this.shouldDelete(!!g,a))||this.shouldUpdatePreviews(g,n))&&(o.disable$$module$build$src$core$events$utils(),this.maybeHidePreview(g),this.maybeShowPreview(g),o.enable$$module$build$src$core$events$utils())}createMarkerBlock(n){var a=n.type;o.disable$$module$build$src$core$events$utils();let g;try{if(g=this.workspace.newBlock(a),g.setInsertionMarker(!0),n.saveExtraState){var R=n.saveExtraState(!0);R&&g.loadExtraState&&g.loadExtraState(R)}else if(n.mutationToDom){const f=n.mutationToDom();f&&g.domToMutation&&g.domToMutation(f)}for(a=0;a<n.inputList.length;a++){const f=n.inputList[a];if(f.name===zT)continue;const $=g.inputList[a];if(!$)throw Error(l$.replace("%1","an input"));for(R=0;R<f.fieldRow.length;R++){const le=f.fieldRow[R],fe=$.fieldRow[R];if(!fe)throw Error(l$.replace("%1","a field"));fe.setValue(le.getValue())}}for(const f of g.getDescendants(!1))f.setInsertionMarker(!0);g.setCollapsed(n.isCollapsed()),g.setInputsInline(n.getInputsInline()),g.initSvg(),g.getSvgRoot().setAttribute("visibility","hidden")}finally{o.enable$$module$build$src$core$events$utils()}return g}initAvailableConnections(){const n=this.topBlock.getConnections_(!1),a=this.topBlock.lastConnectionInStack(!0);return a&&a!==this.topBlock.nextConnection&&(n.push(a),this.lastOnStack=a),n}shouldUpdatePreviews(n,a){if(!n)return!!this.activeCandidate;if(!this.activeCandidate)return!0;const{local:g,closest:R}=this.activeCandidate;if(R===n.closest&&g===n.local)return!1;const f=g.x+a.x-R.x;return a=g.y+a.y-R.y,n.radius<Math.sqrt(f*f+a*a)-o.config$$module$build$src$core$config.currentConnectionPreference}getCandidate(n){this.markerConnection&&this.markerConnection.isConnected()||this.updateAvailableConnections();let a=this.getStartRadius(),g=null;for(let R=0;R<this.availableConnections.length;R++){const f=this.availableConnections[R],$=f.closest(a,n);$.connection&&(g={closest:$.connection,local:f,radius:$.radius},a=$.radius)}return g}getStartRadius(){return this.activeCandidate?o.config$$module$build$src$core$config.connectingSnapRadius:o.config$$module$build$src$core$config.snapRadius}shouldDelete(n,a){return a&&this.workspace.getComponentManager().hasCapability(a.id,ks.Capability.DELETE_AREA)?a.wouldDelete(this.topBlock,n):!1}maybeShowPreview(n){if(!this.wouldDeleteBlock&&n){var a=n.closest,g;a===((g=this.activeCandidate)==null?void 0:g.closest)||a.getSourceBlock().isInsertionMarker()?console.log("Trying to connect to an insertion marker"):(this.activeCandidate=n,this.showPreview(this.activeCandidate))}}showPreview(n){const a=this.workspace.getRenderer();switch(a.getConnectionPreviewMethod(n.closest,n.local,this.topBlock)){case gn.PREVIEW_TYPE.INPUT_OUTLINE:this.showInsertionInputOutline(n);break;case gn.PREVIEW_TYPE.INSERTION_MARKER:this.showInsertionMarker(n);break;case gn.PREVIEW_TYPE.REPLACEMENT_FADE:this.showReplacementFade(n)}a.shouldHighlightConnection(n.closest)&&n.closest.highlight()}maybeHidePreview(n){if(!n)this.hidePreview();else if(this.activeCandidate){const a=this.activeCandidate.local!==n.local;(this.activeCandidate.closest!==n.closest||a||this.wouldDeleteBlock)&&this.hidePreview()}this.activeCandidate=this.markerConnection=null}hidePreview(){let n;const a=(n=this.activeCandidate)==null?void 0:n.closest;a&&a.targetBlock()&&this.workspace.getRenderer().shouldHighlightConnection(a)&&a.unhighlight(),this.hideReplacementFade(),this.hideInsertionInputOutline(),this.hideInsertionMarker()}showInsertionMarker(n){const{local:a,closest:g}=n;let R=(n=this.lastOnStack&&a===this.lastOnStack)?this.lastMarker:this.firstMarker;if(!R)throw Error("Cannot show the insertion marker because there is no insertion marker block");let f;try{f=R.getMatchingConnection(a.getSourceBlock(),a)}catch{if(n&&this.lastOnStack?(this.disposeInsertionMarker(this.lastMarker),R=this.lastMarker=this.createMarkerBlock(this.lastOnStack.getSourceBlock())):(this.disposeInsertionMarker(this.firstMarker),R=this.firstMarker=this.createMarkerBlock(this.topBlock)),!R)throw Error("Cannot show the insertion marker because there is no insertion marker block");f=R.getMatchingConnection(a.getSourceBlock(),a)}if(!f)throw Error("Cannot show the insertion marker because there is no associated connection");if(f===this.markerConnection)throw Error("Made it to showInsertionMarker_ even though the marker isn't changing");R.queueRender(),Ar(),f.connect(g);const $={x:g.x-f.x,y:g.y-f.y},le=f.getOffsetInBlock().clone(),fe=f;Nu().then(()=>{let it;(it=R)==null||it.positionNearConnection(fe,$,le);let Pt;(Pt=R)==null||Pt.getSvgRoot().setAttribute("visibility","visible")}),this.markerConnection=f}hideInsertionMarker(){if(this.markerConnection){var n=this.markerConnection,a=n.getSourceBlock(),g=a.outputConnection,R;if((R=a.previousConnection)!=null&&R.targetConnection||g!=null&&g.targetConnection)a.unplug(!0);else{let f;(f=n.targetBlock())==null||f.unplug(!1)}if(n.targetConnection)throw Error("markerConnection still connected at the end of disconnectInsertionMarker");this.markerConnection=null,(n=a.getSvgRoot())&&n.setAttribute("visibility","hidden")}}showInsertionInputOutline(n){n=n.closest,this.highlightedBlock=n.getSourceBlock(),this.highlightedBlock.highlightShapeForInput(n,!0)}hideInsertionInputOutline(){if(this.highlightedBlock){if(!this.activeCandidate)throw Error("Cannot hide the insertion marker outline because there is no active candidate");this.highlightedBlock.highlightShapeForInput(this.activeCandidate.closest,!1),this.highlightedBlock=null}}showReplacementFade(n){if(this.fadedBlock=n.closest.targetBlock(),!this.fadedBlock)throw Error("Cannot show the replacement fade because the closest connection does not have a target block");this.fadedBlock.fadeForReplacement(!0)}hideReplacementFade(){this.fadedBlock&&(this.fadedBlock.fadeForReplacement(!1),this.fadedBlock=null)}getInsertionMarkers(){const n=[];return this.firstMarker&&n.push(this.firstMarker),this.lastMarker&&n.push(this.lastMarker),n}disposeInsertionMarker(n){if(n){o.disable$$module$build$src$core$events$utils();try{n.dispose()}finally{o.enable$$module$build$src$core$events$utils()}}}};(function(n){n=n.PREVIEW_TYPE||(n.PREVIEW_TYPE={}),n[n.INSERTION_MARKER=0]="INSERTION_MARKER",n[n.INPUT_OUTLINE=1]="INPUT_OUTLINE",n[n.REPLACEMENT_FADE=2]="REPLACEMENT_FADE"})(gn||(gn={})),gn.PREVIEW_TYPE;var ag=class{constructor(n){this.overrides=null,this.name=n}getClassName(){return this.name+"-renderer"}init(n,a){this.constants_=this.makeConstants_(),a&&(this.overrides=a,Object.assign(this.constants_,a)),this.constants_.setTheme(n),this.constants_.init()}createDom(n,a){this.constants_.createDom(n,this.name+"-"+a.name,"."+this.getClassName()+"."+a.getClassName())}refreshDom(n,a){const g=this.getConstants();g.dispose(),this.constants_=this.makeConstants_(),this.overrides&&Object.assign(this.constants_,this.overrides),this.constants_.randomIdentifier=g.randomIdentifier,this.constants_.setTheme(a),this.constants_.init(),this.createDom(n,a)}dispose(){this.constants_&&this.constants_.dispose()}makeConstants_(){return new _g}makeRenderInfo_(n){return new KT(this,n)}makeDrawer_(n,a){return new lg(n,a)}makeMarkerDrawer(n,a){return new Em(n,this.getConstants(),a)}makePathObject(n,a){return new Zh(n,a,this.constants_)}getConstants(){return this.constants_}shouldHighlightConnection(n){return!0}orphanCanConnectAtEnd(n,a,g){return!!Po.getConnectionForOrphanedConnection(n,g===kt.OUTPUT_VALUE?a.outputConnection:a.previousConnection)}getConnectionPreviewMethod(n,a,g){return a.type===kt.OUTPUT_VALUE||a.type===kt.PREVIOUS_STATEMENT?!n.isConnected()||this.orphanCanConnectAtEnd(g,n.targetBlock(),a.type)?gn.PREVIEW_TYPE.INSERTION_MARKER:gn.PREVIEW_TYPE.REPLACEMENT_FADE:gn.PREVIEW_TYPE.INSERTION_MARKER}render(n){const a=this.makeRenderInfo_(n);a.measure(),this.makeDrawer_(n,a).draw()}},Go={};Go.BottomRow=nm,Go.Connection=sc,Go.ConstantProvider=_g,Go.Drawer=lg,Go.ExternalValueInput=zh,Go.Field=YT,Go.Hat=rm,Go.Icon=t$,Go.InRowSpacer=En,Go.InlineInput=_m,Go.InputConnection=Pl,Go.InputRow=lm,Go.JaggedEdge=o$,Go.MarkerSvg=Em,Go.Measurable=Hr,Go.NextConnection=s$,Go.OutputConnection=i$,Go.PathObject=Zh,Go.PreviousConnection=n$,Go.RenderInfo=KT,Go.Renderer=ag,Go.RoundCorner=ng,Go.Row=sg,Go.SpacerRow=am,Go.SquareCorner=rg,Go.StatementInput=ig,Go.TopRow=cm,Go.Types=we,Go.init=LL,Go.register=ST,Go.unregister=vy;var a$=class{constructor(n,a){this.workspace=n,this.theme=a,this.subscribedWorkspaces_=[],this.componentDB=new Map}getTheme(){return this.theme}setTheme(n){var a=this.theme;this.theme=n,(n=this.workspace.getInjectionDiv())&&(a&&(a=a.getClassName())&&Je(n,a),(a=this.theme.getClassName())&&je(n,a));for(let g=0,R;R=this.subscribedWorkspaces_[g];g++)R.refreshTheme();for(const[g,R]of this.componentDB)for(const f of R){n=f.element,a=f.propertyName;const $=this.theme&&this.theme.getComponentStyle(g);n.style.setProperty(a,$||"")}for(const g of this.subscribedWorkspaces_)g.hideChaff()}subscribeWorkspace(n){this.subscribedWorkspaces_.push(n)}unsubscribeWorkspace(n){if(!Ke(this.subscribedWorkspaces_,n))throw Error("Cannot unsubscribe a workspace that hasn't been subscribed.")}subscribe(n,a,g){this.componentDB.has(a)||this.componentDB.set(a,[]),this.componentDB.get(a).push({element:n,propertyName:g}),a=this.theme&&this.theme.getComponentStyle(a),n.style.setProperty(g,a||"")}unsubscribe(n){if(n)for(const[a,g]of this.componentDB){for(let R=g.length-1;0<=R;R--)g[R].element===n&&g.splice(R,1);g.length||this.componentDB.delete(a)}}dispose(){this.subscribedWorkspaces_.length=0,this.componentDB.clear()}},um="VARIABLE_DYNAMIC",nc={CATEGORY_NAME:um};nc.flyoutCategory=gh,nc.flyoutCategoryBlocks=AL,nc.onCreateVariableButtonClick_Colour=CL,nc.onCreateVariableButtonClick_Number=mL,nc.onCreateVariableButtonClick_String=fL;var c$=class{canConnect(n,a,g,R){return this.canConnectWithReason(n,a,g,R)===Po.CAN_CONNECT}canConnectWithReason(n,a,g,R){const f=this.doSafetyChecks(n,a);return f!==Po.CAN_CONNECT?f:this.doTypeChecks(n,a)?g&&!this.doDragChecks(n,a,R||0)?Po.REASON_DRAG_CHECKS_FAILED:Po.CAN_CONNECT:Po.REASON_CHECKS_FAILED}getErrorMessage(n,a,g){switch(n){case Po.REASON_SELF_CONNECTION:return"Attempted to connect a block to itself.";case Po.REASON_DIFFERENT_WORKSPACES:return"Blocks not on same workspace.";case Po.REASON_WRONG_TYPE:return"Attempt to connect incompatible types.";case Po.REASON_TARGET_NULL:return"Target connection is null.";case Po.REASON_CHECKS_FAILED:return"Connection checks failed. "+(a+" expected "+a.getCheck()+", found "+g.getCheck());case Po.REASON_SHADOW_PARENT:return"Connecting non-shadow to shadow block.";case Po.REASON_DRAG_CHECKS_FAILED:return"Drag checks failed.";case Po.REASON_PREVIOUS_AND_OUTPUT:return"Block would have an output and a previous connection.";default:return"Unknown connection failure: this should never happen!"}}doSafetyChecks(n,a){if(!n||!a)return Po.REASON_TARGET_NULL;let g,R,f;return n.isSuperior()?(g=n.getSourceBlock(),R=a.getSourceBlock(),f=a):(R=n.getSourceBlock(),g=a.getSourceBlock(),f=n,n=a),g===R?Po.REASON_SELF_CONNECTION:f.type!==Qa[n.type]?Po.REASON_WRONG_TYPE:g.workspace!==R.workspace?Po.REASON_DIFFERENT_WORKSPACES:g.isShadow()&&!R.isShadow()?Po.REASON_SHADOW_PARENT:f.type===kt.OUTPUT_VALUE&&R.previousConnection&&R.previousConnection.isConnected()||f.type===kt.PREVIOUS_STATEMENT&&R.outputConnection&&R.outputConnection.isConnected()?Po.REASON_PREVIOUS_AND_OUTPUT:Po.CAN_CONNECT}doTypeChecks(n,a){if(n=n.getCheck(),a=a.getCheck(),!n||!a)return!0;for(let g=0;g<n.length;g++)if(a.indexOf(n[g])!==-1)return!0;return!1}doDragChecks(n,a,g){if(n.distanceFrom(a)>g||a.getSourceBlock().isInsertionMarker())return!1;switch(a.type){case kt.PREVIOUS_STATEMENT:return this.canConnectToPrevious_(n,a);case kt.OUTPUT_VALUE:if(a.isConnected()&&!a.targetBlock().isInsertionMarker()||n.isConnected())return!1;break;case kt.INPUT_VALUE:if(a.isConnected()&&!a.targetBlock().isMovable()&&!a.targetBlock().isShadow())return!1;break;case kt.NEXT_STATEMENT:if(a.isConnected()&&!n.getSourceBlock().nextConnection&&!a.targetBlock().isShadow()&&a.targetBlock().nextConnection||a.targetBlock()&&!a.targetBlock().isMovable()&&!a.targetBlock().isShadow())return!1;break;default:return!1}return LT.indexOf(a)===-1}canConnectToPrevious_(n,a){return n.targetConnection||LT.indexOf(a)!==-1?!1:a.targetConnection?(n=a.targetBlock(),n.isInsertionMarker()?!n.getPreviousBlock():!1):!0}};_(Mt.CONNECTION_CHECKER,A_,c$);var gm=class extends Wu{constructor(n){super(n),this.type=wa,n&&(this.varType=n.type,this.varName=n.name)}toJson(){const n=super.toJson();if(this.varType===void 0)throw Error("The var type is undefined. Either pass a variable to the constructor, or call fromJson");if(!this.varName)throw Error("The var name is undefined. Either pass a variable to the constructor, or call fromJson");return n.varType=this.varType,n.varName=this.varName,n}static fromJson(n,a,g){return a=super.fromJson(n,a,g??new gm),a.varType=n.varType,a.varName=n.varName,a}run(n){const a=this.getEventWorkspace_();if(!this.varId)throw Error("The var ID is undefined. Either pass a variable to the constructor, or call fromJson");if(!this.varName)throw Error("The var name is undefined. Either pass a variable to the constructor, or call fromJson");n?a.deleteVariableById(this.varId):a.createVariable(this.varName,this.varType,this.varId)}};_(Mt.EVENT,wa,gm);var dm=class extends Wu{constructor(n,a){super(n),this.type=mT,n&&(this.oldName=n.name,this.newName=typeof a>"u"?"":a)}toJson(){const n=super.toJson();if(!this.oldName)throw Error("The old var name is undefined. Either pass a variable to the constructor, or call fromJson");if(!this.newName)throw Error("The new var name is undefined. Either pass a value to the constructor, or call fromJson");return n.oldName=this.oldName,n.newName=this.newName,n}static fromJson(n,a,g){return a=super.fromJson(n,a,g??new dm),a.oldName=n.oldName,a.newName=n.newName,a}run(n){const a=this.getEventWorkspace_();if(!this.varId)throw Error("The var ID is undefined. Either pass a variable to the constructor, or call fromJson");if(!this.oldName)throw Error("The old var name is undefined. Either pass a variable to the constructor, or call fromJson");if(!this.newName)throw Error("The new var name is undefined. Either pass a value to the constructor, or call fromJson");n?a.renameVariableById(this.varId,this.newName):a.renameVariableById(this.varId,this.oldName)}};_(Mt.EVENT,mT,dm);var Om=class{constructor(n){this.workspace=n,this.variableMap=new Map}clear(){for(const n of this.variableMap.values())for(;0<n.length;)this.deleteVariable(n[0]);if(this.variableMap.size!==0)throw Error("Non-empty variable map")}renameVariable(n,a){if(n.name!==a){var g=this.getVariable(a,n.type),R=this.workspace.getAllBlocks(!1),f=o.getGroup$$module$build$src$core$events$utils();f||o.setGroup$$module$build$src$core$events$utils(!0);try{g&&g.getId()!==n.getId()?this.renameVariableWithConflict_(n,a,g,R):this.renameVariableAndUses_(n,a,R)}finally{o.setGroup$$module$build$src$core$events$utils(f)}}}renameVariableById(n,a){const g=this.getVariableById(n);if(!g)throw Error("Tried to rename a variable that didn't exist. ID: "+n);this.renameVariable(g,a)}renameVariableAndUses_(n,a,g){for(J(new(pe(mT))(n,a)),n.name=a,a=0;a<g.length;a++)g[a].updateVarName(n)}renameVariableWithConflict_(n,a,g,R){const f=n.type;for(a!==g.name&&this.renameVariableAndUses_(g,a,R),a=0;a<R.length;a++)R[a].renameVarById(n.getId(),g.getId());J(new(pe(wa))(n)),Ke(this.variableMap.get(f),n)}createVariable(n,a,g){var R=this.getVariable(n,a);if(R){if(g&&R.getId()!==g)throw Error('Variable "'+n+'" is already in use and its id is "'+R.getId()+'" which conflicts with the passed in id, "'+g+'".');return R}if(g&&this.getVariableById(g))throw Error('Variable id, "'+g+'", is already in use.');return R=g||K(),a=a||"",R=new Xu(this.workspace,n,a,R),n=this.variableMap.get(a)||[],n.push(R),this.variableMap.delete(a),this.variableMap.set(a,n),J(new(pe(pl))(R)),R}deleteVariable(n){const a=n.getId(),g=this.variableMap.get(n.type);if(g){for(let R=0;R<g.length;R++)if(g[R].getId()===a){g.splice(R,1),J(new(pe(wa))(n)),g.length===0&&this.variableMap.delete(n.type);break}}}deleteVariableById(n){const a=this.getVariableById(n);if(a){var g=a.name;const R=this.getVariableUsesById(n);for(let f=0,$;$=R[f];f++)if($.type==="procedures_defnoreturn"||$.type==="procedures_defreturn"){n=String($.getFieldValue("NAME")),g=o.Msg$$module$build$src$core$msg.CANNOT_DELETE_VARIABLE_PROCEDURE.replace("%1",g).replace("%2",n),bu(g);return}1<R.length?(g=o.Msg$$module$build$src$core$msg.DELETE_VARIABLE_CONFIRMATION.replace("%1",String(R.length)).replace("%2",g),kO(g,f=>{f&&a&&this.deleteVariableInternal(a,R)})):this.deleteVariableInternal(a,R)}else console.warn("Can't delete non-existent variable: "+n)}deleteVariableInternal(n,a){const g=o.getGroup$$module$build$src$core$events$utils();g||o.setGroup$$module$build$src$core$events$utils(!0);try{for(let R=0;R<a.length;R++)a[R].dispose(!0);this.deleteVariable(n)}finally{o.setGroup$$module$build$src$core$events$utils(g)}}getVariable(n,a){if(a=this.variableMap.get(a||"")){for(let g=0,R;R=a[g];g++)if(o.Names$$module$build$src$core$names.equals(R.name,n))return R}return null}getVariableById(n){for(const a of this.variableMap.values())for(const g of a)if(g.getId()===n)return g;return null}getVariablesOfType(n){return(n=this.variableMap.get(n||""))?n.slice():[]}getVariableTypes(n){const a=new Set(this.variableMap.keys());if(n&&n.getPotentialVariableMap())for(const g of n.getPotentialVariableMap().variableMap.keys())a.add(g);return a.has("")||a.add(""),Array.from(a.values())}getAllVariables(){let n=[];for(const a of this.variableMap.values())n=n.concat(a);return n}getAllVariableNames(){return Array.from(this.variableMap.values()).flat().map(n=>n.name)}getVariableUsesById(n){const a=[],g=this.workspace.getAllBlocks(!1);for(let R=0;R<g.length;R++){const f=g[R].getVarModels();if(f)for(let $=0;$<f.length;$++)f[$].getId()===n&&a.push(g[R])}return a}},cg=class{get isFlyout(){return this.internalIsFlyout}get isMutator(){return this.internalIsMutator}constructor(n){this.isClearing=this.internalIsMutator=this.internalIsFlyout=this.rendered=!1,this.MAX_UNDO=1024,this.connectionDBList=[],this.topBlocks=[],this.topComments=[],this.commentDB=new Map,this.listeners=[],this.undoStack_=[],this.redoStack_=[],this.blockDB=new Map,this.typedBlocksDB=new Map,this.procedureMap=new z0,this.potentialVariableMap=null,this.id=K(),L(this),this.options=n||new vn({}),this.RTL=!!this.options.RTL,this.horizontalLayout=!!this.options.horizontalLayout,this.toolboxPosition=this.options.toolboxPosition,this.connectionChecker=new(h(Mt.CONNECTION_CHECKER,this.options,!0))(this),this.variableMap=new Om(this)}dispose(){this.listeners.length=0,this.clear(),p(this)}sortObjects_(n,a){const g=Math.sin(ET(cg.SCAN_ANGLE))*(this.RTL?-1:1);return n=n.getRelativeToSurfaceXY(),a=a.getRelativeToSurfaceXY(),n.y+g*n.x-(a.y+g*a.x)}addTopBlock(n){this.topBlocks.push(n)}removeTopBlock(n){if(!Ke(this.topBlocks,n))throw Error("Block not present in workspace's list of top-most blocks.")}getTopBlocks(n=!1){const a=[].concat(this.topBlocks);return n&&1<a.length&&a.sort(this.sortObjects_.bind(this)),a}addTypedBlock(n){this.typedBlocksDB.has(n.type)||this.typedBlocksDB.set(n.type,[]),this.typedBlocksDB.get(n.type).push(n)}removeTypedBlock(n){Ke(this.typedBlocksDB.get(n.type),n),this.typedBlocksDB.get(n.type).length||this.typedBlocksDB.delete(n.type)}getBlocksByType(n,a=!1){return this.typedBlocksDB.has(n)?(n=this.typedBlocksDB.get(n).slice(0),a&&n&&1<n.length&&n.sort(this.sortObjects_.bind(this)),n.filter(function(g){return!g.isInsertionMarker()})):[]}addTopComment(n){this.topComments.push(n),this.commentDB.has(n.id)&&console.warn('Overriding an existing comment on this workspace, with id "'+n.id+'"'),this.commentDB.set(n.id,n)}removeTopComment(n){if(!Ke(this.topComments,n))throw Error("Comment not present in workspace's list of top-most comments.");this.commentDB.delete(n.id)}getTopComments(n=!1){const a=[].concat(this.topComments);return n&&1<a.length&&a.sort(this.sortObjects_.bind(this)),a}getAllBlocks(n=!1){if(n){var a=this.getTopBlocks(!0);n=[];for(let g=0;g<a.length;g++)n.push(...a[g].getDescendants(!0))}else for(n=this.getTopBlocks(!1),a=0;a<n.length;a++)n.push(...n[a].getChildren(!1));return n.filter(function(g){return!g.isInsertionMarker()})}clear(){this.isClearing=!0;try{const n=o.getGroup$$module$build$src$core$events$utils();for(n||o.setGroup$$module$build$src$core$events$utils(!0);this.topBlocks.length;)this.topBlocks[0].dispose(!1);for(;this.topComments.length;)this.topComments[this.topComments.length-1].dispose();o.setGroup$$module$build$src$core$events$utils(n),this.variableMap.clear(),this.potentialVariableMap&&this.potentialVariableMap.clear()}finally{this.isClearing=!1}}renameVariableById(n,a){this.variableMap.renameVariableById(n,a)}createVariable(n,a,g){return this.variableMap.createVariable(n,a,g)}getVariableUsesById(n){return this.variableMap.getVariableUsesById(n)}deleteVariableById(n){this.variableMap.deleteVariableById(n)}getVariable(n,a){return this.variableMap.getVariable(n,a)}getVariableById(n){return this.variableMap.getVariableById(n)}getVariablesOfType(n){return this.variableMap.getVariablesOfType(n)}getVariableTypes(){return this.variableMap.getVariableTypes(this)}getAllVariables(){return this.variableMap.getAllVariables()}getAllVariableNames(){return this.variableMap.getAllVariableNames()}getWidth(){return 0}newBlock(n,a){throw Error("The implementation of newBlock should be monkey-patched in by blockly.ts")}remainingCapacity(){return isNaN(this.options.maxBlocks)?1/0:this.options.maxBlocks-this.getAllBlocks(!1).length}remainingCapacityOfType(n){return this.options.maxInstances?(this.options.maxInstances[n]!==void 0?this.options.maxInstances[n]:1/0)-this.getBlocksByType(n,!1).length:1/0}isCapacityAvailable(n){if(!this.hasBlockLimits())return!0;let a=0;for(const g in n){if(n[g]>this.remainingCapacityOfType(g))return!1;a+=n[g]}return!(a>this.remainingCapacity())}hasBlockLimits(){return this.options.maxBlocks!==1/0||!!this.options.maxInstances}getUndoStack(){return this.undoStack_}getRedoStack(){return this.redoStack_}undo(n){var a=n?this.redoStack_:this.undoStack_,g=n?this.undoStack_:this.redoStack_;const R=a.pop();if(R){for(var f=[R];a.length&&R.group&&R.group===a[a.length-1].group;){const $=a.pop();$&&f.push($)}for(a=0;a<f.length;a++)g.push(f[a]);f=re(f,n),ee(!1);try{for(g=0;g<f.length;g++)f[g].run(n)}finally{ee(!0)}}}clearUndo(){this.undoStack_.length=0,this.redoStack_.length=0,H()}addChangeListener(n){return this.listeners.push(n),n}removeChangeListener(n){Ke(this.listeners,n)}fireChangeListener(n){if(n.recordUndo)for(this.undoStack_.push(n),this.redoStack_.length=0;this.undoStack_.length>this.MAX_UNDO&&0<=this.MAX_UNDO;)this.undoStack_.shift();for(let a=0;a<this.listeners.length;a++)(0,this.listeners[a])(n)}getBlockById(n){return this.blockDB.get(n)||null}setBlockById(n,a){this.blockDB.set(n,a)}removeBlockById(n){this.blockDB.delete(n)}getCommentById(n){let a;return(a=this.commentDB.get(n))!=null?a:null}allInputsFilled(n){const a=this.getTopBlocks(!1);for(let g=0;g<a.length;g++)if(!a[g].allInputsFilled(n))return!1;return!0}getPotentialVariableMap(){return this.potentialVariableMap}createPotentialVariableMap(){this.potentialVariableMap=new Om(this)}getVariableMap(){return this.variableMap}setVariableMap(n){this.variableMap=n}getProcedureMap(){return this.procedureMap}getRootWorkspace(){let n=null;const a=this.options.parentWorkspace;return this.isFlyout?a&&a.options&&(n=a.options.parentWorkspace):a&&(n=a),n}static getById(n){return I(n)}static getAll(){return S()}};cg.SCAN_ANGLE=3;var Yz=100,T$=class{constructor(n){this.parentWorkspace=n,this.sounds=new Map,this.lastSound_=null}dispose(){this.sounds.clear()}load(n,a){if(n.length){try{var g=new globalThis.Audio}catch{return}for(let f=0;f<n.length;f++){const $=n[f],le=$.match(/\.(\w+)$/);if(le&&g.canPlayType("audio/"+le[1])){var R=new globalThis.Audio($);break}}R&&this.sounds.set(a,R)}}preload(){for(const n of this.sounds.values()){n.volume=.01;const a=n.play();if(a!==void 0?a.then(n.pause).catch(function(){}):n.pause(),DT||l0)break}}play(n,a){var g=this.sounds.get(n);g?(n=new Date,this.lastSound_!==null&&n.getTime()-this.lastSound_.getTime()<Yz||(this.lastSound_=n,g=DT||Ch?g:g.cloneNode(),g.volume=a===void 0?1:a,g.play())):this.parentWorkspace&&this.parentWorkspace.getAudioManager().play(n,a)}},Kz=class{constructor(n){this.workspace=n,this.layers=new Map,(n=n.getInjectionDiv())&&(this.dragLayer=this.createDragLayer(n)),n=this.createLayer(Wf),je(n,"blocklyBlockCanvas"),n=this.createLayer(Xf),je(n,"blocklyBubbleCanvas")}createDragLayer(n){const a=Le(Ve.SVG,{class:"blocklyBlockDragSurface",xmlns:xu,"xmlns:html":yr,"xmlns:xlink":an,version:"1.1"});return n.append(a),Le(Ve.G,{},a)}translateLayers(n,a){n=`translate(${n.x}, ${n.y}) scale(${a})`;let g;(g=this.dragLayer)==null||g.setAttribute("transform",n);for(const[,R]of this.layers)R.setAttribute("transform",n)}moveToDragLayer(n){let a;(a=this.dragLayer)==null||a.appendChild(n.getSvgRoot())}moveOffDragLayer(n,a){this.append(n,a)}append(n,a){this.layers.has(a)||this.createLayer(a);let g;(g=this.layers.get(a))==null||g.appendChild(n.getSvgRoot())}createLayer(n){const a=this.workspace.getSvgGroup(),g=Le(Ve.G,{});let R=!1;const f=[...this.layers].sort(($,le)=>$[0]-le[0]);for(const[$,le]of f)if(n<$){a.insertBefore(g,le),R=!0;break}return R||a.appendChild(g),this.layers.set(n,g),g}hasLayer(n){return n===this.dragLayer||new Set(this.layers.values()).has(n)}getBlockLayer(){return this.layers.get(Wf)}getBubbleLayer(){return this.layers.get(Xf)}},zz=20,ir=class extends cg{constructor(n){super(n),this.resizeHandlerWrapper=null,this.resizesEnabled=this.isVisible_=this.rendered=!0,this.startScrollY=this.startScrollX=this.scrollY=this.scrollX=0,this.dragDeltaXY=null,this.oldScale=this.scale=1,this.oldLeft=this.oldTop=0,this.inverseScreenCTM=this.targetWorkspace=this.dummyWheelListener=this.configureContextMenu=this.lastRecordedPageScroll=this.injectionDiv=this.currentGesture_=this.toolbox_=this.flyout=this.scrollbar=this.trashcan=null,this.inverseScreenCTMDirty=!0,this.highlightedBlocks=[],this.toolboxCategoryCallbacks=new Map,this.flyoutButtonCallbacks=new Map,this.cachedParentSvg=null,this.keyboardAccessibilityMode=!1,this.topBoundedElements=[],this.dragTargetAreas=[],this.zoomControls_=this.layerManager=null,this.metricsManager=new(h(Mt.METRICS_MANAGER,n,!0))(this),this.getMetrics=n.getMetrics||this.metricsManager.getMetrics.bind(this.metricsManager),this.setMetrics=n.setMetrics||ir.setTopLevelWorkspaceMetrics_,this.componentManager=new ks,this.connectionDBList=wT.init(this.connectionChecker),this.audioManager=new T$(n.parentWorkspace),this.grid=this.options.gridPattern?new Qf(this.options.gridPattern,n.gridOptions):null,this.markerManager=new tg(this),si&&xO&&this.registerToolboxCategoryCallback(pf,xO),nc&&gh&&this.registerToolboxCategoryCallback(um,gh),fi&&uh&&(this.registerToolboxCategoryCallback(Kh,uh),this.addChangeListener(IL)),this.themeManager_=this.options.parentWorkspace?this.options.parentWorkspace.getThemeManager():new a$(this,this.options.theme||Fh),this.themeManager_.subscribeWorkspace(this);let a;this.renderer=LL(this.options.renderer||"geras",this.getTheme(),(a=this.options.rendererOverrides)!=null?a:void 0),this.cachedParentSvgSize=new Jo(0,0)}getMarkerManager(){return this.markerManager}getMetricsManager(){return this.metricsManager}setMetricsManager(n){this.metricsManager=n,this.getMetrics=this.metricsManager.getMetrics.bind(this.metricsManager)}getComponentManager(){return this.componentManager}setCursorSvg(n){this.markerManager.setCursorSvg(n)}setMarkerSvg(n){this.markerManager.setMarkerSvg(n)}getMarker(n){return this.markerManager?this.markerManager.getMarker(n):null}getCursor(){return this.markerManager?this.markerManager.getCursor():null}getRenderer(){return this.renderer}getThemeManager(){return this.themeManager_}getTheme(){return this.themeManager_.getTheme()}setTheme(n){n||(n=Fh),this.themeManager_.setTheme(n)}refreshTheme(){this.svgGroup_&&this.renderer.refreshDom(this.svgGroup_,this.getTheme()),this.updateBlockStyles_(this.getAllBlocks(!1).filter(function(a){return!!a.getStyleName()})),this.refreshToolboxSelection(),this.toolbox_&&this.toolbox_.refreshTheme(),this.isVisible()&&this.setVisible(!0);const n=new(pe(NT))(this.getTheme().name,this.id);J(n)}updateBlockStyles_(n){for(let a=0,g;g=n[a];a++){const R=g.getStyleName();R&&g.setStyle(R)}}getInverseScreenCTM(){if(this.inverseScreenCTMDirty){const n=this.getParentSvg().getScreenCTM();n&&(this.inverseScreenCTM=n.inverse(),this.inverseScreenCTMDirty=!1)}return this.inverseScreenCTM}updateInverseScreenCTM(){this.inverseScreenCTMDirty=!0}isVisible(){return this.isVisible_}getSvgXY(n){let a=0,g=0,R=1;(this.getCanvas().contains(n)||this.getBubbleCanvas().contains(n))&&(R=this.scale);do{const f=ue(n);(n===this.getCanvas()||n===this.getBubbleCanvas())&&(R=1),a+=f.x*R,g+=f.y*R,n=n.parentNode}while(n&&n!==this.getParentSvg()&&n!==this.getInjectionDiv());return new ft(a,g)}getCachedParentSvgSize(){const n=this.cachedParentSvgSize;return new Jo(n.width,n.height)}getOriginOffsetInPixels(){return D(this.getCanvas())}getInjectionDiv(){if(!this.injectionDiv){let n=this.svgGroup_;for(;n;){if((" "+(n.getAttribute("class")||"")+" ").indexOf(" injectionDiv ")!==-1){this.injectionDiv=n;break}n=n.parentNode}}return this.injectionDiv}getSvgGroup(){return this.svgGroup_}getBlockCanvas(){return this.getCanvas()}setResizeHandlerWrapper(n){this.resizeHandlerWrapper=n}createDom(n,a){return this.injectionDiv||(this.injectionDiv=a??null),this.svgGroup_=Le(Ve.G,{class:"blocklyWorkspace"}),n&&(this.svgBackground_=Le(Ve.RECT,{height:"100%",width:"100%",class:n},this.svgGroup_),n==="blocklyMainBackground"&&this.grid?this.svgBackground_.style.fill="url(#"+this.grid.getPatternId()+")":this.themeManager_.subscribe(this.svgBackground_,"workspaceBackgroundColour","fill")),this.layerManager=new Kz(this),this.svgBlockCanvas_=this.layerManager.getBlockLayer(),this.svgBubbleCanvas_=this.layerManager.getBubbleLayer(),this.isFlyout||(ve(this.svgGroup_,"pointerdown",this,this.onMouseDown_,!1),this.dummyWheelListener=()=>{},document.body.addEventListener("wheel",this.dummyWheelListener),ve(this.svgGroup_,"wheel",this,this.onMouseWheel_)),this.options.hasCategories&&(this.toolbox_=new(h(Mt.TOOLBOX,this.options,!0))(this)),this.grid&&this.grid.update(this.scale),this.recordDragTargets(),(n=h(Mt.CURSOR,this.options))&&this.markerManager.setCursor(new n),this.renderer.createDom(this.svgGroup_,this.getTheme()),this.svgGroup_}dispose(){if(this.rendered=!1,this.currentGesture_&&this.currentGesture_.cancel(),this.svgGroup_&&Ot(this.svgGroup_),this.toolbox_&&(this.toolbox_.dispose(),this.toolbox_=null),this.flyout&&(this.flyout.dispose(),this.flyout=null),this.trashcan&&(this.trashcan.dispose(),this.trashcan=null),this.scrollbar&&(this.scrollbar.dispose(),this.scrollbar=null),this.zoomControls_&&this.zoomControls_.dispose(),this.audioManager&&this.audioManager.dispose(),this.grid&&(this.grid=null),this.renderer.dispose(),this.markerManager&&this.markerManager.dispose(),super.dispose(),this.themeManager_&&(this.themeManager_.unsubscribeWorkspace(this),this.themeManager_.unsubscribe(this.svgBackground_),this.options.parentWorkspace||this.themeManager_.dispose()),this.connectionDBList.length=0,this.toolboxCategoryCallbacks.clear(),this.flyoutButtonCallbacks.clear(),!this.options.parentWorkspace){const n=this.getParentSvg();n&&n.parentNode&&Ot(n.parentNode)}this.resizeHandlerWrapper&&(Re(this.resizeHandlerWrapper),this.resizeHandlerWrapper=null),this.dummyWheelListener&&(document.body.removeEventListener("wheel",this.dummyWheelListener),this.dummyWheelListener=null)}addTrashcan(){this.trashcan=ir.newTrashcan(this);const n=this.trashcan.createDom();this.svgGroup_.insertBefore(n,this.getCanvas())}static newTrashcan(n){throw Error("The implementation of newTrashcan should be monkey-patched in by blockly.ts")}addZoomControls(){this.zoomControls_=new R0(this);const n=this.zoomControls_.createDom();this.svgGroup_.appendChild(n)}addFlyout(n){const a=new vn({parentWorkspace:this,rtl:this.RTL,oneBasedIndex:this.options.oneBasedIndex,horizontalLayout:this.horizontalLayout,renderer:this.options.renderer,rendererOverrides:this.options.rendererOverrides,move:{scrollbars:!0}});return a.toolboxPosition=this.options.toolboxPosition,this.flyout=this.horizontalLayout?new(h(Mt.FLYOUTS_HORIZONTAL_TOOLBOX,this.options,!0))(a):new(h(Mt.FLYOUTS_VERTICAL_TOOLBOX,this.options,!0))(a),this.flyout.autoClose=!1,this.flyout.getWorkspace().setVisible(!0),this.flyout.createDom(n)}getFlyout(n){return this.flyout||n?this.flyout:this.toolbox_?this.toolbox_.getFlyout():null}getToolbox(){return this.toolbox_}updateScreenCalculations_(){this.updateInverseScreenCTM(),this.recordDragTargets()}resizeContents(){this.resizesEnabled&&this.rendered&&(this.scrollbar&&this.scrollbar.resize(),this.updateInverseScreenCTM())}resize(){this.toolbox_&&this.toolbox_.position(),this.flyout&&this.flyout.position();const n=this.componentManager.getComponents(ks.Capability.POSITIONABLE,!0),a=this.getMetricsManager().getUiMetrics(),g=[];for(let R=0,f;f=n[R];R++){f.position(a,g);const $=f.getBoundingRectangle();$&&g.push($)}this.scrollbar&&this.scrollbar.resize(),this.updateScreenCalculations_()}updateScreenCalculationsIfScrolled(){const n=he();ft.equals(this.lastRecordedPageScroll,n)||(this.lastRecordedPageScroll=n,this.updateScreenCalculations_())}getLayerManager(){return this.layerManager}getCanvas(){return this.layerManager.getBlockLayer()}setCachedParentSvgSize(n,a){const g=this.getParentSvg();n!=null&&(this.cachedParentSvgSize.width=n,g.setAttribute("data-cached-width",`${n}`)),a!=null&&(this.cachedParentSvgSize.height=a,g.setAttribute("data-cached-height",`${a}`))}getBubbleCanvas(){return this.layerManager.getBubbleLayer()}getParentSvg(){if(!this.cachedParentSvg){let n=this.svgGroup_;for(;n;){if(n.tagName==="svg"){this.cachedParentSvg=n;break}n=n.parentNode}}return this.cachedParentSvg}maybeFireViewportChangeEvent(){if(Q()){var n=this.scale,a=-this.scrollY,g=-this.scrollX;if(!(n===this.oldScale&&1>Math.abs(a-this.oldTop)&&1>Math.abs(g-this.oldLeft))){var R=new(pe(Ll))(a,g,n,this.id,this.oldScale);this.oldScale=n,this.oldTop=a,this.oldLeft=g,J(R)}}}translate(n,a){let g;(g=this.layerManager)==null||g.translateLayers(new ft(n,a),this.scale);let R;(R=this.grid)==null||R.moveTo(n,a),this.maybeFireViewportChangeEvent()}getWidth(){const n=this.getMetrics();return n?n.viewWidth/this.scale:0}setVisible(n){this.isVisible_=n,this.svgGroup_&&(this.scrollbar&&this.scrollbar.setContainerVisible(n),this.getFlyout()&&this.getFlyout().setContainerVisible(n),this.getParentSvg().style.display=n?"block":"none",this.toolbox_&&this.toolbox_.setVisible(n),n||this.hideChaff(!0))}render(){for(var n=this.getAllBlocks(!1),a=n.length-1;0<=a;a--)n[a].queueRender();if(this.currentGesture_)for(n=this.currentGesture_.getInsertionMarkers(),a=0;a<n.length;a++)n[a].queueRender();Nu().then(()=>void this.markerManager.updateMarkers())}highlightBlock(n,a){if(a===void 0){for(let g=0,R;R=this.highlightedBlocks[g];g++)R.setHighlighted(!1);this.highlightedBlocks.length=0}(n=n?this.getBlockById(n):null)&&((a=a===void 0||a)?this.highlightedBlocks.indexOf(n)===-1&&this.highlightedBlocks.push(n):Ke(this.highlightedBlocks,n),n.setHighlighted(a))}paste(n){if(xe("Blockly.WorkspaceSvg.prototype.paste","v10","v11","Blockly.clipboard.paste"),!this.rendered||!n.type&&!n.tagName)return null;this.currentGesture_&&this.currentGesture_.cancel();const a=o.getGroup$$module$build$src$core$events$utils();a||o.setGroup$$module$build$src$core$events$utils(!0);let g;try{g=n.type?this.pasteBlock_(null,n):n.tagName.toLowerCase()==="comment"?this.pasteWorkspaceComment_(n):this.pasteBlock_(n,null)}finally{o.setGroup$$module$build$src$core$events$utils(a)}return g}pasteBlock_(n,a){o.disable$$module$build$src$core$events$utils();let g;try{let R=0,f=0;if(n){g=dl(n,this);let $;R=parseInt(($=n.getAttribute("x"))!=null?$:"0"),this.RTL&&(R=-R);let le;f=parseInt((le=n.getAttribute("y"))!=null?le:"0")}else a&&(g=Ol(a,this),R=a.x||10,this.RTL&&(R=this.getWidth()-R),f=a.y||10);if(!isNaN(R)&&!isNaN(f)){let $;do{$=!1;const le=this.getAllBlocks(!1);for(let fe=0,it;it=le[fe];fe++){const Pt=it.getRelativeToSurfaceXY();if(1>=Math.abs(R-Pt.x)&&1>=Math.abs(f-Pt.y)){$=!0;break}}if(!$){const fe=g.getConnections_(!1);for(let it=0,Pt;Pt=fe[it];it++)if(Pt.closest(o.config$$module$build$src$core$config.snapRadius,new ft(R,f)).connection){$=!0;break}}$&&(R=this.RTL?R-o.config$$module$build$src$core$config.snapRadius:R+o.config$$module$build$src$core$config.snapRadius,f+=2*o.config$$module$build$src$core$config.snapRadius)}while($);g.moveTo(new ft(R,f))}}finally{o.enable$$module$build$src$core$events$utils()}return Q()&&!g.isShadow()&&J(new(pe(o.CREATE$$module$build$src$core$events$utils))(g)),g.select(),g}pasteWorkspaceComment_(n){o.disable$$module$build$src$core$events$utils();let a;try{a=ii.fromXmlRendered(n,this);let g,R=parseInt((g=n.getAttribute("x"))!=null?g:"0"),f,$=parseInt((f=n.getAttribute("y"))!=null?f:"0");isNaN(R)||isNaN($)||(this.RTL&&(R=-R),a.moveBy(R+50,$+50))}finally{o.enable$$module$build$src$core$events$utils()}return Q()&&$r.fireCreateEvent(a),a.select(),a}refreshToolboxSelection(){const n=this.isFlyout?this.targetWorkspace:this;n&&!n.currentGesture_&&n.toolbox_&&n.toolbox_.getFlyout()&&n.toolbox_.refreshSelection()}renameVariableById(n,a){super.renameVariableById(n,a),this.refreshToolboxSelection()}deleteVariableById(n){super.deleteVariableById(n),this.refreshToolboxSelection()}createVariable(n,a,g){return n=super.createVariable(n,a,g),this.refreshToolboxSelection(),n}recordDragTargets(){const n=this.componentManager.getComponents(ks.Capability.DRAG_TARGET,!0);this.dragTargetAreas=[];for(let a=0,g;g=n[a];a++){const R=g.getClientRect();R&&this.dragTargetAreas.push({component:g,clientRect:R})}}newBlock(n,a){throw Error("The implementation of newBlock should be monkey-patched in by blockly.ts")}getDragTarget(n){for(let a=0,g;g=this.dragTargetAreas[a];a++)if(g.clientRect.contains(n.clientX,n.clientY))return g.component;return null}onMouseDown_(n){const a=this.getGesture(n);a&&a.handleWsStart(n,this)}startDrag(n,a){n=De(n,this.getParentSvg(),this.getInverseScreenCTM()),n.x/=this.scale,n.y/=this.scale,this.dragDeltaXY=ft.difference(a,n)}moveDrag(n){return n=De(n,this.getParentSvg(),this.getInverseScreenCTM()),n.x/=this.scale,n.y/=this.scale,ft.sum(this.dragDeltaXY,n)}isDragging(){return this.currentGesture_!==null&&this.currentGesture_.isDragging()}isDraggable(){return this.options.moveOptions&&this.options.moveOptions.drag}isMovable(){return this.options.moveOptions&&!!this.options.moveOptions.scrollbars||this.options.moveOptions&&this.options.moveOptions.wheel||this.options.moveOptions&&this.options.moveOptions.drag||this.options.zoomOptions&&this.options.zoomOptions.wheel||this.options.zoomOptions&&this.options.zoomOptions.pinch}isMovableHorizontally(){const n=!!this.scrollbar;return this.isMovable()&&(!n||n&&this.scrollbar.canScrollHorizontally())}isMovableVertically(){const n=!!this.scrollbar;return this.isMovable()&&(!n||n&&this.scrollbar.canScrollVertically())}onMouseWheel_(n){if($_.inProgress())n.preventDefault(),n.stopPropagation();else{var a=this.options.zoomOptions&&this.options.zoomOptions.wheel,g=this.options.moveOptions&&this.options.moveOptions.wheel;if(a||g){var R=Xe(n);if(Ef)var f=n.metaKey;a&&(n.ctrlKey||f||!g)?(R=-R.y/50,a=De(n,this.getParentSvg(),this.getInverseScreenCTM()),this.zoom(a.x,a.y,R)):(a=this.scrollX-R.x,g=this.scrollY-R.y,n.shiftKey&&!R.x&&(a=this.scrollX-R.y,g=this.scrollY),this.scroll(a,g)),n.preventDefault()}}}getBlocksBoundingBox(){const n=this.getTopBoundedElements();if(!n.length)return new Zo(0,0,0,0);const a=n[0].getBoundingRectangle();for(let R=1;R<n.length;R++){var g=n[R];g.isInsertionMarker&&g.isInsertionMarker()||(g=g.getBoundingRectangle(),g.top<a.top&&(a.top=g.top),g.bottom>a.bottom&&(a.bottom=g.bottom),g.left<a.left&&(a.left=g.left),g.right>a.right&&(a.right=g.right))}return a}cleanUp(){this.setResizesEnabled(!1),o.setGroup$$module$build$src$core$events$utils(!0);const n=this.getTopBlocks(!0);let a=0;for(let g=0,R;R=n[g];g++){if(!R.isMovable())continue;const f=R.getRelativeToSurfaceXY();R.moveBy(-f.x,a-f.y,["cleanup"]),R.snapToGrid(),a=R.getRelativeToSurfaceXY().y+R.getHeightWidth().height+this.renderer.getConstants().MIN_BLOCK_HEIGHT}o.setGroup$$module$build$src$core$events$utils(!1),this.setResizesEnabled(!0)}showContextMenu(n){if(!this.options.readOnly&&!this.isFlyout){var a=No.registry.getContextMenuOptions(No.ScopeType.WORKSPACE,{workspace:this});this.configureContextMenu&&this.configureContextMenu(a,n),vu(n,a,this.RTL)}}updateToolbox(n){if(n=Wo(n)){if(!this.options.languageTree)throw Error("Existing toolbox is null. Can't create new toolbox.");if(ei(n)){if(!this.toolbox_)throw Error("Existing toolbox has no categories. Can't change mode.");this.options.languageTree=n,this.toolbox_.render(n)}else{if(!this.flyout)throw Error("Existing toolbox has categories. Can't change mode.");this.options.languageTree=n,this.flyout.show(n)}}else if(this.options.languageTree)throw Error("Can't nullify an existing toolbox.")}markFocused(){this.options.parentWorkspace?this.options.parentWorkspace.markFocused():(m(this),this.getParentSvg().focus({preventScroll:!0}))}zoom(n,a,g){g=Math.pow(this.options.zoomOptions.scaleSpeed,g);const R=this.scale*g;if(this.scale!==R){R>this.options.zoomOptions.maxScale?g=this.options.zoomOptions.maxScale/this.scale:R<this.options.zoomOptions.minScale&&(g=this.options.zoomOptions.minScale/this.scale);var f=this.getCanvas().getCTM(),$=this.getParentSvg().createSVGPoint();$.x=n,$.y=a,$=$.matrixTransform(f.inverse()),n=$.x,a=$.y,f=f.translate(n*(1-g),a*(1-g)).scale(g),this.scrollX=f.e,this.scrollY=f.f,this.setScale(R)}}zoomCenter(n){var a=this.getMetrics();let g;this.flyout?(g=a.svgWidth?a.svgWidth/2:0,a=a.svgHeight?a.svgHeight/2:0):(g=a.viewWidth/2+a.absoluteLeft,a=a.viewHeight/2+a.absoluteTop),this.zoom(g,a,n)}zoomToFit(){if(this.isMovable()){var n=this.getMetrics(),a=n.viewWidth;n=n.viewHeight;var g=this.getBlocksBoundingBox(),R=2*zz,f=g.right-g.left+R;if(g=g.bottom-g.top+R,f){this.flyout&&(this.horizontalLayout?(n+=this.flyout.getHeight(),g+=this.flyout.getHeight()/this.scale):(a+=this.flyout.getWidth(),f+=this.flyout.getWidth()/this.scale)),a/=f,n/=g,o.disable$$module$build$src$core$events$utils();try{this.setScale(Math.min(a,n)),this.scrollCenter()}finally{o.enable$$module$build$src$core$events$utils()}this.maybeFireViewportChangeEvent()}}else console.warn("Tried to move a non-movable workspace. This could result in blocks becoming inaccessible.")}beginCanvasTransition(){je(this.getCanvas(),"blocklyCanvasTransitioning"),je(this.getBubbleCanvas(),"blocklyCanvasTransitioning")}endCanvasTransition(){Je(this.getCanvas(),"blocklyCanvasTransitioning"),Je(this.getBubbleCanvas(),"blocklyCanvasTransitioning")}scrollCenter(){if(this.isMovable()){var n=this.getMetrics(),a=(n.scrollWidth-n.viewWidth)/2,g=(n.scrollHeight-n.viewHeight)/2;a=-a-n.scrollLeft,g=-g-n.scrollTop,this.scroll(a,g)}else console.warn("Tried to move a non-movable workspace. This could result in blocks becoming inaccessible.")}centerOnBlock(n,a){if(this.isMovable()){var g=n?this.getBlockById(n):null;if(g){n=g.getRelativeToSurfaceXY(),g=a?{height:g.height,width:g.width}:g.getHeightWidth();var R=this.scale;a=(n.x+(this.RTL?-1:1)*g.width/2)*R,n=(n.y+g.height/2)*R,g=this.getMetrics(),this.scroll(-(a-g.viewWidth/2),-(n-g.viewHeight/2))}}else console.warn("Tried to move a non-movable workspace. This could result in blocks becoming inaccessible.")}setScale(n){this.options.zoomOptions.maxScale&&n>this.options.zoomOptions.maxScale?n=this.options.zoomOptions.maxScale:this.options.zoomOptions.minScale&&n<this.options.zoomOptions.minScale&&(n=this.options.zoomOptions.minScale),this.scale=n,this.hideChaff(!1),(n=this.getFlyout(!1))&&n.isVisible()&&(n.reflow(),this.recordDragTargets()),this.grid&&this.grid.update(this.scale),n=this.getMetrics(),this.scrollX-=n.absoluteLeft,this.scrollY-=n.absoluteTop,n.viewLeft+=n.absoluteLeft,n.viewTop+=n.absoluteTop,this.scroll(this.scrollX,this.scrollY),this.scrollbar&&(this.flyout?this.scrollbar.resizeView(n):this.scrollbar.resizeContent(n))}getScale(){return this.options.parentWorkspace?this.options.parentWorkspace.getScale():this.scale}scroll(n,a){this.hideChaff(!0);const g=this.getMetrics();n=Math.min(n,-g.scrollLeft),a=Math.min(a,-g.scrollTop);const R=g.scrollTop+Math.max(0,g.scrollHeight-g.viewHeight);n=Math.max(n,-(g.scrollLeft+Math.max(0,g.scrollWidth-g.viewWidth))),a=Math.max(a,-R),this.scrollX=n,this.scrollY=a,this.scrollbar&&this.scrollbar.set(-(n+g.scrollLeft),-(a+g.scrollTop),!1),n+=g.absoluteLeft,a+=g.absoluteTop,this.translate(n,a)}getBlockById(n){return super.getBlockById(n)}getAllBlocks(n=!1){return super.getAllBlocks(n)}getTopBlocks(n=!1){return super.getTopBlocks(n)}addTopBlock(n){this.addTopBoundedElement(n),super.addTopBlock(n)}removeTopBlock(n){this.removeTopBoundedElement(n),super.removeTopBlock(n)}addTopComment(n){this.addTopBoundedElement(n),super.addTopComment(n)}removeTopComment(n){this.removeTopBoundedElement(n),super.removeTopComment(n)}getRootWorkspace(){return super.getRootWorkspace()}addTopBoundedElement(n){this.topBoundedElements.push(n)}removeTopBoundedElement(n){Ke(this.topBoundedElements,n)}getTopBoundedElements(){return[].concat(this.topBoundedElements)}setResizesEnabled(n){const a=!this.resizesEnabled&&n;this.resizesEnabled=n,a&&this.resizeContents()}clear(){this.setResizesEnabled(!1),super.clear(),this.topBoundedElements=[],this.setResizesEnabled(!0)}registerButtonCallback(n,a){if(typeof a!="function")throw TypeError("Button callbacks must be functions.");this.flyoutButtonCallbacks.set(n,a)}getButtonCallback(n){let a;return(a=this.flyoutButtonCallbacks.get(n))!=null?a:null}removeButtonCallback(n){this.flyoutButtonCallbacks.delete(n)}registerToolboxCategoryCallback(n,a){if(typeof a!="function")throw TypeError("Toolbox category callbacks must be functions.");this.toolboxCategoryCallbacks.set(n,a)}getToolboxCategoryCallback(n){return this.toolboxCategoryCallbacks.get(n)||null}removeToolboxCategoryCallback(n){this.toolboxCategoryCallbacks.delete(n)}getGesture(n){const a=n.type==="pointerdown",g=this.currentGesture_;return g?a&&g.hasStarted()?(console.warn("Tried to start the same gesture twice."),g.cancel(),null):g:a?this.currentGesture_=new $_(n,this):null}clearGesture(){this.currentGesture_=null}cancelCurrentGesture(){this.currentGesture_&&this.currentGesture_.cancel()}getAudioManager(){return this.audioManager}getGrid(){return this.grid}hideChaff(n=!1){m_(),Nn(),er(),this.hideComponents(n)}hideComponents(n=!1){this.getComponentManager().getComponents(ks.Capability.AUTOHIDEABLE,!0).forEach(a=>a.autoHide(n))}static setTopLevelWorkspaceMetrics_(n){const a=this.getMetrics();typeof n.x=="number"&&(this.scrollX=-(a.scrollLeft+(a.scrollWidth-a.viewWidth)*n.x)),typeof n.y=="number"&&(this.scrollY=-(a.scrollTop+(a.scrollHeight-a.viewHeight)*n.y)),this.translate(this.scrollX+a.absoluteLeft,this.scrollY+a.absoluteTop)}},hm=class extends Ur{constructor(n,a){super(a),this.type=AT,this.isOpen=n}toJson(){const n=super.toJson();if(this.isOpen===void 0)throw Error("Whether this is already open or not is undefined. Either pass a value to the constructor, or call fromJson");return n.isOpen=this.isOpen,n}static fromJson(n,a,g){return a=super.fromJson(n,a,g??new hm),a.isOpen=n.isOpen,a}};_(Mt.EVENT,AT,hm);var Mm=class extends za{constructor(n){if(super(n),this.type=o.DELETE$$module$build$src$core$events$utils,n){if(n.getParent())throw Error("Connected blocks cannot be deleted.");n.isShadow()&&(this.recordUndo=!1),this.oldXml=Pu(n),this.ids=ge(n),this.wasShadow=n.isShadow(),this.oldJson=Nr(n,{addCoordinates:!0})}}toJson(){const n=super.toJson();if(!this.oldXml)throw Error("The old block XML is undefined. Either pass a block to the constructor, or call fromJson");if(!this.ids)throw Error("The block IDs are undefined. Either pass a block to the constructor, or call fromJson");if(this.wasShadow===void 0)throw Error("Whether the block was a shadow is undefined. Either pass a block to the constructor, or call fromJson");if(!this.oldJson)throw Error("The old block JSON is undefined. Either pass a block to the constructor, or call fromJson");return n.oldXml=br(this.oldXml),n.ids=this.ids,n.wasShadow=this.wasShadow,n.oldJson=this.oldJson,this.recordUndo||(n.recordUndo=this.recordUndo),n}static fromJson(n,a,g){return a=super.fromJson(n,a,g??new Mm),a.oldXml=o.textToDom$$module$build$src$core$utils$xml(n.oldXml),a.ids=n.ids,a.wasShadow=n.wasShadow||a.oldXml.tagName.toLowerCase()==="shadow",a.oldJson=n.oldJson,n.recordUndo!==void 0&&(a.recordUndo=n.recordUndo),a}run(n){const a=this.getEventWorkspace_();if(!this.ids)throw Error("The block IDs are undefined. Either pass a block to the constructor, or call fromJson");if(!this.oldJson)throw Error("The old block JSON is undefined. Either pass a block to the constructor, or call fromJson");if(n)for(n=0;n<this.ids.length;n++){const g=this.ids[n],R=a.getBlockById(g);R?R.dispose(!1):g===this.blockId&&console.warn("Can't delete non-existent block: "+g)}else Ol(this.oldJson,a)}};_(Mt.EVENT,o.DELETE$$module$build$src$core$events$utils,Mm);var ZT=class{constructor(n,a,g){if(this.data=null,this.disposed=!1,this.hue_=null,this.colour_="#000000",this.styleName_="",this.suppressPrefixSuffix=!1,this.previousConnection=this.nextConnection=this.outputConnection=null,this.inputList=[],this.icons=[],this.disabled=!1,this.tooltip="",this.contextMenu=!0,this.parentBlock_=null,this.childBlocks_=[],this.editable_=this.movable_=this.deletable_=!0,this.collapsed_=this.isShadow_=!1,this.outputShape_=null,this.isInsertionMarker_=this.disposing=!1,this.onchangeWrapper_=this.helpUrl=this.rendered=null,this.statementInputCount=0,this.workspace=n,this.id=g&&!n.getBlockById(g)?g:K(),n.setBlockById(this.id,this),this.xy_=new ft(0,0),this.isInFlyout=n.isFlyout,this.isInMutator=n.isMutator,this.RTL=n.RTL,a){if(this.type=a,g=Hi[a],!g||typeof g!="object")throw TypeError("Invalid block definition for type: "+a);Object.assign(this,g)}n.addTopBlock(this),n.addTypedBlock(this),new.target===ZT&&this.doInit_()}doInit_(){const n=o.getGroup$$module$build$src$core$events$utils();n||o.setGroup$$module$build$src$core$events$utils(!0);const a=j();try{typeof this.init=="function"&&(ee(!1),this.init(),ee(a)),Q()&&J(new(pe(o.CREATE$$module$build$src$core$events$utils))(this))}finally{o.setGroup$$module$build$src$core$events$utils(n),ee(a)}this.inputsInlineDefault=this.inputsInline,typeof this.onchange=="function"&&this.setOnChange(this.onchange)}dispose(n){this.isDeadOrDying()||(this.onchangeWrapper_&&this.workspace.removeChangeListener(this.onchangeWrapper_),this.unplug(n),Q()&&J(new(pe(o.DELETE$$module$build$src$core$events$utils))(this)),this.workspace.removeTopBlock(this),this.disposeInternal())}disposeInternal(){this.isDeadOrDying()||(this.onchangeWrapper_&&this.workspace.removeChangeListener(this.onchangeWrapper_),this.workspace.removeTypedBlock(this),this.workspace.removeBlockById(this.id),this.disposing=!0,typeof this.destroy=="function"&&this.destroy(),this.childBlocks_.forEach(n=>n.disposeInternal()),this.inputList.forEach(n=>n.dispose()),this.inputList.length=0,this.getConnections_(!0).forEach(n=>n.dispose()),this.disposed=!0)}isDeadOrDying(){return this.disposing||this.disposed}initModel(){for(const n of this.inputList)for(const a of n.fieldRow)a.initModel&&a.initModel()}unplug(n){this.outputConnection&&this.unplugFromRow_(n),this.previousConnection&&this.unplugFromStack_(n)}unplugFromRow_(n){let a=null,g;(g=this.outputConnection)!=null&&g.isConnected()&&(a=this.outputConnection.targetConnection,this.outputConnection.disconnect()),a&&n&&(n=this.getOnlyValueConnection_())&&n.isConnected()&&!n.targetBlock().isShadow()&&(n=n.targetConnection,n==null||n.disconnect(),this.workspace.connectionChecker.canConnect(n,a,!1)?a.connect(n):n==null||n.onFailedConnect(a))}getOnlyValueConnection_(){let n=null;for(let a=0;a<this.inputList.length;a++){const g=this.inputList[a].connection;if(g&&g.type===kt.INPUT_VALUE&&g.targetConnection){if(n)return null;n=g}}return n}unplugFromStack_(n){let a=null;var g;if((g=this.previousConnection)!=null&&g.isConnected()&&(a=this.previousConnection.targetConnection,this.previousConnection.disconnect()),g=this.getNextBlock(),n&&g&&!g.isShadow()){let R,f;n=(f=(R=this.nextConnection)==null?void 0:R.targetConnection)!=null?f:null,n==null||n.disconnect(),a&&this.workspace.connectionChecker.canConnect(a,n,!1)&&a.connect(n)}}getConnections_(n){n=[],this.outputConnection&&n.push(this.outputConnection),this.previousConnection&&n.push(this.previousConnection),this.nextConnection&&n.push(this.nextConnection);for(let a=0,g;g=this.inputList[a];a++)g.connection&&n.push(g.connection);return n}lastConnectionInStack(n){let a=this.nextConnection;for(;a;){const g=a.targetBlock();if(!g||n&&g.isShadow())return a;a=g.nextConnection}return null}bumpNeighbours(){}getParent(){return this.parentBlock_}getInputWithBlock(n){for(let a=0,g;g=this.inputList[a];a++)if(g.connection&&g.connection.targetBlock()===n)return g;return null}getSurroundParent(){let n=this,a;do if(a=n,n=n.getParent(),!n)return null;while(n.getNextBlock()===a);return n}getNextBlock(){return this.nextConnection&&this.nextConnection.targetBlock()}getPreviousBlock(){return this.previousConnection&&this.previousConnection.targetBlock()}getRootBlock(){let n,a=this;do n=a,a=n.parentBlock_;while(a);return n}getTopStackBlock(){let n=this,a;do a=n.getPreviousBlock();while(a&&a.getNextBlock()===n&&(n=a));return n}getChildren(n){if(!n)return this.childBlocks_;n=[];for(let g=0,R;R=this.inputList[g];g++)if(R.connection){var a=R.connection.targetBlock();a&&n.push(a)}return(a=this.getNextBlock())&&n.push(a),n}setParent(n){if(n!==this.parentBlock_){var a=this.previousConnection&&this.previousConnection.targetBlock()||this.outputConnection&&this.outputConnection.targetBlock(),g=!!a;if(g&&n&&a!==n)throw Error("Block connected to superior one that is not new parent.");if(!g&&n)throw Error("Block not connected to new parent.");if(g&&!n)throw Error("Cannot set parent to null while block is still connected to superior block.");this.parentBlock_?Ke(this.parentBlock_.childBlocks_,this):this.workspace.removeTopBlock(this),(this.parentBlock_=n)?n.childBlocks_.push(this):this.workspace.addTopBlock(this)}}getDescendants(n){const a=[this],g=this.getChildren(n);for(let R,f=0;R=g[f];f++)a.push(...R.getDescendants(n));return a}isDeletable(){return this.deletable_&&!this.isShadow_&&!this.isDeadOrDying()&&!this.workspace.options.readOnly}isOwnDeletable(){return this.deletable_}setDeletable(n){this.deletable_=n}isMovable(){return this.movable_&&!this.isShadow_&&!this.isDeadOrDying()&&!this.workspace.options.readOnly}isOwnMovable(){return this.movable_}setMovable(n){this.movable_=n}isDuplicatable(){return this.workspace.hasBlockLimits()?this.workspace.isCapacityAvailable(G(this,!0)):!0}isShadow(){return this.isShadow_}setShadow(n){this.isShadow_=n}isInsertionMarker(){return this.isInsertionMarker_}setInsertionMarker(n){this.isInsertionMarker_=n}isEditable(){return this.editable_&&!this.isDeadOrDying()&&!this.workspace.options.readOnly}isOwnEditable(){return this.editable_}setEditable(n){this.editable_=n;for(let a=0,g;g=this.inputList[a];a++)for(let R=0,f;f=g.fieldRow[R];R++)f.updateEditable()}isDisposed(){return this.disposed}isSimpleReporter(){if(!this.outputConnection)return!1;for(const n of this.inputList)if(n.connection||1<n.fieldRow.length)return!1;return!0}getMatchingConnection(n,a){const g=this.getConnections_(!0);if(n=n.getConnections_(!0),g.length!==n.length)throw Error("Connection lists did not match in length.");for(let R=0;R<n.length;R++)if(n[R]===a)return g[R];return null}setHelpUrl(n){this.helpUrl=n}setTooltip(n){this.tooltip=n}getTooltip(){return hT(this)}getColour(){return this.colour_}getStyleName(){return this.styleName_}getHue(){return this.hue_}setColour(n){n=RT(n),this.hue_=n.hue,this.colour_=n.hex}setStyle(n){this.styleName_=n}setOnChange(n){if(n&&typeof n!="function")throw Error("onchange must be a function.");this.onchangeWrapper_&&this.workspace.removeChangeListener(this.onchangeWrapper_),this.onchange=n,this.onchangeWrapper_=n.bind(this),this.workspace.addChangeListener(this.onchangeWrapper_)}getField(n){if(typeof n!="string")throw TypeError("Block.prototype.getField expects a string with the field name but received "+(n===void 0?"nothing":n+" of type "+typeof n)+" instead");for(let a=0,g;g=this.inputList[a];a++)for(let R=0,f;f=g.fieldRow[R];R++)if(f.name===n)return f;return null}getVars(){const n=[];for(let a=0,g;g=this.inputList[a];a++)for(let R=0,f;f=g.fieldRow[R];R++)f.referencesVariables()&&n.push(f.getValue());return n}getVarModels(){const n=[];for(let a=0,g;g=this.inputList[a];a++)for(let R=0,f;f=g.fieldRow[R];R++)if(f.referencesVariables()){const $=this.workspace.getVariableById(f.getValue());$&&n.push($)}return n}updateVarName(n){for(let a=0,g;g=this.inputList[a];a++)for(let R=0,f;f=g.fieldRow[R];R++)f.referencesVariables()&&n.getId()===f.getValue()&&f.refreshVariableName()}renameVarById(n,a){for(let g=0,R;R=this.inputList[g];g++)for(let f=0,$;$=R.fieldRow[f];f++)$.referencesVariables()&&n===$.getValue()&&$.setValue(a)}getFieldValue(n){return(n=this.getField(n))?n.getValue():null}setFieldValue(n,a){const g=this.getField(a);if(!g)throw Error('Field "'+a+'" not found.');g.setValue(n)}setPreviousStatement(n,a){if(n)a===void 0&&(a=null),this.previousConnection||(this.previousConnection=this.makeConnection_(kt.PREVIOUS_STATEMENT)),this.previousConnection.setCheck(a);else if(this.previousConnection){if(this.previousConnection.isConnected())throw Error("Must disconnect previous statement before removing connection.");this.previousConnection.dispose(),this.previousConnection=null}}setNextStatement(n,a){if(n)a===void 0&&(a=null),this.nextConnection||(this.nextConnection=this.makeConnection_(kt.NEXT_STATEMENT)),this.nextConnection.setCheck(a);else if(this.nextConnection){if(this.nextConnection.isConnected())throw Error("Must disconnect next statement before removing connection.");this.nextConnection.dispose(),this.nextConnection=null}}setOutput(n,a){if(n)a===void 0&&(a=null),this.outputConnection||(this.outputConnection=this.makeConnection_(kt.OUTPUT_VALUE)),this.outputConnection.setCheck(a);else if(this.outputConnection){if(this.outputConnection.isConnected())throw Error("Must disconnect output value before removing connection.");this.outputConnection.dispose(),this.outputConnection=null}}setInputsInline(n){this.inputsInline!==n&&(J(new(pe(o.CHANGE$$module$build$src$core$events$utils))(this,"inline",null,this.inputsInline,n)),this.inputsInline=n)}getInputsInline(){if(this.inputsInline!==void 0)return this.inputsInline;for(var n=1;n<this.inputList.length;n++)if(this.inputList[n-1]instanceof Fr&&this.inputList[n]instanceof Fr)return!1;for(n=1;n<this.inputList.length;n++)if(this.inputList[n-1]instanceof o.ValueInput$$module$build$src$core$inputs$value_input&&this.inputList[n]instanceof Fr)return!0;for(n=0;n<this.inputList.length;n++)if(this.inputList[n]instanceof G_)return!0;return!1}setOutputShape(n){this.outputShape_=n}getOutputShape(){return this.outputShape_}isEnabled(){return!this.disabled}setEnabled(n){if(this.isEnabled()!==n){const a=this.disabled;this.disabled=!n,J(new(pe(o.CHANGE$$module$build$src$core$events$utils))(this,"disabled",null,a,!n))}}getInheritedDisabled(){let n=this.getSurroundParent();for(;n;){if(n.disabled)return!0;n=n.getSurroundParent()}return!1}isCollapsed(){return this.collapsed_}setCollapsed(n){this.collapsed_!==n&&(J(new(pe(o.CHANGE$$module$build$src$core$events$utils))(this,"collapsed",null,this.collapsed_,n)),this.collapsed_=n)}toString(n,a){a=this.toTokens(a);for(let R=2;R<a.length;R++)a[R-2]==="("&&a[R]===")"&&(a[R-2]=a[R-1],a.splice(R-1,2));let g="";return a=a.reduce((R,f)=>(R=R+(g==="("||f===")"?"":" ")+f,g=f[f.length-1],R),""),a=a.trim()||"???",n&&a.length>n&&(a=a.substring(0,n-3)+"..."),a}toTokens(n="?"){const a=[];for(const R of this.inputList)if(R.name!=zT){for(const f of R.fieldRow)a.push(f.getText());if(R.connection){const f=R.connection.targetBlock();if(f){var g=R.connection;let $=g.getCheck();!$&&g.targetConnection&&($=g.targetConnection.getCheck()),(g=!!$&&($.indexOf("Boolean")!==-1||$.indexOf("Number")!==-1))&&a.push("("),a.push(...f.toTokens(n)),g&&a.push(")")}else a.push(n)}}return a}appendValueInput(n){return this.appendInput(new o.ValueInput$$module$build$src$core$inputs$value_input(n,this))}appendStatementInput(n){return this.statementInputCount++,this.appendInput(new un(n,this))}appendDummyInput(n=""){return this.appendInput(new Fr(n,this))}appendEndRowInput(n=""){return this.appendInput(new G_(n,this))}appendInput(n){return this.inputList.push(n),n}appendInputFromRegistry(n,a){return(n=u(Mt.INPUT,n,!1))?this.appendInput(new n(a,this)):null}jsonInit(n){var a=n.type?'Block "'+n.type+'": ':"";if(n.output&&n.previousStatement)throw Error(a+"Must not have both an output and a previousStatement.");for(var g=0;n["args"+g];){if(n["message"+g]===void 0)throw Error(a+`args${g} must have a corresponding message (message${g}).`);g++}if(n.style&&n.style.hat&&(this.hat=n.style.hat,n.style=null),n.style&&n.colour)throw Error(a+"Must not have both a colour and a style.");for(n.style?this.jsonInitStyle_(n,a):this.jsonInitColour_(n,a),g=0;n["message"+g]!==void 0;)this.interpolate_(n["message"+g],n["args"+g]||[],n["implicitAlign"+g]||n["lastDummyAlign"+g],a),g++;if(n.inputsInline!==void 0&&(o.disable$$module$build$src$core$events$utils(),this.setInputsInline(n.inputsInline),o.enable$$module$build$src$core$events$utils()),n.output!==void 0&&this.setOutput(!0,n.output),n.outputShape!==void 0&&this.setOutputShape(n.outputShape),n.previousStatement!==void 0&&this.setPreviousStatement(!0,n.previousStatement),n.nextStatement!==void 0&&this.setNextStatement(!0,n.nextStatement),n.tooltip!==void 0&&(g=Ms(n.tooltip),this.setTooltip(g)),n.enableContextMenu!==void 0&&(this.contextMenu=!!n.enableContextMenu),n.suppressPrefixSuffix!==void 0&&(this.suppressPrefixSuffix=!!n.suppressPrefixSuffix),n.helpUrl!==void 0&&(g=Ms(n.helpUrl),this.setHelpUrl(g)),typeof n.extensions=="string"&&(console.warn(a+"JSON attribute 'extensions' should be an array of strings. Found raw string in JSON for '"+n.type+"' block."),n.extensions=[n.extensions]),n.mutator!==void 0&&ah(n.mutator,this,!0),n=n.extensions,Array.isArray(n))for(a=0;a<n.length;a++)ah(n[a],this,!1)}jsonInitColour_(n,a){if("colour"in n)if(n.colour===void 0)console.warn(a+"Undefined colour value.");else{n=n.colour;try{this.setColour(n)}catch{console.warn(a+"Illegal colour value: ",n)}}}jsonInitStyle_(n,a){n=n.style;try{this.setStyle(n)}catch{console.warn(a+"Style does not exist: ",n)}}mixin(n,a){if(a!==void 0&&typeof a!="boolean")throw Error("opt_disableCheck must be a boolean if provided");if(!a){a=[];for(const g in n)this[g]!==void 0&&a.push(g);if(a.length)throw Error("Mixin will overwrite block members: "+JSON.stringify(a))}Object.assign(this,n)}interpolate_(n,a,g,R){n=TL(n),this.validateTokens_(n,a.length),a=this.interpolateArguments_(n,a,g),g=[];for(let f=0,$;$=a[f];f++)if(this.isInputKeyword_($.type)){if(n=this.inputFromJson_($,R)){for(let le=0,fe;fe=g[le];le++)n.appendField(fe[0],fe[1]);g.length=0}}else(n=this.fieldFromJson_($))&&g.push([n,$.name])}validateTokens_(n,a){const g=[];let R=0;for(let f=0;f<n.length;f++){const $=n[f];if(typeof $=="number"){if(1>$||$>a)throw Error('Block "'+this.type+'": Message index %'+$+" out of range.");if(g[$])throw Error('Block "'+this.type+'": Message index %'+$+" duplicated.");g[$]=!0,R++}}if(R!==a)throw Error('Block "'+this.type+'": Message does not reference all '+a+" arg(s).")}interpolateArguments_(n,a,g){const R=[];for(let $=0;$<n.length;$++){var f=n[$];if(typeof f=="number"&&(f=a[f-1]),typeof f=="string"){if(f===`
- `)f={type:"input_end_row"},g&&(f.align=g);else if(f=this.stringToFieldJson_(f),!f)continue}R.push(f)}return(n=R.length)&&!this.isInputKeyword_(R[n-1].type)&&(n={type:"input_dummy"},g&&(n.align=g),R.push(n)),R}fieldFromJson_(n){const a=o.fromJson$$module$build$src$core$field_registry(n);return!a&&n.alt?typeof n.alt=="string"?(n=this.stringToFieldJson_(n.alt))?this.fieldFromJson_(n):null:this.fieldFromJson_(n.alt):a}inputFromJson_(n,a){var g={LEFT:o.Align$$module$build$src$core$inputs$align.LEFT,RIGHT:o.Align$$module$build$src$core$inputs$align.RIGHT,CENTRE:o.Align$$module$build$src$core$inputs$align.CENTRE,CENTER:o.Align$$module$build$src$core$inputs$align.CENTRE};let R;switch(n.type){case"input_value":R=this.appendValueInput(n.name);break;case"input_statement":R=this.appendStatementInput(n.name);break;case"input_dummy":R=this.appendDummyInput(n.name);break;case"input_end_row":R=this.appendEndRowInput(n.name);break;default:R=this.appendInputFromRegistry(n.type,n.name)}return R?(n.check&&R.setCheck(n.check),n.align&&(g=g[n.align.toUpperCase()],g===void 0?console.warn(a+"Illegal align value: ",n.align):R.setAlign(g)),R):null}isInputKeyword_(n){return n==="input_value"||n==="input_statement"||n==="input_dummy"||n==="input_end_row"||E(Mt.INPUT,n)}stringToFieldJson_(n){return(n=n.trim())?{type:"field_label",text:n}:null}moveInputBefore(n,a){if(n!==a){var g=-1,R=a?-1:this.inputList.length;for(let f=0,$;$=this.inputList[f];f++)if($.name===n){if(g=f,R!==-1)break}else if(a&&$.name===a&&(R=f,g!==-1))break;if(g===-1)throw Error('Named input "'+n+'" not found.');if(R===-1)throw Error('Reference input "'+a+'" not found.');this.moveNumberedInputBefore(g,R)}}moveNumberedInputBefore(n,a){if(n===a)throw Error("Can't move input to itself.");if(n>=this.inputList.length)throw RangeError("Input index "+n+" out of bounds.");if(a>this.inputList.length)throw RangeError("Reference input "+a+" out of bounds.");const g=this.inputList[n];this.inputList.splice(n,1),n<a&&a--,this.inputList.splice(a,0,g)}removeInput(n,a){for(let g=0,R;R=this.inputList[g];g++)if(R.name===n)return R instanceof un&&this.statementInputCount--,R.dispose(),this.inputList.splice(g,1),!0;if(a)return!1;throw Error("Input not found: "+n)}getInput(n){for(let a=0,g;g=this.inputList[a];a++)if(g.name===n)return g;return null}getInputTargetBlock(n){return(n=this.getInput(n))&&n.connection&&n.connection.targetBlock()}getCommentText(){let n,a;return(a=(n=this.getIcon(Li.TYPE))==null?void 0:n.getText())!=null?a:null}setCommentText(n){var a;let g;const R=(g=(a=this.getIcon(Li.TYPE))==null?void 0:a.getText())!=null?g:null;R!==n&&(n!==null?((a=this.getIcon(Li.TYPE))||(a=this.addIcon(new Li(this))),o.disable$$module$build$src$core$events$utils(),a.setText(n),o.enable$$module$build$src$core$events$utils()):this.removeIcon(Li.TYPE),J(new(pe(o.CHANGE$$module$build$src$core$events$utils))(this,"comment",null,R,n)))}setWarningText(n,a){}setMutator(n){}addIcon(n){if(this.hasIcon(n.getType()))throw new J0(n);return this.icons.push(n),this.icons.sort((a,g)=>a.getWeight()-g.getWeight()),n}removeIcon(n){if(!this.hasIcon(n))return!1;let a;return(a=this.getIcon(n))==null||a.dispose(),this.icons=this.icons.filter(g=>!g.getType().equals(n)),!0}hasIcon(n){return this.icons.some(a=>a.getType().equals(n))}getIcon(n){return n instanceof xi?this.icons.find(a=>a.getType().equals(n)):this.icons.find(a=>a.getType().toString()===n)}getIcons(){return[...this.icons]}getRelativeToSurfaceXY(){return this.xy_}moveBy(n,a,g){if(this.parentBlock_)throw Error("Block has parent");const R=new(pe(o.MOVE$$module$build$src$core$events$utils))(this);g&&R.setReason(g),this.xy_.translate(n,a),R.recordNew(),J(R)}makeConnection_(n){return new Po(this,n)}allInputsFilled(n){if(n===void 0&&(n=!0),!n&&this.isShadow())return!1;for(let g=0,R;R=this.inputList[g];g++)if(R.connection){var a=R.connection.targetBlock();if(!a||!a.allInputsFilled(n))return!1}return(a=this.getNextBlock())?a.allInputsFilled(n):!0}toDevString(){let n=this.type?'"'+this.type+'" block':"Block";return this.id&&(n+=' (id="'+this.id+'")'),n}};ZT.COLLAPSED_INPUT_NAME=zT,ZT.COLLAPSED_FIELD_NAME=jh;var E$=class{constructor(){this.drawer=this.curNode=this.colour=null,this.type="marker"}setDrawer(n){this.drawer=n}getDrawer(){return this.drawer}getCurNode(){return this.curNode}setCurNode(n){const a=this.curNode;this.curNode=n,this.drawer&&this.drawer.draw(a,this.curNode)}draw(){this.drawer&&this.drawer.draw(this.curNode,this.curNode)}hide(){this.drawer&&this.drawer.hide()}dispose(){this.getDrawer()&&this.getDrawer().dispose()}},Rm=class extends E${constructor(){super(),this.type="cursor"}next(){var n=this.getCurNode();if(!n)return null;for(n=n.next();n&&n.next()&&(n.getType()===Tt.types.NEXT||n.getType()===Tt.types.BLOCK);)n=n.next();return n&&this.setCurNode(n),n}in(){var n=this.getCurNode();if(!n)return null;(n.getType()===Tt.types.PREVIOUS||n.getType()===Tt.types.OUTPUT)&&(n=n.next());let a,g;return(n=(g=(a=n)==null?void 0:a.in())!=null?g:null)&&this.setCurNode(n),n}prev(){var n=this.getCurNode();if(!n)return null;for(n=n.prev();n&&n.prev()&&(n.getType()===Tt.types.NEXT||n.getType()===Tt.types.BLOCK);)n=n.prev();return n&&this.setCurNode(n),n}out(){var n=this.getCurNode();return n?((n=n.out())&&n.getType()===Tt.types.BLOCK&&(n=n.prev()||n),n&&this.setCurNode(n),n):null}};_(Mt.CURSOR,A_,Rm);var Tg=class extends Rm{constructor(){super()}next(){var n=this.getCurNode();return n?((n=this.getNextNode_(n,this.validNode_))&&this.setCurNode(n),n):null}in(){return this.next()}prev(){var n=this.getCurNode();return n?((n=this.getPreviousNode_(n,this.validNode_))&&this.setCurNode(n),n):null}out(){return this.prev()}getNextNode_(n,a){if(!n)return null;const g=n.in()||n.next();return a(g)?g:g?this.getNextNode_(g,a):(n=this.findSiblingOrParent(n.out()),a(n)?n:n?this.getNextNode_(n,a):null)}getPreviousNode_(n,a){if(!n)return null;let g=n.prev();return g=g?this.getRightMostChild(g):n.out(),a(g)?g:g?this.getPreviousNode_(g,a):null}validNode_(n){let a=!1;return n=n&&n.getType(),(n===Tt.types.OUTPUT||n===Tt.types.INPUT||n===Tt.types.FIELD||n===Tt.types.NEXT||n===Tt.types.PREVIOUS||n===Tt.types.WORKSPACE)&&(a=!0),a}findSiblingOrParent(n){if(!n)return null;const a=n.next();return a||this.findSiblingOrParent(n.out())}getRightMostChild(n){if(!n.in())return n;for(n=n.in();n&&n.next();)n=n.next();return this.getRightMostChild(n)}};Tg.registrationName="basicCursor",_(Mt.CURSOR,Tg.registrationName,Tg);var u$=class extends Tg{validNode_(n){let a=!1;const g=n&&n.getType();return n&&(n=n.getLocation(),g===Tt.types.FIELD&&n&&n.isTabNavigable()&&n.isClickable()&&(a=!0)),a}},Im=10,mi=class extends Po{constructor(n,a){super(n,a),this.targetConnection=this.highlightPath=null,this.db=n.workspace.connectionDBList[a],this.dbOpposite=n.workspace.connectionDBList[Qa[a]],this.offsetInBlock=new ft(0,0),this.trackedState=mi.TrackedState.WILL_TRACK}dispose(){super.dispose(),this.trackedState===mi.TrackedState.TRACKED&&this.db.removeConnection(this,this.y),this.highlightPath&&(Ot(this.highlightPath),this.highlightPath=null)}getSourceBlock(){return super.getSourceBlock()}targetBlock(){return super.targetBlock()}distanceFrom(n){const a=this.x-n.x;return n=this.y-n.y,Math.sqrt(a*a+n*n)}bumpAwayFrom(n){if(!this.sourceBlock_.workspace.isDragging()){var a=this.sourceBlock_.getRootBlock();if(!a.isInFlyout){var g=!1;if(!a.isMovable()){if(a=n.getSourceBlock().getRootBlock(),!a.isMovable())return;n=this,g=!0}var R=A()==a;R||a.addSelect();var f=n.x+o.config$$module$build$src$core$config.snapRadius+Math.floor(Math.random()*Im)-this.x,$=n.y+o.config$$module$build$src$core$config.snapRadius+Math.floor(Math.random()*Im)-this.y;g&&($=-$),a.RTL&&(f=n.x-o.config$$module$build$src$core$config.snapRadius-Math.floor(Math.random()*Im)-this.x),a.moveBy(f,$,["bump"]),R||a.removeSelect()}}}moveTo(n,a){let g=!1;return this.trackedState===mi.TrackedState.WILL_TRACK?(this.db.addConnection(this,a),this.trackedState=mi.TrackedState.TRACKED,g=!0):this.trackedState===mi.TrackedState.TRACKED&&(this.db.removeConnection(this,this.y),this.db.addConnection(this,a),g=!0),this.x=n,this.y=a,g}moveBy(n,a){return this.moveTo(this.x+n,this.y+a)}moveToOffset(n){return this.moveTo(n.x+this.offsetInBlock.x,n.y+this.offsetInBlock.y)}setOffsetInBlock(n,a){this.offsetInBlock.x=n,this.offsetInBlock.y=a}getOffsetInBlock(){return this.offsetInBlock}tightenEfficiently(){var n=this.targetConnection;const a=this.targetBlock();n&&a&&(n=ft.difference(this.offsetInBlock,n.offsetInBlock),a.translate(n.x,n.y))}closest(n,a){return this.dbOpposite.searchForClosest(this,n,a)}highlight(){if(!this.highlightPath){var n=this.sourceBlock_.workspace.getRenderer().getConstants(),a=n.shapeFor(this);this.type===kt.INPUT_VALUE||this.type===kt.OUTPUT_VALUE?(n=n.TAB_OFFSET_FROM_TOP,a=ns(0,-n)+Ut("v",n)+a.pathDown+Ut("v",n)):(n=n.NOTCH_OFFSET_LEFT-n.CORNER_RADIUS,a=ns(-n,0)+Ut("h",n)+a.pathLeft+Ut("h",n)),n=this.offsetInBlock,this.highlightPath=Le(Ve.PATH,{class:"blocklyHighlightedConnectionPath",d:a,transform:`translate(${n.x}, ${n.y})`+(this.sourceBlock_.RTL?" scale(-1 1)":"")},this.sourceBlock_.getSvgRoot())}}unhighlight(){this.highlightPath&&(Ot(this.highlightPath),this.highlightPath=null)}setTracking(n){n&&this.trackedState===mi.TrackedState.TRACKED||!n&&this.trackedState===mi.TrackedState.UNTRACKED||this.sourceBlock_.isInFlyout||(n?(this.db.addConnection(this,this.y),this.trackedState=mi.TrackedState.TRACKED):(this.trackedState===mi.TrackedState.TRACKED&&this.db.removeConnection(this,this.y),this.trackedState=mi.TrackedState.UNTRACKED))}stopTrackingAll(){if(this.setTracking(!1),this.targetConnection){const n=this.targetBlock().getDescendants(!1);for(let a=0;a<n.length;a++){const g=n[a],R=g.getConnections_(!0);for(let f=0;f<R.length;f++)R[f].setTracking(!1);for(const f of g.getIcons())hl(f)&&f.setBubbleVisible(!1)}}}startTrackingAll(){this.setTracking(!0);let n=[];if(this.type!==kt.INPUT_VALUE&&this.type!==kt.NEXT_STATEMENT)return n;const a=this.targetBlock();if(a){let g;a.isCollapsed()?(g=[],a.outputConnection&&g.push(a.outputConnection),a.nextConnection&&g.push(a.nextConnection),a.previousConnection&&g.push(a.previousConnection)):g=a.getConnections_(!0);for(let R=0;R<g.length;R++)n.push(...g[R].startTrackingAll());n.length||(n=[a])}return n}onFailedConnect(n){const a=this.getSourceBlock();if(j()){const g=o.getGroup$$module$build$src$core$events$utils();setTimeout((function(){a.isDisposed()||a.getParent()||(o.setGroup$$module$build$src$core$events$utils(g),this.bumpAwayFrom(n),o.setGroup$$module$build$src$core$events$utils(!1))}).bind(this),o.config$$module$build$src$core$config.bumpDelay)}}disconnectInternal(n=!0){const{parentConnection:a,childConnection:g}=this.getParentAndChildConnections();if(a&&g){var R=a.getSourceBlock(),f=g.getSourceBlock();super.disconnectInternal(n),R.rendered&&R.queueRender(),f.rendered&&(f.updateDisabled(),f.queueRender(),f.getSvgRoot().style.display="block")}}respawnShadow_(){super.respawnShadow_();const n=this.targetBlock();n&&(n.initSvg(),n.queueRender())}neighbours(n){return this.dbOpposite.getNeighbours(this,n)}connect_(n){super.connect_(n);var a=this.getSourceBlock();n=n.getSourceBlock();const g=a.rendered,R=n.rendered;g&&a.updateDisabled(),R&&n.updateDisabled(),g&&R&&(this.type===kt.NEXT_STATEMENT||this.type===kt.PREVIOUS_STATEMENT?n.queueRender():a.queueRender()),(a=a.getInputWithBlock(n))&&(a=a.isVisible(),n.getSvgRoot().style.display=a?"block":"none")}onCheckChanged_(){!this.isConnected()||this.targetConnection&&this.getConnectionChecker().canConnect(this,this.targetConnection,!1)||((this.isSuperior()?this.targetBlock():this.sourceBlock_).unplug(),this.sourceBlock_.bumpNeighbours())}setCheck(n){return super.setCheck(n),this.sourceBlock_.rendered&&this.sourceBlock_.queueRender(),this}};(function(n){n=n.TrackedState||(n.TrackedState={}),n[n.WILL_TRACK=-1]="WILL_TRACK",n[n.UNTRACKED=0]="UNTRACKED",n[n.TRACKED=1]="TRACKED"})(mi||(mi={})),mi.TrackedState;var Vr=class extends ZT{constructor(n,a,g){super(n,a,g),this.width=this.height=0,this.warningTextDb=new Map,this.warning=this.mutator=null,this.eventsInit_=this.renderIsInProgress_=this.visuallyDisabled=this.rendered=!1,this.translation="",this.bumpNeighboursPid=0,this.dragging=!1,this.relativeCoords=new ft(0,0),this.workspace=n,this.svgGroup_=Le(Ve.G,{}),this.style=n.getRenderer().getConstants().getBlockStyle(null),this.pathObject=n.getRenderer().makePathObject(this.svgGroup_,this.style),n=this.pathObject.svgPath,n.tooltip=this,MT(n),this.svgGroup_.setAttribute("data-id",this.id),this.doInit_()}initSvg(){if(!this.workspace.rendered)throw TypeError("Workspace is headless.");for(let a=0,g;g=this.inputList[a];a++)g.init();for(var n of this.getIcons())n.initView(this.createIconPointerDownListener(n)),n.updateEditable();this.applyColour(),this.pathObject.updateMovable(this.isMovable()),n=this.getSvgRoot(),this.workspace.options.readOnly||this.eventsInit_||!n||ve(n,"pointerdown",this,this.onMouseDown_),this.eventsInit_=!0,n.parentNode||this.workspace.getCanvas().appendChild(n)}getColourSecondary(){return this.style.colourSecondary}getColourTertiary(){return this.style.colourTertiary}select(){if(this.isShadow()&&this.getParent())this.getParent().select();else if(A()!==this){var n=null;if(A()){n=A().id,o.disable$$module$build$src$core$events$utils();try{A().unselect()}finally{o.enable$$module$build$src$core$events$utils()}}n=new(pe(N_))(n,this.id,this.workspace.id),J(n),b(this),this.addSelect()}}unselect(){if(A()===this){var n=new(pe(N_))(this.id,null,this.workspace.id);n.workspaceId=this.workspace.id,J(n),b(null),this.removeSelect()}}setParent(n){const a=this.parentBlock_;if(n!==a){x(),super.setParent(n),oe();var g=this.getSvgRoot();if(!this.workspace.isClearing&&g){var R=this.getRelativeToSurfaceXY();n?n.getSvgRoot().appendChild(g):a&&((n=this.workspace.getCanvas().querySelector(".blocklyDragging"))?this.workspace.getCanvas().insertBefore(g,n):this.workspace.getCanvas().appendChild(g),this.translate(R.x,R.y)),this.applyColour()}}}getRelativeToSurfaceXY(){const n=this.workspace.getLayerManager();if(!n)throw Error("Cannot calculate position because the workspace has not been appended");let a=0,g=0,R=this.getSvgRoot();if(R)do{const f=ue(R);a+=f.x,g+=f.y,R=R.parentNode}while(R&&!n.hasLayer(R));return new ft(a,g)}moveBy(n,a,g){if(this.parentBlock_)throw Error("Block has parent");const R=Q();let f=null;R&&(f=new(pe(o.MOVE$$module$build$src$core$events$utils))(this),g&&f.setReason(g)),n=new ft(n,a),a=this.getRelativeToSurfaceXY(),n=ft.sum(a,n),this.translate(n.x,n.y),this.updateComponentLocations(n),R&&f&&(f.recordNew(),J(f)),this.workspace.resizeContents()}translate(n,a){this.translation=`translate(${n}, ${a})`,this.relativeCoords=new ft(n,a),this.getSvgRoot().setAttribute("transform",this.getTranslation())}getTranslation(){return this.translation}moveTo(n,a){const g=this.getRelativeToSurfaceXY();this.moveBy(n.x-g.x,n.y-g.y,a)}moveDuringDrag(n){this.translate(n.x,n.y),this.getSvgRoot().setAttribute("transform",this.getTranslation()),this.updateComponentLocations(n)}snapToGrid(){if(!(this.isDeadOrDying()||this.workspace.isDragging()||this.getParent()||this.isInFlyout)){var n=this.workspace.getGrid();if(n&&n.shouldSnap()){var a=n.getSpacing(),g=a/2,R=this.getRelativeToSurfaceXY();n=Math.round(Math.round((R.x-g)/a)*a+g-R.x),a=Math.round(Math.round((R.y-g)/a)*a+g-R.y),(n||a)&&this.moveBy(n,a,["snap"])}}}getBoundingRectangle(){const n=this.getRelativeToSurfaceXY(),a=this.getHeightWidth();let g,R;return this.RTL?(g=n.x-a.width,R=n.x):(g=n.x,R=n.x+a.width),new Zo(n.y,n.y+a.height,g,R)}markDirty(){this.pathObject.constants=this.workspace.getRenderer().getConstants();for(let n=0,a;a=this.inputList[n];n++)a.markDirty()}setCollapsed(n){this.collapsed_!==n&&(super.setCollapsed(n),this.updateCollapsed_())}updateCollapsed_(){var n=this.isCollapsed();const a=zT,g=jh;for(let f=0,$;$=this.inputList[f];f++)$.name!==a&&$.setVisible(!n);for(var R of this.getIcons())R.updateCollapsed();n?(n=this.toString(k0),(R=this.getField(g))?R.setValue(n):(this.getInput(a)||this.appendDummyInput(a)).appendField(new ic(n),g)):(this.updateDisabled(),this.removeInput(a))}tab(n,a){const g=new u$;g.setCurNode(Tt.createFieldNode(n)),n=g.getCurNode(),a?g.next():g.prev(),(a=g.getCurNode())&&a!==n&&(a.getLocation().showEditor(),this.workspace.keyboardAccessibilityMode&&this.workspace.getCursor().setCurNode(a))}onMouseDown_(n){const a=this.workspace.getGesture(n);a&&a.handleBlockStart(n,this)}showHelp(){const n=typeof this.helpUrl=="function"?this.helpUrl():this.helpUrl;n&&window.open(n)}generateContextMenu(){if(this.workspace.options.readOnly||!this.contextMenu)return null;const n=No.registry.getContextMenuOptions(No.ScopeType.BLOCK,{block:this});return this.customContextMenu&&this.customContextMenu(n),n}showContextMenu(n){const a=this.generateContextMenu();a&&a.length&&(vu(n,a,this.RTL),vp(this))}updateComponentLocations(n){if(this.rendered){this.dragging||this.updateConnectionLocations(n),this.updateIconLocations(n),this.updateFieldLocations(n);for(const a of this.getChildren(!1))a.updateComponentLocations(ft.sum(n,a.relativeCoords))}}updateConnectionLocations(n){for(const a of this.getConnections_(!1))a.moveToOffset(n)}updateIconLocations(n){for(const a of this.getIcons())a.onLocationChange(n)}updateFieldLocations(n){for(const a of this.inputList)for(const g of a.fieldRow)g.onLocationChange(n)}setDragging(n){(this.dragging=n)?(this.translation="",LT.push(...this.getConnections_(!0)),je(this.svgGroup_,"blocklyDragging")):(LT.length=0,Je(this.svgGroup_,"blocklyDragging"));for(let a=0;a<this.childBlocks_.length;a++)this.childBlocks_[a].setDragging(n)}setMovable(n){super.setMovable(n),this.pathObject.updateMovable(n)}setEditable(n){super.setEditable(n),n=this.getIcons();for(let a=0;a<n.length;a++)n[a].updateEditable()}setShadow(n){super.setShadow(n),this.applyColour()}setInsertionMarker(n){this.isInsertionMarker_!==n&&(this.isInsertionMarker_=n)&&(this.setColour(this.workspace.getRenderer().getConstants().INSERTION_MARKER_COLOUR),this.pathObject.updateInsertionMarker(!0))}getSvgRoot(){return this.svgGroup_}dispose(n,a){this.isDeadOrDying()||(nL(),Du(),a&&this.rendered&&(this.unplug(n),zp(this)),super.dispose(!!n),Ot(this.svgGroup_))}disposeInternal(){this.isDeadOrDying()||(super.disposeInternal(),this.rendered=!1,A()===this&&(this.unselect(),this.workspace.cancelCurrentGesture()),[...this.warningTextDb.values()].forEach(n=>clearTimeout(n)),this.warningTextDb.clear(),this.getIcons().forEach(n=>n.dispose()))}checkAndDelete(){this.workspace.isFlyout||(o.setGroup$$module$build$src$core$events$utils(!0),this.workspace.hideChaff(),this.outputConnection?this.dispose(!1,!0):this.dispose(!0,!0),o.setGroup$$module$build$src$core$events$utils(!1))}toCopyData(){return this.isInsertionMarker_?null:{paster:zu.TYPE,blockState:Nr(this,{addCoordinates:!0,addNextBlocks:!1}),typeCounts:G(this,!0)}}applyColour(){this.pathObject.applyColour(this);const n=this.getIcons();for(let a=0;a<n.length;a++)n[a].applyColour();for(let a=0,g;g=this.inputList[a];a++)for(let R=0,f;f=g.fieldRow[R];R++)f.applyColour()}updateDisabled(){const n=!this.isEnabled()||this.getInheritedDisabled();if(this.visuallyDisabled===n){let a;(a=this.getNextBlock())==null||a.updateDisabled()}else{this.applyColour(),this.visuallyDisabled=n;for(const a of this.getChildren(!1))a.updateDisabled()}}getCommentIcon(){xe("getCommentIcon","v10","v11","getIcon");let n;return(n=this.getIcon(Li.TYPE))!=null?n:null}setWarningText(n,a=""){if(a)this.warningTextDb.has(a)&&(clearTimeout(this.warningTextDb.get(a)),this.warningTextDb.delete(a));else{for(var g of this.warningTextDb.values())clearTimeout(g);this.warningTextDb.clear()}if(this.workspace.isDragging())this.warningTextDb.set(a,setTimeout(()=>{this.isDeadOrDying()||(this.warningTextDb.delete(a),this.setWarningText(n,a))},100));else if(this.isInFlyout&&(n=null),g=this.getIcon(sr.TYPE),n){let R=this.getSurroundParent(),f=null;for(;R;)R.isCollapsed()&&(f=R),R=R.getSurroundParent();f&&f.setWarningText(o.Msg$$module$build$src$core$msg.COLLAPSED_WARNINGS_WARNING,Vr.COLLAPSED_WARNING_ID),g?g.addMessage(n,a):this.addIcon(new sr(this).addMessage(n,a))}else g&&(a?(g.addMessage("",a),g.getText()||this.removeIcon(sr.TYPE)):this.removeIcon(sr.TYPE))}setMutator(n){this.removeIcon(o.MutatorIcon$$module$build$src$core$icons$mutator_icon.TYPE),n&&this.addIcon(n)}addIcon(n){return super.addIcon(n),n instanceof sr&&(this.warning=n),n instanceof o.MutatorIcon$$module$build$src$core$icons$mutator_icon&&(this.mutator=n),this.rendered&&(n.initView(this.createIconPointerDownListener(n)),n.applyColour(),n.updateEditable(),this.queueRender(),Ar(),this.bumpNeighbours()),n}createIconPointerDownListener(n){return a=>{this.isDeadOrDying()||(a=this.workspace.getGesture(a))&&a.setStartIcon(n)}}removeIcon(n){const a=super.removeIcon(n);return n.equals(sr.TYPE)&&(this.warning=null),n.equals(o.MutatorIcon$$module$build$src$core$icons$mutator_icon.TYPE)&&(this.mutator=null),this.rendered&&(this.queueRender(),Ar(),this.bumpNeighbours()),a}setEnabled(n){this.isEnabled()!==n&&(super.setEnabled(n),this.rendered&&!this.getInheritedDisabled()&&this.updateDisabled())}setHighlighted(n){this.rendered&&this.pathObject.updateHighlighted(n)}addSelect(){this.pathObject.updateSelected(!0)}removeSelect(){this.pathObject.updateSelected(!1)}setDeleteStyle(n){this.pathObject.updateDraggingDelete(n)}getColour(){return this.style.colourPrimary}setColour(n){super.setColour(n),n=this.workspace.getRenderer().getConstants().getBlockStyleForColour(this.colour_),this.pathObject.setStyle(n.style),this.style=n.style,this.styleName_=n.name,this.applyColour()}setStyle(n){const a=this.workspace.getRenderer().getConstants().getBlockStyle(n);if(this.styleName_=n,a)this.hat=a.hat,this.pathObject.setStyle(a),this.colour_=a.colourPrimary,this.style=a,this.applyColour();else throw Error("Invalid style name: "+n)}bringToFront(n=!1){let a=this;if(!a.isDeadOrDying())do{const g=a.getSvgRoot(),R=g.parentNode,f=R.childNodes;if(f[f.length-1]!==g&&R.appendChild(g),n)break;a=a.getParent()}while(a)}setPreviousStatement(n,a){super.setPreviousStatement(n,a),this.rendered&&(this.queueRender(),this.bumpNeighbours())}setNextStatement(n,a){super.setNextStatement(n,a),this.rendered&&(this.queueRender(),this.bumpNeighbours())}setOutput(n,a){super.setOutput(n,a),this.rendered&&(this.queueRender(),this.bumpNeighbours())}setInputsInline(n){super.setInputsInline(n),this.rendered&&(this.queueRender(),this.bumpNeighbours())}removeInput(n,a){return n=super.removeInput(n,a),this.rendered&&(this.queueRender(),this.bumpNeighbours()),n}moveNumberedInputBefore(n,a){super.moveNumberedInputBefore(n,a),this.rendered&&(this.queueRender(),this.bumpNeighbours())}appendInput(n){return super.appendInput(n),this.rendered&&(this.queueRender(),this.bumpNeighbours()),n}setConnectionTracking(n){if(this.previousConnection&&this.previousConnection.setTracking(n),this.outputConnection&&this.outputConnection.setTracking(n),this.nextConnection){this.nextConnection.setTracking(n);var a=this.nextConnection.targetBlock();a&&a.setConnectionTracking(n)}if(!this.collapsed_)for(a=0;a<this.inputList.length;a++){var g=this.inputList[a].connection;g&&(g.setTracking(n),(g=g.targetBlock())&&g.setConnectionTracking(n))}}getConnections_(n){const a=[];if((n||this.rendered)&&(this.outputConnection&&a.push(this.outputConnection),this.previousConnection&&a.push(this.previousConnection),this.nextConnection&&a.push(this.nextConnection),n||!this.collapsed_))for(let g=0,R;R=this.inputList[g];g++)R.connection&&a.push(R.connection);return a}lastConnectionInStack(n){return super.lastConnectionInStack(n)}getMatchingConnection(n,a){return super.getMatchingConnection(n,a)}makeConnection_(n){return new mi(this,n)}getNextBlock(){return super.getNextBlock()}getPreviousBlock(){return super.getPreviousBlock()}bumpNeighbours(){if(!this.bumpNeighboursPid){var n=o.getGroup$$module$build$src$core$events$utils();this.bumpNeighboursPid=setTimeout(()=>{const a=o.getGroup$$module$build$src$core$events$utils();o.setGroup$$module$build$src$core$events$utils(n),this.getRootBlock().bumpNeighboursInternal(),o.setGroup$$module$build$src$core$events$utils(a),this.bumpNeighboursPid=0},o.config$$module$build$src$core$config.bumpDelay)}}bumpNeighboursInternal(){const n=this.getRootBlock();if(!(this.isDeadOrDying()||this.workspace.isDragging()||n.isInFlyout))for(const a of this.getConnections_(!1)){if(a.isSuperior()){let g;(g=a.targetBlock())==null||g.bumpNeighboursInternal()}for(const g of a.neighbours(o.config$$module$build$src$core$config.snapRadius))g.getSourceBlock().getRootBlock()!==n&&(a.isConnected()&&g.isConnected()||(a.isSuperior()?g.bumpAwayFrom(a):a.bumpAwayFrom(g)))}}scheduleSnapAndBump(){const n=o.getGroup$$module$build$src$core$events$utils();setTimeout(()=>{o.setGroup$$module$build$src$core$events$utils(n),this.snapToGrid(),o.setGroup$$module$build$src$core$events$utils(!1)},o.config$$module$build$src$core$config.bumpDelay/2),this.bumpNeighbours()}positionNearConnection(n,a,g){if(n.type===kt.NEXT_STATEMENT||n.type===kt.INPUT_VALUE){let R=a.x;a=a.y,R+=g.x-n.getOffsetInBlock().x,a+=g.y-n.getOffsetInBlock().y,this.moveBy(R,a)}}getChildren(n){return super.getChildren(n)}queueRender(){return gp(this)}render(){this.queueRender(),Ar()}renderEfficiently(){this.rendered=!0,x(),this.isCollapsed()&&this.updateCollapsed_(),this.isEnabled()||this.updateDisabled(),this.workspace.getRenderer().render(this),this.tightenChildrenEfficiently(),oe(),this.updateMarkers_()}tightenChildrenEfficiently(){for(const n of this.inputList){const a=n.connection;a&&a.tightenEfficiently()}this.nextConnection&&this.nextConnection.tightenEfficiently()}updateMarkers_(){this.workspace.keyboardAccessibilityMode&&this.pathObject.cursorSvg&&this.workspace.getCursor().draw(),this.workspace.keyboardAccessibilityMode&&this.pathObject.markerSvg&&this.workspace.getMarker(tg.LOCAL_MARKER).draw();for(const n of this.inputList)for(const a of n.fieldRow)a.updateMarkers_()}setCursorSvg(n){this.pathObject.setCursorSvg(n)}setMarkerSvg(n){this.pathObject.setMarkerSvg(n)}getHeightWidth(){let n=this.height,a=this.width;var g=this.getNextBlock();if(g){g=g.getHeightWidth();const R=this.workspace.getRenderer().getConstants().NOTCH_HEIGHT;n+=g.height-R,a=Math.max(a,g.width)}return{height:n,width:a}}fadeForReplacement(n){this.pathObject.updateReplacementFade(n)}highlightShapeForInput(n,a){this.pathObject.updateShapeForInputHighlight(n,a)}};Vr.INLINE=-1,Vr.COLLAPSED_WARNING_ID="TEMP_COLLAPSED_WARNING_";var g$=class{constructor(){}onDragEnter(n){}onDragOver(n){}onDragExit(n){}onDrop(n){}getClientRect(){return null}shouldPreventMove(n){return!1}},qh=class extends g${constructor(){super(),this.wouldDelete_=!1}wouldDelete(n,a){return n instanceof Vr?(n=!n.getParent()&&n.isDeletable(),this.updateWouldDelete_(n&&!a)):this.updateWouldDelete_(n.isDeletable()),this.wouldDelete_}updateWouldDelete_(n){this.wouldDelete_=n}},d$=class extends qh{constructor(n){super(),this.workspace=n,this.id="trashcan",this.contents=[],this.flyout=null,this.isLidOpen=!1,this.minOpenness=0,this.lidTask=this.svgLid=this.svgGroup=null,this.top=this.left=this.lidOpen=0,this.initialized=!1,0>=this.workspace.options.maxTrashcanContents||(n=new vn({scrollbars:!0,parentWorkspace:this.workspace,rtl:this.workspace.RTL,oneBasedIndex:this.workspace.options.oneBasedIndex,renderer:this.workspace.options.renderer,rendererOverrides:this.workspace.options.rendererOverrides,move:{scrollbars:!0}}),this.workspace.horizontalLayout?(n.toolboxPosition=this.workspace.toolboxPosition===To.TOP?To.BOTTOM:To.TOP,this.flyout=new(h(Mt.FLYOUTS_HORIZONTAL_TOOLBOX,this.workspace.options,!0))(n)):(n.toolboxPosition=this.workspace.toolboxPosition===To.RIGHT?To.LEFT:To.RIGHT,this.flyout=new(h(Mt.FLYOUTS_VERTICAL_TOOLBOX,this.workspace.options,!0))(n)),this.workspace.addChangeListener(this.onDelete.bind(this)))}createDom(){this.svgGroup=Le(Ve.G,{class:"blocklyTrash"});let n;const a=String(Math.random()).substring(2);n=Le(Ve.CLIPPATH,{id:"blocklyTrashBodyClipPath"+a},this.svgGroup),Le(Ve.RECT,{width:jT,height:Qh,y:qT},n);const g=Le(Ve.IMAGE,{width:pi.width,x:-Sm,height:pi.height,y:-pm,"clip-path":"url(#blocklyTrashBodyClipPath"+a+")"},this.svgGroup);return g.setAttributeNS(an,"xlink:href",this.workspace.options.pathToMedia+pi.url),n=Le(Ve.CLIPPATH,{id:"blocklyTrashLidClipPath"+a},this.svgGroup),Le(Ve.RECT,{width:jT,height:qT},n),this.svgLid=Le(Ve.IMAGE,{width:pi.width,x:-Sm,height:pi.height,y:-pm,"clip-path":"url(#blocklyTrashLidClipPath"+a+")"},this.svgGroup),this.svgLid.setAttributeNS(an,"xlink:href",this.workspace.options.pathToMedia+pi.url),Te(this.svgGroup,"pointerdown",this,this.blockMouseDownWhenOpenable),Te(this.svgGroup,"pointerup",this,this.click),Te(g,"pointerover",this,this.mouseOver),Te(g,"pointerout",this,this.mouseOut),this.animateLid(),this.svgGroup}init(){0<this.workspace.options.maxTrashcanContents&&(Nt(this.flyout.createDom(Ve.SVG),this.workspace.getParentSvg()),this.flyout.init(this.workspace)),this.workspace.getComponentManager().addComponent({component:this,weight:1,capabilities:[ks.Capability.AUTOHIDEABLE,ks.Capability.DELETE_AREA,ks.Capability.DRAG_TARGET,ks.Capability.POSITIONABLE]}),this.initialized=!0,this.setLidOpen(!1)}dispose(){this.workspace.getComponentManager().removeComponent("trashcan"),this.svgGroup&&Ot(this.svgGroup),this.lidTask&&clearTimeout(this.lidTask)}hasContents(){return!!this.contents.length}contentsIsOpen(){return!!this.flyout&&this.flyout.isVisible()}openFlyout(){if(!this.contentsIsOpen()){var n=this.contents.map(function(g){return JSON.parse(g)}),a=this.workspace.getParentSvg().style;a.cursor="wait",setTimeout(()=>{let g;(g=this.flyout)==null||g.show(n),a.cursor="";let R;(R=this.workspace.scrollbar)==null||R.setVisible(!1)},10),this.fireUiEvent(!0)}}closeFlyout(){if(this.contentsIsOpen()){var n;(n=this.flyout)==null||n.hide();var a;(a=this.workspace.scrollbar)==null||a.setVisible(!0),this.fireUiEvent(!1),this.workspace.recordDragTargets()}}autoHide(n){!n&&this.flyout&&this.closeFlyout()}emptyContents(){this.hasContents()&&(this.contents.length=0,this.setMinOpenness(0),this.closeFlyout())}position(n,a){if(this.initialized){var g=wO(this.workspace,n);n=f_(g,new Jo(jT,Qh+qT),Zz,O$,n,this.workspace),a=GO(n,O$,g.vertical===y_.TOP?Al.DOWN:Al.UP,a),this.top=a.top,this.left=a.left;var R;(R=this.svgGroup)==null||R.setAttribute("transform","translate("+this.left+","+this.top+")")}}getBoundingRectangle(){return new Zo(this.top,this.top+Qh+qT,this.left,this.left+jT)}getClientRect(){if(!this.svgGroup)return null;var n=this.svgGroup.getBoundingClientRect();const a=n.top+pm-Jh;return n=n.left+Sm-Jh,new Zo(a,a+qT+Qh+2*Jh,n,n+jT+2*Jh)}onDragOver(n){this.setLidOpen(this.wouldDelete_)}onDragExit(n){this.setLidOpen(!1)}onDrop(n){setTimeout(this.setLidOpen.bind(this,!1),100)}setLidOpen(n){this.isLidOpen!==n&&(this.lidTask&&clearTimeout(this.lidTask),this.isLidOpen=n,this.animateLid())}animateLid(){const n=Qz;var a=1/(n+1);this.lidOpen+=this.isLidOpen?a:-a,this.lidOpen=Math.min(Math.max(this.lidOpen,this.minOpenness),1),this.setLidAngle(this.lidOpen*M$),a=h$+this.lidOpen*(Jz-h$),this.svgGroup&&(this.svgGroup.style.opacity=`${a}`),this.lidOpen>this.minOpenness&&1>this.lidOpen&&(this.lidTask=setTimeout(this.animateLid.bind(this),qz/n))}setLidAngle(n){const a=this.workspace.toolboxPosition===To.RIGHT||this.workspace.horizontalLayout&&this.workspace.RTL;let g;(g=this.svgLid)==null||g.setAttribute("transform","rotate("+(a?-n:n)+","+(a?4:jT-4)+","+(qT-2)+")")}setMinOpenness(n){this.minOpenness=n,this.isLidOpen||this.setLidAngle(n*M$)}closeLid(){this.setLidOpen(!1)}click(){this.hasContents()&&!this.workspace.isDragging()&&this.openFlyout()}fireUiEvent(n){n=new(pe(AT))(n,this.workspace.id),J(n)}blockMouseDownWhenOpenable(n){!this.contentsIsOpen()&&this.hasContents()&&n.stopPropagation()}mouseOver(){this.hasContents()&&this.setLidOpen(!0)}mouseOut(){this.setLidOpen(!1)}onDelete(n){if(!(0>=this.workspace.options.maxTrashcanContents||n.type!==o.DELETE$$module$build$src$core$events$utils||n.type!==o.DELETE$$module$build$src$core$events$utils||n.wasShadow)){if(!n.oldJson)throw Error("Encountered a delete event without proper oldJson");if(n=JSON.stringify(this.cleanBlockJson(n.oldJson)),this.contents.indexOf(n)===-1){for(this.contents.unshift(n);this.contents.length>this.workspace.options.maxTrashcanContents;)this.contents.pop();this.setMinOpenness(jz)}}}cleanBlockJson(n){function a(g){if(g){if(delete g.id,delete g.x,delete g.y,delete g.enabled,g.icons&&g.icons.comment){var R=g.icons.comment;delete R.height,delete R.width,delete R.pinned}R=g.inputs;for(var f in R){var $=R[f];const le=$.block;$=$.shadow,le&&a(le),$&&a($)}g.next&&(f=g.next,g=f.block,f=f.shadow,g&&a(g),f&&a(f))}}return n=JSON.parse(JSON.stringify(n)),a(n),Object.assign({},{kind:"BLOCK"},n)}},jT=47,Qh=44,qT=16,O$=20,Zz=20,Jh=10,Sm=0,pm=32,jz=.1,qz=80,Qz=4,h$=.4,Jz=.8,M$=45,$o=class{constructor(){this.shortcuts=new Map,this.keyMap=new Map,this.reset()}reset(){this.shortcuts.clear(),this.keyMap.clear()}register(n,a){if(this.shortcuts.get(n.name)&&!a)throw Error(`Shortcut named "${n.name}" already exists.`);if(this.shortcuts.set(n.name,n),(a=n.keyCodes)&&0<a.length)for(let g=0;g<a.length;g++)this.addKeyMapping(a[g],n.name,!!n.allowCollision)}unregister(n){return this.shortcuts.get(n)?(this.removeAllKeyMappings(n),this.shortcuts.delete(n),!0):(console.warn(`Keyboard shortcut named "${n}" not found.`),!1)}addKeyMapping(n,a,g){n=`${n}`;const R=this.keyMap.get(n);if(R&&!g)throw Error(`Shortcut named "${a}" collides with shortcuts "${R}"`);R&&g?R.unshift(a):this.keyMap.set(n,[a])}removeKeyMapping(n,a,g){const R=this.keyMap.get(n);if(!R)return g||console.warn(`No keyboard shortcut named "${a}" registered with key code "${n}"`),!1;const f=R.indexOf(a);return-1<f?(R.splice(f,1),R.length===0&&this.keyMap.delete(n),!0):(g||console.warn(`No keyboard shortcut named "${a}" registered with key code "${n}"`),!1)}removeAllKeyMappings(n){for(const a of this.keyMap.keys())this.removeKeyMapping(a,n,!0)}setKeyMap(n){this.keyMap.clear();for(const a in n)this.keyMap.set(a,n[a])}getKeyMap(){const n=Object.create(null);for(const[a,g]of this.keyMap)n[a]=g;return n}getRegistry(){const n=Object.create(null);for(const[a,g]of this.shortcuts)n[a]=g;return C_(Object.create(null),n)}onKeyDown(n,a){var g=this.serializeKeyEvent_(a);if(g=this.getShortcutNamesByKeyCode(g),!g)return!1;for(let R=0,f;f=g[R];R++){const $=this.shortcuts.get(f);let le,fe;if((le=$)==null||!le.preconditionFn||(fe=$)!=null&&fe.preconditionFn(n)){let it,Pt;if((it=$)!=null&&it.callback&&((Pt=$)!=null&&Pt.callback(n,a,$)))return!0}}return!1}getShortcutNamesByKeyCode(n){return this.keyMap.get(n)||[]}getKeyCodesByShortcutName(n){const a=[];for(const[g,R]of this.keyMap)-1<R.indexOf(n)&&a.push(g);return a}serializeKeyEvent_(n){let a="";for(const g in $o.modifierKeys)n.getModifierState(g)&&(a!==""&&(a+="+"),a+=g);return a!==""&&n.keyCode?a=a+"+"+n.keyCode:n.keyCode&&(a=String(n.keyCode)),a}checkModifiers_(n){for(let a=0,g;g=n[a];a++)if(!(g in $o.modifierKeys))throw Error(g+" is not a valid modifier key.")}createSerializedKey(n,a){let g="";if(a){this.checkModifiers_(a);for(const R in $o.modifierKeys)-1<a.indexOf($o.modifierKeys[R])&&(g!==""&&(g+="+"),g+=R)}return g!==""&&n?g=g+"+"+n:n&&(g=`${n}`),g}};$o.registry=new $o,function(n){n=n.modifierKeys||(n.modifierKeys={}),n[n.Shift=16]="Shift",n[n.Control=17]="Control",n[n.Alt=18]="Alt",n[n.Meta=91]="Meta"}($o||($o={}));var Wr;(function(n){n.ESCAPE="escape",n.DELETE="delete",n.COPY="copy",n.CUT="cut",n.PASTE="paste",n.UNDO="undo",n.REDO="redo"})(Wr||(Wr={}));var Eg=null,eM=null;$L();var Xr={};Xr.names=Wr,Xr.registerCopy=PL,Xr.registerCut=vL,Xr.registerDefaultShortcuts=$L,Xr.registerDelete=NL,Xr.registerEscape=bL,Xr.registerPaste=DL,Xr.registerRedo=yL,Xr.registerUndo=UL;var e5=class{constructor(n,a){this.procedureModelClass=n,this.parameterModelClass=a,this.priority=D0}save(n){return n=n.getProcedureMap().getProcedures().map(a=>BL(a)),n.length?n:null}load(n,a){const g=a.getProcedureMap();for(const R of n)g.add(GL(this.procedureModelClass,this.parameterModelClass,R,a))}clear(n){n.getProcedureMap().clear()}},QT={};QT.ProcedureSerializer=e5,QT.loadParameter=kL,QT.loadProcedure=GL,QT.saveParameter=wL,QT.saveProcedure=BL;var R$=class{constructor(){this.priority=v0}save(n){const a=[];for(const g of n.getAllVariables())n={name:g.name,id:g.getId()},g.type&&(n.type=g.type),a.push(n);return a.length?a:null}load(n,a){for(const g of n)a.createVariable(g.name,g.type,g.id)}clear(n){n.getVariableMap().clear()}};ZO("variables",new R$);var I$={};I$.VariableSerializer=R$;var Lm={};Lm.load=Uy,Lm.save=Dy;var t5={blocks:Ku,exceptions:Ka,priorities:Pz,procedures:QT,registry:bf,variables:I$,workspaces:Lm},fm=class{constructor(n,a,g,R,f){this.workspace=n,this.oldHostMetrics_=this.corner_=this.vScroll=this.hScroll=null,a=a===void 0?!0:a,g=g===void 0?!0:g;const $=a&&g;a&&(this.hScroll=new ms(n,!0,$,R,f)),g&&(this.vScroll=new ms(n,!1,$,R,f)),$&&(this.corner_=Le(Ve.RECT,{height:ms.scrollbarThickness,width:ms.scrollbarThickness,class:"blocklyScrollbarBackground"}),Nt(this.corner_,n.getBubbleCanvas()))}dispose(){Ot(this.corner_),this.oldHostMetrics_=this.corner_=null,this.hScroll&&(this.hScroll.dispose(),this.hScroll=null),this.vScroll&&(this.vScroll.dispose(),this.vScroll=null)}resize(){const n=this.workspace.getMetrics();if(n){var a=!1,g=!1;if(this.oldHostMetrics_&&this.oldHostMetrics_.viewWidth===n.viewWidth&&this.oldHostMetrics_.viewHeight===n.viewHeight&&this.oldHostMetrics_.absoluteTop===n.absoluteTop&&this.oldHostMetrics_.absoluteLeft===n.absoluteLeft?(this.oldHostMetrics_&&this.oldHostMetrics_.scrollWidth===n.scrollWidth&&this.oldHostMetrics_.viewLeft===n.viewLeft&&this.oldHostMetrics_.scrollLeft===n.scrollLeft||(a=!0),this.oldHostMetrics_&&this.oldHostMetrics_.scrollHeight===n.scrollHeight&&this.oldHostMetrics_.viewTop===n.viewTop&&this.oldHostMetrics_.scrollTop===n.scrollTop||(g=!0)):g=a=!0,a||g){try{o.disable$$module$build$src$core$events$utils(),this.hScroll&&a&&this.hScroll.resize(n),this.vScroll&&g&&this.vScroll.resize(n)}finally{o.enable$$module$build$src$core$events$utils()}this.workspace.maybeFireViewportChangeEvent()}if(this.hScroll&&this.vScroll){if(!this.oldHostMetrics_||this.oldHostMetrics_.viewWidth!==n.viewWidth||this.oldHostMetrics_.absoluteLeft!==n.absoluteLeft){let R;(R=this.corner_)==null||R.setAttribute("x",String(this.vScroll.position.x))}if(!this.oldHostMetrics_||this.oldHostMetrics_.viewHeight!==n.viewHeight||this.oldHostMetrics_.absoluteTop!==n.absoluteTop){let R;(R=this.corner_)==null||R.setAttribute("y",String(this.hScroll.position.y))}}this.oldHostMetrics_=n}}canScrollHorizontally(){return!!this.hScroll}canScrollVertically(){return!!this.vScroll}setOrigin(n,a){this.hScroll&&this.hScroll.setOrigin(n,a),this.vScroll&&this.vScroll.setOrigin(n,a)}set(n,a,g){this.hScroll&&this.hScroll.set(n,!1),this.vScroll&&this.vScroll.set(a,!1),(g||g===void 0)&&(n={},this.hScroll&&(n.x=this.hScroll.getRatio_()),this.vScroll&&(n.y=this.vScroll.getRatio_()),this.workspace.setMetrics(n))}setX(n){this.hScroll&&this.hScroll.set(n,!0)}setY(n){this.vScroll&&this.vScroll.set(n,!0)}setContainerVisible(n){this.hScroll&&this.hScroll.setContainerVisible(n),this.vScroll&&this.vScroll.setContainerVisible(n)}isVisible(){let n=!1;return this.hScroll&&(n=this.hScroll.isVisible()),this.vScroll&&(n=n||this.vScroll.isVisible()),n}setVisible(n){this.hScroll&&this.hScroll.setVisibleInternal(n),this.vScroll&&this.vScroll.setVisibleInternal(n)}resizeContent(n){this.hScroll&&this.hScroll.resizeContentHorizontal(n),this.vScroll&&this.vScroll.resizeContentVertical(n)}resizeView(n){this.hScroll&&this.hScroll.resizeViewHorizontal(n),this.vScroll&&this.vScroll.resizeViewVertical(n)}},mm=class{constructor(n){this.workspace_=n}getDimensionsPx_(n){let a=0,g=0;return n&&(a=n.getWidth(),g=n.getHeight()),new Jo(a,g)}getFlyoutMetrics(n){return n=this.getDimensionsPx_(this.workspace_.getFlyout(n)),{width:n.width,height:n.height,position:this.workspace_.toolboxPosition}}getToolboxMetrics(){const n=this.getDimensionsPx_(this.workspace_.getToolbox());return{width:n.width,height:n.height,position:this.workspace_.toolboxPosition}}getSvgMetrics(){return this.workspace_.getCachedParentSvgSize()}getAbsoluteMetrics(){let n=0,a=0;const g=this.getToolboxMetrics(),R=this.getFlyoutMetrics(),f=!!this.workspace_.getToolbox();var $;const le=!(($=this.workspace_.getFlyout())!=null&&$.autoClose);$=f?g.position:R.position;const fe=$===To.TOP;return $===To.LEFT&&(f&&(n+=g.width),le&&(n+=R.width)),fe&&(f&&(a+=g.height),le&&(a+=R.height)),{top:a,left:n}}getViewMetrics(n){n=n?this.workspace_.scale:1;const a=this.getSvgMetrics(),g=this.getToolboxMetrics(),R=this.getFlyoutMetrics(),f=!!this.workspace_.getToolbox();var $;const le=!(($=this.workspace_.getFlyout())!=null&&$.autoClose);$=f?g.position:R.position;const fe=$===To.LEFT||$===To.RIGHT;return($===To.TOP||$===To.BOTTOM)&&(f&&(a.height-=g.height),le&&(a.height-=R.height)),fe&&(f&&(a.width-=g.width),le&&(a.width-=R.width)),{height:a.height/n,width:a.width/n,top:-this.workspace_.scrollY/n,left:-this.workspace_.scrollX/n}}getContentMetrics(n){n=n?1:this.workspace_.scale;const a=this.workspace_.getBlocksBoundingBox();return{height:(a.bottom-a.top)*n,width:(a.right-a.left)*n,top:a.top*n,left:a.left*n}}hasFixedEdges(){return!this.workspace_.isMovableHorizontally()||!this.workspace_.isMovableVertically()}getComputedFixedEdges_(n){if(!this.hasFixedEdges())return{};const a=this.workspace_.isMovableHorizontally(),g=this.workspace_.isMovableVertically();n=n||this.getViewMetrics(!1);const R={};return g||(R.top=n.top,R.bottom=n.top+n.height),a||(R.left=n.left,R.right=n.left+n.width),R}getPaddedContent_(n,a){const g=a.top+a.height,R=a.left+a.width,f=n.width;n=n.height;const $=f/2,le=n/2;return{top:Math.min(a.top-le,g-n),bottom:Math.max(g+le,a.top+n),left:Math.min(a.left-$,R-f),right:Math.max(R+$,a.left+f)}}getScrollMetrics(n,a,g){n=n?this.workspace_.scale:1,a=a||this.getViewMetrics(!1);var R=g||this.getContentMetrics();g=this.getComputedFixedEdges_(a),a=this.getPaddedContent_(a,R),R=g.top!==void 0?g.top:a.top;const f=g.left!==void 0?g.left:a.left;return{top:R/n,left:f/n,width:((g.right!==void 0?g.right:a.right)-f)/n,height:((g.bottom!==void 0?g.bottom:a.bottom)-R)/n}}getUiMetrics(){return{viewMetrics:this.getViewMetrics(),absoluteMetrics:this.getAbsoluteMetrics(),toolboxMetrics:this.getToolboxMetrics()}}getMetrics(){const n=this.getToolboxMetrics(),a=this.getFlyoutMetrics(!0),g=this.getSvgMetrics(),R=this.getAbsoluteMetrics(),f=this.getViewMetrics(),$=this.getContentMetrics(),le=this.getScrollMetrics(!1,f,$);return{contentHeight:$.height,contentWidth:$.width,contentTop:$.top,contentLeft:$.left,scrollHeight:le.height,scrollWidth:le.width,scrollTop:le.top,scrollLeft:le.left,viewHeight:f.height,viewWidth:f.width,viewTop:f.top,viewLeft:f.left,absoluteTop:R.top,absoluteLeft:R.left,svgHeight:g.height,svgWidth:g.width,toolboxWidth:n.width,toolboxHeight:n.height,toolboxPosition:n.position,flyoutWidth:a.width,flyoutHeight:a.height}}};_(Mt.METRICS_MANAGER,A_,mm);var S$=class extends vT{constructor(n){super(),this.isBlank=!0,this.recordUndo=!1,this.type=Ha,this.isBlank=!!n,n&&(this.workspaceId=n.id)}};_(Mt.EVENT,Ha,S$);var Cm=class extends Ur{constructor(n,a,g){super(n?n.workspace.id:void 0),this.type=Ga,n&&(this.blockId=n.id,this.isStart=a,this.blocks=g)}toJson(){const n=super.toJson();if(this.isStart===void 0)throw Error("Whether this event is the start of a drag is undefined. Either pass the value to the constructor, or call fromJson");if(this.blockId===void 0)throw Error("The block ID is undefined. Either pass a block to the constructor, or call fromJson");return n.isStart=this.isStart,n.blockId=this.blockId,n.blocks=this.blocks,n}static fromJson(n,a,g){return a=super.fromJson(n,a,g??new Cm),a.isStart=n.isStart,a.blockId=n.blockId,a.blocks=n.blocks,a}};_(Mt.EVENT,Ga,Cm);var tM={};tM.bumpIntoBounds=pT,tM.bumpIntoBoundsHandler=HL,tM.bumpTopObjectsIntoBounds=dh;var p$=class{constructor(n,a){this.dragTarget_=null,this.wouldDeleteBlock_=!1,this.dragIconData_=[],this.draggingBlock_=n,this.draggedConnectionManager_=new gn(this.draggingBlock_),this.workspace_=a,this.startXY_=this.draggingBlock_.getRelativeToSurfaceXY(),this.dragIconData_=xL(n,this.startXY_)}dispose(){this.dragIconData_.length=0,this.draggedConnectionManager_&&this.draggedConnectionManager_.dispose()}startDrag(n,a){o.getGroup$$module$build$src$core$events$utils()||o.setGroup$$module$build$src$core$events$utils(!0),this.fireDragStartEvent_(),this.draggingBlock_.bringToFront(!0),x(),this.workspace_.setResizesEnabled(!1),OT(),this.shouldDisconnect_(a)&&this.disconnectBlock_(a,n),this.draggingBlock_.setDragging(!0);let g;(g=this.workspace_.getLayerManager())==null||g.moveToDragLayer(this.draggingBlock_)}shouldDisconnect_(n){return!!(this.draggingBlock_.getParent()||n&&this.draggingBlock_.nextConnection&&this.draggingBlock_.nextConnection.targetBlock())}disconnectBlock_(n,a){this.draggingBlock_.unplug(n),n=this.pixelsToWorkspaceUnits_(a),n=ft.sum(this.startXY_,n),this.draggingBlock_.translate(n.x,n.y),qp(this.draggingBlock_),this.draggedConnectionManager_.updateAvailableConnections()}fireDragStartEvent_(){const n=new(pe(Ga))(this.draggingBlock_,!0,this.draggingBlock_.getDescendants(!1));J(n)}drag(n,a){a=this.pixelsToWorkspaceUnits_(a);var g=ft.sum(this.startXY_,a);this.draggingBlock_.moveDuringDrag(g),g=this.dragTarget_,this.dragTarget_=this.workspace_.getDragTarget(n),this.draggedConnectionManager_.update(a,this.dragTarget_),n=this.wouldDeleteBlock_,this.wouldDeleteBlock_=this.draggedConnectionManager_.wouldDeleteBlock,n!==this.wouldDeleteBlock_&&this.updateCursorDuringBlockDrag_(),this.dragTarget_!==g&&(g&&g.onDragExit(this.draggingBlock_),this.dragTarget_&&this.dragTarget_.onDragEnter(this.draggingBlock_)),this.dragTarget_&&this.dragTarget_.onDragOver(this.draggingBlock_)}endDrag(n,a){if(this.drag(n,a),this.fireDragEndEvent_(),oe(),OT(),n=null,this.dragTarget_&&this.dragTarget_.shouldPreventMove(this.draggingBlock_)||(n=this.getNewLocationAfterDrag_(a).delta),this.dragTarget_&&this.dragTarget_.onDrop(this.draggingBlock_),!this.maybeDeleteBlock_()){let g;(g=this.workspace_.getLayerManager())==null||g.moveOffDragLayer(this.draggingBlock_,Wf),this.draggingBlock_.setDragging(!1),n?this.updateBlockAfterMove_():pT(this.draggingBlock_.workspace,this.workspace_.getMetricsManager().getScrollMetrics(!0),this.draggingBlock_)}this.workspace_.setResizesEnabled(!0),o.setGroup$$module$build$src$core$events$utils(!1)}getNewLocationAfterDrag_(n){n=this.pixelsToWorkspaceUnits_(n);const a=ft.sum(this.startXY_,n);return{delta:n,newLocation:a}}maybeDeleteBlock_(){return this.wouldDeleteBlock_?(this.fireMoveEvent_(),this.draggingBlock_.dispose(!1,!0),LT.length=0,!0):!1}updateBlockAfterMove_(){this.fireMoveEvent_(),this.draggedConnectionManager_.wouldConnectBlock()?this.draggedConnectionManager_.applyConnections():this.draggingBlock_.queueRender(),this.draggingBlock_.scheduleSnapAndBump()}fireDragEndEvent_(){const n=new(pe(Ga))(this.draggingBlock_,!1,this.draggingBlock_.getDescendants(!1));J(n)}updateToolboxStyle_(n){const a=this.workspace_.getToolbox();if(a){const g=this.draggingBlock_.isDeletable()?"blocklyToolboxDelete":"blocklyToolboxGrab";n&&typeof a.removeStyle=="function"?a.removeStyle(g):n||typeof a.addStyle!="function"||a.addStyle(g)}}fireMoveEvent_(){if(!this.draggingBlock_.isDeadOrDying()){var n=new(pe(o.MOVE$$module$build$src$core$events$utils))(this.draggingBlock_);n.setReason(["drag"]),n.oldCoordinate=this.startXY_,n.recordNew(),J(n)}}updateCursorDuringBlockDrag_(){this.draggingBlock_.setDeleteStyle(this.wouldDeleteBlock_)}pixelsToWorkspaceUnits_(n){return n=new ft(n.x/this.workspace_.scale,n.y/this.workspace_.scale),this.workspace_.isMutator&&n.scale(1/this.workspace_.options.parentWorkspace.scale),n}dragIcons_(){xe("Blockly.BlockDragger.prototype.dragIcons_","v10","v11")}getInsertionMarkers(){return this.draggedConnectionManager_&&this.draggedConnectionManager_.getInsertionMarkers?this.draggedConnectionManager_.getInsertionMarkers():[]}};_(Mt.BLOCK_DRAGGER,A_,p$);var ug={};ug.Bubble=yo,ug.MiniWorkspaceBubble=B_,ug.TextBubble=om,ug.TextInputBubble=j0;var Am=class extends za{constructor(n,a,g,R){super(n),this.type=Sl,this.recordUndo=!1,n&&(this.name=a,this.oldValue=g,this.newValue=R)}toJson(){const n=super.toJson();if(!this.name)throw Error("The changed field name is undefined. Either pass a name to the constructor, or call fromJson.");return n.name=this.name,n.oldValue=this.oldValue,n.newValue=this.newValue,n}static fromJson(n,a,g){return a=super.fromJson(n,a,g??new Am),a.name=n.name,a.oldValue=n.oldValue,a.newValue=n.newValue,a}isNull(){return this.oldValue===this.newValue}run(n){var a=this.getEventWorkspace_();if(!this.blockId)throw Error("The block ID is undefined. Either pass a block to the constructor, or call fromJson");if(a=a.getBlockById(this.blockId),!a)throw Error("The associated block is undefined. Either pass a block to the constructor, or call fromJson");n=n?this.newValue:this.oldValue,(a=a.getField(this.name))?a.setValue(n):console.warn("Can't set non-existent field: "+this.name)}};_(Mt.EVENT,Sl,Am);var bm=class extends za{constructor(n){super(n),this.type=o.MOVE$$module$build$src$core$events$utils,n&&(n.isShadow()&&(this.recordUndo=!1),n=this.currentLocation_(),this.oldParentId=n.parentId,this.oldInputName=n.inputName,this.oldCoordinate=n.coordinate)}toJson(){const n=super.toJson();return n.oldParentId=this.oldParentId,n.oldInputName=this.oldInputName,this.oldCoordinate&&(n.oldCoordinate=`${Math.round(this.oldCoordinate.x)}, ${Math.round(this.oldCoordinate.y)}`),n.newParentId=this.newParentId,n.newInputName=this.newInputName,this.newCoordinate&&(n.newCoordinate=`${Math.round(this.newCoordinate.x)}, ${Math.round(this.newCoordinate.y)}`),this.reason&&(n.reason=this.reason),this.recordUndo||(n.recordUndo=this.recordUndo),n}static fromJson(n,a,g){return a=super.fromJson(n,a,g??new bm),a.oldParentId=n.oldParentId,a.oldInputName=n.oldInputName,n.oldCoordinate&&(g=n.oldCoordinate.split(","),a.oldCoordinate=new ft(Number(g[0]),Number(g[1]))),a.newParentId=n.newParentId,a.newInputName=n.newInputName,n.newCoordinate&&(g=n.newCoordinate.split(","),a.newCoordinate=new ft(Number(g[0]),Number(g[1]))),n.reason!==void 0&&(a.reason=n.reason),n.recordUndo!==void 0&&(a.recordUndo=n.recordUndo),a}recordNew(){const n=this.currentLocation_();this.newParentId=n.parentId,this.newInputName=n.inputName,this.newCoordinate=n.coordinate}setReason(n){this.reason=n}currentLocation_(){var n=this.getEventWorkspace_();if(!this.blockId)throw Error("The block ID is undefined. Either pass a block to the constructor, or call fromJson");var a=n.getBlockById(this.blockId);if(!a)throw Error("The block associated with the block move event could not be found");n={};const g=a.getParent();return g?(n.parentId=g.id,(a=g.getInputWithBlock(a))&&(n.inputName=a.name)):n.coordinate=a.getRelativeToSurfaceXY(),n}isNull(){return this.oldParentId===this.newParentId&&this.oldInputName===this.newInputName&&ft.equals(this.oldCoordinate,this.newCoordinate)}run(n){var a=this.getEventWorkspace_();if(!this.blockId)throw Error("The block ID is undefined. Either pass a block to the constructor, or call fromJson");var g=a.getBlockById(this.blockId);if(g){var R=n?this.newParentId:this.oldParentId,f=n?this.newInputName:this.oldInputName;if(n=n?this.newCoordinate:this.oldCoordinate,R){var $=a.getBlockById(R);if(!$){console.warn("Can't connect to non-existent block: "+R);return}}if(g.getParent()&&g.unplug(),n)f=g.getRelativeToSurfaceXY(),g.moveBy(n.x-f.x,n.y-f.y,this.reason);else{a=g.outputConnection,(!a||g.previousConnection&&g.previousConnection.isConnected())&&(a=g.previousConnection);let le,fe;g=(fe=a)==null?void 0:fe.type,f?(g=$.getInput(f))&&(le=g.connection):g===kt.PREVIOUS_STATEMENT&&(le=$.nextConnection),le&&a?a.connect(le):console.warn("Can't connect to non-existent input: "+f)}}else console.warn("Can't move non-existent block: "+this.blockId)}};_(Mt.EVENT,o.MOVE$$module$build$src$core$events$utils,bm);var Nm=class extends Ur{constructor(n,a,g){super(n?n.workspace.id:void 0),this.type=vr,n&&(this.blockId=n.id,this.isOpen=a,this.bubbleType=g)}toJson(){const n=super.toJson();if(this.isOpen===void 0)throw Error("Whether this event is for opening the bubble is undefined. Either pass the value to the constructor, or call fromJson");if(!this.bubbleType)throw Error("The type of bubble is undefined. Either pass the value to the constructor, or call fromJson");return n.isOpen=this.isOpen,n.bubbleType=this.bubbleType,n.blockId=this.blockId||"",n}static fromJson(n,a,g){return a=super.fromJson(n,a,g??new Nm),a.isOpen=n.isOpen,a.bubbleType=n.bubbleType,a.blockId=n.blockId,a}},Pm;(function(n){n.MUTATOR="mutator",n.COMMENT="comment",n.WARNING="warning"})(Pm||(Pm={})),_(Mt.EVENT,vr,Nm);var vl=class extends vT{constructor(n){super(),this.isBlank=!n,n&&(this.commentId=n.id,this.workspaceId=n.workspace.id,this.group=o.getGroup$$module$build$src$core$events$utils(),this.recordUndo=j())}toJson(){const n=super.toJson();if(!this.commentId)throw Error("The comment ID is undefined. Either pass a comment to the constructor, or call fromJson");return n.commentId=this.commentId,n}static fromJson(n,a,g){return a=super.fromJson(n,a,g??new vl),a.commentId=n.commentId,a}static CommentCreateDeleteHelper(n,a){var g=n.getEventWorkspace_();if(a){if(a=o.createElement$$module$build$src$core$utils$xml("xml"),!n.xml)throw Error("Ecountered a comment event without proper xml");a.appendChild(n.xml),o.domToWorkspace$$module$build$src$core$xml(a,g)}else{if(!n.commentId)throw Error("The comment ID is undefined. Either pass a comment to the constructor, or call fromJson");(g=g.getCommentById(n.commentId))?g.dispose():console.warn("Can't uncreate non-existent comment: "+n.commentId)}}},vm=class extends vl{constructor(n,a,g){super(n),this.type=PT,n&&(this.oldContents_=typeof a>"u"?"":a,this.newContents_=typeof g>"u"?"":g)}toJson(){const n=super.toJson();if(!this.oldContents_)throw Error("The old contents is undefined. Either pass a value to the constructor, or call fromJson");if(!this.newContents_)throw Error("The new contents is undefined. Either pass a value to the constructor, or call fromJson");return n.oldContents=this.oldContents_,n.newContents=this.newContents_,n}static fromJson(n,a,g){return a=super.fromJson(n,a,g??new vm),a.oldContents_=n.oldContents,a.newContents_=n.newContents,a}isNull(){return this.oldContents_===this.newContents_}run(n){var a=this.getEventWorkspace_();if(!this.commentId)throw Error("The comment ID is undefined. Either pass a comment to the constructor, or call fromJson");if(a=a.getCommentById(this.commentId)){var g=n?this.newContents_:this.oldContents_;if(!g)throw Error(n?"The new contents is undefined. Either pass a value to the constructor, or call fromJson":"The old contents is undefined. Either pass a value to the constructor, or call fromJson");a.setContent(g)}else console.warn("Can't change non-existent comment: "+this.commentId)}};_(Mt.EVENT,PT,vm);var Dm=class extends vl{constructor(n){super(n),this.type=fl,n&&(this.xml=n.toXmlWithXY())}toJson(){const n=super.toJson();if(!this.xml)throw Error("The comment XML is undefined. Either pass a comment to the constructor, or call fromJson");return n.xml=br(this.xml),n}static fromJson(n,a,g){return a=super.fromJson(n,a,g??new Dm),a.xml=o.textToDom$$module$build$src$core$utils$xml(n.xml),a}run(n){vl.CommentCreateDeleteHelper(this,n)}};_(Mt.EVENT,fl,Dm);var Um=class extends vl{constructor(n){super(n),this.type=ka,n&&(this.xml=n.toXmlWithXY())}run(n){vl.CommentCreateDeleteHelper(this,!n)}toJson(){const n=super.toJson();if(!this.xml)throw Error("The comment XML is undefined. Either pass a comment to the constructor, or call fromJson");return n.xml=br(this.xml),n}static fromJson(n,a,g){return a=super.fromJson(n,a,g??new Um),a.xml=o.textToDom$$module$build$src$core$utils$xml(n.xml),a}};_(Mt.EVENT,ka,Um);var ym=class extends vl{constructor(n){super(n),this.type=Dr,n&&(this.comment_=n,this.oldCoordinate_=n.getRelativeToSurfaceXY())}recordNew(){if(this.newCoordinate_)throw Error("Tried to record the new position of a comment on the same event twice.");if(!this.comment_)throw Error("The comment is undefined. Pass a comment to the constructor if you want to use the record functionality");this.newCoordinate_=this.comment_.getRelativeToSurfaceXY()}setOldCoordinate(n){this.oldCoordinate_=n}toJson(){const n=super.toJson();if(!this.oldCoordinate_)throw Error("The old comment position is undefined. Either pass a comment to the constructor, or call fromJson");if(!this.newCoordinate_)throw Error("The new comment position is undefined. Either call recordNew, or call fromJson");return n.oldCoordinate=`${Math.round(this.oldCoordinate_.x)}, ${Math.round(this.oldCoordinate_.y)}`,n.newCoordinate=Math.round(this.newCoordinate_.x)+","+Math.round(this.newCoordinate_.y),n}static fromJson(n,a,g){return a=super.fromJson(n,a,g??new ym),g=n.oldCoordinate.split(","),a.oldCoordinate_=new ft(Number(g[0]),Number(g[1])),g=n.newCoordinate.split(","),a.newCoordinate_=new ft(Number(g[0]),Number(g[1])),a}isNull(){return ft.equals(this.oldCoordinate_,this.newCoordinate_)}run(n){var a=this.getEventWorkspace_();if(!this.commentId)throw Error("The comment ID is undefined. Either pass a comment to the constructor, or call fromJson");if(a=a.getCommentById(this.commentId)){if(n=n?this.newCoordinate_:this.oldCoordinate_,!n)throw Error("Either oldCoordinate_ or newCoordinate_ is undefined. Either pass a comment to the constructor and call recordNew, or call fromJson");var g=a.getRelativeToSurfaceXY();a.moveBy(n.x-g.x,n.y-g.y)}else console.warn("Can't move non-existent comment: "+this.commentId)}};_(Mt.EVENT,Dr,ym);var $m=class extends Ur{constructor(n,a,g){super(g),this.type=bT,this.oldItem=n??void 0,this.newItem=a??void 0}toJson(){const n=super.toJson();return n.oldItem=this.oldItem,n.newItem=this.newItem,n}static fromJson(n,a,g){return a=super.fromJson(n,a,g??new $m),a.oldItem=n.oldItem,a.newItem=n.newItem,a}};_(Mt.EVENT,bT,$m),o.CHANGE$$module$build$src$core$events$utils,o.CREATE$$module$build$src$core$events$utils,o.DELETE$$module$build$src$core$events$utils,o.MOVE$$module$build$src$core$events$utils,o.CHANGE$$module$build$src$core$events$utils,o.CREATE$$module$build$src$core$events$utils,o.DELETE$$module$build$src$core$events$utils,o.MOVE$$module$build$src$core$events$utils,o.disable$$module$build$src$core$events$utils,o.enable$$module$build$src$core$events$utils,o.getGroup$$module$build$src$core$events$utils,o.setGroup$$module$build$src$core$events$utils;var $t={};$t.Abstract=vT,$t.BLOCK_CHANGE=o.CHANGE$$module$build$src$core$events$utils,$t.BLOCK_CREATE=o.CREATE$$module$build$src$core$events$utils,$t.BLOCK_DELETE=o.DELETE$$module$build$src$core$events$utils,$t.BLOCK_DRAG=Ga,$t.BLOCK_FIELD_INTERMEDIATE_CHANGE=Sl,$t.BLOCK_MOVE=o.MOVE$$module$build$src$core$events$utils,$t.BUBBLE_OPEN=vr,$t.BUMP_EVENTS=Ih,$t.BlockBase=za,$t.BlockChange=oc,$t.BlockCreate=Nf,$t.BlockDelete=Mm,$t.BlockDrag=Cm,$t.BlockFieldIntermediateChange=Am,$t.BlockMove=bm,$t.BubbleOpen=Nm,$t.BubbleType=Pm,$t.CHANGE=o.CHANGE$$module$build$src$core$events$utils,$t.CLICK=P_,$t.COMMENT_CHANGE=PT,$t.COMMENT_CREATE=fl,$t.COMMENT_DELETE=ka,$t.COMMENT_MOVE=Dr,$t.CREATE=o.CREATE$$module$build$src$core$events$utils,$t.Click=_f,$t.ClickTarget=lf,$t.CommentBase=vl,$t.CommentChange=vm,$t.CommentCreate=Dm,$t.CommentDelete=Um,$t.CommentMove=ym,$t.DELETE=o.DELETE$$module$build$src$core$events$utils,$t.FINISHED_LOADING=Ha,$t.FinishedLoading=S$,$t.MARKER_MOVE=CT,$t.MOVE=o.MOVE$$module$build$src$core$events$utils,$t.MarkerMove=Tm,$t.SELECTED=N_,$t.Selected=ff,$t.THEME_CHANGE=NT,$t.TOOLBOX_ITEM_SELECT=bT,$t.TRASHCAN_OPEN=AT,$t.ThemeChange=Pf,$t.ToolboxItemSelect=$m,$t.TrashcanOpen=hm,$t.UI=Rh,$t.UiBase=Ur,$t.VAR_CREATE=pl,$t.VAR_DELETE=wa,$t.VAR_RENAME=mT,$t.VIEWPORT_CHANGE=Ll,$t.VarBase=Wu,$t.VarCreate=Sf,$t.VarDelete=gm,$t.VarRename=dm,$t.ViewportChange=vf,$t.clearPendingUndo=H,$t.disable=o.disable$$module$build$src$core$events$utils,$t.disableOrphans=We,$t.enable=o.enable$$module$build$src$core$events$utils,$t.filter=re,$t.fire=J,$t.fromJson=Se,$t.get=pe,$t.getDescendantIds=ge,$t.getGroup=o.getGroup$$module$build$src$core$events$utils,$t.getRecordUndo=j,$t.isEnabled=Q,$t.setGroup=o.setGroup$$module$build$src$core$events$utils,$t.setRecordUndo=ee;var L$=class extends _g{constructor(){super(),this.GRID_UNIT=4,this.CURSOR_COLOUR="#ffa200",this.CURSOR_RADIUS=5,this.JAGGED_TEETH_WIDTH=this.JAGGED_TEETH_HEIGHT=0,this.START_HAT_HEIGHT=22,this.START_HAT_WIDTH=96,this.SHAPES={HEXAGONAL:1,ROUND:2,SQUARE:3,PUZZLE:4,NOTCH:5},this.SHAPE_IN_SHAPE_PADDING={1:{0:5*this.GRID_UNIT,1:2*this.GRID_UNIT,2:5*this.GRID_UNIT,3:5*this.GRID_UNIT},2:{0:3*this.GRID_UNIT,1:3*this.GRID_UNIT,2:1*this.GRID_UNIT,3:2*this.GRID_UNIT},3:{0:2*this.GRID_UNIT,1:2*this.GRID_UNIT,2:2*this.GRID_UNIT,3:2*this.GRID_UNIT}},this.FULL_BLOCK_FIELDS=!0,this.FIELD_TEXT_FONTWEIGHT="bold",this.FIELD_TEXT_FONTFAMILY='"Helvetica Neue", "Segoe UI", Helvetica, sans-serif',this.FIELD_COLOUR_FULL_BLOCK=this.FIELD_TEXTINPUT_BOX_SHADOW=this.FIELD_DROPDOWN_SVG_ARROW=this.FIELD_DROPDOWN_COLOURED_DIV=this.FIELD_DROPDOWN_NO_BORDER_RECT_SHADOW=!0,this.SELECTED_GLOW_COLOUR="#fff200",this.SELECTED_GLOW_SIZE=.5,this.REPLACEMENT_GLOW_COLOUR="#fff200",this.REPLACEMENT_GLOW_SIZE=2,this.selectedGlowFilterId="",this.selectedGlowFilter=null,this.replacementGlowFilterId="",this.SQUARED=this.ROUNDED=this.HEXAGONAL=this.replacementGlowFilter=null,this.SMALL_PADDING=this.GRID_UNIT,this.MEDIUM_PADDING=2*this.GRID_UNIT,this.MEDIUM_LARGE_PADDING=3*this.GRID_UNIT,this.LARGE_PADDING=4*this.GRID_UNIT,this.CORNER_RADIUS=1*this.GRID_UNIT,this.NOTCH_WIDTH=9*this.GRID_UNIT,this.NOTCH_HEIGHT=2*this.GRID_UNIT,this.STATEMENT_INPUT_NOTCH_OFFSET=this.NOTCH_OFFSET_LEFT=3*this.GRID_UNIT,this.MIN_BLOCK_WIDTH=2*this.GRID_UNIT,this.MIN_BLOCK_HEIGHT=12*this.GRID_UNIT,this.EMPTY_STATEMENT_INPUT_HEIGHT=6*this.GRID_UNIT,this.TOP_ROW_MIN_HEIGHT=this.CORNER_RADIUS,this.TOP_ROW_PRECEDES_STATEMENT_MIN_HEIGHT=this.LARGE_PADDING,this.BOTTOM_ROW_MIN_HEIGHT=this.CORNER_RADIUS,this.BOTTOM_ROW_AFTER_STATEMENT_MIN_HEIGHT=6*this.GRID_UNIT,this.STATEMENT_BOTTOM_SPACER=-this.NOTCH_HEIGHT,this.STATEMENT_INPUT_SPACER_MIN_WIDTH=40*this.GRID_UNIT,this.STATEMENT_INPUT_PADDING_LEFT=4*this.GRID_UNIT,this.EMPTY_INLINE_INPUT_PADDING=4*this.GRID_UNIT,this.EMPTY_INLINE_INPUT_HEIGHT=8*this.GRID_UNIT,this.DUMMY_INPUT_MIN_HEIGHT=8*this.GRID_UNIT,this.DUMMY_INPUT_SHADOW_MIN_HEIGHT=6*this.GRID_UNIT,this.CURSOR_WS_WIDTH=20*this.GRID_UNIT,this.FIELD_TEXT_FONTSIZE=3*this.GRID_UNIT,this.FIELD_BORDER_RECT_RADIUS=this.CORNER_RADIUS,this.FIELD_BORDER_RECT_X_PADDING=2*this.GRID_UNIT,this.FIELD_BORDER_RECT_Y_PADDING=1.625*this.GRID_UNIT,this.FIELD_BORDER_RECT_HEIGHT=8*this.GRID_UNIT,this.FIELD_DROPDOWN_BORDER_RECT_HEIGHT=8*this.GRID_UNIT,this.FIELD_DROPDOWN_SVG_ARROW_PADDING=this.FIELD_BORDER_RECT_X_PADDING,this.FIELD_COLOUR_DEFAULT_WIDTH=6*this.GRID_UNIT,this.FIELD_COLOUR_DEFAULT_HEIGHT=8*this.GRID_UNIT,this.FIELD_CHECKBOX_X_OFFSET=1*this.GRID_UNIT,this.MAX_DYNAMIC_CONNECTION_SHAPE_WIDTH=12*this.GRID_UNIT}setFontConstants_(n){super.setFontConstants_(n),this.FIELD_DROPDOWN_BORDER_RECT_HEIGHT=this.FIELD_BORDER_RECT_HEIGHT=this.FIELD_TEXT_HEIGHT+2*this.FIELD_BORDER_RECT_Y_PADDING}init(){super.init(),this.HEXAGONAL=this.makeHexagonal(),this.ROUNDED=this.makeRounded(),this.SQUARED=this.makeSquared(),this.STATEMENT_INPUT_NOTCH_OFFSET=this.NOTCH_OFFSET_LEFT+this.INSIDE_CORNERS.rightWidth}setDynamicProperties_(n){super.setDynamicProperties_(n),this.SELECTED_GLOW_COLOUR=n.getComponentStyle("selectedGlowColour")||this.SELECTED_GLOW_COLOUR;const a=Number(n.getComponentStyle("selectedGlowSize"));this.SELECTED_GLOW_SIZE=a&&!isNaN(a)?a:this.SELECTED_GLOW_SIZE,this.REPLACEMENT_GLOW_COLOUR=n.getComponentStyle("replacementGlowColour")||this.REPLACEMENT_GLOW_COLOUR,this.REPLACEMENT_GLOW_SIZE=(n=Number(n.getComponentStyle("replacementGlowSize")))&&!isNaN(n)?n:this.REPLACEMENT_GLOW_SIZE}dispose(){super.dispose(),this.selectedGlowFilter&&Ot(this.selectedGlowFilter),this.replacementGlowFilter&&Ot(this.replacementGlowFilter)}makeStartHat(){const n=this.START_HAT_HEIGHT,a=this.START_HAT_WIDTH,g=ki("c",[Wt(25,-n),Wt(71,-n),Wt(a,0)]);return{height:n,width:a,path:g}}makeHexagonal(){function n(g,R,f){var $=g/2;return $=$>a?a:$,f=f?-1:1,g=(R?-1:1)*g/2,Pr(-f*$,g)+Pr(f*$,g)}const a=this.MAX_DYNAMIC_CONNECTION_SHAPE_WIDTH;return{type:this.SHAPES.HEXAGONAL,isDynamic:!0,width(g){return g/=2,g>a?a:g},height(g){return g},connectionOffsetY(g){return g/2},connectionOffsetX(g){return-g},pathDown(g){return n(g,!1,!1)},pathUp(g){return n(g,!0,!1)},pathRightDown(g){return n(g,!1,!0)},pathRightUp(g){return n(g,!1,!0)}}}makeRounded(){function n(R,f,$){const le=R>g?R-g:0;return R=(R>g?g:R)/2,fs("a","0 0,1",R,Wt((f?-1:1)*R,(f?-1:1)*R))+Ut("v",($?1:-1)*le)+fs("a","0 0,1",R,Wt((f?1:-1)*R,(f?-1:1)*R))}const a=this.MAX_DYNAMIC_CONNECTION_SHAPE_WIDTH,g=2*a;return{type:this.SHAPES.ROUND,isDynamic:!0,width(R){return R/=2,R>a?a:R},height(R){return R},connectionOffsetY(R){return R/2},connectionOffsetX(R){return-R},pathDown(R){return n(R,!1,!1)},pathUp(R){return n(R,!0,!1)},pathRightDown(R){return n(R,!1,!0)},pathRightUp(R){return n(R,!1,!0)}}}makeSquared(){function n(g,R,f){return g-=2*a,fs("a","0 0,1",a,Wt((R?-1:1)*a,(R?-1:1)*a))+Ut("v",(f?1:-1)*g)+fs("a","0 0,1",a,Wt((R?1:-1)*a,(R?-1:1)*a))}const a=this.CORNER_RADIUS;return{type:this.SHAPES.SQUARE,isDynamic:!0,width(g){return a},height(g){return g},connectionOffsetY(g){return g/2},connectionOffsetX(g){return-g},pathDown(g){return n(g,!1,!1)},pathUp(g){return n(g,!0,!1)},pathRightDown(g){return n(g,!1,!0)},pathRightUp(g){return n(g,!1,!0)}}}shapeFor(n){let a=n.getCheck();switch(!a&&n.targetConnection&&(a=n.targetConnection.getCheck()),n.type){case kt.INPUT_VALUE:case kt.OUTPUT_VALUE:if(n=n.getSourceBlock().getOutputShape(),n!==null)switch(n){case this.SHAPES.HEXAGONAL:return this.HEXAGONAL;case this.SHAPES.ROUND:return this.ROUNDED;case this.SHAPES.SQUARE:return this.SQUARED}return a&&a.indexOf("Boolean")!==-1?this.HEXAGONAL:a&&a.indexOf("Number")!==-1?this.ROUNDED:(a&&a.indexOf("String"),this.ROUNDED);case kt.PREVIOUS_STATEMENT:case kt.NEXT_STATEMENT:return this.NOTCH;default:throw Error("Unknown type")}}makeNotch(){function n(Pt){return ki("c",[Wt(Pt*f/2,0),Wt(Pt*f*3/4,le/2),Wt(Pt*f,le)])+IT([Wt(Pt*f,$)])+ki("c",[Wt(Pt*f/4,le/2),Wt(Pt*f/2,le),Wt(Pt*f,le)])+Ut("h",Pt*R)+ki("c",[Wt(Pt*f/2,0),Wt(Pt*f*3/4,-(le/2)),Wt(Pt*f,-le)])+IT([Wt(Pt*f,-$)])+ki("c",[Wt(Pt*f/4,-(le/2)),Wt(Pt*f/2,-le),Wt(Pt*f,-le)])}const a=this.NOTCH_WIDTH,g=this.NOTCH_HEIGHT,R=a/3,f=R/3,$=g/2,le=$/2,fe=n(1),it=n(-1);return{type:this.SHAPES.NOTCH,width:a,height:g,pathLeft:fe,pathRight:it}}makeInsideCorners(){const n=this.CORNER_RADIUS,a=fs("a","0 0,0",n,Wt(-n,n)),g=fs("a","0 0,1",n,Wt(-n,n)),R=fs("a","0 0,0",n,Wt(n,n)),f=fs("a","0 0,1",n,Wt(n,n));return{width:n,height:n,pathTop:a,pathBottom:R,rightWidth:n,rightHeight:n,pathTopRight:g,pathBottomRight:f}}generateSecondaryColour_(n){return Ba("#000",n,.15)||n}generateTertiaryColour_(n){return Ba("#000",n,.25)||n}createDom(n,a,g){super.createDom(n,a,g),n=Le(Ve.DEFS,{},n),a=Le(Ve.FILTER,{id:"blocklySelectedGlowFilter"+this.randomIdentifier,height:"160%",width:"180%",y:"-30%",x:"-40%"},n),Le(Ve.FEGAUSSIANBLUR,{in:"SourceGraphic",stdDeviation:this.SELECTED_GLOW_SIZE},a),g=Le(Ve.FECOMPONENTTRANSFER,{result:"outBlur"},a),Le(Ve.FEFUNCA,{type:"table",tableValues:"0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1"},g),Le(Ve.FEFLOOD,{"flood-color":this.SELECTED_GLOW_COLOUR,"flood-opacity":1,result:"outColor"},a),Le(Ve.FECOMPOSITE,{in:"outColor",in2:"outBlur",operator:"in",result:"outGlow"},a),this.selectedGlowFilterId=a.id,this.selectedGlowFilter=a,n=Le(Ve.FILTER,{id:"blocklyReplacementGlowFilter"+this.randomIdentifier,height:"160%",width:"180%",y:"-30%",x:"-40%"},n),Le(Ve.FEGAUSSIANBLUR,{in:"SourceGraphic",stdDeviation:this.REPLACEMENT_GLOW_SIZE},n),a=Le(Ve.FECOMPONENTTRANSFER,{result:"outBlur"},n),Le(Ve.FEFUNCA,{type:"table",tableValues:"0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1"},a),Le(Ve.FEFLOOD,{"flood-color":this.REPLACEMENT_GLOW_COLOUR,"flood-opacity":1,result:"outColor"},n),Le(Ve.FECOMPOSITE,{in:"outColor",in2:"outBlur",operator:"in",result:"outGlow"},n),Le(Ve.FECOMPOSITE,{in:"SourceGraphic",in2:"outGlow",operator:"over"},n),this.replacementGlowFilterId=n.id,this.replacementGlowFilter=n}getCSS_(n){return[`${n} .blocklyText,`,`${n} .blocklyFlyoutLabelText {`,`font: ${this.FIELD_TEXT_FONTWEIGHT} ${this.FIELD_TEXT_FONTSIZE}pt ${this.FIELD_TEXT_FONTFAMILY};`,"}",`${n} .blocklyText {`,"fill: #fff;","}",`${n} .blocklyNonEditableText>rect:not(.blocklyDropdownRect),`,`${n} .blocklyEditableText>rect:not(.blocklyDropdownRect) {`,`fill: ${this.FIELD_BORDER_RECT_COLOUR};`,"}",`${n} .blocklyNonEditableText>text,`,`${n} .blocklyEditableText>text,`,`${n} .blocklyNonEditableText>g>text,`,`${n} .blocklyEditableText>g>text {`,"fill: #575E75;","}",`${n} .blocklyFlyoutLabelText {`,"fill: #575E75;","}",`${n} .blocklyText.blocklyBubbleText {`,"fill: #575E75;","}",`${n} .blocklyDraggable:not(.blocklyDisabled)`," .blocklyEditableText:not(.editing):hover>rect,",`${n} .blocklyDraggable:not(.blocklyDisabled)`," .blocklyEditableText:not(.editing):hover>.blocklyPath {","stroke: #fff;","stroke-width: 2;","}",`${n} .blocklyHtmlInput {`,`font-family: ${this.FIELD_TEXT_FONTFAMILY};`,`font-weight: ${this.FIELD_TEXT_FONTWEIGHT};`,"color: #575E75;","}",`${n} .blocklyDropdownText {`,"fill: #fff !important;","}",`${n}.blocklyWidgetDiv .goog-menuitem,`,`${n}.blocklyDropDownDiv .goog-menuitem {`,`font-family: ${this.FIELD_TEXT_FONTFAMILY};`,"}",`${n}.blocklyDropDownDiv .goog-menuitem-content {`,"color: #fff;","}",`${n} .blocklyHighlightedConnectionPath {`,`stroke: ${this.SELECTED_GLOW_COLOUR};`,"}",`${n} .blocklyDisabled > .blocklyOutlinePath {`,`fill: url(#blocklyDisabledPattern${this.randomIdentifier})`,"}",`${n} .blocklyInsertionMarker>.blocklyPath {`,`fill-opacity: ${this.INSERTION_MARKER_OPACITY};`,"stroke: none;","}"]}},f$=class extends lg{constructor(n,a){super(n,a)}draw(){const n=this.block_.pathObject;n.beginDrawing(),this.drawOutline_(),this.drawInternals_(),n.setPath(this.outlinePath_+`
- `+this.inlinePath_),this.info_.RTL&&n.flipRTL(),this.recordSizeOnBlock_(),this.info_.outputConnection&&(n.outputShapeType=this.info_.outputConnection.shape.type),n.endDrawing()}drawOutline_(){this.info_.outputConnection&&this.info_.outputConnection.isDynamicShape&&!this.info_.hasStatementInput&&!this.info_.bottomRow.hasNextConnection?(this.drawFlatTop_(),this.drawRightDynamicConnection_(),this.drawFlatBottom_(),this.drawLeftDynamicConnection_()):super.drawOutline_()}drawLeft_(){this.info_.outputConnection&&this.info_.outputConnection.isDynamicShape?this.drawLeftDynamicConnection_():super.drawLeft_()}drawRightSideRow_(n){if(!(0>=n.height)){if(we.isSpacer(n)){const R=n.precedesStatement;var a=n.followsStatement;if(R||a){const f=this.constants_.INSIDE_CORNERS;var g=f.rightHeight;g=n.height-(R?g:0),a=a?f.pathBottomRight:"",n=0<g?Ut("V",n.yPos+g):"",this.outlinePath_+=a+n+(R?f.pathTopRight:"");return}}this.outlinePath_+=Ut("V",n.yPos+n.height)}}drawRightDynamicConnection_(){if(!this.info_.outputConnection)throw Error("Cannot draw the output connection of a block that doesn't have one");this.outlinePath_+=this.info_.outputConnection.shape.pathRightDown(this.info_.outputConnection.height)}drawLeftDynamicConnection_(){if(!this.info_.outputConnection)throw Error("Cannot draw the output connection of a block that doesn't have one");this.positionOutputConnection_(),this.outlinePath_+=this.info_.outputConnection.shape.pathUp(this.info_.outputConnection.height),this.outlinePath_+="z"}drawFlatTop_(){const n=this.info_.topRow;this.positionPreviousConnection_(),this.outlinePath_+=ns(n.xPos,this.info_.startY),this.outlinePath_+=Ut("h",n.width)}drawFlatBottom_(){const n=this.info_.bottomRow;this.positionNextConnection_(),this.outlinePath_+=Ut("V",n.baseline),this.outlinePath_+=Ut("h",-n.width)}drawInlineInput_(n){this.positionInlineInputConnection_(n);const a=n.input.name;if(!n.connectedBlock&&!this.info_.isInsertionMarker){var g=n.width-2*n.connectionWidth;n=ti(n.xPos+n.connectionWidth,n.centerline-n.height/2)+Ut("h",g)+n.shape.pathRightDown(n.height)+Ut("h",-g)+n.shape.pathUp(n.height)+"z",this.block_.pathObject.setOutlinePath(a,n)}}drawStatementInput_(n){var a=n.getLastInput();const g=a.xPos+a.notchOffset+a.shape.width,R=this.constants_.INSIDE_CORNERS,f=a.shape.pathRight+Ut("h",-(a.notchOffset-R.width))+R.pathTop,$=n.height-2*R.height;a=R.pathBottom+Ut("h",a.notchOffset-R.width)+(a.connectedBottomNextConnection?"":a.shape.pathLeft),this.outlinePath_+=Ut("H",g)+f+Ut("v",$)+a+Ut("H",n.xPos+n.width),this.positionStatementInputConnection_(n)}},rc=class extends Io{constructor(n,a,g,R,f,$,le){if(super(Io.SKIP_SETUP),this.imageElement=this.clickHandler=null,this.flipRtl=this.isDirty_=this.EDITABLE=!1,this.altText="",g=Number(Ms(g)),a=Number(Ms(a)),isNaN(g)||isNaN(a))throw Error("Height and width values of an image field must cast to numbers.");if(0>=g||0>=a)throw Error("Height and width values of an image field must be greater than 0.");this.size_=new Jo(a,g+rc.Y_PADDING),this.imageHeight=g,typeof f=="function"&&(this.clickHandler=f),n!==Io.SKIP_SETUP&&(le?this.configure_(le):(this.flipRtl=!!$,this.altText=Ms(R)||""),this.setValue(Ms(n)))}configure_(n){super.configure_(n),n.flipRtl&&(this.flipRtl=n.flipRtl),n.alt&&(this.altText=Ms(n.alt))}initView(){this.imageElement=Le(Ve.IMAGE,{height:this.imageHeight+"px",width:this.size_.width+"px",alt:this.altText},this.fieldGroup_),this.imageElement.setAttributeNS(an,"xlink:href",this.value_),this.clickHandler&&(this.imageElement.style.cursor="pointer")}updateSize_(){}doClassValidation_(n){return typeof n!="string"?null:n}doValueUpdate_(n){this.value_=n,this.imageElement&&this.imageElement.setAttributeNS(an,"xlink:href",this.value_)}getFlipRtl(){return this.flipRtl}setAlt(n){n!==this.altText&&(this.altText=n||"",this.imageElement&&this.imageElement.setAttribute("alt",this.altText))}showEditor_(){this.clickHandler&&this.clickHandler(this)}setOnClickHandler(n){this.clickHandler=n}getText_(){return this.altText}static fromJson(n){if(!n.src||!n.width||!n.height)throw Error("src, width, and height values for an image field arerequired. The width and height must be non-zero.");return new this(n.src,n.width,n.height,void 0,void 0,void 0,n)}};rc.Y_PADDING=1,ln("field_image",rc),rc.prototype.DEFAULT_VALUE="";var gg=class extends Io{constructor(n,a,g){super(Io.SKIP_SETUP),this.spellcheck_=!0,this.htmlInput_=null,this.isTextValid_=this.isBeingEdited_=!1,this.onKeyInputWrapper_=this.onKeyDownWrapper_=this.valueWhenEditorWasOpened_=null,this.fullBlockClickTarget_=!1,this.workspace_=null,this.SERIALIZABLE=!0,this.CURSOR="text",n!==Io.SKIP_SETUP&&(g&&this.configure_(g),this.setValue(n),a&&this.setValidator(a))}configure_(n){super.configure_(n),n.spellcheck!==void 0&&(this.spellcheck_=n.spellcheck)}initView(){if(!this.getSourceBlock())throw new jo;super.initView(),this.isFullBlockField()&&(this.clickTarget_=this.sourceBlock_.getSvgRoot())}isFullBlockField(){const n=this.getSourceBlock();if(!n)throw new jo;let a;return this.fullBlockClickTarget_=!((a=this.getConstants())==null||!a.FULL_BLOCK_FIELDS)&&n.isSimpleReporter()}doValueInvalid_(n){this.isBeingEdited_&&(this.isDirty_=!0,this.isTextValid_=!1,n=this.value_,this.value_=this.htmlInput_.getAttribute("data-untyped-default-value"),this.sourceBlock_&&Q()&&J(new(pe(o.CHANGE$$module$build$src$core$events$utils))(this.sourceBlock_,"field",this.name||null,n,this.value_)))}doValueUpdate_(n){this.isTextValid_=this.isDirty_=!0,this.value_=n}applyColour(){const n=this.getSourceBlock();if(!n)throw new jo;this.getConstants().FULL_BLOCK_FIELDS&&this.fieldGroup_&&(!this.isFullBlockField()&&this.borderRect_?(this.borderRect_.style.display="block",this.borderRect_.setAttribute("stroke",n.style.colourTertiary)):(this.borderRect_.style.display="none",n.pathObject.svgPath.setAttribute("fill",this.getConstants().FIELD_BORDER_RECT_COLOUR)))}getSize(){let n;return(n=this.getConstants())!=null&&n.FULL_BLOCK_FIELDS&&(this.render_(),this.isDirty_=!1),super.getSize()}onLocationChange(){this.isBeingEdited_&&this.resizeEditor_()}render_(){if(super.render_(),this.isBeingEdited_){var n=this.htmlInput_;this.isTextValid_?(Je(n,"blocklyInvalidInput"),is(n,es.INVALID,!1)):(je(n,"blocklyInvalidInput"),is(n,es.INVALID,!0))}if(n=this.getSourceBlock(),!n)throw new jo;this.getConstants().FULL_BLOCK_FIELDS&&n.applyColour()}setSpellcheck(n){n!==this.spellcheck_&&(this.spellcheck_=n,this.htmlInput_&&this.htmlInput_.setAttribute("spellcheck",this.spellcheck_))}showEditor_(n,a=!1){this.workspace_=this.sourceBlock_.workspace,!a&&this.workspace_.options.modalInputs&&(uf||Ch||DT)?this.showPromptEditor_():this.showInlineEditor_(a)}showPromptEditor_(){HO(o.Msg$$module$build$src$core$msg.CHANGE_VALUE_TITLE,this.getText(),n=>{n!==null&&this.setValue(this.getValueFromEditorText_(n)),this.onFinishEditing_(this.value_)})}showInlineEditor_(n){const a=this.getSourceBlock();if(!a)throw new jo;jO(this,a.RTL,this.widgetDispose_.bind(this)),this.htmlInput_=this.widgetCreate_(),this.isBeingEdited_=!0,this.valueWhenEditorWasOpened_=this.value_,n||(this.htmlInput_.focus({preventScroll:!0}),this.htmlInput_.select())}widgetCreate_(){var n=this.getSourceBlock();if(!n)throw new jo;o.setGroup$$module$build$src$core$events$utils(!0);const a=$a();var g=this.getClickTarget_();if(!g)throw Error("A click target has not been set.");je(g,"editing"),g=document.createElement("input"),g.className="blocklyHtmlInput",g.setAttribute("spellcheck",this.spellcheck_);const R=this.workspace_.getScale();var f=this.getConstants().FIELD_TEXT_FONTSIZE*R+"pt";return a.style.fontSize=f,g.style.fontSize=f,f=gg.BORDERRADIUS*R+"px",this.isFullBlockField()&&(f=this.getScaledBBox(),f=(f.bottom-f.top)/2+"px",n=n.getParent()?n.getParent().style.colourTertiary:this.sourceBlock_.style.colourTertiary,g.style.border=1*R+"px solid "+n,a.style.borderRadius=f,a.style.transition="box-shadow 0.25s ease 0s",this.getConstants().FIELD_TEXTINPUT_BOX_SHADOW&&(a.style.boxShadow="rgba(255, 255, 255, 0.3) 0 0 0 "+4*R+"px")),g.style.borderRadius=f,a.appendChild(g),g.value=g.defaultValue=this.getEditorText_(this.value_),g.setAttribute("data-untyped-default-value",String(this.value_)),this.resizeEditor_(),this.bindInputEvents_(g),g}widgetDispose_(){this.isBeingEdited_=!1,this.isTextValid_=!0,this.forceRerender(),this.onFinishEditing_(this.value_),this.sourceBlock_&&Q()&&this.valueWhenEditorWasOpened_!==null&&this.valueWhenEditorWasOpened_!==this.value_&&(J(new(pe(o.CHANGE$$module$build$src$core$events$utils))(this.sourceBlock_,"field",this.name||null,this.valueWhenEditorWasOpened_,this.value_)),this.valueWhenEditorWasOpened_=null),o.setGroup$$module$build$src$core$events$utils(!1),this.unbindInputEvents_();var n=$a().style;if(n.width="auto",n.height="auto",n.fontSize="",n.transition="",n.boxShadow="",this.htmlInput_=null,n=this.getClickTarget_(),!n)throw Error("A click target has not been set.");Je(n,"editing")}onFinishEditing_(n){}bindInputEvents_(n){this.onKeyDownWrapper_=ve(n,"keydown",this,this.onHtmlInputKeyDown_),this.onKeyInputWrapper_=ve(n,"input",this,this.onHtmlInputChange_)}unbindInputEvents_(){this.onKeyDownWrapper_&&(Re(this.onKeyDownWrapper_),this.onKeyDownWrapper_=null),this.onKeyInputWrapper_&&(Re(this.onKeyInputWrapper_),this.onKeyInputWrapper_=null)}onHtmlInputKeyDown_(n){n.key==="Enter"?(Nn(),er()):n.key==="Escape"?(this.setValue(this.htmlInput_.getAttribute("data-untyped-default-value")),Nn(),er()):n.key==="Tab"&&(Nn(),er(),this.sourceBlock_.tab(this,!n.shiftKey),n.preventDefault())}onHtmlInputChange_(n){n=this.value_,this.setValue(this.getValueFromEditorText_(this.htmlInput_.value),!1),this.sourceBlock_&&Q()&&this.value_!==n&&J(new(pe(Sl))(this.sourceBlock_,this.name||null,n,this.value_))}setEditorValue_(n,a=!0){this.isDirty_=!0,this.isBeingEdited_&&(this.htmlInput_.value=this.getEditorText_(n)),this.setValue(n,a)}resizeEditor_(){var n=this.getSourceBlock();if(!n)throw new jo;const a=$a(),g=this.getScaledBBox();a.style.width=g.right-g.left+"px",a.style.height=g.bottom-g.top+"px",n=new ft(n.RTL?g.right-a.offsetWidth:g.left,g.top),a.style.left=n.x+"px",a.style.top=n.y+"px"}repositionForWindowResize(){const n=this.getSourceBlock();return n instanceof Vr?(pT(this.workspace_,this.workspace_.getMetricsManager().getViewMetrics(!0),n)||this.resizeEditor_(),!0):!1}isTabNavigable(){return!0}getText_(){return this.isBeingEdited_&&this.htmlInput_?this.htmlInput_.value:null}getEditorText_(n){return`${n}`}getValueFromEditorText_(n){return n}};gg.BORDERRADIUS=4;var JT=class extends gg{constructor(n,a,g){super(n,a,g)}doClassValidation_(n){return n===void 0?null:`${n}`}static fromJson(n){return new this(Ms(n.text),void 0,n)}};ln("field_input",JT),JT.prototype.DEFAULT_VALUE="";var m$=class extends nm{constructor(n){super(n)}endsWithElemSpacer(){return!1}hasLeftSquareCorner(n){return!!n.outputConnection}hasRightSquareCorner(n){return!!n.outputConnection&&!n.statementInputCount&&!n.nextConnection}},oM=class extends ig{constructor(n,a){if(super(n,a),this.connectedBottomNextConnection=!1,this.connectedBlock){for(n=this.connectedBlock;a=n.getNextBlock();)n=a;n.nextConnection||(this.height=this.connectedBlockHeight,this.connectedBottomNextConnection=!0)}}},C$=class extends Hr{constructor(n){super(n),this.width=this.height=0,this.type|=we.getType("RIGHT_CONNECTION")}},A$=class extends cm{constructor(n){super(n)}endsWithElemSpacer(){return!1}hasLeftSquareCorner(n){const a=(n.hat?n.hat==="cap":this.constants_.ADD_START_HATS)&&!n.outputConnection&&!n.previousConnection;return!!n.outputConnection||a}hasRightSquareCorner(n){return!!n.outputConnection&&!n.statementInputCount&&!n.nextConnection}},b$=class extends KT{constructor(n,a){super(n,a),this.isInline=!0,this.renderer_=n,this.constants_=this.renderer_.getConstants(),this.topRow=new A$(this.constants_),this.bottomRow=new m$(this.constants_),this.isMultiRow=!a.getInputsInline()||a.isCollapsed(),this.hasStatementInput=0<a.statementInputCount,this.rightSide=this.outputConnection?new C$(this.constants_):null,this.rightAlignedDummyInputs=new WeakMap}getRenderer(){return this.renderer_}measure(){this.createRows_(),this.addElemSpacing_(),this.addRowSpacing_(),this.adjustXPosition_(),this.computeBounds_(),this.alignRowElements_(),this.finalize_()}shouldStartNewRow_(n,a){return a?a instanceof G_||n instanceof un||a instanceof un?!0:n instanceof o.ValueInput$$module$build$src$core$inputs$value_input||n instanceof Fr||n instanceof G_?!this.isInline||this.isMultiRow:!1:!1}getDesiredRowWidth_(n){return n.hasStatement?this.width-this.startX-(this.constants_.INSIDE_CORNERS.rightWidth||0):super.getDesiredRowWidth_(n)}getInRowSpacing_(n,a){return n&&a||!this.outputConnection||!this.outputConnection.isDynamicShape||this.hasStatementInput||this.bottomRow.hasNextConnection?!n&&a&&we.isStatementInput(a)?this.constants_.STATEMENT_INPUT_PADDING_LEFT:n&&we.isLeftRoundedCorner(n)&&a&&(we.isPreviousConnection(a)||we.isNextConnection(a))?a.notchOffset-this.constants_.CORNER_RADIUS:n&&we.isLeftSquareCorner(n)&&a&&we.isHat(a)?this.constants_.NO_PADDING:this.constants_.MEDIUM_PADDING:this.constants_.NO_PADDING}getSpacerRowHeight_(n,a){if(we.isTopRow(n)&&we.isBottomRow(a))return this.constants_.EMPTY_BLOCK_SPACER_HEIGHT;const g=we.isInputRow(n)&&n.hasStatement,R=we.isInputRow(a)&&a.hasStatement;return R||g?(n=Math.max(this.constants_.NOTCH_HEIGHT,this.constants_.INSIDE_CORNERS.rightHeight||0),R&&g?Math.max(n,this.constants_.DUMMY_INPUT_MIN_HEIGHT):n):we.isTopRow(n)?n.hasPreviousConnection||this.outputConnection&&!this.hasStatementInput?this.constants_.NO_PADDING:Math.abs(this.constants_.NOTCH_HEIGHT-this.constants_.CORNER_RADIUS):we.isBottomRow(a)?this.outputConnection?!a.hasNextConnection&&this.hasStatementInput?Math.abs(this.constants_.NOTCH_HEIGHT-this.constants_.CORNER_RADIUS):this.constants_.NO_PADDING:Math.max(this.topRow.minHeight,Math.max(this.constants_.NOTCH_HEIGHT,this.constants_.CORNER_RADIUS))-this.constants_.CORNER_RADIUS:this.constants_.MEDIUM_PADDING}getSpacerRowWidth_(n,a){const g=this.width-this.startX;return we.isInputRow(n)&&n.hasStatement||we.isInputRow(a)&&a.hasStatement?Math.max(g,this.constants_.STATEMENT_INPUT_SPACER_MIN_WIDTH):g}getElemCenterline_(n,a){if(n.hasStatement&&!we.isSpacer(a)&&!we.isStatementInput(a))return n.yPos+this.constants_.EMPTY_STATEMENT_INPUT_HEIGHT/2;if(we.isInlineInput(a)&&a instanceof Pl){const g=a.connectedBlock;if(g&&g.outputConnection&&g.nextConnection)return n.yPos+g.height/2}return super.getElemCenterline_(n,a)}addInput_(n,a){if((n instanceof Fr||n instanceof G_)&&a.hasDummyInput&&a.align===o.Align$$module$build$src$core$inputs$align.LEFT&&n.align===o.Align$$module$build$src$core$inputs$align.RIGHT)this.rightAlignedDummyInputs.set(a,n);else if(n instanceof un){a.elements.push(new oM(this.constants_,n)),a.hasStatement=!0,a.align===null&&(a.align=n.align);return}super.addInput_(n,a)}addAlignmentPadding_(n,a){if(this.rightAlignedDummyInputs.get(n)){let g;for(let R=0;R<n.elements.length;R++){const f=n.elements[R];if(we.isSpacer(f)&&(g=f),we.isField(f)&&f instanceof YT&&f.parentInput===this.rightAlignedDummyInputs.get(n))break}if(g){g.width+=a,n.width+=a;return}}super.addAlignmentPadding_(n,a)}adjustXPosition_(){const n=this.constants_.NOTCH_OFFSET_LEFT+this.constants_.NOTCH_WIDTH;let a=n;for(let f=2;f<this.rows.length-1;f+=2){var g=this.rows[f-1];const $=this.rows[f];var R=this.rows[f+1];if(g=f===2?!!this.topRow.hasPreviousConnection:!!g.followsStatement,R=f+2>=this.rows.length-1?!!this.bottomRow.hasNextConnection:!!R.precedesStatement,we.isInputRow($)&&$.hasStatement){$.measure();let le,fe;a=$.width-((fe=(le=$.getLastInput())==null?void 0:le.width)!=null?fe:0)+n}else if(g&&(f===2||R)&&we.isInputRow($)&&!$.hasStatement){R=$.xPos,g=null;for(let le=0;le<$.elements.length;le++){const fe=$.elements[le];we.isSpacer(fe)&&(g=fe),g&&(we.isField(fe)||we.isInput(fe))&&R<a&&!(we.isField(fe)&&fe instanceof YT&&(fe.field instanceof ic||fe.field instanceof rc))&&(g.width+=a-R),R+=fe.width}}}}finalizeOutputConnection_(){if(this.outputConnection&&this.outputConnection.isDynamicShape){var n=this.outputConnection.shape;if("isDynamic"in n&&n.isDynamic){for(var a=0,g=0;g<this.rows.length;g++){const R=this.rows[g];R.yPos=a,a+=R.height}this.height=a,g=this.bottomRow.hasNextConnection?this.height-this.bottomRow.descenderHeight:this.height,a=n.height(g),g=n.width(g),this.outputConnection.height=a,this.outputConnection.width=g,this.outputConnection.startX=g,this.outputConnection.connectionOffsetY=n.connectionOffsetY(a),this.outputConnection.connectionOffsetX=n.connectionOffsetX(g),n=0,this.hasStatementInput||this.bottomRow.hasNextConnection||(n=g,this.rightSide.height=a,this.rightSide.width=n,this.rightSide.centerline=a/2,this.rightSide.xPos=this.width+n),this.startX=g,this.width+=g+n,this.widthWithChildren+=g+n}}}finalizeHorizontalAlignment_(){if(this.outputConnection&&!this.hasStatementInput&&!this.bottomRow.hasNextConnection){for(var n=0,a=0;a<this.rows.length;a++){var g=this.rows[a];if(!we.isInputRow(g))continue;n=g.elements[g.elements.length-2];let R=this.getNegativeSpacing_(g.elements[1]),f=this.getNegativeSpacing_(n);n=R+f;const $=this.constants_.MIN_BLOCK_WIDTH+2*this.outputConnection.width;this.width-n<$&&(n=this.width-$,R=n/2,f=n/2),g.elements.unshift(new En(this.constants_,-R)),g.elements.push(new En(this.constants_,-f))}if(n)for(this.width-=n,this.widthWithChildren-=n,this.rightSide.xPos-=n,a=0;a<this.rows.length;a++)g=this.rows[a],we.isTopOrBottomRow(g)&&(g.elements[1].width-=n),g.width-=n,g.widthWithConnectedBlocks-=n}}getNegativeSpacing_(n){if(!n||!this.outputConnection)return 0;const a=this.outputConnection.width;var g=this.outputConnection.shape.type;const R=this.constants_;if(1<this.inputRows.length)switch(g){case R.SHAPES.ROUND:return g=this.constants_.MAX_DYNAMIC_CONNECTION_SHAPE_WIDTH,g=this.height/2>g?g:this.height/2,a-g*(1-Math.sin(Math.acos((g-this.constants_.SMALL_PADDING)/g)));default:return 0}if(we.isInlineInput(n)&&n instanceof Pl){const f=n.connectedBlock;return n=f?f.pathObject.outputShapeType:n.shape.type,n==null||f&&f.outputConnection&&(f.statementInputCount||f.nextConnection)||g===R.SHAPES.HEXAGONAL&&g!==n?0:a-this.constants_.SHAPE_IN_SHAPE_PADDING[g][n]}return we.isField(n)&&n instanceof YT?g===R.SHAPES.ROUND&&n.field instanceof JT?a-2.75*R.GRID_UNIT:a-this.constants_.SHAPE_IN_SHAPE_PADDING[g][0]:we.isIcon(n)?this.constants_.SMALL_PADDING:0}finalizeVerticalAlignment_(){if(!this.outputConnection)for(let R=2;R<this.rows.length-1;R+=2){const f=this.rows[R-1],$=this.rows[R],le=this.rows[R+1];var n=R===2,a=R+2>=this.rows.length-1?!!this.bottomRow.hasNextConnection:!!le.precedesStatement;if(n?this.topRow.hasPreviousConnection:f.followsStatement){var g=$.elements[1];if(g=$.elements.length===3&&g instanceof YT&&(g.field instanceof ic||g.field instanceof rc),!n&&g)f.height-=this.constants_.SMALL_PADDING,le.height-=this.constants_.SMALL_PADDING,$.height-=this.constants_.MEDIUM_PADDING;else if(!n&&!a)f.height+=this.constants_.SMALL_PADDING;else if(a){for(n=!1,a=0;a<$.elements.length;a++)if(g=$.elements[a],g instanceof Pl&&we.isInlineInput(g)&&g.connectedBlock&&!g.connectedBlock.isShadow()&&40<=g.connectedBlock.getHeightWidth().height){n=!0;break}n&&(f.height-=this.constants_.SMALL_PADDING,le.height-=this.constants_.SMALL_PADDING)}}}}finalize_(){this.finalizeOutputConnection_(),this.finalizeHorizontalAlignment_(),this.finalizeVerticalAlignment_(),super.finalize_(),this.rightSide&&(this.widthWithChildren+=this.rightSide.width)}},N$=class extends Em{constructor(n,a,g){super(n,a,g),this.markerCircle=null}showWithInputOutput(n){const a=n.getSourceBlock();n=n.getLocation().getOffsetInBlock(),this.positionCircle(n.x,n.y),this.setParent_(a),this.showCurrent_()}showWithOutput_(n){this.showWithInputOutput(n)}showWithInput_(n){this.showWithInputOutput(n)}showWithBlock_(n){n=n.getLocation();const a=n.getHeightWidth();this.positionRect_(0,0,a.width,a.height),this.setParent_(n),this.showCurrent_()}positionCircle(n,a){let g;(g=this.markerCircle)==null||g.setAttribute("cx",`${n}`);let R;(R=this.markerCircle)==null||R.setAttribute("cy",`${a}`),this.currentMarkerSvg=this.markerCircle}hide(){super.hide(),this.markerCircle&&(this.markerCircle.style.display="none")}createDomInternal_(){if(super.createDomInternal_(),this.markerCircle=Le(Ve.CIRCLE,{r:this.constants_.CURSOR_RADIUS,"stroke-width":this.constants_.CURSOR_STROKE_WIDTH},this.markerSvg_),this.hide(),this.isCursor()){const n=this.getBlinkProperties_();Le(Ve.ANIMATE,n,this.markerCircle)}return this.markerSvg_}applyColour_(n){super.applyColour_(n);let a;(a=this.markerCircle)==null||a.setAttribute("fill",this.colour_);let g;if((g=this.markerCircle)==null||g.setAttribute("stroke",this.colour_),this.isCursor()){n=this.colour_+";transparent;transparent;";let R;(R=this.markerCircle)==null||R.firstElementChild.setAttribute("values",n)}}},P$=class extends Zh{constructor(n,a,g){super(n,a,g),this.svgPathSelected=null,this.outlines=new Map,this.remainingOutlines=new Set,this.outputShapeType=null,this.constants=g}setPath(n){super.setPath(n),this.svgPathSelected&&this.svgPathSelected.setAttribute("d",n)}applyColour(n){super.applyColour(n);const a=n.getParent();n.isShadow()&&a&&this.svgPath.setAttribute("stroke",a.style.colourTertiary);for(const g of this.outlines.values())g.setAttribute("fill",this.style.colourTertiary)}flipRTL(){super.flipRTL();for(const n of this.outlines.values())n.setAttribute("transform","scale(-1 1)")}updateSelected(n){this.setClass_("blocklySelected",n),n?this.svgPathSelected||(this.svgPathSelected=this.svgPath.cloneNode(!0),this.svgPathSelected.setAttribute("fill","none"),this.svgPathSelected.setAttribute("filter","url(#"+this.constants.selectedGlowFilterId+")"),this.svgRoot.appendChild(this.svgPathSelected)):this.svgPathSelected&&(this.svgRoot.removeChild(this.svgPathSelected),this.svgPathSelected=null)}updateReplacementFade(n){this.setClass_("blocklyReplaceable",n),n?this.svgPath.setAttribute("filter","url(#"+this.constants.replacementGlowFilterId+")"):this.svgPath.removeAttribute("filter")}updateShapeForInputHighlight(n,a){n=n.getParentInput().name,(n=this.getOutlinePath(n))&&(a?n.setAttribute("filter","url(#"+this.constants.replacementGlowFilterId+")"):n.removeAttribute("filter"))}beginDrawing(){this.remainingOutlines.clear();for(const n of this.outlines.keys())this.remainingOutlines.add(n)}endDrawing(){if(this.remainingOutlines.size)for(const n of this.remainingOutlines)this.removeOutlinePath(n);this.remainingOutlines.clear()}setOutlinePath(n,a){n=this.getOutlinePath(n),n.setAttribute("d",a),n.setAttribute("fill",this.style.colourTertiary)}getOutlinePath(n){return this.outlines.has(n)||this.outlines.set(n,Le(Ve.PATH,{class:"blocklyOutlinePath",d:""},this.svgRoot)),this.remainingOutlines.delete(n),this.outlines.get(n)}removeOutlinePath(n){let a,g;(a=this.outlines.get(n))==null||(g=a.parentNode)==null||g.removeChild(this.outlines.get(n)),this.outlines.delete(n)}},v$=class extends ag{constructor(n){super(n)}makeConstants_(){return new L$}makeRenderInfo_(n){return new b$(this,n)}makeDrawer_(n,a){return new f$(n,a)}makeMarkerDrawer(n,a){return new N$(n,this.getConstants(),a)}makePathObject(n,a){return new P$(n,a,this.getConstants())}getConstants(){return this.constants_}shouldHighlightConnection(n){return n.type!==kt.INPUT_VALUE&&n.type!==kt.OUTPUT_VALUE}getConnectionPreviewMethod(n,a,g){return a.type===kt.OUTPUT_VALUE?n.isConnected()?gn.PREVIEW_TYPE.REPLACEMENT_FADE:gn.PREVIEW_TYPE.INPUT_OUTLINE:super.getConnectionPreviewMethod(n,a,g)}};ST("zelos",v$);var nr={};nr.BottomRow=m$,nr.ConstantProvider=L$,nr.Drawer=f$,nr.MarkerSvg=N$,nr.PathObject=P$,nr.RenderInfo=b$,nr.Renderer=v$,nr.RightConnectionShape=C$,nr.StatementInput=oM,nr.TopRow=A$,sf();var Ci={};Ci.registerCleanup=WL,Ci.registerCollapse=YL,Ci.registerCollapseExpandBlock=JL,Ci.registerComment=qL,Ci.registerDefaultOptions=sf,Ci.registerDelete=tf,Ci.registerDeleteAll=ZL,Ci.registerDisable=ef,Ci.registerDuplicate=jL,Ci.registerExpand=KL,Ci.registerHelp=of,Ci.registerInline=QL,Ci.registerRedo=VL,Ci.registerUndo=FL;var ho=class extends gg{constructor(n,a,g){super(Io.SKIP_SETUP),this.clockwise=ho.CLOCKWISE,this.offset=ho.OFFSET,this.wrap=ho.WRAP,this.round=ho.ROUND,this.boundEvents=[],this.symbol_=this.gauge=this.line=null,n!==Io.SKIP_SETUP&&(g&&this.configure_(g),this.setValue(n),a&&this.setValidator(a))}configure_(n){switch(super.configure_(n),n.mode){case sM.COMPASS:this.clockwise=!0,this.offset=90;break;case sM.PROTRACTOR:this.clockwise=!1,this.offset=0}n.clockwise&&(this.clockwise=n.clockwise),n.offset&&(this.offset=n.offset),n.wrap&&(this.wrap=n.wrap),n.round&&(this.round=n.round)}initView(){super.initView(),this.symbol_=Le(Ve.TSPAN,{}),this.symbol_.appendChild(document.createTextNode("°")),this.getTextElement().appendChild(this.symbol_)}render_(){super.render_(),this.updateGraph()}showEditor_(n){super.showEditor_(n,uf||Ch||DT),n=this.dropdownCreate(),gT().appendChild(n),this.sourceBlock_ instanceof Vr&&JO(this.sourceBlock_.style.colourPrimary,this.sourceBlock_.style.colourTertiary),Uu(this,this.dropdownDispose.bind(this)),this.updateGraph()}dropdownCreate(){const n=Le(Ve.SVG,{xmlns:xu,"xmlns:html":yr,"xmlns:xlink":an,version:"1.1",height:2*ho.HALF+"px",width:2*ho.HALF+"px"});n.style.touchAction="none";const a=Le(Ve.CIRCLE,{cx:ho.HALF,cy:ho.HALF,r:ho.RADIUS,class:"blocklyAngleCircle"},n);this.gauge=Le(Ve.PATH,{class:"blocklyAngleGauge"},n),this.line=Le(Ve.LINE,{x1:ho.HALF,y1:ho.HALF,class:"blocklyAngleLine"},n);for(let g=0;360>g;g+=15)Le(Ve.LINE,{x1:ho.HALF+ho.RADIUS,y1:ho.HALF,x2:ho.HALF+ho.RADIUS-(g%45===0?10:5),y2:ho.HALF,class:"blocklyAngleMarks",transform:"rotate("+g+","+ho.HALF+","+ho.HALF+")"},n);return this.boundEvents.push(ve(n,"click",this,this.hide)),this.boundEvents.push(ve(a,"pointerdown",this,this.onMouseMove_,!0)),this.boundEvents.push(ve(a,"pointermove",this,this.onMouseMove_,!0)),n}dropdownDispose(){for(const n of this.boundEvents)Re(n);this.boundEvents.length=0,this.line=this.gauge=null}hide(){dT(this),Nn()}onMouseMove_(n){var a=this.gauge.ownerSVGElement.getBoundingClientRect();const g=n.clientX-a.left-ho.HALF;n=n.clientY-a.top-ho.HALF,a=Math.atan(-n/g),isNaN(a)||(a=$p(a),0>g?a+=180:0<n&&(a+=360),a=this.clockwise?this.offset+360-a:360-(this.offset-a),this.displayMouseOrKeyboardValue(a))}displayMouseOrKeyboardValue(n){if(this.round&&(n=Math.round(n/this.round)*this.round),n=this.wrapValue(n),n!==this.value_){const a=this.value_;this.setEditorValue_(n,!1),this.sourceBlock_&&Q()&&this.value_!==a&&J(new(pe(Sl))(this.sourceBlock_,this.name||null,a,this.value_))}}updateGraph(){if(this.gauge&&this.line){var n=Number(this.getText())+this.offset,a=ET(n%360);n=["M ",ho.HALF,",",ho.HALF];var g=ho.HALF,R=ho.HALF;if(!isNaN(a)){const f=Number(this.clockwise),$=ET(this.offset),le=Math.cos($)*ho.RADIUS,fe=Math.sin($)*-ho.RADIUS;f&&(a=2*$-a),g+=Math.cos(a)*ho.RADIUS,R-=Math.sin(a)*ho.RADIUS,a=Math.abs(Math.floor((a-$)/Math.PI)%2),f&&(a=1-a),n.push(" l ",le,",",fe," A ",ho.RADIUS,",",ho.RADIUS," 0 ",a," ",f," ",g,",",R," z")}this.gauge.setAttribute("d",n.join("")),this.line.setAttribute("x2",`${g}`),this.line.setAttribute("y2",`${R}`)}}onHtmlInputKeyDown_(n){super.onHtmlInputKeyDown_(n);var a=this.getSourceBlock();if(!a)throw new jo;let g=0;switch(n.key){case"ArrowLeft":g=a.RTL?1:-1;break;case"ArrowRight":g=a.RTL?-1:1;break;case"ArrowDown":g=-1;break;case"ArrowUp":g=1}g&&(a=this.getValue(),this.displayMouseOrKeyboardValue(a+g*this.round),n.preventDefault(),n.stopPropagation())}doClassValidation_(n){return n=Number(n),isNaN(n)||!isFinite(n)?null:this.wrapValue(n)}wrapValue(n){return n%=360,0>n&&(n+=360),n>this.wrap&&(n-=360),n}static fromJson(n){return new this(n.angle,void 0,n)}};ho.HALF=50,ho.RADIUS=ho.HALF-1,ho.CLOCKWISE=!1,ho.OFFSET=0,ho.WRAP=360,ho.ROUND=15,ln("field_angle",ho),ho.prototype.DEFAULT_VALUE=0,Be(`
- .blocklyAngleCircle {
- stroke: #444;
- stroke-width: 1;
- fill: #ddd;
- fill-opacity: 0.8;
- }
- .blocklyAngleMarks {
- stroke: #444;
- stroke-width: 1;
- }
- .blocklyAngleGauge {
- fill: #f88;
- fill-opacity: 0.8;
- pointer-events: none;
- }
- .blocklyAngleLine {
- stroke: #f00;
- stroke-width: 2;
- stroke-linecap: round;
- pointer-events: none;
- }
- `);var sM;(function(n){n.COMPASS="compass",n.PROTRACTOR="protractor"})(sM||(sM={}));var _c=class extends Io{constructor(n,a,g){super(Io.SKIP_SETUP),this.SERIALIZABLE=!0,this.CURSOR="default",this.value_=this.value_,this.checkChar=_c.CHECK_CHAR,n!==Io.SKIP_SETUP&&(g&&this.configure_(g),this.setValue(n),a&&this.setValidator(a))}configure_(n){super.configure_(n),n.checkCharacter&&(this.checkChar=n.checkCharacter)}saveState(){const n=this.saveLegacyState(_c);return n!==null?n:this.getValueBoolean()}initView(){super.initView();const n=this.getTextElement();je(n,"blocklyCheckbox"),n.style.display=this.value_?"block":"none"}render_(){this.textContent_&&(this.textContent_.nodeValue=this.getDisplayText_()),this.updateSize_(this.getConstants().FIELD_CHECKBOX_X_OFFSET)}getDisplayText_(){return this.checkChar}setCheckCharacter(n){this.checkChar=n||_c.CHECK_CHAR,this.forceRerender()}showEditor_(){this.setValue(!this.value_)}doClassValidation_(n){return n===!0||n==="TRUE"?"TRUE":n===!1||n==="FALSE"?"FALSE":null}doValueUpdate_(n){this.value_=this.convertValueToBool_(n),this.textElement_&&(this.textElement_.style.display=this.value_?"block":"none")}getValue(){return this.value_?"TRUE":"FALSE"}getValueBoolean(){return this.value_}getText(){return String(this.convertValueToBool_(this.value_))}convertValueToBool_(n){return typeof n=="string"?n==="TRUE":!!n}static fromJson(n){return new this(n.checked,void 0,n)}};_c.CHECK_CHAR="✓",ln("field_checkbox",_c),_c.prototype.DEFAULT_VALUE=!1;var dn=class extends Io{constructor(n,a,g){super(Io.SKIP_SETUP),this.highlightedIndex=this.picker=null,this.boundEvents=[],this.SERIALIZABLE=!0,this.CURSOR="default",this.isDirty_=!1,this.titles=this.colours=null,this.columns=0,n!==Io.SKIP_SETUP&&(g&&this.configure_(g),this.setValue(n),a&&this.setValidator(a))}configure_(n){super.configure_(n),n.colourOptions&&(this.colours=n.colourOptions),n.colourTitles&&(this.titles=n.colourTitles),n.columns&&(this.columns=n.columns)}initView(){this.size_=new Jo(this.getConstants().FIELD_COLOUR_DEFAULT_WIDTH,this.getConstants().FIELD_COLOUR_DEFAULT_HEIGHT),this.createBorderRect_(),this.getBorderRect().style.fillOpacity="1",this.getBorderRect().setAttribute("stroke","#fff"),this.isFullBlockField()&&(this.clickTarget_=this.sourceBlock_.getSvgRoot())}isFullBlockField(){const n=this.getSourceBlock();if(!n)throw new jo;const a=this.getConstants();return n.isSimpleReporter()&&!(a==null||!a.FIELD_COLOUR_FULL_BLOCK)}applyColour(){const n=this.getSourceBlock();if(!n)throw new jo;if(this.fieldGroup_){var a=this.borderRect_;if(!a)throw Error("The border rect has not been initialized");this.isFullBlockField()?(a.style.display="none",n.pathObject.svgPath.setAttribute("fill",this.getValue()),n.pathObject.svgPath.setAttribute("stroke","#fff")):(a.style.display="block",a.style.fill=this.getValue())}}getSize(){let n;return(n=this.getConstants())!=null&&n.FIELD_COLOUR_FULL_BLOCK&&(this.render_(),this.isDirty_=!1),super.getSize()}render_(){super.render_();const n=this.getSourceBlock();if(!n)throw new jo;n.applyColour()}updateSize_(n){var a=this.getConstants();this.isFullBlockField()?(n=2*(n??0),a=a.FIELD_TEXT_HEIGHT):(n=a.FIELD_COLOUR_DEFAULT_WIDTH,a=a.FIELD_COLOUR_DEFAULT_HEIGHT),this.size_.height=a,this.size_.width=n,this.positionBorderRect_()}doClassValidation_(n){return typeof n!="string"?null:Ml(n)}getText(){let n=this.value_;return/^#(.)\1(.)\2(.)\3$/.test(n)&&(n="#"+n[1]+n[3]+n[5]),n}setColours(n,a){return this.colours=n,a&&(this.titles=a),this}setColumns(n){return this.columns=n,this}showEditor_(){this.dropdownCreate(),gT().appendChild(this.picker),Uu(this,this.dropdownDispose.bind(this)),this.picker.focus({preventScroll:!0})}onClick(n){n=(n=n.target)&&n.getAttribute("data-colour"),n!==null&&(this.setValue(n),dT(this))}onKeyDown(n){let a=!0;var g;switch(n.key){case"ArrowUp":this.moveHighlightBy(0,-1);break;case"ArrowDown":this.moveHighlightBy(0,1);break;case"ArrowLeft":this.moveHighlightBy(-1,0);break;case"ArrowRight":this.moveHighlightBy(1,0);break;case"Enter":(g=this.getHighlighted())&&(g=g.getAttribute("data-colour"),g!==null&&this.setValue(g)),er();break;default:a=!1}a&&n.stopPropagation()}moveHighlightBy(n,a){if(this.highlightedIndex){var g=this.colours||dn.COLOURS,R=this.columns||dn.COLUMNS,f=this.highlightedIndex%R,$=Math.floor(this.highlightedIndex/R);f+=n,$+=a,0>n?0>f&&0<$?(f=R-1,$--):0>f&&(f=0):0<n?f>R-1&&$<Math.floor(g.length/R)-1?(f=0,$++):f>R-1&&f--:0>a?0>$&&($=0):0<a&&$>Math.floor(g.length/R)-1&&($=Math.floor(g.length/R)-1),this.setHighlightedCell(this.picker.childNodes[$].childNodes[f],$*R+f)}}onMouseMove(n){const a=(n=n.target)&&Number(n.getAttribute("data-index"));a!==null&&a!==this.highlightedIndex&&this.setHighlightedCell(n,a)}onMouseEnter(){let n;(n=this.picker)==null||n.focus({preventScroll:!0})}onMouseLeave(){var n;(n=this.picker)==null||n.blur(),(n=this.getHighlighted())&&Je(n,"blocklyColourHighlighted")}getHighlighted(){if(!this.highlightedIndex)return null;const n=this.columns||dn.COLUMNS,a=this.picker.childNodes[Math.floor(this.highlightedIndex/n)];return a?a.childNodes[this.highlightedIndex%n]:null}setHighlightedCell(n,a){const g=this.getHighlighted();g&&Je(g,"blocklyColourHighlighted"),je(n,"blocklyColourHighlighted"),this.highlightedIndex=a,(n=n.getAttribute("id"))&&this.picker&&is(this.picker,es.ACTIVEDESCENDANT,n)}dropdownCreate(){const n=this.columns||dn.COLUMNS,a=this.colours||dn.COLOURS,g=this.titles||dn.TITLES,R=this.getValue(),f=document.createElement("table");f.className="blocklyColourTable",f.tabIndex=0,f.dir="ltr",Jn(f,Vi.GRID),is(f,es.EXPANDED,!0),is(f,es.ROWCOUNT,Math.floor(a.length/n)),is(f,es.COLCOUNT,n);let $;for(let le=0;le<a.length;le++){le%n===0&&($=document.createElement("tr"),Jn($,Vi.ROW),f.appendChild($));const fe=document.createElement("td");$.appendChild(fe),fe.setAttribute("data-colour",a[le]),fe.title=g[le]||a[le],fe.id=W(),fe.setAttribute("data-index",`${le}`),Jn(fe,Vi.GRIDCELL),is(fe,es.LABEL,a[le]),is(fe,es.SELECTED,a[le]===R),fe.style.backgroundColor=a[le],a[le]===R&&(fe.className="blocklyColourSelected",this.highlightedIndex=le)}this.boundEvents.push(ve(f,"pointerdown",this,this.onClick,!0)),this.boundEvents.push(ve(f,"pointermove",this,this.onMouseMove,!0)),this.boundEvents.push(ve(f,"pointerenter",this,this.onMouseEnter,!0)),this.boundEvents.push(ve(f,"pointerleave",this,this.onMouseLeave,!0)),this.boundEvents.push(ve(f,"keydown",this,this.onKeyDown,!1)),this.picker=f}dropdownDispose(){for(const n of this.boundEvents)Re(n);this.boundEvents.length=0,this.highlightedIndex=this.picker=null}static fromJson(n){return new this(n.colour,void 0,n)}};dn.COLOURS="#ffffff #cccccc #c0c0c0 #999999 #666666 #333333 #000000 #ffcccc #ff6666 #ff0000 #cc0000 #990000 #660000 #330000 #ffcc99 #ff9966 #ff9900 #ff6600 #cc6600 #993300 #663300 #ffff99 #ffff66 #ffcc66 #ffcc33 #cc9933 #996633 #663333 #ffffcc #ffff33 #ffff00 #ffcc00 #999900 #666600 #333300 #99ff99 #66ff99 #33ff33 #33cc00 #009900 #006600 #003300 #99ffff #33ffff #66cccc #00cccc #339999 #336666 #003333 #ccffff #66ffff #33ccff #3366ff #3333ff #000099 #000066 #ccccff #9999ff #6666cc #6633ff #6600cc #333399 #330099 #ffccff #ff99ff #cc66cc #cc33cc #993399 #663366 #330033".split(" "),dn.TITLES=[],dn.COLUMNS=7,dn.prototype.DEFAULT_VALUE=dn.COLOURS[0],ln("field_colour",dn),Be(`
- .blocklyColourTable {
- border-collapse: collapse;
- display: block;
- outline: none;
- padding: 1px;
- }
- .blocklyColourTable>tr>td {
- border: 0.5px solid #888;
- box-sizing: border-box;
- cursor: pointer;
- display: inline-block;
- height: 20px;
- padding: 0;
- width: 20px;
- }
- .blocklyColourTable>tr>td.blocklyColourHighlighted {
- border-color: #eee;
- box-shadow: 2px 2px 7px 2px rgba(0, 0, 0, 0.3);
- position: relative;
- }
- .blocklyColourSelected, .blocklyColourSelected:hover {
- border-color: #eee !important;
- outline: 1px solid #333;
- position: relative;
- }
- `);var D$=class extends ic{constructor(n,a,g){super(String(n??""),a,g),this.EDITABLE=!1,this.SERIALIZABLE=!0}static fromJson(n){return new this(Ms(n.text),void 0,n)}};ln("field_label_serializable",D$);var Bm=class extends JT{constructor(n,a,g){super(Io.SKIP_SETUP),this.textGroup=null,this.maxLines_=1/0,this.isOverflowedY_=!1,n!==Io.SKIP_SETUP&&(g&&this.configure_(g),this.setValue(n),a&&this.setValidator(a))}configure_(n){super.configure_(n),n.maxLines&&this.setMaxLines(n.maxLines)}toXml(n){return n.textContent=this.getValue().replace(/\n/g," "),n}fromXml(n){this.setValue(n.textContent.replace(/ /g,`
- `))}saveState(){const n=this.saveLegacyState(Bm);return n!==null?n:this.getValue()}loadState(n){this.loadLegacyState(Io,n)||this.setValue(n)}initView(){this.createBorderRect_(),this.textGroup=Le(Ve.G,{class:"blocklyEditableText"},this.fieldGroup_)}getDisplayText_(){const n=this.getSourceBlock();if(!n)throw new jo;let a=this.getText();if(!a)return Io.NBSP;const g=a.split(`
- `);a="";const R=this.isOverflowedY_?this.maxLines_:g.length;for(let f=0;f<R;f++){let $=g[f];$.length>this.maxDisplayLength?$=$.substring(0,this.maxDisplayLength-4)+"...":this.isOverflowedY_&&f===R-1&&($=$.substring(0,$.length-3)+"..."),$=$.replace(/\s/g,Io.NBSP),a+=$,f!==R-1&&(a+=`
- `)}return n.RTL&&(a+=""),a}doValueUpdate_(n){super.doValueUpdate_(n),this.value_!==null&&(this.isOverflowedY_=this.value_.split(`
- `).length>this.maxLines_)}render_(){var n=this.getSourceBlock();if(!n)throw new jo;for(var a,g=this.textGroup;a=g.firstChild;)g.removeChild(a);a=this.getDisplayText_().split(`
- `);let R=0;for(let f=0;f<a.length;f++){const $=this.getConstants().FIELD_TEXT_HEIGHT+this.getConstants().FIELD_BORDER_RECT_Y_PADDING;Le(Ve.TEXT,{class:"blocklyText blocklyMultilineText",x:this.getConstants().FIELD_BORDER_RECT_X_PADDING,y:R+this.getConstants().FIELD_BORDER_RECT_Y_PADDING,dy:this.getConstants().FIELD_TEXT_BASELINE},g).appendChild(document.createTextNode(a[f])),R+=$}this.isBeingEdited_&&(g=this.htmlInput_,this.isOverflowedY_?je(g,"blocklyHtmlTextAreaInputOverflowedY"):Je(g,"blocklyHtmlTextAreaInputOverflowedY")),this.updateSize_(),this.isBeingEdited_&&(n.RTL?setTimeout(this.resizeEditor_.bind(this),0):this.resizeEditor_(),n=this.htmlInput_,this.isTextValid_?(Je(n,"blocklyInvalidInput"),is(n,es.INVALID,!1)):(je(n,"blocklyInvalidInput"),is(n,es.INVALID,!0)))}updateSize_(){var n=this.textGroup.childNodes;const a=this.getConstants().FIELD_TEXT_FONTSIZE,g=this.getConstants().FIELD_TEXT_FONTWEIGHT,R=this.getConstants().FIELD_TEXT_FONTFAMILY;let f=0,$=0;for(var le=0;le<n.length;le++){var fe=_e(n[le],a,g,R);fe>f&&(f=fe),$+=this.getConstants().FIELD_TEXT_HEIGHT+(0<le?this.getConstants().FIELD_BORDER_RECT_Y_PADDING:0)}if(this.isBeingEdited_){for(n=String(this.value_).split(`
- `),le=Le(Ve.TEXT,{class:"blocklyText blocklyMultilineText"}),fe=0;fe<n.length;fe++){n[fe].length>this.maxDisplayLength&&(n[fe]=n[fe].substring(0,this.maxDisplayLength)),le.textContent=n[fe];const it=_e(le,a,g,R);it>f&&(f=it)}f+=this.htmlInput_.offsetWidth-this.htmlInput_.clientWidth}this.borderRect_&&($+=2*this.getConstants().FIELD_BORDER_RECT_Y_PADDING,f+=2*this.getConstants().FIELD_BORDER_RECT_X_PADDING,this.borderRect_.setAttribute("width",`${f}`),this.borderRect_.setAttribute("height",`${$}`)),this.size_.width=f,this.size_.height=$,this.positionBorderRect_()}showEditor_(n,a){super.showEditor_(n,a),this.forceRerender()}widgetCreate_(){const n=$a(),a=this.workspace_.getScale(),g=document.createElement("textarea");g.className="blocklyHtmlInput blocklyHtmlTextAreaInput",g.setAttribute("spellcheck",String(this.spellcheck_));var R=this.getConstants().FIELD_TEXT_FONTSIZE*a+"pt";n.style.fontSize=R,g.style.fontSize=R,g.style.borderRadius=JT.BORDERRADIUS*a+"px",R=this.getConstants().FIELD_BORDER_RECT_X_PADDING*a;const f=this.getConstants().FIELD_BORDER_RECT_Y_PADDING*a/2;return g.style.padding=f+"px "+R+"px "+f+"px "+R+"px",R=this.getConstants().FIELD_TEXT_HEIGHT+this.getConstants().FIELD_BORDER_RECT_Y_PADDING,g.style.lineHeight=R*a+"px",n.appendChild(g),g.value=g.defaultValue=this.getEditorText_(this.value_),g.setAttribute("data-untyped-default-value",String(this.value_)),g.setAttribute("data-old-value",""),Tf?setTimeout(this.resizeEditor_.bind(this),0):this.resizeEditor_(),this.bindInputEvents_(g),g}setMaxLines(n){typeof n=="number"&&0<n&&n!==this.maxLines_&&(this.maxLines_=n,this.forceRerender())}getMaxLines(){return this.maxLines_}onHtmlInputKeyDown_(n){n.key!=="Enter"&&super.onHtmlInputKeyDown_(n)}static fromJson(n){return new this(Ms(n.text),void 0,n)}};ln("field_multilinetext",Bm),Be(`
- .blocklyHtmlTextAreaInput {
- font-family: monospace;
- resize: none;
- overflow: hidden;
- height: 100%;
- text-align: left;
- }
- .blocklyHtmlTextAreaInputOverflowedY {
- overflow-y: scroll;
- }
- `);var wm=class extends gg{constructor(n,a,g,R,f,$){super(Io.SKIP_SETUP),this.min_=-1/0,this.max_=1/0,this.precision_=0,this.decimalPlaces=null,this.spellcheck_=!1,n!==Io.SKIP_SETUP&&($?this.configure_($):this.setConstraints(a,g,R),this.setValue(n),f&&this.setValidator(f))}configure_(n){super.configure_(n),this.setMinInternal(n.min),this.setMaxInternal(n.max),this.setPrecisionInternal(n.precision)}setConstraints(n,a,g){this.setMinInternal(n),this.setMaxInternal(a),this.setPrecisionInternal(g),this.setValue(this.getValue())}setMin(n){this.setMinInternal(n),this.setValue(this.getValue())}setMinInternal(n){n==null?this.min_=-1/0:(n=Number(n),isNaN(n)||(this.min_=n))}getMin(){return this.min_}setMax(n){this.setMaxInternal(n),this.setValue(this.getValue())}setMaxInternal(n){n==null?this.max_=1/0:(n=Number(n),isNaN(n)||(this.max_=n))}getMax(){return this.max_}setPrecision(n){this.setPrecisionInternal(n),this.setValue(this.getValue())}setPrecisionInternal(n){this.precision_=Number(n)||0;let a=String(this.precision_);a.indexOf("e")!==-1&&(a=this.precision_.toLocaleString("en-US",{maximumFractionDigits:20}));const g=a.indexOf(".");this.decimalPlaces=g===-1?n?0:null:a.length-g-1}getPrecision(){return this.precision_}doClassValidation_(n){return n===null||(n=`${n}`.replace(/O/gi,"0"),n=n.replace(/,/g,""),n=n.replace(/infinity/i,"Infinity"),n=Number(n||0),isNaN(n))?null:(n=Math.min(Math.max(n,this.min_),this.max_),this.precision_&&isFinite(n)&&(n=Math.round(n/this.precision_)*this.precision_),this.decimalPlaces!==null&&(n=Number(n.toFixed(this.decimalPlaces))),n)}widgetCreate_(){const n=super.widgetCreate_();return-1/0<this.min_&&(n.min=`${this.min_}`,is(n,es.VALUEMIN,this.min_)),1/0>this.max_&&(n.max=`${this.max_}`,is(n,es.VALUEMAX,this.max_)),n}static fromJson(n){return new this(n.value,void 0,void 0,void 0,void 0,n)}};ln("field_number",wm),wm.prototype.DEFAULT_VALUE=0;var dg=class extends kr{constructor(n,a,g,R,f){super(Io.SKIP_SETUP),this.defaultType="",this.variableTypes=[],this.variable=null,this.SERIALIZABLE=!0,this.menuGenerator_=dg.dropdownCreate,this.defaultVariableName=typeof n=="string"?n:"",this.size_=new Jo(0,0),n!==Io.SKIP_SETUP&&(f?this.configure_(f):this.setTypes(g,R),a&&this.setValidator(a))}configure_(n){super.configure_(n),this.setTypes(n.variableTypes,n.defaultType)}initModel(){var n=this.getSourceBlock();if(!n)throw new jo;this.variable||(n=o.getOrCreateVariablePackage$$module$build$src$core$variables(n.workspace,null,this.defaultVariableName,this.defaultType),this.doValueUpdate_(n.getId()))}shouldAddBorderRect_(){const n=this.getSourceBlock();if(!n)throw new jo;return super.shouldAddBorderRect_()&&(!this.getConstants().FIELD_DROPDOWN_NO_BORDER_RECT_SHADOW||n.type!=="variables_get")}fromXml(n){var a=this.getSourceBlock();if(!a)throw new jo;const g=n.getAttribute("id"),R=n.textContent,f=n.getAttribute("variabletype")||n.getAttribute("variableType")||"";if(a=o.getOrCreateVariablePackage$$module$build$src$core$variables(a.workspace,g,R,f),f!==null&&f!==a.type)throw Error("Serialized variable type with id '"+a.getId()+"' had type "+a.type+", and does not match variable field that references it: "+br(n)+".");this.setValue(a.getId())}toXml(n){return this.initModel(),n.id=this.variable.getId(),n.textContent=this.variable.name,this.variable.type&&n.setAttribute("variabletype",this.variable.type),n}saveState(n){var a=this.saveLegacyState(dg);return a!==null||(this.initModel(),a={id:this.variable.getId()},n&&(a.name=this.variable.name,a.type=this.variable.type)),a}loadState(n){const a=this.getSourceBlock();if(!a)throw new jo;this.loadLegacyState(dg,n)||(n=o.getOrCreateVariablePackage$$module$build$src$core$variables(a.workspace,n.id||null,n.name,n.type||""),this.setValue(n.getId()))}setSourceBlock(n){if(n.isShadow())throw Error("Variable fields are not allowed to exist on shadow blocks.");super.setSourceBlock(n)}getValue(){return this.variable?this.variable.getId():null}getText(){return this.variable?this.variable.name:""}getVariable(){return this.variable}getValidator(){return this.variable?this.validator_:null}doClassValidation_(n){if(n===null)return null;var a=this.getSourceBlock();if(!a)throw new jo;return a=o.getVariable$$module$build$src$core$variables(a.workspace,n),a?(a=a.type,this.typeIsAllowed(a)?n:(console.warn("Variable type doesn't match this field! Type was "+a),null)):(console.warn("Variable id doesn't point to a real variable! ID was "+n),null)}doValueUpdate_(n){const a=this.getSourceBlock();if(!a)throw new jo;this.variable=o.getVariable$$module$build$src$core$variables(a.workspace,n),super.doValueUpdate_(n)}typeIsAllowed(n){const a=this.getVariableTypes();if(!a)return!0;for(let g=0;g<a.length;g++)if(n===a[g])return!0;return!1}getVariableTypes(){var n=this.variableTypes;if(n===null&&this.sourceBlock_&&!this.sourceBlock_.isDeadOrDying())return this.sourceBlock_.workspace.getVariableTypes();if(n=n||[""],n.length===0)throw n=this.getText(),Error("'variableTypes' of field variable "+n+" was an empty list");return n}setTypes(n=null,a=""){if(Array.isArray(n)){let g=!1;for(let R=0;R<n.length;R++)n[R]===a&&(g=!0);if(!g)throw Error("Invalid default type '"+a+"' in the definition of a FieldVariable")}else if(n!==null)throw Error("'variableTypes' was not an array in the definition of a FieldVariable");this.defaultType=a,this.variableTypes=n}refreshVariableName(){this.forceRerender()}onItemSelected_(n,a){if(n=a.getValue(),this.sourceBlock_&&!this.sourceBlock_.isDeadOrDying()){if(n===Yf){o.renameVariable$$module$build$src$core$variables(this.sourceBlock_.workspace,this.variable);return}if(n===Kf){this.sourceBlock_.workspace.deleteVariableById(this.variable.getId());return}}this.setValue(n)}referencesVariables(){return!0}static fromJson(n){return new this(Ms(n.variable),void 0,void 0,void 0,n)}static dropdownCreate(){if(!this.variable)throw Error("Tried to call dropdownCreate on a variable field with no variable selected.");const n=this.getText();let a=[];if(this.sourceBlock_&&!this.sourceBlock_.isDeadOrDying())for(var g=this.getVariableTypes(),R=0;R<g.length;R++){const f=this.sourceBlock_.workspace.getVariablesOfType(g[R]);a=a.concat(f)}for(a.sort(Xu.compareByName),g=[],R=0;R<a.length;R++)g[R]=[a[R].name,a[R].getId()];return g.push([o.Msg$$module$build$src$core$msg.RENAME_VARIABLE,Yf]),o.Msg$$module$build$src$core$msg.DELETE_VARIABLE&&g.push([o.Msg$$module$build$src$core$msg.DELETE_VARIABLE.replace("%1",n),Kf]),g}};ln("field_variable",dg);var rr=class{constructor(n,a,g,R){this.workspace=n,this.targetWorkspace=a,this.isLabel_=R,this.onMouseUpWrapper=null,this.height=this.width=0,this.svgText=this.svgGroup=null,this.text=g.text,this.position=new ft(0,0),this.callbackKey=g.callbackKey||g.callbackkey,this.cssClass=g["web-class"]||null,this.info=g}createDom(){var n=this.isLabel_?"blocklyFlyoutLabel":"blocklyFlyoutButton";this.cssClass&&(n+=" "+this.cssClass),this.svgGroup=Le(Ve.G,{class:n},this.workspace.getCanvas());let a;this.isLabel_||(a=Le(Ve.RECT,{class:"blocklyFlyoutButtonShadow",rx:rr.BORDER_RADIUS,ry:rr.BORDER_RADIUS,x:1,y:1},this.svgGroup)),n=Le(Ve.RECT,{class:this.isLabel_?"blocklyFlyoutLabelBackground":"blocklyFlyoutButtonBackground",rx:rr.BORDER_RADIUS,ry:rr.BORDER_RADIUS},this.svgGroup);const g=Le(Ve.TEXT,{class:this.isLabel_?"blocklyFlyoutLabelText":"blocklyText",x:0,y:0,"text-anchor":"middle"},this.svgGroup);var R=Ms(this.text);this.workspace.RTL&&(R+=""),g.textContent=R,this.isLabel_&&(this.svgText=g,this.workspace.getThemeManager().subscribe(this.svgText,"flyoutForegroundColour","fill"));const f=Ko(g,"fontSize"),$=Ko(g,"fontWeight"),le=Ko(g,"fontFamily");if(this.width=ze(g,f,$,le),R=_t(R,f,$,le),this.height=R.height,!this.isLabel_){this.width+=2*rr.TEXT_MARGIN_X,this.height+=2*rr.TEXT_MARGIN_Y;let fe;(fe=a)==null||fe.setAttribute("width",String(this.width));let it;(it=a)==null||it.setAttribute("height",String(this.height))}return n.setAttribute("width",String(this.width)),n.setAttribute("height",String(this.height)),g.setAttribute("x",String(this.width/2)),g.setAttribute("y",String(this.height/2-R.height/2+R.baseline)),this.updateTransform(),this.onMouseUpWrapper=ve(this.svgGroup,"pointerup",this,this.onMouseUp),this.svgGroup}show(){this.updateTransform(),this.svgGroup.setAttribute("display","block")}updateTransform(){this.svgGroup.setAttribute("transform","translate("+this.position.x+","+this.position.y+")")}moveTo(n,a){this.position.x=n,this.position.y=a,this.updateTransform()}isLabel(){return this.isLabel_}getPosition(){return this.position}getButtonText(){return this.text}getTargetWorkspace(){return this.targetWorkspace}dispose(){this.onMouseUpWrapper&&Re(this.onMouseUpWrapper),this.svgGroup&&Ot(this.svgGroup),this.svgText&&this.workspace.getThemeManager().unsubscribe(this.svgText)}onMouseUp(n){(n=this.targetWorkspace.getGesture(n))&&n.cancel(),this.isLabel_&&this.callbackKey?console.warn("Labels should not have callbacks. Label text: "+this.text):this.isLabel_||this.callbackKey&&this.targetWorkspace.getButtonCallback(this.callbackKey)?this.isLabel_||(n=this.targetWorkspace.getButtonCallback(this.callbackKey))&&n(this):console.warn("Buttons should have callbacks. Button text: "+this.text)}};rr.TEXT_MARGIN_X=5,rr.TEXT_MARGIN_Y=2,rr.BORDER_RADIUS=4,Be(`
- .blocklyFlyoutButton {
- fill: #888;
- cursor: default;
- }
- .blocklyFlyoutButtonShadow {
- fill: #666;
- }
- .blocklyFlyoutButton:hover {
- fill: #aaa;
- }
- .blocklyFlyoutLabel {
- cursor: default;
- }
- .blocklyFlyoutLabelBackground {
- opacity: 0;
- }
- `);var U$=class extends mm{constructor(n,a){super(n),this.flyout_=a}getBoundingBox_(){let n;try{n=this.workspace_.getCanvas().getBBox()}catch{n={height:0,y:0,width:0,x:0}}return n}getContentMetrics(n){const a=this.getBoundingBox_();return n=n?1:this.workspace_.scale,{height:a.height*n,width:a.width*n,top:a.y*n,left:a.x*n}}getScrollMetrics(n,a,g){return a=g||this.getContentMetrics(),g=this.flyout_.MARGIN*this.workspace_.scale,n=n?this.workspace_.scale:1,{height:(a.height+2*g)/n,width:(a.width+a.left+g)/n,top:0,left:0}}},eE;(function(n){n.BLOCK="block",n.BUTTON="button"})(eE||(eE={}));var iM=class extends qh{constructor(n){super(),this.horizontalLayout=!1,this.boundEvents=[],this.filterWrapper=this.reflowWrapper=null,this.mats=[],this.buttons_=[],this.listeners=[],this.permanentlyDisabled=[],this.recycledBlocks=[],this.autoClose=!0,this.isVisible_=!1,this.containerVisible=!0,this.CORNER_RADIUS=8,this.SCROLLBAR_MARGIN=2.5,this.height_=this.width_=0,this.dragAngleRange_=70,this.svgGroup_=this.svgBackground_=null,n.setMetrics=this.setMetrics_.bind(this),this.workspace_=new ir(n),this.workspace_.setMetricsManager(new U$(this.workspace_,this)),this.workspace_.internalIsFlyout=!0,this.workspace_.setVisible(this.isVisible_),this.id=K(),this.RTL=!!n.RTL,this.toolboxPosition_=n.toolboxPosition,this.tabWidth_=this.workspace_.getRenderer().getConstants().TAB_WIDTH,this.rectMap_=new WeakMap,this.MARGIN=this.CORNER_RADIUS,this.GAP_X=3*this.MARGIN,this.GAP_Y=3*this.MARGIN}createDom(n){return this.svgGroup_=Le(n,{class:"blocklyFlyout"}),this.svgGroup_.style.display="none",this.svgBackground_=Le(Ve.PATH,{class:"blocklyFlyoutBackground"},this.svgGroup_),this.svgGroup_.appendChild(this.workspace_.createDom()),this.workspace_.getThemeManager().subscribe(this.svgBackground_,"flyoutBackgroundColour","fill"),this.workspace_.getThemeManager().subscribe(this.svgBackground_,"flyoutOpacity","fill-opacity"),this.svgGroup_}init(n){this.targetWorkspace=n,this.workspace_.targetWorkspace=n,this.workspace_.scrollbar=new fm(this.workspace_,this.horizontalLayout,!this.horizontalLayout,"blocklyFlyoutScrollbar",this.SCROLLBAR_MARGIN),this.hide(),this.boundEvents.push(ve(this.svgGroup_,"wheel",this,this.wheel_)),this.filterWrapper=this.filterForCapacity.bind(this),this.targetWorkspace.addChangeListener(this.filterWrapper),this.boundEvents.push(ve(this.svgBackground_,"pointerdown",this,this.onMouseDown)),this.workspace_.getGesture=this.targetWorkspace.getGesture.bind(this.targetWorkspace),this.workspace_.setVariableMap(this.targetWorkspace.getVariableMap()),this.workspace_.createPotentialVariableMap(),n.getComponentManager().addComponent({component:this,weight:1,capabilities:[ks.Capability.AUTOHIDEABLE,ks.Capability.DELETE_AREA,ks.Capability.DRAG_TARGET]})}dispose(){this.hide(),this.targetWorkspace.getComponentManager().removeComponent(this.id);for(const n of this.boundEvents)Re(n);this.boundEvents.length=0,this.filterWrapper&&this.targetWorkspace.removeChangeListener(this.filterWrapper),this.workspace_&&(this.workspace_.getThemeManager().unsubscribe(this.svgBackground_),this.workspace_.dispose()),this.svgGroup_&&Ot(this.svgGroup_)}getWidth(){return this.width_}getHeight(){return this.height_}getFlyoutScale(){return this.targetWorkspace.scale}getWorkspace(){return this.workspace_}setAutoClose(n){this.autoClose=n,this.targetWorkspace.recordDragTargets(),this.targetWorkspace.resizeContents()}autoHide(n){!n&&this.targetWorkspace.getFlyout(!0)===this&&this.autoClose&&this.hide()}isVisible(){return this.isVisible_}setVisible(n){const a=n!==this.isVisible();this.isVisible_=n,a&&(this.autoClose||this.targetWorkspace.recordDragTargets(),this.updateDisplay())}setContainerVisible(n){const a=n!==this.containerVisible;this.containerVisible=n,a&&this.updateDisplay()}updateDisplay(){let n;n=this.containerVisible?this.isVisible():!1,this.svgGroup_&&(this.svgGroup_.style.display=n?"block":"none");let a;(a=this.workspace_.scrollbar)==null||a.setContainerVisible(n)}positionAt_(n,a,g,R){let f;(f=this.svgGroup_)==null||f.setAttribute("width",`${n}`);let $;($=this.svgGroup_)==null||$.setAttribute("height",`${a}`),this.workspace_.setCachedParentSvgSize(n,a),this.svgGroup_&&y(this.svgGroup_,"translate("+g+"px,"+R+"px)"),(n=this.workspace_.scrollbar)&&(n.setOrigin(g,R),n.resize(),n.hScroll&&n.hScroll.setPosition(n.hScroll.position.x,n.hScroll.position.y),n.vScroll&&n.vScroll.setPosition(n.vScroll.position.x,n.vScroll.position.y))}hide(){if(this.isVisible()){this.setVisible(!1);for(const n of this.listeners)Re(n);this.listeners.length=0,this.reflowWrapper&&(this.workspace_.removeChangeListener(this.reflowWrapper),this.reflowWrapper=null)}}show(n){this.workspace_.setResizesEnabled(!1),this.hide(),this.clearOldBlocks(),typeof n=="string"&&(n=this.getDynamicCategoryContents(n)),this.setVisible(!0),n=Ls(n),n=this.createFlyoutInfo(n),Ar(),this.layout_(n.contents,n.gaps),this.horizontalLayout?this.height_=0:this.width_=0,this.workspace_.setResizesEnabled(!0),this.reflow(),this.filterForCapacity(),this.position(),this.reflowWrapper=this.reflow.bind(this),this.workspace_.addChangeListener(this.reflowWrapper),this.emptyRecycledBlocks()}createFlyoutInfo(n){const a=[],g=[];this.permanentlyDisabled.length=0;const R=this.horizontalLayout?this.GAP_X:this.GAP_Y;for(const f of n){if("custom"in f){n=this.getDynamicCategoryContents(f.custom),n=Ls(n);const{contents:$,gaps:le}=this.createFlyoutInfo(n);a.push(...$),g.push(...le)}switch(f.kind.toUpperCase()){case"BLOCK":n=f;const $=this.createFlyoutBlock(n);a.push({type:eE.BLOCK,block:$}),this.addBlockGap(n,g,R);break;case"SEP":this.addSeparatorGap(f,g,R);break;case"LABEL":n=this.createButton(f,!0),a.push({type:eE.BUTTON,button:n}),g.push(R);break;case"BUTTON":n=this.createButton(f,!1),a.push({type:eE.BUTTON,button:n}),g.push(R)}}return{contents:a,gaps:g}}getDynamicCategoryContents(n){if(n=this.workspace_.targetWorkspace.getToolboxCategoryCallback(n),typeof n!="function")throw TypeError("Couldn't find a callback function when opening a toolbox category.");return n(this.workspace_.targetWorkspace)}createButton(n,a){return new rr(this.workspace_,this.targetWorkspace,n,a)}createFlyoutBlock(n){let a;return n.blockxml?(n=typeof n.blockxml=="string"?o.textToDom$$module$build$src$core$utils$xml(n.blockxml):n.blockxml,(a=this.getRecycledBlock(n.getAttribute("type")))||(a=dl(n,this.workspace_))):(a=this.getRecycledBlock(n.type),a||(n.enabled===void 0&&(n.enabled=n.disabled!=="true"&&n.disabled!==!0),a=cT(n,this.workspace_))),a.isEnabled()||this.permanentlyDisabled.push(a),a}getRecycledBlock(n){let a=-1;for(let g=0;g<this.recycledBlocks.length;g++)if(this.recycledBlocks[g].type===n){a=g;break}return a===-1?void 0:this.recycledBlocks.splice(a,1)[0]}addBlockGap(n,a,g){let R;n.gap?R=parseInt(String(n.gap)):n.blockxml&&(n=typeof n.blockxml=="string"?o.textToDom$$module$build$src$core$utils$xml(n.blockxml):n.blockxml,R=parseInt(n.getAttribute("gap"))),a.push(!R||isNaN(R)?g:R)}addSeparatorGap(n,a,g){n=parseInt(String(n.gap)),!isNaN(n)&&0<a.length?a[a.length-1]=n:a.push(g)}clearOldBlocks(){var n=this.workspace_.getTopBlocks(!1);for(let g=0,R;R=n[g];g++)this.blockIsRecyclable_(R)?this.recycleBlock(R):R.dispose(!1,!1);for(n=0;n<this.mats.length;n++){const g=this.mats[n];g&&(oh(g),Ot(g))}this.mats.length=0;for(let g=0,R;R=this.buttons_[g];g++)R.dispose();this.buttons_.length=0;let a;(a=this.workspace_.getPotentialVariableMap())==null||a.clear()}emptyRecycledBlocks(){for(let n=0;n<this.recycledBlocks.length;n++)this.recycledBlocks[n].dispose();this.recycledBlocks=[]}blockIsRecyclable_(n){return!1}recycleBlock(n){const a=n.getRelativeToSurfaceXY();n.moveBy(-a.x,-a.y),this.recycledBlocks.push(n)}addBlockListeners_(n,a,g){this.listeners.push(ve(n,"pointerdown",null,this.blockMouseDown(a))),this.listeners.push(ve(g,"pointerdown",null,this.blockMouseDown(a))),this.listeners.push(Te(n,"pointerenter",a,a.addSelect)),this.listeners.push(Te(n,"pointerleave",a,a.removeSelect)),this.listeners.push(Te(g,"pointerenter",a,a.addSelect)),this.listeners.push(Te(g,"pointerleave",a,a.removeSelect))}blockMouseDown(n){return a=>{const g=this.targetWorkspace.getGesture(a);g&&(g.setStartBlock(n),g.handleFlyoutStart(a,this))}}onMouseDown(n){const a=this.targetWorkspace.getGesture(n);a&&a.handleFlyoutStart(n,this)}isBlockCreatable(n){return n.isEnabled()}createBlock(n){let a=null;o.disable$$module$build$src$core$events$utils();var g=this.targetWorkspace.getAllVariables();this.targetWorkspace.setResizesEnabled(!1);try{a=this.placeNewBlock(n)}finally{o.enable$$module$build$src$core$events$utils()}if(this.targetWorkspace.hideChaff(),n=WO(this.targetWorkspace,g),Q()){for(o.setGroup$$module$build$src$core$events$utils(!0),g=0;g<n.length;g++){const R=n[g];J(new(pe(pl))(R))}J(new(pe(o.CREATE$$module$build$src$core$events$utils))(a))}return this.autoClose?this.hide():this.filterForCapacity(),a}initFlyoutButton_(n,a,g){const R=n.createDom();n.moveTo(a,g),n.show(),this.listeners.push(ve(R,"pointerdown",this,this.onMouseDown)),this.buttons_.push(n)}createRect_(n,a,g,R,f){return a=Le(Ve.RECT,{"fill-opacity":0,x:a,y:g,height:R.height,width:R.width}),a.tooltip=n,MT(a),this.workspace_.getCanvas().insertBefore(a,n.getSvgRoot()),this.rectMap_.set(n,a),this.mats[f]=a}moveRectToBlock_(n,a){const g=a.getHeightWidth();n.setAttribute("width",String(g.width)),n.setAttribute("height",String(g.height)),a=a.getRelativeToSurfaceXY(),n.setAttribute("y",String(a.y)),n.setAttribute("x",String(this.RTL?a.x-g.width:a.x))}filterForCapacity(){const n=this.workspace_.getTopBlocks(!1);for(let a=0,g;g=n[a];a++)if(this.permanentlyDisabled.indexOf(g)===-1){const R=this.targetWorkspace.isCapacityAvailable(G(g));for(;g;)g.setEnabled(R),g=g.getNextBlock()}}reflow(){this.reflowWrapper&&this.workspace_.removeChangeListener(this.reflowWrapper),this.reflowInternal_(),this.reflowWrapper&&this.workspace_.addChangeListener(this.reflowWrapper)}isScrollable(){return this.workspace_.scrollbar?this.workspace_.scrollbar.isVisible():!1}placeNewBlock(n){var a=this.targetWorkspace;if(!n.getSvgRoot())throw Error("oldBlock is not rendered");const g=Nr(n,{saveIds:!1});return a.setResizesEnabled(!1),a=Ol(g,a),this.positionNewBlock(n,a),a}positionNewBlock(n,a){const g=this.targetWorkspace;var R=g.getOriginOffsetInPixels(),f=this.workspace_.getOriginOffsetInPixels();n=n.getRelativeToSurfaceXY(),n.scale(this.workspace_.scale),f=ft.sum(f,n),R=ft.difference(f,R),R.scale(1/g.scale),a.moveTo(new ft(R.x,R.y))}};iM.FlyoutItemType=eE;var y$=class extends iM{constructor(n){super(n),this.horizontalLayout=!0}setMetrics_(n){if(this.isVisible()){var a=this.workspace_.getMetricsManager(),g=a.getScrollMetrics(),R=a.getViewMetrics();a=a.getAbsoluteMetrics(),typeof n.x=="number"&&(this.workspace_.scrollX=-(g.left+(g.width-R.width)*n.x)),this.workspace_.translate(this.workspace_.scrollX+a.left,this.workspace_.scrollY+a.top)}}getX(){return 0}getY(){if(!this.isVisible())return 0;var n=this.targetWorkspace.getMetricsManager();const a=n.getAbsoluteMetrics(),g=n.getViewMetrics();n=n.getToolboxMetrics();const R=this.toolboxPosition_===To.TOP;return this.targetWorkspace.toolboxPosition===this.toolboxPosition_?this.targetWorkspace.getToolbox()?R?n.height:g.height-this.height_:R?0:g.height:R?0:g.height+a.top-this.height_}position(){if(this.isVisible()&&this.targetWorkspace.isVisible()){var n=this.targetWorkspace.getMetricsManager().getViewMetrics();this.width_=n.width,this.setBackgroundPath(n.width-2*this.CORNER_RADIUS,this.height_-this.CORNER_RADIUS),n=this.getX();var a=this.getY();this.positionAt_(this.width_,this.height_,n,a)}}setBackgroundPath(n,a){const g=this.toolboxPosition_===To.TOP,R=["M 0,"+(g?0:this.CORNER_RADIUS)];g?(R.push("h",n+2*this.CORNER_RADIUS),R.push("v",a),R.push("a",this.CORNER_RADIUS,this.CORNER_RADIUS,0,0,1,-this.CORNER_RADIUS,this.CORNER_RADIUS),R.push("h",-n),R.push("a",this.CORNER_RADIUS,this.CORNER_RADIUS,0,0,1,-this.CORNER_RADIUS,-this.CORNER_RADIUS)):(R.push("a",this.CORNER_RADIUS,this.CORNER_RADIUS,0,0,1,this.CORNER_RADIUS,-this.CORNER_RADIUS),R.push("h",n),R.push("a",this.CORNER_RADIUS,this.CORNER_RADIUS,0,0,1,this.CORNER_RADIUS,this.CORNER_RADIUS),R.push("v",a),R.push("h",-n-2*this.CORNER_RADIUS)),R.push("z"),this.svgBackground_.setAttribute("d",R.join(" "))}scrollToStart(){let n;(n=this.workspace_.scrollbar)==null||n.setX(this.RTL?1/0:0)}wheel_(n){var a=Xe(n);if(a=a.x||a.y){const g=this.workspace_.getMetricsManager(),R=g.getScrollMetrics();a=g.getViewMetrics().left-R.left+a;let f;(f=this.workspace_.scrollbar)==null||f.setX(a),Nn(),er()}n.preventDefault(),n.stopPropagation()}layout_(n,a){this.workspace_.scale=this.targetWorkspace.scale;const g=this.MARGIN;let R=g+this.tabWidth_;this.RTL&&(n=n.reverse());for(let fe=0,it;it=n[fe];fe++)if(it.type==="block"){var f=it.block,$=f.getDescendants(!1);for(let ts=0,qo;qo=$[ts];ts++)qo.isInFlyout=!0;$=f.getSvgRoot();const Pt=f.getHeightWidth();var le=f.outputConnection?this.tabWidth_:0;le=this.RTL?R+Pt.width:R-le,f.moveBy(le,g),le=this.createRect_(f,le,g,Pt,fe),R+=Pt.width+a[fe],this.addBlockListeners_($,f,le)}else it.type==="button"&&(f=it.button,this.initFlyoutButton_(f,R,g),R+=f.width+a[fe])}isDragTowardWorkspace(n){n=Math.atan2(n.y,n.x)/Math.PI*180;const a=this.dragAngleRange_;return n<90+a&&n>90-a||n>-90-a&&n<-90+a}getClientRect(){if(!this.svgGroup_||this.autoClose||!this.isVisible())return null;const n=this.svgGroup_.getBoundingClientRect(),a=n.top;return this.toolboxPosition_===To.TOP?new Zo(-1e9,a+n.height,-1e9,1e9):new Zo(a,1e9,-1e9,1e9)}reflowInternal_(){this.workspace_.scale=this.getFlyoutScale();let n=0;const a=this.workspace_.getTopBlocks(!1);for(let R=0,f;f=a[R];R++)n=Math.max(n,f.getHeightWidth().height);const g=this.buttons_;for(let R=0,f;f=g[R];R++)n=Math.max(n,f.height);if(n+=1.5*this.MARGIN,n*=this.workspace_.scale,n+=ms.scrollbarThickness,this.height_!==n){for(let R=0,f;f=a[R];R++)this.rectMap_.has(f)&&this.moveRectToBlock_(this.rectMap_.get(f),f);this.targetWorkspace.scrollbar||this.autoClose||this.targetWorkspace.getFlyout()!==this||this.toolboxPosition_!==To.TOP||this.targetWorkspace.translate(this.targetWorkspace.scrollX,this.targetWorkspace.scrollY+n),this.height_=n,this.position(),this.targetWorkspace.resizeContents(),this.targetWorkspace.recordDragTargets()}}};_(Mt.FLYOUTS_HORIZONTAL_TOOLBOX,A_,y$);var Gm=class extends iM{constructor(n){super(n)}setMetrics_(n){if(this.isVisible()){var a=this.workspace_.getMetricsManager(),g=a.getScrollMetrics(),R=a.getViewMetrics();a=a.getAbsoluteMetrics(),typeof n.y=="number"&&(this.workspace_.scrollY=-(g.top+(g.height-R.height)*n.y)),this.workspace_.translate(this.workspace_.scrollX+a.left,this.workspace_.scrollY+a.top)}}getX(){if(!this.isVisible())return 0;var n=this.targetWorkspace.getMetricsManager();const a=n.getAbsoluteMetrics(),g=n.getViewMetrics();return n=n.getToolboxMetrics(),this.targetWorkspace.toolboxPosition===this.toolboxPosition_?this.targetWorkspace.getToolbox()?this.toolboxPosition_===To.LEFT?n.width:g.width-this.width_:this.toolboxPosition_===To.LEFT?0:g.width:this.toolboxPosition_===To.LEFT?0:g.width+a.left-this.width_}getY(){return 0}position(){if(this.isVisible()&&this.targetWorkspace.isVisible()){var n=this.targetWorkspace.getMetricsManager().getViewMetrics();this.height_=n.height,this.setBackgroundPath(this.width_-this.CORNER_RADIUS,n.height-2*this.CORNER_RADIUS),n=this.getX();var a=this.getY();this.positionAt_(this.width_,this.height_,n,a)}}setBackgroundPath(n,a){const g=this.toolboxPosition_===To.RIGHT;var R=n+this.CORNER_RADIUS;R=["M "+(g?R:0)+",0"],R.push("h",g?-n:n),R.push("a",this.CORNER_RADIUS,this.CORNER_RADIUS,0,0,g?0:1,g?-this.CORNER_RADIUS:this.CORNER_RADIUS,this.CORNER_RADIUS),R.push("v",Math.max(0,a)),R.push("a",this.CORNER_RADIUS,this.CORNER_RADIUS,0,0,g?0:1,g?this.CORNER_RADIUS:-this.CORNER_RADIUS,this.CORNER_RADIUS),R.push("h",g?n:-n),R.push("z"),this.svgBackground_.setAttribute("d",R.join(" "))}scrollToStart(){let n;(n=this.workspace_.scrollbar)==null||n.setY(0)}wheel_(n){var a=Xe(n);if(a.y){const g=this.workspace_.getMetricsManager(),R=g.getScrollMetrics();a=g.getViewMetrics().top-R.top+a.y;let f;(f=this.workspace_.scrollbar)==null||f.setY(a),Nn(),er()}n.preventDefault(),n.stopPropagation()}layout_(n,a){this.workspace_.scale=this.targetWorkspace.scale;var g=this.MARGIN;const R=this.RTL?g:g+this.tabWidth_;for(let fe=0,it;it=n[fe];fe++)if(it.type==="block"){var f=it.block,$=f.getDescendants(!1);for(let ts=0,qo;qo=$[ts];ts++)qo.isInFlyout=!0;$=f.getSvgRoot();const Pt=f.getHeightWidth();var le=f.outputConnection?R-this.tabWidth_:R;f.moveBy(le,g),le=this.createRect_(f,this.RTL?le-Pt.width:le,g,Pt,fe),this.addBlockListeners_($,f,le),g+=Pt.height+a[fe]}else it.type==="button"&&(f=it.button,this.initFlyoutButton_(f,R,g),g+=f.height+a[fe])}isDragTowardWorkspace(n){n=Math.atan2(n.y,n.x)/Math.PI*180;const a=this.dragAngleRange_;return n<a&&n>-a||n<-180+a||n>180-a}getClientRect(){if(!this.svgGroup_||this.autoClose||!this.isVisible())return null;const n=this.svgGroup_.getBoundingClientRect(),a=n.left;return this.toolboxPosition_===To.LEFT?new Zo(-1e9,1e9,-1e9,a+n.width):new Zo(-1e9,1e9,a,1e9)}reflowInternal_(){this.workspace_.scale=this.getFlyoutScale();let n=0;var a=this.workspace_.getTopBlocks(!1);for(let R=0,f;f=a[R];R++){var g=f.getHeightWidth().width;f.outputConnection&&(g-=this.tabWidth_),n=Math.max(n,g)}for(let R=0,f;f=this.buttons_[R];R++)n=Math.max(n,f.width);if(n+=1.5*this.MARGIN+this.tabWidth_,n*=this.workspace_.scale,n+=ms.scrollbarThickness,this.width_!==n){for(let R=0,f;f=a[R];R++){if(this.RTL){g=f.getRelativeToSurfaceXY().x;let $=n/this.workspace_.scale-this.MARGIN;f.outputConnection||($-=this.tabWidth_),f.moveBy($-g,0)}this.rectMap_.has(f)&&this.moveRectToBlock_(this.rectMap_.get(f),f)}if(this.RTL)for(let R=0,f;f=this.buttons_[R];R++)a=f.getPosition().y,f.moveTo(n/this.workspace_.scale-f.width-this.MARGIN-this.tabWidth_,a);this.targetWorkspace.scrollbar||this.autoClose||this.targetWorkspace.getFlyout()!==this||this.toolboxPosition_!==To.LEFT||this.targetWorkspace.translate(this.targetWorkspace.scrollX+n,this.targetWorkspace.scrollY),this.width_=n,this.position(),this.targetWorkspace.resizeContents(),this.targetWorkspace.recordDragTargets()}}};Gm.registryName="verticalFlyout",_(Mt.FLYOUTS_VERTICAL_TOOLBOX,A_,Gm);var $$;o.CodeGenerator$$module$build$src$core$generator=class{constructor(n){this.forBlock=Object.create(null),this.FUNCTION_NAME_PLACEHOLDER_="{leCUI8hutHZI4480Dc}",this.STATEMENT_SUFFIX=this.STATEMENT_PREFIX=this.INFINITE_LOOP_TRAP=null,this.INDENT=" ",this.COMMENT_WRAP=60,this.ORDER_OVERRIDES=[],this.isInitialized=null,this.RESERVED_WORDS_="",this.definitions_=Object.create(null),this.functionNames_=Object.create(null),this.nameDB_=void 0,this.name_=n,this.FUNCTION_NAME_PLACEHOLDER_REGEXP_=new RegExp(this.FUNCTION_NAME_PLACEHOLDER_,"g")}workspaceToCode(n){n||(console.warn("No workspace specified in workspaceToCode call. Guessing."),n=C());var a=[];this.init(n),n=n.getTopBlocks(!0);for(let g=0,R;R=n[g];g++){let f=this.blockToCode(R);Array.isArray(f)&&(f=f[0]),f&&(R.outputConnection&&(f=this.scrubNakedValue(f),this.STATEMENT_PREFIX&&!R.suppressPrefixSuffix&&(f=this.injectId(this.STATEMENT_PREFIX,R)+f),this.STATEMENT_SUFFIX&&!R.suppressPrefixSuffix&&(f+=this.injectId(this.STATEMENT_SUFFIX,R))),a.push(f))}return a=a.join(`
- `),a=this.finish(a),a=a.replace(/^\s+\n/,""),a=a.replace(/\n\s+$/,`
- `),a=a.replace(/[ \t]+\n/g,`
- `)}prefixLines(n,a){return a+n.replace(/(?!\n$)\n/g,`
- `+a)}allNestedComments(n){const a=[];n=n.getDescendants(!0);for(let g=0;g<n.length;g++){const R=n[g].getCommentText();R&&a.push(R)}return a.length&&a.push(""),a.join(`
- `)}blockToCode(n,a){if(this.isInitialized===!1&&console.warn("CodeGenerator init was not called before blockToCode was called."),!n)return"";if(!n.isEnabled())return a?"":this.blockToCode(n.getNextBlock());if(n.isInsertionMarker())return a?"":this.blockToCode(n.getChildren(!1)[0]);var g=this.forBlock[n.type];if(!g&&this[n.type]&&(xe("block generator functions on CodeGenerator objects","10.0","11.0","the .forBlock[blockType] dictionary"),g=this[n.type]),typeof g!="function")throw Error(`${this.name_} generator does not know how to generate code for block type "${n.type}".`);if(g=g.call(n,n,this),Array.isArray(g)){if(!n.outputConnection)throw TypeError("Expecting string from statement block: "+n.type);return[this.scrub_(n,g[0],a),g[1]]}if(typeof g=="string")return this.STATEMENT_PREFIX&&!n.suppressPrefixSuffix&&(g=this.injectId(this.STATEMENT_PREFIX,n)+g),this.STATEMENT_SUFFIX&&!n.suppressPrefixSuffix&&(g+=this.injectId(this.STATEMENT_SUFFIX,n)),this.scrub_(n,g,a);if(g===null)return"";throw SyntaxError("Invalid code generated: "+g)}valueToCode(n,a,g){if(isNaN(g))throw TypeError("Expecting valid order from block: "+n.type);var R=n.getInputTargetBlock(a);if(!R||(a=this.blockToCode(R),a===""))return"";if(!Array.isArray(a))throw TypeError(`Expecting tuple from value block: ${R.type} See developers.google.com/blockly/guides/create-custom-blocks/generating-code for more information`);if(n=a[0],a=a[1],isNaN(a))throw TypeError("Expecting valid order from value block: "+R.type);if(!n)return"";R=!1;var f=Math.floor(g);const $=Math.floor(a);if(f<=$&&(f!==$||f!==0&&f!==99)){for(R=!0,f=0;f<this.ORDER_OVERRIDES.length;f++)if(this.ORDER_OVERRIDES[f][0]===g&&this.ORDER_OVERRIDES[f][1]===a){R=!1;break}}return R&&(n="("+n+")"),n}statementToCode(n,a){if(n=n.getInputTargetBlock(a),a=this.blockToCode(n),typeof a!="string")throw TypeError("Expecting code from statement block: "+(n&&n.type));return a&&(a=this.prefixLines(a,this.INDENT)),a}addLoopTrap(n,a){return this.INFINITE_LOOP_TRAP&&(n=this.prefixLines(this.injectId(this.INFINITE_LOOP_TRAP,a),this.INDENT)+n),this.STATEMENT_SUFFIX&&!a.suppressPrefixSuffix&&(n=this.prefixLines(this.injectId(this.STATEMENT_SUFFIX,a),this.INDENT)+n),this.STATEMENT_PREFIX&&!a.suppressPrefixSuffix&&(n+=this.prefixLines(this.injectId(this.STATEMENT_PREFIX,a),this.INDENT)),n}injectId(n,a){return a=a.id.replace(/\$/g,"$$$$"),n.replace(/%1/g,"'"+a+"'")}addReservedWords(n){this.RESERVED_WORDS_+=n+","}provideFunction_(n,a){if(!this.definitions_[n]){const g=this.nameDB_.getDistinctName(n,o.NameType$$module$build$src$core$names.PROCEDURE);this.functionNames_[n]=g,Array.isArray(a)&&(a=a.join(`
- `)),a=a.trim().replace(this.FUNCTION_NAME_PLACEHOLDER_REGEXP_,g);let R;for(;R!==a;)R=a,a=a.replace(/^(( {2})*) {2}/gm,"$1\0");a=a.replace(/\0/g,this.INDENT),this.definitions_[n]=a}return this.functionNames_[n]}getVariableName(n){return this.getName(n,o.NameType$$module$build$src$core$names.VARIABLE)}getProcedureName(n){return this.getName(n,o.NameType$$module$build$src$core$names.PROCEDURE)}getName(n,a){if(!this.nameDB_)throw Error("Name database is not defined. You must initialize `nameDB_` in your generator class and call `init` first.");return this.nameDB_.getName(n,a)}init(n){this.definitions_=Object.create(null),this.functionNames_=Object.create(null)}scrub_(n,a,g){return a}finish(n){return this.definitions_=Object.create(null),this.functionNames_=Object.create(null),n}scrubNakedValue(n){return n}},$$={},$$.CodeGenerator=o.CodeGenerator$$module$build$src$core$generator;var B$=!1,Dl={};Dl.Align=o.Align$$module$build$src$core$inputs$align,Dl.DummyInput=Fr,Dl.EndRowInput=G_,Dl.Input=xr,Dl.StatementInput=un,Dl.ValueInput=o.ValueInput$$module$build$src$core$inputs$value_input,Dl.inputTypes=o.inputTypes$$module$build$src$core$inputs$input_types;var w$=class extends _g{constructor(){super(),this.FIELD_TEXT_BASELINE_CENTER=!1,this.DARK_PATH_OFFSET=1,this.MAX_BOTTOM_WIDTH=30,this.STATEMENT_BOTTOM_SPACER=-this.NOTCH_HEIGHT/2}getCSS_(n){return super.getCSS_(n).concat([`${n} .blocklyInsertionMarker>.blocklyPathLight,`,`${n} .blocklyInsertionMarker>.blocklyPathDark {`,`fill-opacity: ${this.INSERTION_MARKER_OPACITY};`,"stroke: none;","}"])}},G$=class{constructor(n){this.inlineSteps_=this.steps_="",this.info_=n,this.RTL_=this.info_.RTL,n=n.getRenderer(),this.constants_=n.getConstants(),this.highlightConstants_=n.getHighlightConstants(),this.highlightOffset=this.highlightConstants_.OFFSET,this.outsideCornerPaths_=this.highlightConstants_.OUTSIDE_CORNER,this.insideCornerPaths_=this.highlightConstants_.INSIDE_CORNER,this.puzzleTabPaths_=this.highlightConstants_.PUZZLE_TAB,this.notchPaths_=this.highlightConstants_.NOTCH,this.startPaths_=this.highlightConstants_.START_HAT,this.jaggedTeethPaths_=this.highlightConstants_.JAGGED_TEETH}getPath(){return this.steps_+`
- `+this.inlineSteps_}drawTopCorner(n){this.steps_+=ns(n.xPos,this.info_.startY);for(let a=0,g;g=n.elements[a];a++)we.isLeftSquareCorner(g)?this.steps_+=this.highlightConstants_.START_POINT:we.isLeftRoundedCorner(g)?this.steps_+=this.outsideCornerPaths_.topLeft(this.RTL_):we.isPreviousConnection(g)?this.steps_+=this.notchPaths_.pathLeft:we.isHat(g)?this.steps_+=this.startPaths_.path(this.RTL_):we.isSpacer(g)&&g.width!==0&&(this.steps_+=Ut("H",g.xPos+g.width-this.highlightOffset));this.steps_+=Ut("H",n.xPos+n.width-this.highlightOffset)}drawJaggedEdge_(n){this.info_.RTL&&(this.steps_+=this.jaggedTeethPaths_.pathLeft+Ut("v",n.height-this.jaggedTeethPaths_.height-this.highlightOffset))}drawValueInput(n){const a=n.getLastInput();if(this.RTL_){const g=n.height-a.connectionHeight;this.steps_+=ti(a.xPos+a.width-this.highlightOffset,n.yPos)+this.puzzleTabPaths_.pathDown(this.RTL_)+Ut("v",g)}else this.steps_+=ti(a.xPos+a.width,n.yPos)+this.puzzleTabPaths_.pathDown(this.RTL_)}drawStatementInput(n){const a=n.getLastInput();if(a)if(this.RTL_){const g=n.height-2*this.insideCornerPaths_.height;this.steps_+=ti(a.xPos,n.yPos)+this.insideCornerPaths_.pathTop(this.RTL_)+Ut("v",g)+this.insideCornerPaths_.pathBottom(this.RTL_)+Pr(n.width-a.xPos-this.insideCornerPaths_.width,0)}else this.steps_+=ti(a.xPos,n.yPos+n.height)+this.insideCornerPaths_.pathBottom(this.RTL_)+Pr(n.width-a.xPos-this.insideCornerPaths_.width,0)}drawRightSideRow(n){const a=n.xPos+n.width-this.highlightOffset;n instanceof am&&n.followsStatement&&(this.steps_+=Ut("H",a)),this.RTL_&&(this.steps_+=Ut("H",a),n.height>this.highlightOffset&&(this.steps_+=Ut("V",n.yPos+n.height-this.highlightOffset)))}drawBottomRow(n){if(this.RTL_)this.steps_+=Ut("V",n.baseline-this.highlightOffset);else{const a=this.info_.bottomRow.elements[0];we.isLeftSquareCorner(a)?this.steps_+=ti(n.xPos+this.highlightOffset,n.baseline-this.highlightOffset):we.isLeftRoundedCorner(a)&&(this.steps_+=ti(n.xPos,n.baseline),this.steps_+=this.outsideCornerPaths_.bottomLeft())}}drawLeft(){var n=this.info_.outputConnection;n&&(n=n.connectionOffsetY+n.height,this.RTL_?this.steps_+=ti(this.info_.startX,n):(this.steps_+=ti(this.info_.startX+this.highlightOffset,this.info_.bottomRow.baseline-this.highlightOffset),this.steps_+=Ut("V",n)),this.steps_+=this.puzzleTabPaths_.pathUp(this.RTL_)),this.RTL_||(n=this.info_.topRow,we.isLeftRoundedCorner(n.elements[0])?this.steps_+=Ut("V",this.outsideCornerPaths_.height):this.steps_+=Ut("V",n.capline+this.highlightOffset))}drawInlineInput(n){const a=this.highlightOffset,g=n.xPos+n.connectionWidth;var R=n.centerline-n.height/2;const f=n.width-n.connectionWidth,$=R+a;this.RTL_?(R=n.connectionOffsetY-a,n=n.height-(n.connectionOffsetY+n.connectionHeight)+a,this.inlineSteps_+=ti(g-a,$)+Ut("v",R)+this.puzzleTabPaths_.pathDown(this.RTL_)+Ut("v",n)+Ut("h",f)):this.inlineSteps_+=ti(n.xPos+n.width+a,$)+Ut("v",n.height)+Ut("h",-f)+ti(g,R+n.connectionOffsetY)+this.puzzleTabPaths_.pathDown(this.RTL_)}},k$=class extends lg{constructor(n,a){super(n,a),this.highlighter_=new G$(a)}draw(){this.drawOutline_(),this.drawInternals_();const n=this.block_.pathObject;n.setPath(this.outlinePath_+`
- `+this.inlinePath_),n.setHighlightPath(this.highlighter_.getPath()),this.info_.RTL&&n.flipRTL(),this.recordSizeOnBlock_()}drawTop_(){this.highlighter_.drawTopCorner(this.info_.topRow),this.highlighter_.drawRightSideRow(this.info_.topRow),super.drawTop_()}drawJaggedEdge_(n){this.highlighter_.drawJaggedEdge_(n),super.drawJaggedEdge_(n)}drawValueInput_(n){this.highlighter_.drawValueInput(n),super.drawValueInput_(n)}drawStatementInput_(n){this.highlighter_.drawStatementInput(n),super.drawStatementInput_(n)}drawRightSideRow_(n){this.highlighter_.drawRightSideRow(n),this.outlinePath_+=Ut("H",n.xPos+n.width)+Ut("V",n.yPos+n.height)}drawBottom_(){this.highlighter_.drawBottomRow(this.info_.bottomRow),super.drawBottom_()}drawLeft_(){this.highlighter_.drawLeft(),super.drawLeft_()}drawInlineInput_(n){this.highlighter_.drawInlineInput(n),super.drawInlineInput_(n)}positionInlineInputConnection_(n){const a=n.centerline-n.height/2;if(n.connectionModel){let g=n.xPos+n.connectionWidth+this.constants_.DARK_PATH_OFFSET;this.info_.RTL&&(g*=-1),n.connectionModel.setOffsetInBlock(g,a+n.connectionOffsetY+this.constants_.DARK_PATH_OFFSET)}}positionStatementInputConnection_(n){const a=n.getLastInput();if(a!=null&&a.connectionModel){let g=n.xPos+n.statementEdge+a.notchOffset;g=this.info_.RTL?-1*g:g+this.constants_.DARK_PATH_OFFSET,a.connectionModel.setOffsetInBlock(g,n.yPos+this.constants_.DARK_PATH_OFFSET)}}positionExternalValueConnection_(n){const a=n.getLastInput();if(a&&a.connectionModel){let g=n.xPos+n.width+this.constants_.DARK_PATH_OFFSET;this.info_.RTL&&(g*=-1),a.connectionModel.setOffsetInBlock(g,n.yPos)}}positionNextConnection_(){const n=this.info_.bottomRow;if(n.connection){const a=n.connection,g=a.xPos;a.connectionModel.setOffsetInBlock((this.info_.RTL?-g:g)+this.constants_.DARK_PATH_OFFSET/2,n.baseline+this.constants_.DARK_PATH_OFFSET)}}},H$=class{constructor(n){this.OFFSET=.5,this.constantProvider=n,this.START_POINT=ns(this.OFFSET,this.OFFSET)}init(){this.INSIDE_CORNER=this.makeInsideCorner(),this.OUTSIDE_CORNER=this.makeOutsideCorner(),this.PUZZLE_TAB=this.makePuzzleTab(),this.NOTCH=this.makeNotch(),this.JAGGED_TEETH=this.makeJaggedTeeth(),this.START_HAT=this.makeStartHat()}makeInsideCorner(){const n=this.constantProvider.CORNER_RADIUS,a=this.OFFSET,g=(1-Math.SQRT1_2)*(n+a)-a,R=ns(g,g)+fs("a","0 0,0",n,Wt(-g-a,n-g)),f=fs("a","0 0,0",n+a,Wt(n+a,n+a)),$=ns(g,-g)+fs("a","0 0,0",n+a,Wt(n-g,g+a));return{width:n+a,height:n,pathTop(le){return le?R:""},pathBottom(le){return le?f:$}}}makeOutsideCorner(){const n=this.constantProvider.CORNER_RADIUS,a=this.OFFSET,g=(1-Math.SQRT1_2)*(n-a)+a,R=ns(g,g)+fs("a","0 0,1",n-a,Wt(n-g,-g+a)),f=ns(a,n)+fs("a","0 0,1",n-a,Wt(n,-n+a)),$=-g,le=ns(g,$)+fs("a","0 0,1",n-a,Wt(-g+a,-$-n));return{height:n,topLeft(fe){return fe?R:f},bottomLeft(){return le}}}makePuzzleTab(){const n=this.constantProvider.TAB_WIDTH,a=this.constantProvider.TAB_HEIGHT,g=ns(-2,-a+3.4)+Pr(-.45*n,-2.1),R=Ut("v",2.5)+ns(.97*-n,2.5)+ki("q",[Wt(.05*-n,10),Wt(.3*n,9.5)])+ns(.67*n,-1.9)+Ut("v",2.5),f=Ut("v",-1.5)+ns(-.92*n,-.5)+ki("q",[Wt(-.19*n,-5.5),Wt(0,-11)])+ns(.92*n,1),$=ns(-5,a-.7)+Pr(.46*n,-2.1);return{width:n,height:a,pathUp(le){return le?g:f},pathDown(le){return le?R:$}}}makeNotch(){return{pathLeft:Ut("h",this.OFFSET)+this.constantProvider.NOTCH.pathLeft}}makeJaggedTeeth(){return{pathLeft:Pr(5.1,2.6)+ns(-10.2,6.8)+Pr(5.1,2.6),height:12,width:10.2}}makeStartHat(){const n=this.constantProvider.START_HAT.height,a=ns(25,-8.7)+ki("c",[Wt(29.7,-6.2),Wt(57.2,-.5),Wt(75,8.7)]),g=ki("c",[Wt(17.8,-9.2),Wt(45.3,-14.9),Wt(75,-8.7)])+ti(100.5,n+.5);return{path(R){return R?a:g}}}},x$=class extends _m{constructor(n,a){super(n,a),this.constants_=n,this.connectedBlock&&(this.width+=this.constants_.DARK_PATH_OFFSET,this.height+=this.constants_.DARK_PATH_OFFSET)}},F$=class extends ig{constructor(n,a){super(n,a),this.constants_=n,this.connectedBlock&&(this.height+=this.constants_.DARK_PATH_OFFSET)}},V$=class extends KT{constructor(n,a){super(n,a),this.renderer_=n}getRenderer(){return this.renderer_}populateBottomRow_(){super.populateBottomRow_(),this.block_.inputList.length&&this.block_.inputList[this.block_.inputList.length-1]instanceof un||(this.bottomRow.minHeight=this.constants_.MEDIUM_PADDING-this.constants_.DARK_PATH_OFFSET)}addInput_(n,a){this.isInline&&n instanceof o.ValueInput$$module$build$src$core$inputs$value_input?(a.elements.push(new x$(this.constants_,n)),a.hasInlineInput=!0):n instanceof un?(a.elements.push(new F$(this.constants_,n)),a.hasStatement=!0):n instanceof o.ValueInput$$module$build$src$core$inputs$value_input?(a.elements.push(new zh(this.constants_,n)),a.hasExternalInput=!0):(n instanceof Fr||n instanceof G_)&&(a.minHeight=Math.max(a.minHeight,this.constants_.DUMMY_INPUT_MIN_HEIGHT),a.hasDummyInput=!0),this.isInline||a.align!==null||(a.align=n.align)}addElemSpacing_(){let n=!1;for(let g=0,R;R=this.rows[g];g++)R.hasExternalInput&&(n=!0);for(let g=0,R;R=this.rows[g];g++){var a=R.elements;if(R.elements=[],R.startsWithElemSpacer()&&R.elements.push(new En(this.constants_,this.getInRowSpacing_(null,a[0]))),a.length){for(let f=0;f<a.length-1;f++){R.elements.push(a[f]);const $=this.getInRowSpacing_(a[f],a[f+1]);R.elements.push(new En(this.constants_,$))}R.elements.push(a[a.length-1]),R.endsWithElemSpacer()&&(a=this.getInRowSpacing_(a[a.length-1],null),n&&R.hasDummyInput&&(a+=this.constants_.TAB_WIDTH),R.elements.push(new En(this.constants_,a)))}}}getInRowSpacing_(n,a){if(!n)return a&&we.isField(a)&&a.isEditable?this.constants_.MEDIUM_PADDING:a&&we.isInlineInput(a)?this.constants_.MEDIUM_LARGE_PADDING:a&&we.isStatementInput(a)?this.constants_.STATEMENT_INPUT_PADDING_LEFT:this.constants_.LARGE_PADDING;if(!we.isInput(n)&&(!a||we.isStatementInput(a)))return we.isField(n)&&n.isEditable?this.constants_.MEDIUM_PADDING:we.isIcon(n)?2*this.constants_.LARGE_PADDING+1:we.isHat(n)?this.constants_.NO_PADDING:we.isPreviousOrNextConnection(n)?this.constants_.LARGE_PADDING:we.isLeftRoundedCorner(n)?this.constants_.MIN_BLOCK_WIDTH:we.isJaggedEdge(n)?this.constants_.NO_PADDING:this.constants_.LARGE_PADDING;if(we.isInput(n)&&!a){if(we.isExternalInput(n))return this.constants_.NO_PADDING;if(we.isInlineInput(n))return this.constants_.LARGE_PADDING;if(we.isStatementInput(n))return this.constants_.NO_PADDING}if(!we.isInput(n)&&a&&we.isInput(a)){if(we.isField(n)&&n.isEditable){if(we.isInlineInput(a)||we.isExternalInput(a))return this.constants_.SMALL_PADDING}else{if(we.isInlineInput(a)||we.isExternalInput(a))return this.constants_.MEDIUM_LARGE_PADDING;if(we.isStatementInput(a))return this.constants_.LARGE_PADDING}return this.constants_.LARGE_PADDING-1}if(we.isIcon(n)&&a&&!we.isInput(a))return this.constants_.LARGE_PADDING;if(we.isInlineInput(n)&&a&&we.isField(a))return a.isEditable?this.constants_.MEDIUM_PADDING:this.constants_.LARGE_PADDING;if(we.isLeftSquareCorner(n)&&a){if(we.isHat(a))return this.constants_.NO_PADDING;if(we.isPreviousConnection(a))return a.notchOffset;if(we.isNextConnection(a))return a.notchOffset+(this.RTL?1:-1)*this.constants_.DARK_PATH_OFFSET/2}if(we.isLeftRoundedCorner(n)&&a){if(we.isPreviousConnection(a))return a.notchOffset-this.constants_.CORNER_RADIUS;if(we.isNextConnection(a))return a.notchOffset-this.constants_.CORNER_RADIUS+(this.RTL?1:-1)*this.constants_.DARK_PATH_OFFSET/2}return we.isField(n)&&a&&we.isField(a)&&n.isEditable===a.isEditable||a&&we.isJaggedEdge(a)?this.constants_.LARGE_PADDING:this.constants_.MEDIUM_PADDING}getSpacerRowHeight_(n,a){return we.isTopRow(n)&&we.isBottomRow(a)?this.constants_.EMPTY_BLOCK_SPACER_HEIGHT:we.isTopRow(n)||we.isBottomRow(a)?this.constants_.NO_PADDING:n.hasExternalInput&&a.hasExternalInput?this.constants_.LARGE_PADDING:!n.hasStatement&&a.hasStatement?this.constants_.BETWEEN_STATEMENT_PADDING_Y:n.hasStatement&&a.hasStatement||!n.hasStatement&&a.hasDummyInput||n.hasDummyInput?this.constants_.LARGE_PADDING:this.constants_.MEDIUM_PADDING}getElemCenterline_(n,a){if(we.isSpacer(a))return n.yPos+a.height/2;if(we.isBottomRow(n))return n=n.yPos+n.height-n.descenderHeight,we.isNextConnection(a)?n+a.height/2:n-a.height/2;if(we.isTopRow(n))return we.isHat(a)?n.capline-a.height/2:n.capline+a.height/2;let g=n.yPos;return we.isField(a)||we.isIcon(a)?(g+=a.height/2,(n.hasInlineInput||n.hasStatement)&&a.height+this.constants_.TALL_INPUT_FIELD_OFFSET_Y<=n.height&&(g+=this.constants_.TALL_INPUT_FIELD_OFFSET_Y)):g=we.isInlineInput(a)?g+a.height/2:g+n.height/2,g}alignRowElements_(){if(this.isInline){var n=0,a=new WeakMap,g=null;for(let R=this.rows.length-1,f;f=this.rows[R];R--)a.set(f,n),we.isInputRow(f)&&(f.hasStatement&&this.alignStatementRow_(f),g&&g.hasStatement&&f.width<g.width?a.set(f,g.width):n=f.hasStatement?f.width:Math.max(n,f.width),g=f);n=0;for(let R=0,f;f=this.rows[R];R++)f.hasStatement?n=this.getDesiredRowWidth_(f):we.isSpacer(f)?f.width=Math.max(n,a.get(f)):(g=f.width,n=Math.max(n,a.get(f))-g,0<n&&this.addAlignmentPadding_(f,n),n=f.width)}else super.alignRowElements_()}getDesiredRowWidth_(n){return this.isInline&&n.hasStatement?this.statementEdge+this.constants_.MAX_BOTTOM_WIDTH+this.startX:super.getDesiredRowWidth_(n)}finalize_(){let n=0,a=0;for(let R=0,f;f=this.rows[R];R++){f.yPos=a,f.xPos=this.startX,a+=f.height,n=Math.max(n,f.widthWithConnectedBlocks);var g=a-this.topRow.ascenderHeight;f===this.bottomRow&&g<this.constants_.MIN_BLOCK_HEIGHT&&(g=this.constants_.MIN_BLOCK_HEIGHT-g,this.bottomRow.height+=g,a+=g),this.recordElemPositions_(f)}this.outputConnection&&this.block_.nextConnection&&this.block_.nextConnection.isConnected()&&(g=this.block_.nextConnection.targetBlock())&&(n=Math.max(n,g.getHeightWidth().width-this.constants_.DARK_PATH_OFFSET)),this.bottomRow.baseline=a-this.bottomRow.descenderHeight,this.widthWithChildren=n+this.startX+this.constants_.DARK_PATH_OFFSET,this.width+=this.constants_.DARK_PATH_OFFSET,this.height=a+this.constants_.DARK_PATH_OFFSET,this.startY=this.topRow.capline}},W$=class extends Zh{constructor(n,a,g){super(n,a,g),this.constants=g,this.colourDark="#000000",this.svgPathDark=Le(Ve.PATH,{class:"blocklyPathDark",transform:"translate(1,1)"}),this.svgRoot.insertBefore(this.svgPathDark,this.svgPath),this.svgPathLight=Le(Ve.PATH,{class:"blocklyPathLight"},this.svgRoot)}setPath(n){this.svgPath.setAttribute("d",n),this.svgPathDark.setAttribute("d",n)}setHighlightPath(n){this.svgPathLight.setAttribute("d",n)}flipRTL(){this.svgPath.setAttribute("transform","scale(-1 1)"),this.svgPathLight.setAttribute("transform","scale(-1 1)"),this.svgPathDark.setAttribute("transform","translate(1,1) scale(-1 1)")}applyColour(n){if(this.svgPathLight.style.display="",this.svgPathDark.style.display="",!this.style.colourTertiary)throw Error("The renderer did not properly initialize the tertiary colour of the block style");this.svgPathLight.setAttribute("stroke",this.style.colourTertiary),this.svgPathDark.setAttribute("fill",this.colourDark),super.applyColour(n),this.svgPath.setAttribute("stroke","none")}setStyle(n){this.style=n,this.colourDark=Ba("#000",this.style.colourPrimary,.2)||this.colourDark}updateHighlighted(n){n?(this.svgPath.setAttribute("filter","url(#"+this.constants.embossFilterId+")"),this.svgPathLight.style.display="none"):(this.svgPath.setAttribute("filter","none"),this.svgPathLight.style.display="inline")}updateShadow_(n){if(n){if(this.svgPathLight.style.display="none",!this.style.colourSecondary)throw Error("The renderer did not properly initialize the secondary colour of the block style block style");this.svgPathDark.setAttribute("fill",this.style.colourSecondary),this.svgPath.setAttribute("stroke","none"),this.svgPath.setAttribute("fill",this.style.colourSecondary)}}updateDisabled_(n){super.updateDisabled_(n),n&&this.svgPath.setAttribute("stroke","none")}},X$=class extends ag{constructor(n){super(n),this.highlightConstants=null}init(n,a){super.init(n,a),this.highlightConstants=this.makeHighlightConstants_(),this.highlightConstants.init()}refreshDom(n,a){super.refreshDom(n,a),this.getHighlightConstants().init()}makeConstants_(){return new w$}makeRenderInfo_(n){return new V$(this,n)}makeDrawer_(n,a){return new k$(n,a)}makePathObject(n,a){return new W$(n,a,this.getConstants())}makeHighlightConstants_(){return new H$(this.getConstants())}getHighlightConstants(){if(!this.highlightConstants)throw Error("Cannot access the highlight constants because init has not been called");return this.highlightConstants}};ST("geras",X$);var Yr={};Yr.ConstantProvider=w$,Yr.Drawer=k$,Yr.HighlightConstantProvider=H$,Yr.Highlighter=G$,Yr.InlineInput=x$,Yr.PathObject=W$,Yr.RenderInfo=V$,Yr.Renderer=X$,Yr.StatementInput=F$;var Y$=class extends _g{constructor(){super(),xe("Blockly.minimalist.ConstantProvider","v10","v11","Blockly.blockRendering.ConstantProvider")}},K$=class extends lg{constructor(n,a){super(n,a),xe("Blockly.minimalist.Drawer","v10","v11","Blockly.blockRendering.Drawer")}},z$=class extends KT{constructor(n,a){super(n,a),xe("Blockly.minimalist.RenderInfo","v10","v11","Blockly.blockRendering.RenderInfo")}getRenderer(){return this.renderer_}},Z$=class extends ag{constructor(n){super(n),xe("Blockly.minimalist.Renderer","v10","v11","Blockly.blockRendering.Renderer")}makeConstants_(){return new Y$}makeRenderInfo_(n){return new z$(this,n)}makeDrawer_(n,a){return new K$(n,a)}};ST("minimalist",Z$);var Og={};Og.ConstantProvider=Y$,Og.Drawer=K$,Og.RenderInfo=z$,Og.Renderer=Z$;var j$=class extends KT{constructor(n,a){super(n,a)}getRenderer(){return this.renderer_}addElemSpacing_(){let n=!1;for(var a=0;a<this.rows.length;a++)if(this.rows[a].hasExternalInput){n=!0;break}for(a=0;a<this.rows.length;a++){const R=this.rows[a];var g=R.elements;if(R.elements=[],R.startsWithElemSpacer()&&R.elements.push(new En(this.constants_,this.getInRowSpacing_(null,g[0]))),g.length){for(let f=0;f<g.length-1;f++){R.elements.push(g[f]);const $=this.getInRowSpacing_(g[f],g[f+1]);R.elements.push(new En(this.constants_,$))}R.elements.push(g[g.length-1]),R.endsWithElemSpacer()&&(g=this.getInRowSpacing_(g[g.length-1],null),n&&R.hasDummyInput&&(g+=this.constants_.TAB_WIDTH),R.elements.push(new En(this.constants_,g)))}}}getInRowSpacing_(n,a){if(!n)return a&&we.isField(a)&&a.isEditable?this.constants_.MEDIUM_PADDING:a&&we.isInlineInput(a)?this.constants_.MEDIUM_LARGE_PADDING:a&&we.isStatementInput(a)?this.constants_.STATEMENT_INPUT_PADDING_LEFT:this.constants_.LARGE_PADDING;if(!we.isInput(n)&&!a)return we.isField(n)&&n.isEditable?this.constants_.MEDIUM_PADDING:we.isIcon(n)?2*this.constants_.LARGE_PADDING+1:we.isHat(n)?this.constants_.NO_PADDING:we.isPreviousOrNextConnection(n)?this.constants_.LARGE_PADDING:we.isLeftRoundedCorner(n)?this.constants_.MIN_BLOCK_WIDTH:we.isJaggedEdge(n)?this.constants_.NO_PADDING:this.constants_.LARGE_PADDING;if(we.isInput(n)&&!a){if(we.isExternalInput(n))return this.constants_.NO_PADDING;if(we.isInlineInput(n))return this.constants_.LARGE_PADDING;if(we.isStatementInput(n))return this.constants_.NO_PADDING}if(!we.isInput(n)&&a&&we.isInput(a)){if(we.isField(n)&&n.isEditable){if(we.isInlineInput(a)||we.isExternalInput(a))return this.constants_.SMALL_PADDING}else{if(we.isInlineInput(a)||we.isExternalInput(a))return this.constants_.MEDIUM_LARGE_PADDING;if(we.isStatementInput(a))return this.constants_.LARGE_PADDING}return this.constants_.LARGE_PADDING-1}if(we.isIcon(n)&&a&&!we.isInput(a))return this.constants_.LARGE_PADDING;if(we.isInlineInput(n)&&a&&we.isField(a))return a.isEditable?this.constants_.MEDIUM_PADDING:this.constants_.LARGE_PADDING;if(we.isLeftSquareCorner(n)&&a){if(we.isHat(a))return this.constants_.NO_PADDING;if(we.isPreviousConnection(a)||we.isNextConnection(a))return a.notchOffset}return we.isLeftRoundedCorner(n)&&a?a.notchOffset-this.constants_.CORNER_RADIUS:we.isField(n)&&a&&we.isField(a)&&n.isEditable===a.isEditable||a&&we.isJaggedEdge(a)?this.constants_.LARGE_PADDING:this.constants_.MEDIUM_PADDING}getSpacerRowHeight_(n,a){return we.isTopRow(n)&&we.isBottomRow(a)?this.constants_.EMPTY_BLOCK_SPACER_HEIGHT:we.isTopRow(n)||we.isBottomRow(a)?this.constants_.NO_PADDING:n.hasExternalInput&&a.hasExternalInput?this.constants_.LARGE_PADDING:!n.hasStatement&&a.hasStatement?this.constants_.BETWEEN_STATEMENT_PADDING_Y:n.hasStatement&&a.hasStatement||n.hasDummyInput||a.hasDummyInput?this.constants_.LARGE_PADDING:this.constants_.MEDIUM_PADDING}getElemCenterline_(n,a){if(we.isSpacer(a))return n.yPos+a.height/2;if(we.isBottomRow(n))return n=n.yPos+n.height-n.descenderHeight,we.isNextConnection(a)?n+a.height/2:n-a.height/2;if(we.isTopRow(n))return we.isHat(a)?n.capline-a.height/2:n.capline+a.height/2;let g=n.yPos;return g=we.isField(a)&&n.hasStatement?g+(this.constants_.TALL_INPUT_FIELD_OFFSET_Y+a.height/2):g+n.height/2}finalize_(){let n=0,a=0;for(var g=0;g<this.rows.length;g++){const f=this.rows[g];f.yPos=a,f.xPos=this.startX,a+=f.height,n=Math.max(n,f.widthWithConnectedBlocks);var R=a-this.topRow.ascenderHeight;f===this.bottomRow&&R<this.constants_.MIN_BLOCK_HEIGHT&&(R=this.constants_.MIN_BLOCK_HEIGHT-R,this.bottomRow.height+=R,a+=R),this.recordElemPositions_(f)}this.outputConnection&&this.block_.nextConnection&&this.block_.nextConnection.isConnected()&&(g=this.block_.nextConnection.targetBlock())&&(n=Math.max(n,g.getHeightWidth().width)),this.bottomRow.baseline=a-this.bottomRow.descenderHeight,this.widthWithChildren=n+this.startX,this.height=a,this.startY=this.topRow.capline}},q$=class extends ag{constructor(n){super(n)}makeRenderInfo_(n){return new j$(this,n)}};ST("thrasos",q$);var km={};km.RenderInfo=j$,km.Renderer=q$;var o5={colour_blocks:{colourPrimary:"#CF63CF",colourSecondary:"#C94FC9",colourTertiary:"#BD42BD"},list_blocks:{colourPrimary:"#9966FF",colourSecondary:"#855CD6",colourTertiary:"#774DCB"},logic_blocks:{colourPrimary:"#4C97FF",colourSecondary:"#4280D7",colourTertiary:"#3373CC"},loop_blocks:{colourPrimary:"#0fBD8C",colourSecondary:"#0DA57A",colourTertiary:"#0B8E69"},math_blocks:{colourPrimary:"#59C059",colourSecondary:"#46B946",colourTertiary:"#389438"},procedure_blocks:{colourPrimary:"#FF6680",colourSecondary:"#FF4D6A",colourTertiary:"#FF3355"},text_blocks:{colourPrimary:"#FFBF00",colourSecondary:"#E6AC00",colourTertiary:"#CC9900"},variable_blocks:{colourPrimary:"#FF8C1A",colourSecondary:"#FF8000",colourTertiary:"#DB6E00"},variable_dynamic_blocks:{colourPrimary:"#FF8C1A",colourSecondary:"#FF8000",colourTertiary:"#DB6E00"},hat_blocks:{colourPrimary:"#4C97FF",colourSecondary:"#4280D7",colourTertiary:"#3373CC",hat:"cap"}},s5={colour_category:{colour:"#CF63CF"},list_category:{colour:"#9966FF"},logic_category:{colour:"#4C97FF"},loop_category:{colour:"#0fBD8C"},math_category:{colour:"#59C059"},procedure_category:{colour:"#FF6680"},text_category:{colour:"#FFBF00"},variable_category:{colour:"#FF8C1A"},variable_dynamic_category:{colour:"#FF8C1A"}},i5=new tc("zelos",o5,s5),n5={Classic:Fh,Zelos:i5},Hm=class{constructor(n,a,g){this.id_=n.toolboxitemid||W(),this.level_=(this.parent_=g||null)?this.parent_.getLevel()+1:0,this.toolboxItemDef_=n,this.parentToolbox_=a,this.workspace_=this.parentToolbox_.getWorkspace()}init(){}getDiv(){return null}getClickTarget(){return null}getId(){return this.id_}getParent(){return null}getLevel(){return this.level_}isSelectable(){return!1}isCollapsible(){return!1}dispose(){}setVisible_(n){}},_r=class extends Hm{constructor(n,a,g){super(n,a,g),this.colour_=this.name_="",this.labelDom_=this.iconDom_=this.rowContents_=this.rowDiv_=this.htmlDiv_=null,this.isDisabled_=this.isHidden_=!1,this.flyoutItems_=[],this.cssConfig_=this.makeDefaultCssConfig_()}init(){this.parseCategoryDef_(this.toolboxItemDef_),this.parseContents_(this.toolboxItemDef_),this.createDom_(),this.toolboxItemDef_.hidden==="true"&&this.hide()}makeDefaultCssConfig_(){return{container:"blocklyToolboxCategory",row:"blocklyTreeRow",rowcontentcontainer:"blocklyTreeRowContentContainer",icon:"blocklyTreeIcon",label:"blocklyTreeLabel",contents:"blocklyToolboxContents",selected:"blocklyTreeSelected",openicon:"blocklyTreeIconOpen",closedicon:"blocklyTreeIconClosed"}}parseContents_(n){if("custom"in n)this.flyoutItems_=n.custom;else if(n=n.contents)for(let a=0;a<n.length;a++){const g=n[a];Array.isArray(this.flyoutItems_)&&this.flyoutItems_.push(g)}}parseCategoryDef_(n){this.name_="name"in n?Ms(n.name):"",this.colour_=this.getColour_(n),Object.assign(this.cssConfig_,n.cssconfig||n.cssConfig)}createDom_(){this.htmlDiv_=this.createContainer_(),Jn(this.htmlDiv_,Vi.TREEITEM),is(this.htmlDiv_,es.SELECTED,!1),is(this.htmlDiv_,es.LEVEL,this.level_+1),this.rowDiv_=this.createRowContainer_(),this.rowDiv_.style.pointerEvents="auto",this.htmlDiv_.appendChild(this.rowDiv_),this.rowContents_=this.createRowContentsContainer_(),this.rowContents_.style.pointerEvents="none",this.rowDiv_.appendChild(this.rowContents_),this.iconDom_=this.createIconDom_(),Jn(this.iconDom_,Vi.PRESENTATION),this.rowContents_.appendChild(this.iconDom_),this.labelDom_=this.createLabelDom_(this.name_),this.rowContents_.appendChild(this.labelDom_);const n=this.labelDom_.getAttribute("id");return n&&is(this.htmlDiv_,es.LABELLEDBY,n),this.addColourBorder_(this.colour_),this.htmlDiv_}createContainer_(){const n=document.createElement("div"),a=this.cssConfig_.container;return a&&je(n,a),n}createRowContainer_(){const n=document.createElement("div");var a=this.cssConfig_.row;return a&&je(n,a),a=`${_r.nestedPadding*this.getLevel()}px`,this.workspace_.RTL?n.style.paddingRight=a:n.style.paddingLeft=a,n}createRowContentsContainer_(){const n=document.createElement("div"),a=this.cssConfig_.rowcontentcontainer;return a&&je(n,a),n}createIconDom_(){const n=document.createElement("span");if(!this.parentToolbox_.isHorizontal()){const a=this.cssConfig_.icon;a&&je(n,a)}return n.style.display="inline-block",n}createLabelDom_(n){const a=document.createElement("span");return a.setAttribute("id",this.getId()+".label"),a.textContent=n,(n=this.cssConfig_.label)&&je(a,n),a}refreshTheme(){this.colour_=this.getColour_(this.toolboxItemDef_),this.addColourBorder_(this.colour_)}addColourBorder_(n){n&&(n=_r.borderWidth+"px solid "+(n||"#ddd"),this.workspace_.RTL?this.rowDiv_.style.borderRight=n:this.rowDiv_.style.borderLeft=n)}getColour_(n){const a=n.categorystyle||n.categoryStyle;if((n=n.colour)&&a)console.warn('Toolbox category "'+this.name_+'" must not have both a style and a colour');else{if(a)return this.getColourfromStyle_(a);if(n)return this.parseColour_(n)}return""}getColourfromStyle_(n){var a=this.workspace_.getTheme();if(n&&a){if((a=a.categoryStyles[n])&&a.colour)return this.parseColour_(a.colour);console.warn('Style "'+n+'" must exist and contain a colour value')}return""}getClickTarget(){return this.rowDiv_}parseColour_(n){if(n=Ms(n),n==null||n==="")return"";var a=Number(n);return isNaN(a)?(a=Ml(n))?a:(console.warn('Toolbox category "'+this.name_+'" has unrecognized colour attribute: '+n),""):cL(a)}openIcon_(n){if(n){var a=this.cssConfig_.closedicon;a&&He(n,a),(a=this.cssConfig_.openicon)&&je(n,a)}}closeIcon_(n){if(n){var a=this.cssConfig_.openicon;a&&He(n,a),(a=this.cssConfig_.closedicon)&&je(n,a)}}setVisible_(n){this.htmlDiv_.style.display=n?"block":"none",this.isHidden_=!n,this.parentToolbox_.getSelectedItem()===this&&this.parentToolbox_.clearSelection()}hide(){this.setVisible_(!1)}show(){this.setVisible_(!0)}isVisible(){return!this.isHidden_&&this.allAncestorsExpanded_()}allAncestorsExpanded_(){let n=this;for(;n.getParent();)if(n=n.getParent(),!n.isExpanded())return!1;return!0}isSelectable(){return this.isVisible()&&!this.isDisabled_}onClick(n){}setSelected(n){if(this.rowDiv_){var a=this.cssConfig_.selected;if(n){const g=this.parseColour_(_r.defaultBackgroundColour);this.rowDiv_.style.backgroundColor=this.colour_||g,a&&je(this.rowDiv_,a)}else this.rowDiv_.style.backgroundColor="",a&&Je(this.rowDiv_,a);is(this.htmlDiv_,es.SELECTED,n)}}setDisabled(n){this.isDisabled_=n,this.getDiv().setAttribute("disabled",`${n}`),n?this.getDiv().setAttribute("disabled","true"):this.getDiv().removeAttribute("disabled")}getName(){return this.name_}getParent(){return this.parent_}getDiv(){return this.htmlDiv_}getContents(){return this.flyoutItems_}updateFlyoutContents(n){this.flyoutItems_=[],this.toolboxItemDef_=typeof n=="string"?{kind:this.toolboxItemDef_.kind,custom:n,id:this.toolboxItemDef_.id,categorystyle:this.toolboxItemDef_.categorystyle,colour:this.toolboxItemDef_.colour,cssconfig:this.toolboxItemDef_.cssconfig,hidden:this.toolboxItemDef_.hidden}:{kind:this.toolboxItemDef_.kind,name:"name"in this.toolboxItemDef_?this.toolboxItemDef_.name:"",contents:Ls(n),id:this.toolboxItemDef_.id,categorystyle:this.toolboxItemDef_.categorystyle,colour:this.toolboxItemDef_.colour,cssconfig:this.toolboxItemDef_.cssconfig,hidden:this.toolboxItemDef_.hidden},this.parseContents_(this.toolboxItemDef_)}dispose(){Ot(this.htmlDiv_)}};_r.registrationName="category",_r.nestedPadding=19,_r.borderWidth=8,_r.defaultBackgroundColour="#57e",Be(`
- .blocklyTreeRow:not(.blocklyTreeSelected):hover {
- background-color: rgba(255, 255, 255, .2);
- }
- .blocklyToolboxDiv[layout="h"] .blocklyToolboxCategory {
- margin: 1px 5px 1px 0;
- }
- .blocklyToolboxDiv[dir="RTL"][layout="h"] .blocklyToolboxCategory {
- margin: 1px 0 1px 5px;
- }
- .blocklyTreeRow {
- height: 22px;
- line-height: 22px;
- margin-bottom: 3px;
- padding-right: 8px;
- white-space: nowrap;
- }
- .blocklyToolboxDiv[dir="RTL"] .blocklyTreeRow {
- margin-left: 8px;
- padding-right: 0;
- }
- .blocklyTreeIcon {
- background-image: url(<<<PATH>>>/sprites.png);
- height: 16px;
- vertical-align: middle;
- visibility: hidden;
- width: 16px;
- }
- .blocklyTreeIconClosed {
- background-position: -32px -1px;
- }
- .blocklyToolboxDiv[dir="RTL"] .blocklyTreeIconClosed {
- background-position: 0 -1px;
- }
- .blocklyTreeSelected>.blocklyTreeIconClosed {
- background-position: -32px -17px;
- }
- .blocklyToolboxDiv[dir="RTL"] .blocklyTreeSelected>.blocklyTreeIconClosed {
- background-position: 0 -17px;
- }
- .blocklyTreeIconOpen {
- background-position: -16px -1px;
- }
- .blocklyTreeSelected>.blocklyTreeIconOpen {
- background-position: -16px -17px;
- }
- .blocklyTreeLabel {
- cursor: default;
- font: 16px sans-serif;
- padding: 0 3px;
- vertical-align: middle;
- }
- .blocklyToolboxDelete .blocklyTreeLabel {
- cursor: url("<<<PATH>>>/handdelete.cur"), auto;
- }
- .blocklyTreeSelected .blocklyTreeLabel {
- color: #fff;
- }
- `),_(Mt.TOOLBOX_ITEM,_r.registrationName,_r);var hg=class extends Hm{constructor(n,a){super(n,a),this.cssConfig_={container:"blocklyTreeSeparator"},this.htmlDiv_=null,Object.assign(this.cssConfig_,n.cssconfig||n.cssConfig)}init(){this.createDom_()}createDom_(){const n=document.createElement("div"),a=this.cssConfig_.container;return a&&je(n,a),this.htmlDiv_=n}getDiv(){return this.htmlDiv_}dispose(){Ot(this.htmlDiv_)}};hg.registrationName="sep",Be(`
- .blocklyTreeSeparator {
- border-bottom: solid #e5e5e5 1px;
- height: 0;
- margin: 5px 0;
- }
- .blocklyToolboxDiv[layout="h"] .blocklyTreeSeparator {
- border-right: solid #e5e5e5 1px;
- border-bottom: none;
- height: auto;
- margin: 0 5px 0 5px;
- padding: 5px 0;
- width: 0;
- }
- `),_(Mt.TOOLBOX_ITEM,hg.registrationName,hg);var tE=class extends _r{constructor(n,a,g){super(n,a,g),this.subcategoriesDiv_=null,this.expanded_=!1,this.toolboxItems_=[]}makeDefaultCssConfig_(){const n=super.makeDefaultCssConfig_();return n.contents="blocklyToolboxContents",n}parseContents_(n){if("custom"in n)this.flyoutItems_=n.custom;else{const a=n.contents;if(a){this.flyoutItems_=[],n=!0;for(let g=0;g<a.length;g++){const R=a[g];!E(Mt.TOOLBOX_ITEM,R.kind)||R.kind.toLowerCase()===hg.registrationName&&n?(this.flyoutItems_.push(R),n=!0):(this.createToolboxItem_(R),n=!1)}}}}createToolboxItem_(n){let a=n.kind;a.toUpperCase()==="CATEGORY"&&nt(n)&&(a=tE.registrationName),n=new(u(Mt.TOOLBOX_ITEM,a))(n,this.parentToolbox_,this),this.toolboxItems_.push(n)}init(){super.init(),this.setExpanded(this.toolboxItemDef_.expanded==="true"||this.toolboxItemDef_.expanded===!0)}createDom_(){super.createDom_();const n=this.getChildToolboxItems();return this.subcategoriesDiv_=this.createSubCategoriesDom_(n),Jn(this.subcategoriesDiv_,Vi.GROUP),this.htmlDiv_.appendChild(this.subcategoriesDiv_),this.closeIcon_(this.iconDom_),is(this.htmlDiv_,es.EXPANDED,!1),this.htmlDiv_}createIconDom_(){const n=document.createElement("span");if(!this.parentToolbox_.isHorizontal()){const a=this.cssConfig_.icon;a&&je(n,a),n.style.visibility="visible"}return n.style.display="inline-block",n}createSubCategoriesDom_(n){const a=document.createElement("div");a.style.display="none";var g=this.cssConfig_.contents;for(g&&je(a,g),g=0;g<n.length;g++){const R=n[g];R.init();const f=R.getDiv();if(a.appendChild(f),R.getClickTarget){let $;($=R.getClickTarget())==null||$.setAttribute("id",R.getId())}}return a}setExpanded(n){if(this.expanded_!==n){if(this.expanded_=n)this.subcategoriesDiv_.style.display="block",this.openIcon_(this.iconDom_);else{let a;(a=this.parentToolbox_.getFlyout())==null||a.setVisible(!1),this.subcategoriesDiv_.style.display="none",this.closeIcon_(this.iconDom_)}is(this.htmlDiv_,es.EXPANDED,n),this.parentToolbox_.handleToolboxItemResize()}}setVisible_(n){this.htmlDiv_.style.display=n?"block":"none";const a=this.getChildToolboxItems();for(let g=0;g<a.length;g++)a[g].setVisible_(n);this.isHidden_=!n,this.parentToolbox_.getSelectedItem()===this&&this.parentToolbox_.clearSelection()}isExpanded(){return this.expanded_}isCollapsible(){return!0}onClick(n){this.toggleExpanded()}toggleExpanded(){this.setExpanded(!this.expanded_)}getDiv(){return this.htmlDiv_}getChildToolboxItems(){return this.toolboxItems_}};tE.registrationName="collapsibleCategory",_(Mt.TOOLBOX_ITEM,tE.registrationName,tE);var Q$=class extends qh{constructor(n){super(),this.id="toolbox",this.contentsDiv_=this.HtmlDiv=null,this.isVisible_=!1,this.contents_=[],this.height_=this.width_=0,this.previouslySelectedItem_=this.selectedItem_=this.flyout_=null,this.boundEvents_=[],this.workspace_=n,this.toolboxDef_=n.options.languageTree||{contents:[]},this.horizontalLayout_=n.options.horizontalLayout,this.RTL=n.options.RTL,this.contentMap_=Object.create(null),this.toolboxPosition=n.options.toolboxPosition}onShortcut(n){return!1}init(){var n=this.workspace_;const a=n.getParentSvg();this.flyout_=this.createFlyout_(),this.HtmlDiv=this.createDom_(this.workspace_),Nt(this.flyout_.createDom("svg"),a),this.setVisible(!0),this.flyout_.init(n),this.render(this.toolboxDef_),n=n.getThemeManager(),n.subscribe(this.HtmlDiv,"toolboxBackgroundColour","background-color"),n.subscribe(this.HtmlDiv,"toolboxForegroundColour","color"),this.workspace_.getComponentManager().addComponent({component:this,weight:1,capabilities:[ks.Capability.AUTOHIDEABLE,ks.Capability.DELETE_AREA,ks.Capability.DRAG_TARGET]})}createDom_(n){n=n.getParentSvg();const a=this.createContainer_();return this.contentsDiv_=this.createContentsContainer_(),this.contentsDiv_.tabIndex=0,Jn(this.contentsDiv_,Vi.TREE),a.appendChild(this.contentsDiv_),n.parentNode.insertBefore(a,n),this.attachEvents_(a,this.contentsDiv_),a}createContainer_(){const n=document.createElement("div");return n.setAttribute("layout",this.isHorizontal()?"h":"v"),je(n,"blocklyToolboxDiv"),je(n,"blocklyNonSelectable"),n.setAttribute("dir",this.RTL?"RTL":"LTR"),n}createContentsContainer_(){const n=document.createElement("div");return je(n,"blocklyToolboxContents"),this.isHorizontal()&&(n.style.flexDirection="row"),n}attachEvents_(n,a){n=ve(n,"pointerdown",this,this.onClick_,!1),this.boundEvents_.push(n),a=ve(a,"keydown",this,this.onKeyDown_,!1),this.boundEvents_.push(a)}onClick_(n){if(Ye(n)||n.target===this.HtmlDiv)C().hideChaff(!1);else{var a=n.target.getAttribute("id");a&&(a=this.getToolboxItemById(a),a.isSelectable()&&(this.setSelectedItem(a),a.onClick(n))),C().hideChaff(!0)}Ie()}onKeyDown_(n){let a=!1;switch(n.key){case"ArrowDown":a=this.selectNext_();break;case"ArrowUp":a=this.selectPrevious_();break;case"ArrowLeft":a=this.selectParent_();break;case"ArrowRight":a=this.selectChild_();break;case"Enter":case" ":this.selectedItem_&&this.selectedItem_.isCollapsible()&&(this.selectedItem_.toggleExpanded(),a=!0);break;default:a=!1}!a&&this.selectedItem_&&this.selectedItem_.onKeyDown&&(a=this.selectedItem_.onKeyDown(n)),a&&n.preventDefault()}createFlyout_(){const n=this.workspace_,a=new vn({parentWorkspace:n,rtl:n.RTL,oneBasedIndex:n.options.oneBasedIndex,horizontalLayout:n.horizontalLayout,renderer:n.options.renderer,rendererOverrides:n.options.rendererOverrides,move:{scrollbars:!0}});return a.toolboxPosition=n.options.toolboxPosition,new(n.horizontalLayout?h(Mt.FLYOUTS_HORIZONTAL_TOOLBOX,n.options,!0):h(Mt.FLYOUTS_VERTICAL_TOOLBOX,n.options,!0))(a)}render(n){this.toolboxDef_=n;for(let a=0;a<this.contents_.length;a++){const g=this.contents_[a];g&&g.dispose()}this.contents_=[],this.contentMap_=Object.create(null),this.renderContents_(n.contents),this.position(),this.handleToolboxItemResize()}renderContents_(n){const a=document.createDocumentFragment();for(let g=0;g<n.length;g++)this.createToolboxItem_(n[g],a);this.contentsDiv_.appendChild(a)}createToolboxItem_(n,a){var g=n.kind;g.toUpperCase()==="CATEGORY"&&nt(n)&&(g=tE.registrationName),(g=u(Mt.TOOLBOX_ITEM,g.toLowerCase()))&&(n=new g(n,this),n.init(),this.addToolboxItem_(n),(g=n.getDiv())&&a.appendChild(g),n.getClickTarget()&&n.getClickTarget().setAttribute("id",n.getId()))}addToolboxItem_(n){if(this.contents_.push(n),this.contentMap_[n.getId()]=n,n.isCollapsible()){n=n.getChildToolboxItems();for(let a=0;a<n.length;a++)this.addToolboxItem_(n[a])}}getToolboxItems(){return this.contents_}addStyle(n){n&&this.HtmlDiv&&je(this.HtmlDiv,n)}removeStyle(n){n&&this.HtmlDiv&&Je(this.HtmlDiv,n)}getClientRect(){if(!this.HtmlDiv||!this.isVisible_)return null;var n=this.HtmlDiv.getBoundingClientRect();const a=n.top,g=a+n.height,R=n.left;return n=R+n.width,this.toolboxPosition===To.TOP?new Zo(-1e7,g,-1e7,1e7):this.toolboxPosition===To.BOTTOM?new Zo(a,1e7,-1e7,1e7):this.toolboxPosition===To.LEFT?new Zo(-1e7,1e7,-1e7,n):new Zo(-1e7,1e7,R,1e7)}wouldDelete(n,a){return n instanceof Vr?this.updateWouldDelete_(!n.getParent()&&n.isDeletable()):this.updateWouldDelete_(n.isDeletable()),this.wouldDelete_}onDragEnter(n){this.updateCursorDeleteStyle_(!0)}onDragExit(n){this.updateCursorDeleteStyle_(!1)}onDrop(n){this.updateCursorDeleteStyle_(!1)}updateWouldDelete_(n){n!==this.wouldDelete_&&(this.updateCursorDeleteStyle_(!1),this.wouldDelete_=n,this.updateCursorDeleteStyle_(!0))}updateCursorDeleteStyle_(n){const a=this.wouldDelete_?"blocklyToolboxDelete":"blocklyToolboxGrab";n?this.addStyle(a):this.removeStyle(a)}getToolboxItemById(n){return this.contentMap_[n]||null}getWidth(){return this.width_}getHeight(){return this.height_}getFlyout(){return this.flyout_}getWorkspace(){return this.workspace_}getSelectedItem(){return this.selectedItem_}getPreviouslySelectedItem(){return this.previouslySelectedItem_}isHorizontal(){return this.horizontalLayout_}position(){const n=this.workspace_.getMetrics(),a=this.HtmlDiv;a&&(this.horizontalLayout_?(a.style.left="0",a.style.height="auto",a.style.width="100%",this.height_=a.offsetHeight,this.width_=n.viewWidth,this.toolboxPosition===To.TOP?a.style.top="0":a.style.bottom="0"):(this.toolboxPosition===To.RIGHT?a.style.right="0":a.style.left="0",a.style.height="100%",this.width_=a.offsetWidth,this.height_=n.viewHeight),this.flyout_.position())}handleToolboxItemResize(){const n=this.workspace_,a=this.HtmlDiv.getBoundingClientRect();n.translate(this.toolboxPosition===To.LEFT?n.scrollX+a.width:n.scrollX,this.toolboxPosition===To.TOP?n.scrollY+a.height:n.scrollY),P(n)}clearSelection(){this.setSelectedItem(null)}refreshTheme(){for(let n=0;n<this.contents_.length;n++){const a=this.contents_[n];a.refreshTheme&&a.refreshTheme()}}refreshSelection(){this.selectedItem_&&this.selectedItem_.isSelectable()&&this.selectedItem_.getContents().length&&this.flyout_.show(this.selectedItem_.getContents())}setVisible(n){this.isVisible_!==n&&(this.HtmlDiv.style.display=n?"block":"none",this.isVisible_=n,this.workspace_.recordDragTargets())}autoHide(n){!n&&this.flyout_&&this.flyout_.autoClose&&this.clearSelection()}setSelectedItem(n){const a=this.selectedItem_;!n&&!a||n&&!Yy(n)||(this.shouldDeselectItem_(a,n)&&a!==null&&this.deselectItem_(a),this.shouldSelectItem_(a,n)&&n!==null&&this.selectItem_(a,n),this.updateFlyout_(a,n),this.fireSelectEvent_(a,n))}shouldDeselectItem_(n,a){return n!==null&&(!n.isCollapsible()||n!==a)}shouldSelectItem_(n,a){return a!==null&&a!==n}deselectItem_(n){this.selectedItem_=null,this.previouslySelectedItem_=n,n.setSelected(!1),is(this.contentsDiv_,es.ACTIVEDESCENDANT,"")}selectItem_(n,a){this.selectedItem_=a,this.previouslySelectedItem_=n,a.setSelected(!0),is(this.contentsDiv_,es.ACTIVEDESCENDANT,a.getId())}selectItemByPosition(n){-1<n&&n<this.contents_.length&&(n=this.contents_[n],n.isSelectable()&&this.setSelectedItem(n))}updateFlyout_(n,a){a&&(n!==a||a.isCollapsible())&&a.getContents().length?(this.flyout_.show(a.getContents()),this.flyout_.scrollToStart()):this.flyout_.hide()}fireSelectEvent_(n,a){const g=n&&n.getName();let R=a&&a.getName();n===a&&(R=null),n=new(pe(bT))(g,R,this.workspace_.id),J(n)}selectParent_(){return this.selectedItem_?this.selectedItem_.isCollapsible()&&this.selectedItem_.isExpanded()?(this.selectedItem_.toggleExpanded(),!0):this.selectedItem_.getParent()&&this.selectedItem_.getParent().isSelectable()?(this.setSelectedItem(this.selectedItem_.getParent()),!0):!1:!1}selectChild_(){if(!this.selectedItem_||!this.selectedItem_.isCollapsible())return!1;const n=this.selectedItem_;return n.isExpanded()?this.selectNext_():n.toggleExpanded(),!0}selectNext_(){if(!this.selectedItem_)return!1;let n=this.contents_.indexOf(this.selectedItem_)+1;if(-1<n&&n<this.contents_.length){let a=this.contents_[n];for(;a&&!a.isSelectable();)a=this.contents_[++n];if(a&&a.isSelectable())return this.setSelectedItem(a),!0}return!1}selectPrevious_(){if(!this.selectedItem_)return!1;let n=this.contents_.indexOf(this.selectedItem_)-1;if(-1<n&&n<this.contents_.length){let a=this.contents_[n];for(;a&&!a.isSelectable();)a=this.contents_[--n];if(a&&a.isSelectable())return this.setSelectedItem(a),!0}return!1}dispose(){this.workspace_.getComponentManager().removeComponent("toolbox"),this.flyout_.dispose();for(var n=0;n<this.contents_.length;n++)this.contents_[n].dispose();for(n=0;n<this.boundEvents_.length;n++)Re(this.boundEvents_[n]);this.boundEvents_=[],this.contents_=[],this.HtmlDiv&&(this.workspace_.getThemeManager().unsubscribe(this.HtmlDiv),Ot(this.HtmlDiv))}};Be(`
- .blocklyToolboxDelete {
- cursor: url("<<<PATH>>>/handdelete.cur"), auto;
- }
- .blocklyToolboxGrab {
- cursor: url("<<<PATH>>>/handclosed.cur"), auto;
- cursor: grabbing;
- cursor: -webkit-grabbing;
- }
- /* Category tree in Toolbox. */
- .blocklyToolboxDiv {
- background-color: #ddd;
- overflow-x: visible;
- overflow-y: auto;
- padding: 4px 0 4px 0;
- position: absolute;
- z-index: 70; /* so blocks go under toolbox when dragging */
- -webkit-tap-highlight-color: transparent; /* issue #1345 */
- }
- .blocklyToolboxContents {
- display: flex;
- flex-wrap: wrap;
- flex-direction: column;
- }
- .blocklyToolboxContents:focus {
- outline: none;
- }
- `),_(Mt.TOOLBOX,A_,Q$);var r5="10.3.0",_5=o.Align$$module$build$src$core$inputs$align.LEFT,l5=o.Align$$module$build$src$core$inputs$align.CENTRE,a5=o.Align$$module$build$src$core$inputs$align.RIGHT,c5=kt.INPUT_VALUE,T5=kt.OUTPUT_VALUE,E5=kt.NEXT_STATEMENT,u5=kt.PREVIOUS_STATEMENT,g5=o.inputTypes$$module$build$src$core$inputs$input_types.DUMMY,d5=To.TOP,O5=To.BOTTOM,h5=To.LEFT,M5=To.RIGHT;cg.prototype.newBlock=function(n,a){return new ZT(this,n,a)},ir.prototype.newBlock=function(n,a){return new Vr(this,n,a)},ir.newTrashcan=function(n){return new d$(n)},ii.prototype.showContextMenu=function(n){if(!this.workspace.options.readOnly){var a=[];this.isDeletable()&&this.isMovable()&&(a.push(yp(this)),a.push(Up(this))),vu(n,a,this.RTL)}},B_.prototype.newWorkspaceSvg=function(n){return new ir(n)},o.Names$$module$build$src$core$names.prototype.populateProcedures=function(n){n=Eh(n),n=n[0].concat(n[1]);for(let a=0;a<n.length;a++)this.getName(n[a][0],o.Names$$module$build$src$core$names.NameType.PROCEDURE)};var R5=kt,ot={ALIGN_CENTRE:l5,ALIGN_LEFT:_5,ALIGN_RIGHT:a5};return ot.ASTNode=Tt,ot.BasicCursor=Tg,ot.Block=ZT,ot.BlockDragger=p$,ot.BlockSvg=Vr,ot.Blocks=Hi,ot.Bubble=yo,ot.BubbleDragger=G0,ot.COLLAPSED_FIELD_NAME=jh,ot.COLLAPSED_INPUT_NAME=zT,ot.COLLAPSE_CHARS=k0,ot.CodeGenerator=o.CodeGenerator$$module$build$src$core$generator,ot.CollapsibleToolboxCategory=tE,ot.ComponentManager=ks,ot.Connection=Po,ot.ConnectionChecker=c$,ot.ConnectionDB=wT,ot.ConnectionType=kt,ot.ContextMenu=Gr,ot.ContextMenuItems=Ci,ot.ContextMenuRegistry=No,ot.Css=Of,ot.Cursor=Rm,ot.DELETE_VARIABLE_ID=Kf,ot.DRAG_STACK=H0,ot.DUMMY_INPUT=g5,ot.DeleteArea=qh,ot.DragTarget=g$,ot.DropDownDiv=di,ot.Events=$t,ot.Extensions=or,ot.Field=Io,ot.FieldAngle=ho,ot.FieldCheckbox=_c,ot.FieldColour=dn,ot.FieldDropdown=kr,ot.FieldImage=rc,ot.FieldLabel=ic,ot.FieldLabelSerializable=D$,ot.FieldMultilineInput=Bm,ot.FieldNumber=wm,ot.FieldTextInput=JT,ot.FieldVariable=dg,ot.Flyout=iM,ot.FlyoutButton=rr,ot.FlyoutMetricsManager=U$,ot.Generator=o.CodeGenerator$$module$build$src$core$generator,ot.Gesture=$_,ot.Grid=Qf,ot.HorizontalFlyout=y$,ot.INPUT_VALUE=c5,ot.Input=xr,ot.InsertionMarkerManager=gn,ot.Marker=E$,ot.MarkerManager=tg,ot.Menu=Bf,ot.MenuItem=wf,ot.MetricsManager=mm,ot.Msg=o.Msg$$module$build$src$core$msg,ot.NEXT_STATEMENT=E5,ot.Names=o.Names$$module$build$src$core$names,ot.OPPOSITE_TYPE=Qa,ot.OUTPUT_VALUE=T5,ot.Options=vn,ot.PREVIOUS_STATEMENT=u5,ot.PROCEDURE_CATEGORY_NAME=Kh,ot.Procedures=fi,ot.RENAME_VARIABLE_ID=Yf,ot.RenderedConnection=mi,ot.Scrollbar=ms,ot.ScrollbarPair=fm,ot.ShortcutItems=Xr,ot.ShortcutRegistry=$o,ot.TOOLBOX_AT_BOTTOM=O5,ot.TOOLBOX_AT_LEFT=h5,ot.TOOLBOX_AT_RIGHT=M5,ot.TOOLBOX_AT_TOP=d5,ot.TabNavigateCursor=u$,ot.Theme=tc,ot.ThemeManager=a$,ot.Themes=n5,ot.Toolbox=Q$,ot.ToolboxCategory=_r,ot.ToolboxItem=Hm,ot.ToolboxSeparator=hg,ot.Tooltip=cn,ot.Touch=Va,ot.Trashcan=d$,ot.UnattachedFieldError=jo,ot.VARIABLE_CATEGORY_NAME=pf,ot.VARIABLE_DYNAMIC_CATEGORY_NAME=um,ot.VERSION=r5,ot.VariableMap=Om,ot.VariableModel=Xu,ot.Variables=si,ot.VariablesDynamic=nc,ot.VerticalFlyout=Gm,ot.WidgetDiv=wr,ot.Workspace=cg,ot.WorkspaceAudio=T$,ot.WorkspaceComment=$r,ot.WorkspaceCommentSvg=ii,ot.WorkspaceDragger=X0,ot.WorkspaceSvg=ir,ot.Xml=Fi,ot.ZoomControls=R0,ot.blockAnimations=Qu,ot.blockRendering=Go,ot.browserEvents=v_,ot.bubbles=ug,ot.bumpObjects=tM,ot.clipboard=Za,ot.common=oi,ot.config=o.config$$module$build$src$core$config,ot.connectionTypes=R5,ot.constants=Xz,ot.defineBlocksWithJsonArray=F,ot.dialog=Ya,ot.fieldRegistry=Wh,ot.geras=Yr,ot.getMainWorkspace=C,ot.getSelected=A,ot.hasBubble=hl,ot.hideChaff=Ky,ot.icons=Nl,ot.inject=wy,ot.inputTypes=o.inputTypes$$module$build$src$core$inputs$input_types,ot.inputs=Dl,ot.isCopyable=Gu,ot.isIcon=Wy,ot.isObservable=lh,ot.isPaster=Xy,ot.isSerializable=zO,ot.isVariableBackedParameterModel=ap,ot.minimalist=Og,ot.procedures=fi,ot.registry=b_,ot.renderManagement=Uh,ot.serialization=t5,ot.setLocale=If,ot.setParentContainer=U,ot.svgResize=P,ot.thrasos=km,ot.uiPosition=Xa,ot.utils=gs,ot.zelos=nr,Object.defineProperties(ot,{HSV_SATURATION:{get:function(){return xe("Blockly.HSV_SATURATION","version 10","version 11","Blockly.utils.colour.getHsvSaturation()"),sh()},set:function(n){xe("Blockly.HSV_SATURATION","version 10","version 11","Blockly.utils.colour.setHsvSaturation()"),lL(n)}},HSV_VALUE:{get:function(){return xe("Blockly.HSV_VALUE","version 10","version 11","Blockly.utils.colour.getHsvValue()"),ih()},set:function(n){xe("Blockly.HSV_VALUE","version 10","version 11","Blockly.utils.colour.setHsvValue()"),aL(n)}}}),"Blockly"in globalThis||(globalThis.Blockly={Msg:f0}),ot.__namespace__=o,ot})}(eC)),eC.exports}var Y1;function V6(){return Y1||(Y1=1,function(t,e){(function(o,_){t.exports=_(aS())})(Is,function(o){/**
- * @license
- * Copyright 2020 Google LLC
- * SPDX-License-Identifier: Apache-2.0
- */return o})}(Jm)),Jm.exports}var K1;function RP(){return K1||(K1=1,function(t,e){(function(o,_){t.exports=_(V6())})(Is,function(o){return o})}(Qm)),Qm.exports}var tC={exports:{}},z1;function W6(){return z1||(z1=1,function(t,e){(function(o,_){t.exports=_()})(Is,function(){var o=o||{Msg:Object.create(null)};return o.Msg.ADD_COMMENT="Add Comment",o.Msg.CANNOT_DELETE_VARIABLE_PROCEDURE="Can't delete the variable '%1' because it's part of the definition of the function '%2'",o.Msg.CHANGE_VALUE_TITLE="Change value:",o.Msg.CLEAN_UP="Clean up Blocks",o.Msg.COLLAPSED_WARNINGS_WARNING="Collapsed blocks contain warnings.",o.Msg.COLLAPSE_ALL="Collapse Blocks",o.Msg.COLLAPSE_BLOCK="Collapse Block",o.Msg.COLOUR_BLEND_COLOUR1="colour 1",o.Msg.COLOUR_BLEND_COLOUR2="colour 2",o.Msg.COLOUR_BLEND_HELPURL="https://meyerweb.com/eric/tools/color-blend/#:::rgbp",o.Msg.COLOUR_BLEND_RATIO="ratio",o.Msg.COLOUR_BLEND_TITLE="blend",o.Msg.COLOUR_BLEND_TOOLTIP="Blends two colours together with a given ratio (0.0 - 1.0).",o.Msg.COLOUR_PICKER_HELPURL="https://en.wikipedia.org/wiki/Color",o.Msg.COLOUR_PICKER_TOOLTIP="Choose a colour from the palette.",o.Msg.COLOUR_RANDOM_HELPURL="http://randomcolour.com",o.Msg.COLOUR_RANDOM_TITLE="random colour",o.Msg.COLOUR_RANDOM_TOOLTIP="Choose a colour at random.",o.Msg.COLOUR_RGB_BLUE="blue",o.Msg.COLOUR_RGB_GREEN="green",o.Msg.COLOUR_RGB_HELPURL="https://www.december.com/html/spec/colorpercompact.html",o.Msg.COLOUR_RGB_RED="red",o.Msg.COLOUR_RGB_TITLE="colour with",o.Msg.COLOUR_RGB_TOOLTIP="Create a colour with the specified amount of red, green, and blue. All values must be between 0 and 100.",o.Msg.CONTROLS_FLOW_STATEMENTS_HELPURL="https://github.com/google/blockly/wiki/Loops#loop-termination-blocks",o.Msg.CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK="break out of loop",o.Msg.CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE="continue with next iteration of loop",o.Msg.CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK="Break out of the containing loop.",o.Msg.CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE="Skip the rest of this loop, and continue with the next iteration.",o.Msg.CONTROLS_FLOW_STATEMENTS_WARNING="Warning: This block may only be used within a loop.",o.Msg.CONTROLS_FOREACH_HELPURL="https://github.com/google/blockly/wiki/Loops#for-each",o.Msg.CONTROLS_FOREACH_TITLE="for each item %1 in list %2",o.Msg.CONTROLS_FOREACH_TOOLTIP="For each item in a list, set the variable '%1' to the item, and then do some statements.",o.Msg.CONTROLS_FOR_HELPURL="https://github.com/google/blockly/wiki/Loops#count-with",o.Msg.CONTROLS_FOR_TITLE="count with %1 from %2 to %3 by %4",o.Msg.CONTROLS_FOR_TOOLTIP="Have the variable '%1' take on the values from the start number to the end number, counting by the specified interval, and do the specified blocks.",o.Msg.CONTROLS_IF_ELSEIF_TOOLTIP="Add a condition to the if block.",o.Msg.CONTROLS_IF_ELSE_TOOLTIP="Add a final, catch-all condition to the if block.",o.Msg.CONTROLS_IF_HELPURL="https://github.com/google/blockly/wiki/IfElse",o.Msg.CONTROLS_IF_IF_TOOLTIP="Add, remove, or reorder sections to reconfigure this if block.",o.Msg.CONTROLS_IF_MSG_ELSE="else",o.Msg.CONTROLS_IF_MSG_ELSEIF="else if",o.Msg.CONTROLS_IF_MSG_IF="if",o.Msg.CONTROLS_IF_TOOLTIP_1="If a value is true, then do some statements.",o.Msg.CONTROLS_IF_TOOLTIP_2="If a value is true, then do the first block of statements. Otherwise, do the second block of statements.",o.Msg.CONTROLS_IF_TOOLTIP_3="If the first value is true, then do the first block of statements. Otherwise, if the second value is true, do the second block of statements.",o.Msg.CONTROLS_IF_TOOLTIP_4="If the first value is true, then do the first block of statements. Otherwise, if the second value is true, do the second block of statements. If none of the values are true, do the last block of statements.",o.Msg.CONTROLS_REPEAT_HELPURL="https://en.wikipedia.org/wiki/For_loop",o.Msg.CONTROLS_REPEAT_INPUT_DO="do",o.Msg.CONTROLS_REPEAT_TITLE="repeat %1 times",o.Msg.CONTROLS_REPEAT_TOOLTIP="Do some statements several times.",o.Msg.CONTROLS_WHILEUNTIL_HELPURL="https://github.com/google/blockly/wiki/Loops#repeat",o.Msg.CONTROLS_WHILEUNTIL_OPERATOR_UNTIL="repeat until",o.Msg.CONTROLS_WHILEUNTIL_OPERATOR_WHILE="repeat while",o.Msg.CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL="While a value is false, then do some statements.",o.Msg.CONTROLS_WHILEUNTIL_TOOLTIP_WHILE="While a value is true, then do some statements.",o.Msg.DELETE_ALL_BLOCKS="Delete all %1 blocks?",o.Msg.DELETE_BLOCK="Delete Block",o.Msg.DELETE_VARIABLE="Delete the '%1' variable",o.Msg.DELETE_VARIABLE_CONFIRMATION="Delete %1 uses of the '%2' variable?",o.Msg.DELETE_X_BLOCKS="Delete %1 Blocks",o.Msg.DIALOG_CANCEL="Cancel",o.Msg.DIALOG_OK="OK",o.Msg.DISABLE_BLOCK="Disable Block",o.Msg.DUPLICATE_BLOCK="Duplicate",o.Msg.DUPLICATE_COMMENT="Duplicate Comment",o.Msg.ENABLE_BLOCK="Enable Block",o.Msg.EXPAND_ALL="Expand Blocks",o.Msg.EXPAND_BLOCK="Expand Block",o.Msg.EXTERNAL_INPUTS="External Inputs",o.Msg.HELP="Help",o.Msg.INLINE_INPUTS="Inline Inputs",o.Msg.LISTS_CREATE_EMPTY_HELPURL="https://github.com/google/blockly/wiki/Lists#create-empty-list",o.Msg.LISTS_CREATE_EMPTY_TITLE="create empty list",o.Msg.LISTS_CREATE_EMPTY_TOOLTIP="Returns a list, of length 0, containing no data records",o.Msg.LISTS_CREATE_WITH_CONTAINER_TITLE_ADD="list",o.Msg.LISTS_CREATE_WITH_CONTAINER_TOOLTIP="Add, remove, or reorder sections to reconfigure this list block.",o.Msg.LISTS_CREATE_WITH_HELPURL="https://github.com/google/blockly/wiki/Lists#create-list-with",o.Msg.LISTS_CREATE_WITH_INPUT_WITH="create list with",o.Msg.LISTS_CREATE_WITH_ITEM_TOOLTIP="Add an item to the list.",o.Msg.LISTS_CREATE_WITH_TOOLTIP="Create a list with any number of items.",o.Msg.LISTS_GET_INDEX_FIRST="first",o.Msg.LISTS_GET_INDEX_FROM_END="# from end",o.Msg.LISTS_GET_INDEX_FROM_START="#",o.Msg.LISTS_GET_INDEX_GET="get",o.Msg.LISTS_GET_INDEX_GET_REMOVE="get and remove",o.Msg.LISTS_GET_INDEX_LAST="last",o.Msg.LISTS_GET_INDEX_RANDOM="random",o.Msg.LISTS_GET_INDEX_REMOVE="remove",o.Msg.LISTS_GET_INDEX_TAIL="",o.Msg.LISTS_GET_INDEX_TOOLTIP_GET_FIRST="Returns the first item in a list.",o.Msg.LISTS_GET_INDEX_TOOLTIP_GET_FROM="Returns the item at the specified position in a list.",o.Msg.LISTS_GET_INDEX_TOOLTIP_GET_LAST="Returns the last item in a list.",o.Msg.LISTS_GET_INDEX_TOOLTIP_GET_RANDOM="Returns a random item in a list.",o.Msg.LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST="Removes and returns the first item in a list.",o.Msg.LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM="Removes and returns the item at the specified position in a list.",o.Msg.LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST="Removes and returns the last item in a list.",o.Msg.LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM="Removes and returns a random item in a list.",o.Msg.LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST="Removes the first item in a list.",o.Msg.LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM="Removes the item at the specified position in a list.",o.Msg.LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST="Removes the last item in a list.",o.Msg.LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM="Removes a random item in a list.",o.Msg.LISTS_GET_SUBLIST_END_FROM_END="to # from end",o.Msg.LISTS_GET_SUBLIST_END_FROM_START="to #",o.Msg.LISTS_GET_SUBLIST_END_LAST="to last",o.Msg.LISTS_GET_SUBLIST_HELPURL="https://github.com/google/blockly/wiki/Lists#getting-a-sublist",o.Msg.LISTS_GET_SUBLIST_START_FIRST="get sub-list from first",o.Msg.LISTS_GET_SUBLIST_START_FROM_END="get sub-list from # from end",o.Msg.LISTS_GET_SUBLIST_START_FROM_START="get sub-list from #",o.Msg.LISTS_GET_SUBLIST_TAIL="",o.Msg.LISTS_GET_SUBLIST_TOOLTIP="Creates a copy of the specified portion of a list.",o.Msg.LISTS_INDEX_FROM_END_TOOLTIP="%1 is the last item.",o.Msg.LISTS_INDEX_FROM_START_TOOLTIP="%1 is the first item.",o.Msg.LISTS_INDEX_OF_FIRST="find first occurrence of item",o.Msg.LISTS_INDEX_OF_HELPURL="https://github.com/google/blockly/wiki/Lists#getting-items-from-a-list",o.Msg.LISTS_INDEX_OF_LAST="find last occurrence of item",o.Msg.LISTS_INDEX_OF_TOOLTIP="Returns the index of the first/last occurrence of the item in the list. Returns %1 if item is not found.",o.Msg.LISTS_INLIST="in list",o.Msg.LISTS_ISEMPTY_HELPURL="https://github.com/google/blockly/wiki/Lists#is-empty",o.Msg.LISTS_ISEMPTY_TITLE="%1 is empty",o.Msg.LISTS_ISEMPTY_TOOLTIP="Returns true if the list is empty.",o.Msg.LISTS_LENGTH_HELPURL="https://github.com/google/blockly/wiki/Lists#length-of",o.Msg.LISTS_LENGTH_TITLE="length of %1",o.Msg.LISTS_LENGTH_TOOLTIP="Returns the length of a list.",o.Msg.LISTS_REPEAT_HELPURL="https://github.com/google/blockly/wiki/Lists#create-list-with",o.Msg.LISTS_REPEAT_TITLE="create list with item %1 repeated %2 times",o.Msg.LISTS_REPEAT_TOOLTIP="Creates a list consisting of the given value repeated the specified number of times.",o.Msg.LISTS_REVERSE_HELPURL="https://github.com/google/blockly/wiki/Lists#reversing-a-list",o.Msg.LISTS_REVERSE_MESSAGE0="reverse %1",o.Msg.LISTS_REVERSE_TOOLTIP="Reverse a copy of a list.",o.Msg.LISTS_SET_INDEX_HELPURL="https://github.com/google/blockly/wiki/Lists#in-list--set",o.Msg.LISTS_SET_INDEX_INPUT_TO="as",o.Msg.LISTS_SET_INDEX_INSERT="insert at",o.Msg.LISTS_SET_INDEX_SET="set",o.Msg.LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST="Inserts the item at the start of a list.",o.Msg.LISTS_SET_INDEX_TOOLTIP_INSERT_FROM="Inserts the item at the specified position in a list.",o.Msg.LISTS_SET_INDEX_TOOLTIP_INSERT_LAST="Append the item to the end of a list.",o.Msg.LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM="Inserts the item randomly in a list.",o.Msg.LISTS_SET_INDEX_TOOLTIP_SET_FIRST="Sets the first item in a list.",o.Msg.LISTS_SET_INDEX_TOOLTIP_SET_FROM="Sets the item at the specified position in a list.",o.Msg.LISTS_SET_INDEX_TOOLTIP_SET_LAST="Sets the last item in a list.",o.Msg.LISTS_SET_INDEX_TOOLTIP_SET_RANDOM="Sets a random item in a list.",o.Msg.LISTS_SORT_HELPURL="https://github.com/google/blockly/wiki/Lists#sorting-a-list",o.Msg.LISTS_SORT_ORDER_ASCENDING="ascending",o.Msg.LISTS_SORT_ORDER_DESCENDING="descending",o.Msg.LISTS_SORT_TITLE="sort %1 %2 %3",o.Msg.LISTS_SORT_TOOLTIP="Sort a copy of a list.",o.Msg.LISTS_SORT_TYPE_IGNORECASE="alphabetic, ignore case",o.Msg.LISTS_SORT_TYPE_NUMERIC="numeric",o.Msg.LISTS_SORT_TYPE_TEXT="alphabetic",o.Msg.LISTS_SPLIT_HELPURL="https://github.com/google/blockly/wiki/Lists#splitting-strings-and-joining-lists",o.Msg.LISTS_SPLIT_LIST_FROM_TEXT="make list from text",o.Msg.LISTS_SPLIT_TEXT_FROM_LIST="make text from list",o.Msg.LISTS_SPLIT_TOOLTIP_JOIN="Join a list of texts into one text, separated by a delimiter.",o.Msg.LISTS_SPLIT_TOOLTIP_SPLIT="Split text into a list of texts, breaking at each delimiter.",o.Msg.LISTS_SPLIT_WITH_DELIMITER="with delimiter",o.Msg.LOGIC_BOOLEAN_FALSE="false",o.Msg.LOGIC_BOOLEAN_HELPURL="https://github.com/google/blockly/wiki/Logic#values",o.Msg.LOGIC_BOOLEAN_TOOLTIP="Returns either true or false.",o.Msg.LOGIC_BOOLEAN_TRUE="true",o.Msg.LOGIC_COMPARE_HELPURL="https://en.wikipedia.org/wiki/Inequality_(mathematics)",o.Msg.LOGIC_COMPARE_TOOLTIP_EQ="Return true if both inputs equal each other.",o.Msg.LOGIC_COMPARE_TOOLTIP_GT="Return true if the first input is greater than the second input.",o.Msg.LOGIC_COMPARE_TOOLTIP_GTE="Return true if the first input is greater than or equal to the second input.",o.Msg.LOGIC_COMPARE_TOOLTIP_LT="Return true if the first input is smaller than the second input.",o.Msg.LOGIC_COMPARE_TOOLTIP_LTE="Return true if the first input is smaller than or equal to the second input.",o.Msg.LOGIC_COMPARE_TOOLTIP_NEQ="Return true if both inputs are not equal to each other.",o.Msg.LOGIC_NEGATE_HELPURL="https://github.com/google/blockly/wiki/Logic#not",o.Msg.LOGIC_NEGATE_TITLE="not %1",o.Msg.LOGIC_NEGATE_TOOLTIP="Returns true if the input is false. Returns false if the input is true.",o.Msg.LOGIC_NULL="null",o.Msg.LOGIC_NULL_HELPURL="https://en.wikipedia.org/wiki/Nullable_type",o.Msg.LOGIC_NULL_TOOLTIP="Returns null.",o.Msg.LOGIC_OPERATION_AND="and",o.Msg.LOGIC_OPERATION_HELPURL="https://github.com/google/blockly/wiki/Logic#logical-operations",o.Msg.LOGIC_OPERATION_OR="or",o.Msg.LOGIC_OPERATION_TOOLTIP_AND="Return true if both inputs are true.",o.Msg.LOGIC_OPERATION_TOOLTIP_OR="Return true if at least one of the inputs is true.",o.Msg.LOGIC_TERNARY_CONDITION="test",o.Msg.LOGIC_TERNARY_HELPURL="https://en.wikipedia.org/wiki/%3F:",o.Msg.LOGIC_TERNARY_IF_FALSE="if false",o.Msg.LOGIC_TERNARY_IF_TRUE="if true",o.Msg.LOGIC_TERNARY_TOOLTIP="Check the condition in 'test'. If the condition is true, returns the 'if true' value; otherwise returns the 'if false' value.",o.Msg.MATH_ADDITION_SYMBOL="+",o.Msg.MATH_ARITHMETIC_HELPURL="https://en.wikipedia.org/wiki/Arithmetic",o.Msg.MATH_ARITHMETIC_TOOLTIP_ADD="Return the sum of the two numbers.",o.Msg.MATH_ARITHMETIC_TOOLTIP_DIVIDE="Return the quotient of the two numbers.",o.Msg.MATH_ARITHMETIC_TOOLTIP_MINUS="Return the difference of the two numbers.",o.Msg.MATH_ARITHMETIC_TOOLTIP_MULTIPLY="Return the product of the two numbers.",o.Msg.MATH_ARITHMETIC_TOOLTIP_POWER="Return the first number raised to the power of the second number.",o.Msg.MATH_ATAN2_HELPURL="https://en.wikipedia.org/wiki/Atan2",o.Msg.MATH_ATAN2_TITLE="atan2 of X:%1 Y:%2",o.Msg.MATH_ATAN2_TOOLTIP="Return the arctangent of point (X, Y) in degrees from -180 to 180.",o.Msg.MATH_CHANGE_HELPURL="https://en.wikipedia.org/wiki/Programming_idiom#Incrementing_a_counter",o.Msg.MATH_CHANGE_TITLE="change %1 by %2",o.Msg.MATH_CHANGE_TOOLTIP="Add a number to variable '%1'.",o.Msg.MATH_CONSTANT_HELPURL="https://en.wikipedia.org/wiki/Mathematical_constant",o.Msg.MATH_CONSTANT_TOOLTIP="Return one of the common constants: π (3.141…), e (2.718…), φ (1.618…), sqrt(2) (1.414…), sqrt(½) (0.707…), or ∞ (infinity).",o.Msg.MATH_CONSTRAIN_HELPURL="https://en.wikipedia.org/wiki/Clamping_(graphics)",o.Msg.MATH_CONSTRAIN_TITLE="constrain %1 low %2 high %3",o.Msg.MATH_CONSTRAIN_TOOLTIP="Constrain a number to be between the specified limits (inclusive).",o.Msg.MATH_DIVISION_SYMBOL="÷",o.Msg.MATH_IS_DIVISIBLE_BY="is divisible by",o.Msg.MATH_IS_EVEN="is even",o.Msg.MATH_IS_NEGATIVE="is negative",o.Msg.MATH_IS_ODD="is odd",o.Msg.MATH_IS_POSITIVE="is positive",o.Msg.MATH_IS_PRIME="is prime",o.Msg.MATH_IS_TOOLTIP="Check if a number is an even, odd, prime, whole, positive, negative, or if it is divisible by certain number. Returns true or false.",o.Msg.MATH_IS_WHOLE="is whole",o.Msg.MATH_MODULO_HELPURL="https://en.wikipedia.org/wiki/Modulo_operation",o.Msg.MATH_MODULO_TITLE="remainder of %1 ÷ %2",o.Msg.MATH_MODULO_TOOLTIP="Return the remainder from dividing the two numbers.",o.Msg.MATH_MULTIPLICATION_SYMBOL="×",o.Msg.MATH_NUMBER_HELPURL="https://en.wikipedia.org/wiki/Number",o.Msg.MATH_NUMBER_TOOLTIP="A number.",o.Msg.MATH_ONLIST_HELPURL="",o.Msg.MATH_ONLIST_OPERATOR_AVERAGE="average of list",o.Msg.MATH_ONLIST_OPERATOR_MAX="max of list",o.Msg.MATH_ONLIST_OPERATOR_MEDIAN="median of list",o.Msg.MATH_ONLIST_OPERATOR_MIN="min of list",o.Msg.MATH_ONLIST_OPERATOR_MODE="modes of list",o.Msg.MATH_ONLIST_OPERATOR_RANDOM="random item of list",o.Msg.MATH_ONLIST_OPERATOR_STD_DEV="standard deviation of list",o.Msg.MATH_ONLIST_OPERATOR_SUM="sum of list",o.Msg.MATH_ONLIST_TOOLTIP_AVERAGE="Return the average (arithmetic mean) of the numeric values in the list.",o.Msg.MATH_ONLIST_TOOLTIP_MAX="Return the largest number in the list.",o.Msg.MATH_ONLIST_TOOLTIP_MEDIAN="Return the median number in the list.",o.Msg.MATH_ONLIST_TOOLTIP_MIN="Return the smallest number in the list.",o.Msg.MATH_ONLIST_TOOLTIP_MODE="Return a list of the most common item(s) in the list.",o.Msg.MATH_ONLIST_TOOLTIP_RANDOM="Return a random element from the list.",o.Msg.MATH_ONLIST_TOOLTIP_STD_DEV="Return the standard deviation of the list.",o.Msg.MATH_ONLIST_TOOLTIP_SUM="Return the sum of all the numbers in the list.",o.Msg.MATH_POWER_SYMBOL="^",o.Msg.MATH_RANDOM_FLOAT_HELPURL="https://en.wikipedia.org/wiki/Random_number_generation",o.Msg.MATH_RANDOM_FLOAT_TITLE_RANDOM="random fraction",o.Msg.MATH_RANDOM_FLOAT_TOOLTIP="Return a random fraction between 0.0 (inclusive) and 1.0 (exclusive).",o.Msg.MATH_RANDOM_INT_HELPURL="https://en.wikipedia.org/wiki/Random_number_generation",o.Msg.MATH_RANDOM_INT_TITLE="random integer from %1 to %2",o.Msg.MATH_RANDOM_INT_TOOLTIP="Return a random integer between the two specified limits, inclusive.",o.Msg.MATH_ROUND_HELPURL="https://en.wikipedia.org/wiki/Rounding",o.Msg.MATH_ROUND_OPERATOR_ROUND="round",o.Msg.MATH_ROUND_OPERATOR_ROUNDDOWN="round down",o.Msg.MATH_ROUND_OPERATOR_ROUNDUP="round up",o.Msg.MATH_ROUND_TOOLTIP="Round a number up or down.",o.Msg.MATH_SINGLE_HELPURL="https://en.wikipedia.org/wiki/Square_root",o.Msg.MATH_SINGLE_OP_ABSOLUTE="absolute",o.Msg.MATH_SINGLE_OP_ROOT="square root",o.Msg.MATH_SINGLE_TOOLTIP_ABS="Return the absolute value of a number.",o.Msg.MATH_SINGLE_TOOLTIP_EXP="Return e to the power of a number.",o.Msg.MATH_SINGLE_TOOLTIP_LN="Return the natural logarithm of a number.",o.Msg.MATH_SINGLE_TOOLTIP_LOG10="Return the base 10 logarithm of a number.",o.Msg.MATH_SINGLE_TOOLTIP_NEG="Return the negation of a number.",o.Msg.MATH_SINGLE_TOOLTIP_POW10="Return 10 to the power of a number.",o.Msg.MATH_SINGLE_TOOLTIP_ROOT="Return the square root of a number.",o.Msg.MATH_SUBTRACTION_SYMBOL="-",o.Msg.MATH_TRIG_ACOS="acos",o.Msg.MATH_TRIG_ASIN="asin",o.Msg.MATH_TRIG_ATAN="atan",o.Msg.MATH_TRIG_COS="cos",o.Msg.MATH_TRIG_HELPURL="https://en.wikipedia.org/wiki/Trigonometric_functions",o.Msg.MATH_TRIG_SIN="sin",o.Msg.MATH_TRIG_TAN="tan",o.Msg.MATH_TRIG_TOOLTIP_ACOS="Return the arccosine of a number.",o.Msg.MATH_TRIG_TOOLTIP_ASIN="Return the arcsine of a number.",o.Msg.MATH_TRIG_TOOLTIP_ATAN="Return the arctangent of a number.",o.Msg.MATH_TRIG_TOOLTIP_COS="Return the cosine of a degree (not radian).",o.Msg.MATH_TRIG_TOOLTIP_SIN="Return the sine of a degree (not radian).",o.Msg.MATH_TRIG_TOOLTIP_TAN="Return the tangent of a degree (not radian).",o.Msg.NEW_COLOUR_VARIABLE="Create colour variable...",o.Msg.NEW_NUMBER_VARIABLE="Create number variable...",o.Msg.NEW_STRING_VARIABLE="Create string variable...",o.Msg.NEW_VARIABLE="Create variable...",o.Msg.NEW_VARIABLE_TITLE="New variable name:",o.Msg.NEW_VARIABLE_TYPE_TITLE="New variable type:",o.Msg.ORDINAL_NUMBER_SUFFIX="",o.Msg.PROCEDURES_ALLOW_STATEMENTS="allow statements",o.Msg.PROCEDURES_BEFORE_PARAMS="with:",o.Msg.PROCEDURES_CALLNORETURN_HELPURL="https://en.wikipedia.org/wiki/Subroutine",o.Msg.PROCEDURES_CALLNORETURN_TOOLTIP="Run the user-defined function '%1'.",o.Msg.PROCEDURES_CALLRETURN_HELPURL="https://en.wikipedia.org/wiki/Subroutine",o.Msg.PROCEDURES_CALLRETURN_TOOLTIP="Run the user-defined function '%1' and use its output.",o.Msg.PROCEDURES_CALL_BEFORE_PARAMS="with:",o.Msg.PROCEDURES_CREATE_DO="Create '%1'",o.Msg.PROCEDURES_DEFNORETURN_COMMENT="Describe this function...",o.Msg.PROCEDURES_DEFNORETURN_DO="",o.Msg.PROCEDURES_DEFNORETURN_HELPURL="https://en.wikipedia.org/wiki/Subroutine",o.Msg.PROCEDURES_DEFNORETURN_PROCEDURE="do something",o.Msg.PROCEDURES_DEFNORETURN_TITLE="to",o.Msg.PROCEDURES_DEFNORETURN_TOOLTIP="Creates a function with no output.",o.Msg.PROCEDURES_DEFRETURN_HELPURL="https://en.wikipedia.org/wiki/Subroutine",o.Msg.PROCEDURES_DEFRETURN_RETURN="return",o.Msg.PROCEDURES_DEFRETURN_TOOLTIP="Creates a function with an output.",o.Msg.PROCEDURES_DEF_DUPLICATE_WARNING="Warning: This function has duplicate parameters.",o.Msg.PROCEDURES_HIGHLIGHT_DEF="Highlight function definition",o.Msg.PROCEDURES_IFRETURN_HELPURL="https://c2.com/cgi/wiki?GuardClause",o.Msg.PROCEDURES_IFRETURN_TOOLTIP="If a value is true, then return a second value.",o.Msg.PROCEDURES_IFRETURN_WARNING="Warning: This block may be used only within a function definition.",o.Msg.PROCEDURES_MUTATORARG_TITLE="input name:",o.Msg.PROCEDURES_MUTATORARG_TOOLTIP="Add an input to the function.",o.Msg.PROCEDURES_MUTATORCONTAINER_TITLE="inputs",o.Msg.PROCEDURES_MUTATORCONTAINER_TOOLTIP="Add, remove, or reorder inputs to this function.",o.Msg.REDO="Redo",o.Msg.REMOVE_COMMENT="Remove Comment",o.Msg.RENAME_VARIABLE="Rename variable...",o.Msg.RENAME_VARIABLE_TITLE="Rename all '%1' variables to:",o.Msg.TEXT_APPEND_HELPURL="https://github.com/google/blockly/wiki/Text#text-modification",o.Msg.TEXT_APPEND_TITLE="to %1 append text %2",o.Msg.TEXT_APPEND_TOOLTIP="Append some text to variable '%1'.",o.Msg.TEXT_CHANGECASE_HELPURL="https://github.com/google/blockly/wiki/Text#adjusting-text-case",o.Msg.TEXT_CHANGECASE_OPERATOR_LOWERCASE="to lower case",o.Msg.TEXT_CHANGECASE_OPERATOR_TITLECASE="to Title Case",o.Msg.TEXT_CHANGECASE_OPERATOR_UPPERCASE="to UPPER CASE",o.Msg.TEXT_CHANGECASE_TOOLTIP="Return a copy of the text in a different case.",o.Msg.TEXT_CHARAT_FIRST="get first letter",o.Msg.TEXT_CHARAT_FROM_END="get letter # from end",o.Msg.TEXT_CHARAT_FROM_START="get letter #",o.Msg.TEXT_CHARAT_HELPURL="https://github.com/google/blockly/wiki/Text#extracting-text",o.Msg.TEXT_CHARAT_LAST="get last letter",o.Msg.TEXT_CHARAT_RANDOM="get random letter",o.Msg.TEXT_CHARAT_TAIL="",o.Msg.TEXT_CHARAT_TITLE="in text %1 %2",o.Msg.TEXT_CHARAT_TOOLTIP="Returns the letter at the specified position.",o.Msg.TEXT_COUNT_HELPURL="https://github.com/google/blockly/wiki/Text#counting-substrings",o.Msg.TEXT_COUNT_MESSAGE0="count %1 in %2",o.Msg.TEXT_COUNT_TOOLTIP="Count how many times some text occurs within some other text.",o.Msg.TEXT_CREATE_JOIN_ITEM_TOOLTIP="Add an item to the text.",o.Msg.TEXT_CREATE_JOIN_TITLE_JOIN="join",o.Msg.TEXT_CREATE_JOIN_TOOLTIP="Add, remove, or reorder sections to reconfigure this text block.",o.Msg.TEXT_GET_SUBSTRING_END_FROM_END="to letter # from end",o.Msg.TEXT_GET_SUBSTRING_END_FROM_START="to letter #",o.Msg.TEXT_GET_SUBSTRING_END_LAST="to last letter",o.Msg.TEXT_GET_SUBSTRING_HELPURL="https://github.com/google/blockly/wiki/Text#extracting-a-region-of-text",o.Msg.TEXT_GET_SUBSTRING_INPUT_IN_TEXT="in text",o.Msg.TEXT_GET_SUBSTRING_START_FIRST="get substring from first letter",o.Msg.TEXT_GET_SUBSTRING_START_FROM_END="get substring from letter # from end",o.Msg.TEXT_GET_SUBSTRING_START_FROM_START="get substring from letter #",o.Msg.TEXT_GET_SUBSTRING_TAIL="",o.Msg.TEXT_GET_SUBSTRING_TOOLTIP="Returns a specified portion of the text.",o.Msg.TEXT_INDEXOF_HELPURL="https://github.com/google/blockly/wiki/Text#finding-text",o.Msg.TEXT_INDEXOF_OPERATOR_FIRST="find first occurrence of text",o.Msg.TEXT_INDEXOF_OPERATOR_LAST="find last occurrence of text",o.Msg.TEXT_INDEXOF_TITLE="in text %1 %2 %3",o.Msg.TEXT_INDEXOF_TOOLTIP="Returns the index of the first/last occurrence of the first text in the second text. Returns %1 if text is not found.",o.Msg.TEXT_ISEMPTY_HELPURL="https://github.com/google/blockly/wiki/Text#checking-for-empty-text",o.Msg.TEXT_ISEMPTY_TITLE="%1 is empty",o.Msg.TEXT_ISEMPTY_TOOLTIP="Returns true if the provided text is empty.",o.Msg.TEXT_JOIN_HELPURL="https://github.com/google/blockly/wiki/Text#text-creation",o.Msg.TEXT_JOIN_TITLE_CREATEWITH="create text with",o.Msg.TEXT_JOIN_TOOLTIP="Create a piece of text by joining together any number of items.",o.Msg.TEXT_LENGTH_HELPURL="https://github.com/google/blockly/wiki/Text#text-modification",o.Msg.TEXT_LENGTH_TITLE="length of %1",o.Msg.TEXT_LENGTH_TOOLTIP="Returns the number of letters (including spaces) in the provided text.",o.Msg.TEXT_PRINT_HELPURL="https://github.com/google/blockly/wiki/Text#printing-text",o.Msg.TEXT_PRINT_TITLE="print %1",o.Msg.TEXT_PRINT_TOOLTIP="Print the specified text, number or other value.",o.Msg.TEXT_PROMPT_HELPURL="https://github.com/google/blockly/wiki/Text#getting-input-from-the-user",o.Msg.TEXT_PROMPT_TOOLTIP_NUMBER="Prompt for user for a number.",o.Msg.TEXT_PROMPT_TOOLTIP_TEXT="Prompt for user for some text.",o.Msg.TEXT_PROMPT_TYPE_NUMBER="prompt for number with message",o.Msg.TEXT_PROMPT_TYPE_TEXT="prompt for text with message",o.Msg.TEXT_REPLACE_HELPURL="https://github.com/google/blockly/wiki/Text#replacing-substrings",o.Msg.TEXT_REPLACE_MESSAGE0="replace %1 with %2 in %3",o.Msg.TEXT_REPLACE_TOOLTIP="Replace all occurances of some text within some other text.",o.Msg.TEXT_REVERSE_HELPURL="https://github.com/google/blockly/wiki/Text#reversing-text",o.Msg.TEXT_REVERSE_MESSAGE0="reverse %1",o.Msg.TEXT_REVERSE_TOOLTIP="Reverses the order of the characters in the text.",o.Msg.TEXT_TEXT_HELPURL="https://en.wikipedia.org/wiki/String_(computer_science)",o.Msg.TEXT_TEXT_TOOLTIP="A letter, word, or line of text.",o.Msg.TEXT_TRIM_HELPURL="https://github.com/google/blockly/wiki/Text#trimming-removing-spaces",o.Msg.TEXT_TRIM_OPERATOR_BOTH="trim spaces from both sides of",o.Msg.TEXT_TRIM_OPERATOR_LEFT="trim spaces from left side of",o.Msg.TEXT_TRIM_OPERATOR_RIGHT="trim spaces from right side of",o.Msg.TEXT_TRIM_TOOLTIP="Return a copy of the text with spaces removed from one or both ends.",o.Msg.TODAY="Today",o.Msg.UNDO="Undo",o.Msg.UNNAMED_KEY="unnamed",o.Msg.VARIABLES_DEFAULT_NAME="item",o.Msg.VARIABLES_GET_CREATE_SET="Create 'set %1'",o.Msg.VARIABLES_GET_HELPURL="https://github.com/google/blockly/wiki/Variables#get",o.Msg.VARIABLES_GET_TOOLTIP="Returns the value of this variable.",o.Msg.VARIABLES_SET="set %1 to %2",o.Msg.VARIABLES_SET_CREATE_GET="Create 'get %1'",o.Msg.VARIABLES_SET_HELPURL="https://github.com/google/blockly/wiki/Variables#set",o.Msg.VARIABLES_SET_TOOLTIP="Sets this variable to be equal to the input.",o.Msg.VARIABLE_ALREADY_EXISTS="A variable named '%1' already exists.",o.Msg.VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE="A variable named '%1' already exists for another type: '%2'.",o.Msg.WORKSPACE_ARIA_LABEL="Blockly Workspace",o.Msg.WORKSPACE_COMMENT_DEFAULT_TEXT="Say something...",o.Msg.CONTROLS_FOREACH_INPUT_DO=o.Msg.CONTROLS_REPEAT_INPUT_DO,o.Msg.CONTROLS_FOR_INPUT_DO=o.Msg.CONTROLS_REPEAT_INPUT_DO,o.Msg.CONTROLS_IF_ELSEIF_TITLE_ELSEIF=o.Msg.CONTROLS_IF_MSG_ELSEIF,o.Msg.CONTROLS_IF_ELSE_TITLE_ELSE=o.Msg.CONTROLS_IF_MSG_ELSE,o.Msg.CONTROLS_IF_IF_TITLE_IF=o.Msg.CONTROLS_IF_MSG_IF,o.Msg.CONTROLS_IF_MSG_THEN=o.Msg.CONTROLS_REPEAT_INPUT_DO,o.Msg.CONTROLS_WHILEUNTIL_INPUT_DO=o.Msg.CONTROLS_REPEAT_INPUT_DO,o.Msg.LISTS_CREATE_WITH_ITEM_TITLE=o.Msg.VARIABLES_DEFAULT_NAME,o.Msg.LISTS_GET_INDEX_HELPURL=o.Msg.LISTS_INDEX_OF_HELPURL,o.Msg.LISTS_GET_INDEX_INPUT_IN_LIST=o.Msg.LISTS_INLIST,o.Msg.LISTS_GET_SUBLIST_INPUT_IN_LIST=o.Msg.LISTS_INLIST,o.Msg.LISTS_INDEX_OF_INPUT_IN_LIST=o.Msg.LISTS_INLIST,o.Msg.LISTS_SET_INDEX_INPUT_IN_LIST=o.Msg.LISTS_INLIST,o.Msg.MATH_CHANGE_TITLE_ITEM=o.Msg.VARIABLES_DEFAULT_NAME,o.Msg.PROCEDURES_DEFRETURN_COMMENT=o.Msg.PROCEDURES_DEFNORETURN_COMMENT,o.Msg.PROCEDURES_DEFRETURN_DO=o.Msg.PROCEDURES_DEFNORETURN_DO,o.Msg.PROCEDURES_DEFRETURN_PROCEDURE=o.Msg.PROCEDURES_DEFNORETURN_PROCEDURE,o.Msg.PROCEDURES_DEFRETURN_TITLE=o.Msg.PROCEDURES_DEFNORETURN_TITLE,o.Msg.TEXT_APPEND_VARIABLE=o.Msg.VARIABLES_DEFAULT_NAME,o.Msg.TEXT_CREATE_JOIN_ITEM_TITLE_ITEM=o.Msg.VARIABLES_DEFAULT_NAME,o.Msg.MATH_HUE="230",o.Msg.LOOPS_HUE="120",o.Msg.LISTS_HUE="260",o.Msg.LOGIC_HUE="210",o.Msg.VARIABLES_HUE="330",o.Msg.TEXTS_HUE="160",o.Msg.PROCEDURES_HUE="290",o.Msg.COLOUR_HUE="20",o.Msg.VARIABLES_DYNAMIC_HUE="310",o.Msg})}(tC)),tC.exports}var oC={exports:{}},sC={exports:{}},Z1;function X6(){return Z1||(Z1=1,function(t,e){(function(o,_){t.exports=_(aS())})(Is,function(o){var _=o.__namespace__,l=_.createBlockDefinitionsFromJsonArray$$module$build$src$core$common([{type:"variables_get_dynamic",message0:"%1",args0:[{type:"field_variable",name:"VAR",variable:"%{BKY_VARIABLES_DEFAULT_NAME}"}],output:null,style:"variable_dynamic_blocks",helpUrl:"%{BKY_VARIABLES_GET_HELPURL}",tooltip:"%{BKY_VARIABLES_GET_TOOLTIP}",extensions:["contextMenu_variableDynamicSetterGetter"]},{type:"variables_set_dynamic",message0:"%{BKY_VARIABLES_SET}",args0:[{type:"field_variable",name:"VAR",variable:"%{BKY_VARIABLES_DEFAULT_NAME}"},{type:"input_value",name:"VALUE"}],previousStatement:null,nextStatement:null,style:"variable_dynamic_blocks",tooltip:"%{BKY_VARIABLES_SET_TOOLTIP}",helpUrl:"%{BKY_VARIABLES_SET_HELPURL}",extensions:["contextMenu_variableDynamicSetterGetter"]}]),c={customContextMenu:function(y){if(this.isInFlyout)(this.type==="variables_get_dynamic"||this.type==="variables_get_reporter_dynamic")&&(oe={text:_.Msg$$module$build$src$core$msg.RENAME_VARIABLE,enabled:!0,callback:T(this)},Ee=this.getField("VAR").getText(),Ee={text:_.Msg$$module$build$src$core$msg.DELETE_VARIABLE.replace("%1",Ee),enabled:!0,callback:E(this)},y.unshift(oe),y.unshift(Ee));else{if(this.type==="variables_get_dynamic")var x="variables_set_dynamic",oe=_.Msg$$module$build$src$core$msg.VARIABLES_GET_CREATE_SET;else x="variables_get_dynamic",oe=_.Msg$$module$build$src$core$msg.VARIABLES_SET_CREATE_GET;var Ee=this.getField("VAR");x={type:x,fields:{VAR:Ee.saveState(!0)}},y.push({enabled:0<this.workspace.remainingCapacity(),text:oe.replace("%1",Ee.getText()),callback:_.callbackFactory$$module$build$src$core$contextmenu(this,x)})}},onchange:function(y){y=this.getFieldValue("VAR"),y=_.getVariable$$module$build$src$core$variables(this.workspace,y),this.type==="variables_get_dynamic"?this.outputConnection.setCheck(y.type):this.getInput("VALUE").connection.setCheck(y.type)}},T=function(y){return function(){const x=y.workspace,oe=y.getField("VAR").getVariable();_.renameVariable$$module$build$src$core$variables(x,oe)}},E=function(y){return function(){const x=y.workspace,oe=y.getField("VAR").getVariable();x.deleteVariableById(oe.getId()),x.refreshToolboxSelection()}};_.registerMixin$$module$build$src$core$extensions("contextMenu_variableDynamicSetterGetter",c),_.defineBlocks$$module$build$src$core$common(l);var u={blocks:l},d=_.createBlockDefinitionsFromJsonArray$$module$build$src$core$common([{type:"variables_get",message0:"%1",args0:[{type:"field_variable",name:"VAR",variable:"%{BKY_VARIABLES_DEFAULT_NAME}"}],output:null,style:"variable_blocks",helpUrl:"%{BKY_VARIABLES_GET_HELPURL}",tooltip:"%{BKY_VARIABLES_GET_TOOLTIP}",extensions:["contextMenu_variableSetterGetter"]},{type:"variables_set",message0:"%{BKY_VARIABLES_SET}",args0:[{type:"field_variable",name:"VAR",variable:"%{BKY_VARIABLES_DEFAULT_NAME}"},{type:"input_value",name:"VALUE"}],previousStatement:null,nextStatement:null,style:"variable_blocks",tooltip:"%{BKY_VARIABLES_SET_TOOLTIP}",helpUrl:"%{BKY_VARIABLES_SET_HELPURL}",extensions:["contextMenu_variableSetterGetter"]}]),O={customContextMenu:function(y){if(this.isInFlyout)(this.type==="variables_get"||this.type==="variables_get_reporter")&&(oe={text:_.Msg$$module$build$src$core$msg.RENAME_VARIABLE,enabled:!0,callback:h(this)},Ee=this.getField("VAR").getText(),Ee={text:_.Msg$$module$build$src$core$msg.DELETE_VARIABLE.replace("%1",Ee),enabled:!0,callback:I(this)},y.unshift(oe),y.unshift(Ee));else{if(this.type==="variables_get")var x="variables_set",oe=_.Msg$$module$build$src$core$msg.VARIABLES_GET_CREATE_SET;else x="variables_get",oe=_.Msg$$module$build$src$core$msg.VARIABLES_SET_CREATE_GET;var Ee=this.getField("VAR");x={type:x,fields:{VAR:Ee.saveState(!0)}},y.push({enabled:0<this.workspace.remainingCapacity(),text:oe.replace("%1",Ee.getText()),callback:_.callbackFactory$$module$build$src$core$contextmenu(this,x)})}}},h=function(y){return function(){const x=y.workspace,oe=y.getField("VAR").getVariable();_.renameVariable$$module$build$src$core$variables(x,oe)}},I=function(y){return function(){const x=y.workspace,oe=y.getField("VAR").getVariable();x.deleteVariableById(oe.getId()),x.refreshToolboxSelection()}};_.registerMixin$$module$build$src$core$extensions("contextMenu_variableSetterGetter",O),_.defineBlocks$$module$build$src$core$common(d);var S={blocks:d},L=_.createBlockDefinitionsFromJsonArray$$module$build$src$core$common([{type:"text",message0:"%1",args0:[{type:"field_input",name:"TEXT",text:""}],output:"String",style:"text_blocks",helpUrl:"%{BKY_TEXT_TEXT_HELPURL}",tooltip:"%{BKY_TEXT_TEXT_TOOLTIP}",extensions:["text_quotes","parent_tooltip_when_inline"]},{type:"text_multiline",message0:"%1 %2",args0:[{type:"field_image",src:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAARCAYAAADpPU2iAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAdhgAAHYYBXaITgQAAABh0RVh0U29mdHdhcmUAcGFpbnQubmV0IDQuMS42/U4J6AAAAP1JREFUOE+Vks0KQUEYhjmRIja4ABtZ2dm5A3t3Ia6AUm7CylYuQRaUhZSlLZJiQbFAyRnPN33y01HOW08z8873zpwzM4F3GWOCruvGIE4/rLaV+Nq1hVGMBqzhqlxgCys4wJA65xnogMHsQ5lujnYHTejBBCK2mE4abjCgMGhNxHgDFWjDSG07kdfVa2pZMf4ZyMAdWmpZMfYOsLiDMYMjlMB+K613QISRhTnITnsYg5yUd0DETmEoMlkFOeIT/A58iyK5E18BuTBfgYXfwNJv4P9/oEBerLylOnRhygmGdPpTTBZAPkde61lbQe4moWUvYUZYLfUNftIY4zwA5X2Z9AYnQrEAAAAASUVORK5CYII=",width:12,height:17,alt:"¶"},{type:"field_multilinetext",name:"TEXT",text:""}],output:"String",style:"text_blocks",helpUrl:"%{BKY_TEXT_TEXT_HELPURL}",tooltip:"%{BKY_TEXT_TEXT_TOOLTIP}",extensions:["parent_tooltip_when_inline"]},{type:"text_join",message0:"",output:"String",style:"text_blocks",helpUrl:"%{BKY_TEXT_JOIN_HELPURL}",tooltip:"%{BKY_TEXT_JOIN_TOOLTIP}",mutator:"text_join_mutator"},{type:"text_create_join_container",message0:"%{BKY_TEXT_CREATE_JOIN_TITLE_JOIN} %1 %2",args0:[{type:"input_dummy"},{type:"input_statement",name:"STACK"}],style:"text_blocks",tooltip:"%{BKY_TEXT_CREATE_JOIN_TOOLTIP}",enableContextMenu:!1},{type:"text_create_join_item",message0:"%{BKY_TEXT_CREATE_JOIN_ITEM_TITLE_ITEM}",previousStatement:null,nextStatement:null,style:"text_blocks",tooltip:"%{BKY_TEXT_CREATE_JOIN_ITEM_TOOLTIP}",enableContextMenu:!1},{type:"text_append",message0:"%{BKY_TEXT_APPEND_TITLE}",args0:[{type:"field_variable",name:"VAR",variable:"%{BKY_TEXT_APPEND_VARIABLE}"},{type:"input_value",name:"TEXT"}],previousStatement:null,nextStatement:null,style:"text_blocks",extensions:["text_append_tooltip"]},{type:"text_length",message0:"%{BKY_TEXT_LENGTH_TITLE}",args0:[{type:"input_value",name:"VALUE",check:["String","Array"]}],output:"Number",style:"text_blocks",tooltip:"%{BKY_TEXT_LENGTH_TOOLTIP}",helpUrl:"%{BKY_TEXT_LENGTH_HELPURL}"},{type:"text_isEmpty",message0:"%{BKY_TEXT_ISEMPTY_TITLE}",args0:[{type:"input_value",name:"VALUE",check:["String","Array"]}],output:"Boolean",style:"text_blocks",tooltip:"%{BKY_TEXT_ISEMPTY_TOOLTIP}",helpUrl:"%{BKY_TEXT_ISEMPTY_HELPURL}"},{type:"text_indexOf",message0:"%{BKY_TEXT_INDEXOF_TITLE}",args0:[{type:"input_value",name:"VALUE",check:"String"},{type:"field_dropdown",name:"END",options:[["%{BKY_TEXT_INDEXOF_OPERATOR_FIRST}","FIRST"],["%{BKY_TEXT_INDEXOF_OPERATOR_LAST}","LAST"]]},{type:"input_value",name:"FIND",check:"String"}],output:"Number",style:"text_blocks",helpUrl:"%{BKY_TEXT_INDEXOF_HELPURL}",inputsInline:!0,extensions:["text_indexOf_tooltip"]},{type:"text_charAt",message0:"%{BKY_TEXT_CHARAT_TITLE}",args0:[{type:"input_value",name:"VALUE",check:"String"},{type:"field_dropdown",name:"WHERE",options:[["%{BKY_TEXT_CHARAT_FROM_START}","FROM_START"],["%{BKY_TEXT_CHARAT_FROM_END}","FROM_END"],["%{BKY_TEXT_CHARAT_FIRST}","FIRST"],["%{BKY_TEXT_CHARAT_LAST}","LAST"],["%{BKY_TEXT_CHARAT_RANDOM}","RANDOM"]]}],output:"String",style:"text_blocks",helpUrl:"%{BKY_TEXT_CHARAT_HELPURL}",inputsInline:!0,mutator:"text_charAt_mutator"}]),p={init:function(){this.WHERE_OPTIONS_1=[[_.Msg$$module$build$src$core$msg.TEXT_GET_SUBSTRING_START_FROM_START,"FROM_START"],[_.Msg$$module$build$src$core$msg.TEXT_GET_SUBSTRING_START_FROM_END,"FROM_END"],[_.Msg$$module$build$src$core$msg.TEXT_GET_SUBSTRING_START_FIRST,"FIRST"]],this.WHERE_OPTIONS_2=[[_.Msg$$module$build$src$core$msg.TEXT_GET_SUBSTRING_END_FROM_START,"FROM_START"],[_.Msg$$module$build$src$core$msg.TEXT_GET_SUBSTRING_END_FROM_END,"FROM_END"],[_.Msg$$module$build$src$core$msg.TEXT_GET_SUBSTRING_END_LAST,"LAST"]],this.setHelpUrl(_.Msg$$module$build$src$core$msg.TEXT_GET_SUBSTRING_HELPURL),this.setStyle("text_blocks"),this.appendValueInput("STRING").setCheck("String").appendField(_.Msg$$module$build$src$core$msg.TEXT_GET_SUBSTRING_INPUT_IN_TEXT),this.appendDummyInput("AT1"),this.appendDummyInput("AT2"),_.Msg$$module$build$src$core$msg.TEXT_GET_SUBSTRING_TAIL&&this.appendDummyInput("TAIL").appendField(_.Msg$$module$build$src$core$msg.TEXT_GET_SUBSTRING_TAIL),this.setInputsInline(!0),this.setOutput(!0,"String"),this.updateAt_(1,!0),this.updateAt_(2,!0),this.setTooltip(_.Msg$$module$build$src$core$msg.TEXT_GET_SUBSTRING_TOOLTIP)},mutationToDom:function(){const y=_.createElement$$module$build$src$core$utils$xml("mutation");var x=this.getInput("AT1")instanceof _.ValueInput$$module$build$src$core$inputs$value_input;return y.setAttribute("at1",`${x}`),x=this.getInput("AT2")instanceof _.ValueInput$$module$build$src$core$inputs$value_input,y.setAttribute("at2",`${x}`),y},domToMutation:function(y){const x=y.getAttribute("at1")==="true";y=y.getAttribute("at2")==="true",this.updateAt_(1,x),this.updateAt_(2,y)},updateAt_:function(y,x){this.removeInput("AT"+y),this.removeInput("ORDINAL"+y,!0),x?(this.appendValueInput("AT"+y).setCheck("Number"),_.Msg$$module$build$src$core$msg.ORDINAL_NUMBER_SUFFIX&&this.appendDummyInput("ORDINAL"+y).appendField(_.Msg$$module$build$src$core$msg.ORDINAL_NUMBER_SUFFIX)):this.appendDummyInput("AT"+y),y===2&&_.Msg$$module$build$src$core$msg.TEXT_GET_SUBSTRING_TAIL&&(this.removeInput("TAIL",!0),this.appendDummyInput("TAIL").appendField(_.Msg$$module$build$src$core$msg.TEXT_GET_SUBSTRING_TAIL));const oe=_.fromJson$$module$build$src$core$field_registry({type:"field_dropdown",options:this["WHERE_OPTIONS_"+y]});oe.setValidator(function(Ee){const _e=Ee==="FROM_START"||Ee==="FROM_END";if(_e!==x){const ze=this.getSourceBlock();return ze.updateAt_(y,_e),ze.setFieldValue(Ee,"WHERE"+y),null}}),this.getInput("AT"+y).appendField(oe,"WHERE"+y),y===1&&(this.moveInputBefore("AT1","AT2"),this.getInput("ORDINAL1")&&this.moveInputBefore("ORDINAL1","AT2"))}};L.text_getSubstring=p,L.text_changeCase={init:function(){const y=[[_.Msg$$module$build$src$core$msg.TEXT_CHANGECASE_OPERATOR_UPPERCASE,"UPPERCASE"],[_.Msg$$module$build$src$core$msg.TEXT_CHANGECASE_OPERATOR_LOWERCASE,"LOWERCASE"],[_.Msg$$module$build$src$core$msg.TEXT_CHANGECASE_OPERATOR_TITLECASE,"TITLECASE"]];this.setHelpUrl(_.Msg$$module$build$src$core$msg.TEXT_CHANGECASE_HELPURL),this.setStyle("text_blocks"),this.appendValueInput("TEXT").setCheck("String").appendField(_.fromJson$$module$build$src$core$field_registry({type:"field_dropdown",options:y}),"CASE"),this.setOutput(!0,"String"),this.setTooltip(_.Msg$$module$build$src$core$msg.TEXT_CHANGECASE_TOOLTIP)}},L.text_trim={init:function(){const y=[[_.Msg$$module$build$src$core$msg.TEXT_TRIM_OPERATOR_BOTH,"BOTH"],[_.Msg$$module$build$src$core$msg.TEXT_TRIM_OPERATOR_LEFT,"LEFT"],[_.Msg$$module$build$src$core$msg.TEXT_TRIM_OPERATOR_RIGHT,"RIGHT"]];this.setHelpUrl(_.Msg$$module$build$src$core$msg.TEXT_TRIM_HELPURL),this.setStyle("text_blocks"),this.appendValueInput("TEXT").setCheck("String").appendField(_.fromJson$$module$build$src$core$field_registry({type:"field_dropdown",options:y}),"MODE"),this.setOutput(!0,"String"),this.setTooltip(_.Msg$$module$build$src$core$msg.TEXT_TRIM_TOOLTIP)}},L.text_print={init:function(){this.jsonInit({message0:_.Msg$$module$build$src$core$msg.TEXT_PRINT_TITLE,args0:[{type:"input_value",name:"TEXT"}],previousStatement:null,nextStatement:null,style:"text_blocks",tooltip:_.Msg$$module$build$src$core$msg.TEXT_PRINT_TOOLTIP,helpUrl:_.Msg$$module$build$src$core$msg.TEXT_PRINT_HELPURL})}};var C={updateType_:function(y){this.outputConnection.setCheck(y==="NUMBER"?"Number":"String")},mutationToDom:function(){const y=_.createElement$$module$build$src$core$utils$xml("mutation");return y.setAttribute("type",this.getFieldValue("TYPE")),y},domToMutation:function(y){this.updateType_(y.getAttribute("type"))}};L.text_prompt_ext=Object.assign({},C,{init:function(){var y=[[_.Msg$$module$build$src$core$msg.TEXT_PROMPT_TYPE_TEXT,"TEXT"],[_.Msg$$module$build$src$core$msg.TEXT_PROMPT_TYPE_NUMBER,"NUMBER"]];this.setHelpUrl(_.Msg$$module$build$src$core$msg.TEXT_PROMPT_HELPURL),this.setStyle("text_blocks"),y=_.fromJson$$module$build$src$core$field_registry({type:"field_dropdown",options:y}),y.setValidator(x=>{this.updateType_(x)}),this.appendValueInput("TEXT").appendField(y,"TYPE"),this.setOutput(!0,"String"),this.setTooltip(()=>this.getFieldValue("TYPE")==="TEXT"?_.Msg$$module$build$src$core$msg.TEXT_PROMPT_TOOLTIP_TEXT:_.Msg$$module$build$src$core$msg.TEXT_PROMPT_TOOLTIP_NUMBER)}});var m=Object.assign({},C,{init:function(){this.mixin(A);var y=[[_.Msg$$module$build$src$core$msg.TEXT_PROMPT_TYPE_TEXT,"TEXT"],[_.Msg$$module$build$src$core$msg.TEXT_PROMPT_TYPE_NUMBER,"NUMBER"]];this.setHelpUrl(_.Msg$$module$build$src$core$msg.TEXT_PROMPT_HELPURL),this.setStyle("text_blocks"),y=_.fromJson$$module$build$src$core$field_registry({type:"field_dropdown",options:y}),y.setValidator(x=>{this.updateType_(x)}),this.appendDummyInput().appendField(y,"TYPE").appendField(this.newQuote_(!0)).appendField(_.fromJson$$module$build$src$core$field_registry({type:"field_input",text:""}),"TEXT").appendField(this.newQuote_(!1)),this.setOutput(!0,"String"),this.setTooltip(()=>this.getFieldValue("TYPE")==="TEXT"?_.Msg$$module$build$src$core$msg.TEXT_PROMPT_TOOLTIP_TEXT:_.Msg$$module$build$src$core$msg.TEXT_PROMPT_TOOLTIP_NUMBER)}});L.text_prompt=m,L.text_count={init:function(){this.jsonInit({message0:_.Msg$$module$build$src$core$msg.TEXT_COUNT_MESSAGE0,args0:[{type:"input_value",name:"SUB",check:"String"},{type:"input_value",name:"TEXT",check:"String"}],output:"Number",inputsInline:!0,style:"text_blocks",tooltip:_.Msg$$module$build$src$core$msg.TEXT_COUNT_TOOLTIP,helpUrl:_.Msg$$module$build$src$core$msg.TEXT_COUNT_HELPURL})}},L.text_replace={init:function(){this.jsonInit({message0:_.Msg$$module$build$src$core$msg.TEXT_REPLACE_MESSAGE0,args0:[{type:"input_value",name:"FROM",check:"String"},{type:"input_value",name:"TO",check:"String"},{type:"input_value",name:"TEXT",check:"String"}],output:"String",inputsInline:!0,style:"text_blocks",tooltip:_.Msg$$module$build$src$core$msg.TEXT_REPLACE_TOOLTIP,helpUrl:_.Msg$$module$build$src$core$msg.TEXT_REPLACE_HELPURL})}},L.text_reverse={init:function(){this.jsonInit({message0:_.Msg$$module$build$src$core$msg.TEXT_REVERSE_MESSAGE0,args0:[{type:"input_value",name:"TEXT",check:"String"}],output:"String",inputsInline:!0,style:"text_blocks",tooltip:_.Msg$$module$build$src$core$msg.TEXT_REVERSE_TOOLTIP,helpUrl:_.Msg$$module$build$src$core$msg.TEXT_REVERSE_HELPURL})}};var A={QUOTE_IMAGE_LEFT_DATAURI:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAKCAQAAAAqJXdxAAAAn0lEQVQI1z3OMa5BURSF4f/cQhAKjUQhuQmFNwGJEUi0RKN5rU7FHKhpjEH3TEMtkdBSCY1EIv8r7nFX9e29V7EBAOvu7RPjwmWGH/VuF8CyN9/OAdvqIXYLvtRaNjx9mMTDyo+NjAN1HNcl9ZQ5oQMM3dgDUqDo1l8DzvwmtZN7mnD+PkmLa+4mhrxVA9fRowBWmVBhFy5gYEjKMfz9AylsaRRgGzvZAAAAAElFTkSuQmCC",QUOTE_IMAGE_RIGHT_DATAURI:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAKCAQAAAAqJXdxAAAAqUlEQVQI1z3KvUpCcRiA8ef9E4JNHhI0aFEacm1o0BsI0Slx8wa8gLauoDnoBhq7DcfWhggONDmJJgqCPA7neJ7p934EOOKOnM8Q7PDElo/4x4lFb2DmuUjcUzS3URnGib9qaPNbuXvBO3sGPHJDRG6fGVdMSeWDP2q99FQdFrz26Gu5Tq7dFMzUvbXy8KXeAj57cOklgA+u1B5AoslLtGIHQMaCVnwDnADZIFIrXsoXrgAAAABJRU5ErkJggg==",QUOTE_IMAGE_WIDTH:12,QUOTE_IMAGE_HEIGHT:12,quoteField_:function(y){for(let x=0,oe;oe=this.inputList[x];x++)for(let Ee=0,_e;_e=oe.fieldRow[Ee];Ee++)if(y===_e.name){oe.insertFieldAt(Ee,this.newQuote_(!0)),oe.insertFieldAt(Ee+2,this.newQuote_(!1));return}console.warn('field named "'+y+'" not found in '+this.toDevString())},newQuote_:function(y){return y=this.RTL?!y:y,_.fromJson$$module$build$src$core$field_registry({type:"field_image",src:y?this.QUOTE_IMAGE_LEFT_DATAURI:this.QUOTE_IMAGE_RIGHT_DATAURI,width:this.QUOTE_IMAGE_WIDTH,height:this.QUOTE_IMAGE_HEIGHT,alt:y?"“":"”"})}},b=function(){this.mixin(A),this.quoteField_("TEXT")},N={itemCount_:0,mutationToDom:function(){const y=_.createElement$$module$build$src$core$utils$xml("mutation");return y.setAttribute("items",`${this.itemCount_}`),y},domToMutation:function(y){this.itemCount_=parseInt(y.getAttribute("items"),10),this.updateShape_()},saveExtraState:function(){return{itemCount:this.itemCount_}},loadExtraState:function(y){this.itemCount_=y.itemCount,this.updateShape_()},decompose:function(y){const x=y.newBlock("text_create_join_container");x.initSvg();let oe=x.getInput("STACK").connection;for(let Ee=0;Ee<this.itemCount_;Ee++){const _e=y.newBlock("text_create_join_item");_e.initSvg(),oe.connect(_e.previousConnection),oe=_e.nextConnection}return x},compose:function(y){var x=y.getInputTargetBlock("STACK");for(y=[];x;)x.isInsertionMarker()||y.push(x.valueConnection_),x=x.getNextBlock();for(x=0;x<this.itemCount_;x++){const oe=this.getInput("ADD"+x).connection.targetConnection;oe&&y.indexOf(oe)===-1&&oe.disconnect()}for(this.itemCount_=y.length,this.updateShape_(),x=0;x<this.itemCount_;x++){let oe;(oe=y[x])==null||oe.reconnect(this,"ADD"+x)}},saveConnections:function(y){y=y.getInputTargetBlock("STACK");let x=0;for(;y;){if(y.isInsertionMarker()){y=y.getNextBlock();continue}const oe=this.getInput("ADD"+x);y.valueConnection_=oe&&oe.connection.targetConnection,y=y.getNextBlock(),x++}},updateShape_:function(){this.itemCount_&&this.getInput("EMPTY")?this.removeInput("EMPTY"):this.itemCount_||this.getInput("EMPTY")||this.appendDummyInput("EMPTY").appendField(this.newQuote_(!0)).appendField(this.newQuote_(!1));for(var y=0;y<this.itemCount_;y++)if(!this.getInput("ADD"+y)){const x=this.appendValueInput("ADD"+y).setAlign(_.Align$$module$build$src$core$inputs$align.RIGHT);y===0&&x.appendField(_.Msg$$module$build$src$core$msg.TEXT_JOIN_TITLE_CREATEWITH)}for(y=this.itemCount_;this.getInput("ADD"+y);y++)this.removeInput("ADD"+y)}},U=function(){this.mixin(A),this.itemCount_=2,this.updateShape_(),this.setMutator(new _.MutatorIcon$$module$build$src$core$icons$mutator_icon(["text_create_join_item"],this))};_.register$$module$build$src$core$extensions("text_append_tooltip",_.buildTooltipWithFieldText$$module$build$src$core$extensions("%{BKY_TEXT_APPEND_TOOLTIP}","VAR"));var P=function(){this.setTooltip(()=>_.Msg$$module$build$src$core$msg.TEXT_INDEXOF_TOOLTIP.replace("%1",this.workspace.options.oneBasedIndex?"0":"-1"))},G={isAt_:!1,mutationToDom:function(){const y=_.createElement$$module$build$src$core$utils$xml("mutation");return y.setAttribute("at",`${this.isAt_}`),y},domToMutation:function(y){y=y.getAttribute("at")!=="false",this.updateAt_(y)},updateAt_:function(y){this.removeInput("AT",!0),this.removeInput("ORDINAL",!0),y&&(this.appendValueInput("AT").setCheck("Number"),_.Msg$$module$build$src$core$msg.ORDINAL_NUMBER_SUFFIX&&this.appendDummyInput("ORDINAL").appendField(_.Msg$$module$build$src$core$msg.ORDINAL_NUMBER_SUFFIX)),_.Msg$$module$build$src$core$msg.TEXT_CHARAT_TAIL&&(this.removeInput("TAIL",!0),this.appendDummyInput("TAIL").appendField(_.Msg$$module$build$src$core$msg.TEXT_CHARAT_TAIL)),this.isAt_=y}},w=function(){this.getField("WHERE").setValidator(function(y){y=y==="FROM_START"||y==="FROM_END";const x=this.getSourceBlock();y!==x.isAt_&&x.updateAt_(y)}),this.updateAt_(!0),this.setTooltip(()=>{var y=this.getFieldValue("WHERE");let x=_.Msg$$module$build$src$core$msg.TEXT_CHARAT_TOOLTIP;return(y==="FROM_START"||y==="FROM_END")&&(y=y==="FROM_START"?_.Msg$$module$build$src$core$msg.LISTS_INDEX_FROM_START_TOOLTIP:_.Msg$$module$build$src$core$msg.LISTS_INDEX_FROM_END_TOOLTIP)&&(x+=" "+y.replace("%1",this.workspace.options.oneBasedIndex?"#1":"#0")),x})};_.register$$module$build$src$core$extensions("text_indexOf_tooltip",P),_.register$$module$build$src$core$extensions("text_quotes",b),_.registerMixin$$module$build$src$core$extensions("quote_image_mixin",A),_.registerMutator$$module$build$src$core$extensions("text_join_mutator",N,U),_.registerMutator$$module$build$src$core$extensions("text_charAt_mutator",G,w),_.defineBlocks$$module$build$src$core$common(L);var F={blocks:L},V={},W={setStatements_:function(y){this.hasStatements_!==y&&(y?(this.appendStatementInput("STACK").appendField(_.Msg$$module$build$src$core$msg.PROCEDURES_DEFNORETURN_DO),this.getInput("RETURN")&&this.moveInputBefore("STACK","RETURN")):this.removeInput("STACK",!0),this.hasStatements_=y)},updateParams_:function(){let y="";this.arguments_.length&&(y=_.Msg$$module$build$src$core$msg.PROCEDURES_BEFORE_PARAMS+" "+this.arguments_.join(", ")),_.disable$$module$build$src$core$events$utils();try{this.setFieldValue(y,"PARAMS")}finally{_.enable$$module$build$src$core$events$utils()}},mutationToDom:function(y){const x=_.createElement$$module$build$src$core$utils$xml("mutation");y&&x.setAttribute("name",this.getFieldValue("NAME"));for(let oe=0;oe<this.argumentVarModels_.length;oe++){const Ee=_.createElement$$module$build$src$core$utils$xml("arg"),_e=this.argumentVarModels_[oe];Ee.setAttribute("name",_e.name),Ee.setAttribute("varid",_e.getId()),y&&this.paramIds_&&Ee.setAttribute("paramId",this.paramIds_[oe]),x.appendChild(Ee)}return this.hasStatements_||x.setAttribute("statements","false"),x},domToMutation:function(y){this.arguments_=[],this.argumentVarModels_=[];for(let oe=0,Ee;Ee=y.childNodes[oe];oe++)if(Ee.nodeName.toLowerCase()==="arg"){var x=Ee;const _e=x.getAttribute("name");x=x.getAttribute("varid")||x.getAttribute("varId"),this.arguments_.push(_e),x=_.getOrCreateVariablePackage$$module$build$src$core$variables(this.workspace,x,_e,""),x!==null?this.argumentVarModels_.push(x):console.log(`Failed to create a variable named "${_e}", ignoring.`)}this.updateParams_(),_.mutateCallers$$module$build$src$core$procedures(this),this.setStatements_(y.getAttribute("statements")!=="false")},saveExtraState:function(){if(!this.argumentVarModels_.length&&this.hasStatements_)return null;const y=Object.create(null);if(this.argumentVarModels_.length){y.params=[];for(let x=0;x<this.argumentVarModels_.length;x++)y.params.push({name:this.argumentVarModels_[x].name,id:this.argumentVarModels_[x].getId()})}return this.hasStatements_||(y.hasStatements=!1),y},loadExtraState:function(y){if(this.arguments_=[],this.argumentVarModels_=[],y.params)for(let oe=0;oe<y.params.length;oe++){var x=y.params[oe];x=_.getOrCreateVariablePackage$$module$build$src$core$variables(this.workspace,x.id,x.name,""),this.arguments_.push(x.name),this.argumentVarModels_.push(x)}this.updateParams_(),_.mutateCallers$$module$build$src$core$procedures(this),this.setStatements_(y.hasStatements!==!1)},decompose:function(y){const x=_.createElement$$module$build$src$core$utils$xml("block");x.setAttribute("type","procedures_mutatorcontainer");var oe=_.createElement$$module$build$src$core$utils$xml("statement");oe.setAttribute("name","STACK"),x.appendChild(oe);for(let _e=0;_e<this.arguments_.length;_e++){const ze=_.createElement$$module$build$src$core$utils$xml("block");ze.setAttribute("type","procedures_mutatorarg");var Ee=_.createElement$$module$build$src$core$utils$xml("field");Ee.setAttribute("name","NAME");const _t=_.createTextNode$$module$build$src$core$utils$xml(this.arguments_[_e]);Ee.appendChild(_t),ze.appendChild(Ee),Ee=_.createElement$$module$build$src$core$utils$xml("next"),ze.appendChild(Ee),oe.appendChild(ze),oe=Ee}return y=_.domToBlock$$module$build$src$core$xml(x,y),this.type==="procedures_defreturn"?y.setFieldValue(this.hasStatements_,"STATEMENTS"):y.removeInput("STATEMENT_INPUT"),_.mutateCallers$$module$build$src$core$procedures(this),y},compose:function(y){this.arguments_=[],this.paramIds_=[],this.argumentVarModels_=[];let x=y.getInputTargetBlock("STACK");for(;x&&!x.isInsertionMarker();){var oe=x.getFieldValue("NAME");this.arguments_.push(oe),oe=this.workspace.getVariable(oe,""),this.argumentVarModels_.push(oe),this.paramIds_.push(x.id),x=x.nextConnection&&x.nextConnection.targetBlock()}if(this.updateParams_(),_.mutateCallers$$module$build$src$core$procedures(this),y=y.getFieldValue("STATEMENTS"),y!==null&&(y=y==="TRUE",this.hasStatements_!==y))if(y){this.setStatements_(!0);var Ee;(Ee=this.statementConnection_)==null||Ee.reconnect(this,"STACK"),this.statementConnection_=null}else Ee=this.getInput("STACK").connection,(this.statementConnection_=Ee.targetConnection)&&(Ee=Ee.targetBlock(),Ee.unplug(),Ee.bumpNeighbours()),this.setStatements_(!1)},getVars:function(){return this.arguments_},getVarModels:function(){return this.argumentVarModels_},renameVarById:function(y,x){var oe=this.workspace.getVariableById(y);if(oe.type===""){oe=oe.name,x=this.workspace.getVariableById(x);var Ee=!1;for(let _e=0;_e<this.argumentVarModels_.length;_e++)this.argumentVarModels_[_e].getId()===y&&(this.arguments_[_e]=x.name,this.argumentVarModels_[_e]=x,Ee=!0);Ee&&(this.displayRenamedVar_(oe,x.name),_.mutateCallers$$module$build$src$core$procedures(this))}},updateVarName:function(y){const x=y.name;let oe=!1,Ee;for(let _e=0;_e<this.argumentVarModels_.length;_e++)this.argumentVarModels_[_e].getId()===y.getId()&&(Ee=this.arguments_[_e],this.arguments_[_e]=x,oe=!0);oe&&(this.displayRenamedVar_(Ee,x),_.mutateCallers$$module$build$src$core$procedures(this))},displayRenamedVar_:function(y,x){this.updateParams_();var oe=this.getIcon(_.MutatorIcon$$module$build$src$core$icons$mutator_icon.TYPE);if(oe&&oe.bubbleIsVisible()){oe=oe.getWorkspace().getAllBlocks(!1);for(let Ee=0,_e;_e=oe[Ee];Ee++)_e.type==="procedures_mutatorarg"&&_.Names$$module$build$src$core$names.equals(y,_e.getFieldValue("NAME"))&&_e.setFieldValue(x,"NAME")}},customContextMenu:function(y){if(!this.isInFlyout){var x=this.getFieldValue("NAME"),oe={type:this.callType_,extraState:{name:x,params:this.arguments_}};if(y.push({enabled:!0,text:_.Msg$$module$build$src$core$msg.PROCEDURES_CREATE_DO.replace("%1",x),callback:_.callbackFactory$$module$build$src$core$contextmenu(this,oe)}),!this.isCollapsed())for(x=0;x<this.argumentVarModels_.length;x++){oe=this.argumentVarModels_[x];const Ee={type:"variables_get",fields:{VAR:{name:oe.name,id:oe.getId(),type:oe.type}}};y.push({enabled:!0,text:_.Msg$$module$build$src$core$msg.VARIABLES_SET_CREATE_GET.replace("%1",oe.name),callback:_.callbackFactory$$module$build$src$core$contextmenu(this,Ee)})}}}};V.procedures_defnoreturn=Object.assign({},W,{init:function(){var y=_.findLegalName$$module$build$src$core$procedures("",this);y=_.fromJson$$module$build$src$core$field_registry({type:"field_input",text:y}),y.setValidator(_.rename$$module$build$src$core$procedures),y.setSpellcheck(!1),this.appendDummyInput().appendField(_.Msg$$module$build$src$core$msg.PROCEDURES_DEFNORETURN_TITLE).appendField(y,"NAME").appendField("","PARAMS"),this.setMutator(new _.MutatorIcon$$module$build$src$core$icons$mutator_icon(["procedures_mutatorarg"],this)),(this.workspace.options.comments||this.workspace.options.parentWorkspace&&this.workspace.options.parentWorkspace.options.comments)&&_.Msg$$module$build$src$core$msg.PROCEDURES_DEFNORETURN_COMMENT&&this.setCommentText(_.Msg$$module$build$src$core$msg.PROCEDURES_DEFNORETURN_COMMENT),this.setStyle("procedure_blocks"),this.setTooltip(_.Msg$$module$build$src$core$msg.PROCEDURES_DEFNORETURN_TOOLTIP),this.setHelpUrl(_.Msg$$module$build$src$core$msg.PROCEDURES_DEFNORETURN_HELPURL),this.arguments_=[],this.argumentVarModels_=[],this.setStatements_(!0),this.statementConnection_=null},getProcedureDef:function(){return[this.getFieldValue("NAME"),this.arguments_,!1]},callType_:"procedures_callnoreturn"}),V.procedures_defreturn=Object.assign({},W,{init:function(){var y=_.findLegalName$$module$build$src$core$procedures("",this);y=_.fromJson$$module$build$src$core$field_registry({type:"field_input",text:y}),y.setValidator(_.rename$$module$build$src$core$procedures),y.setSpellcheck(!1),this.appendDummyInput().appendField(_.Msg$$module$build$src$core$msg.PROCEDURES_DEFRETURN_TITLE).appendField(y,"NAME").appendField("","PARAMS"),this.appendValueInput("RETURN").setAlign(_.Align$$module$build$src$core$inputs$input.RIGHT).appendField(_.Msg$$module$build$src$core$msg.PROCEDURES_DEFRETURN_RETURN),this.setMutator(new _.MutatorIcon$$module$build$src$core$icons$mutator_icon(["procedures_mutatorarg"],this)),(this.workspace.options.comments||this.workspace.options.parentWorkspace&&this.workspace.options.parentWorkspace.options.comments)&&_.Msg$$module$build$src$core$msg.PROCEDURES_DEFRETURN_COMMENT&&this.setCommentText(_.Msg$$module$build$src$core$msg.PROCEDURES_DEFRETURN_COMMENT),this.setStyle("procedure_blocks"),this.setTooltip(_.Msg$$module$build$src$core$msg.PROCEDURES_DEFRETURN_TOOLTIP),this.setHelpUrl(_.Msg$$module$build$src$core$msg.PROCEDURES_DEFRETURN_HELPURL),this.arguments_=[],this.argumentVarModels_=[],this.setStatements_(!0),this.statementConnection_=null},getProcedureDef:function(){return[this.getFieldValue("NAME"),this.arguments_,!0]},callType_:"procedures_callreturn"});var K={init:function(){this.appendDummyInput().appendField(_.Msg$$module$build$src$core$msg.PROCEDURES_MUTATORCONTAINER_TITLE),this.appendStatementInput("STACK"),this.appendDummyInput("STATEMENT_INPUT").appendField(_.Msg$$module$build$src$core$msg.PROCEDURES_ALLOW_STATEMENTS).appendField(_.fromJson$$module$build$src$core$field_registry({type:"field_checkbox",checked:!0}),"STATEMENTS"),this.setStyle("procedure_blocks"),this.setTooltip(_.Msg$$module$build$src$core$msg.PROCEDURES_MUTATORCONTAINER_TOOLTIP),this.contextMenu=!1}};V.procedures_mutatorcontainer=K;var ee={init:function(){const y=_.fromJson$$module$build$src$core$field_registry({type:"field_input",text:_.DEFAULT_ARG$$module$build$src$core$procedures});y.setValidator(this.validator_),y.oldShowEditorFn_=y.showEditor_,y.showEditor_=function(){this.createdVariables_=[],this.oldShowEditorFn_()},this.appendDummyInput().appendField(_.Msg$$module$build$src$core$msg.PROCEDURES_MUTATORARG_TITLE).appendField(y,"NAME"),this.setPreviousStatement(!0),this.setNextStatement(!0),this.setStyle("procedure_blocks"),this.setTooltip(_.Msg$$module$build$src$core$msg.PROCEDURES_MUTATORARG_TOOLTIP),this.contextMenu=!1,y.onFinishEditing_=this.deleteIntermediateVars_,y.createdVariables_=[],y.onFinishEditing_("x")},validator_:function(y){var x=this.getSourceBlock();const oe=x.workspace.getRootWorkspace();if(y=y.replace(/[\s\xa0]+/g," ").replace(/^ | $/g,""),!y)return null;const Ee=(x.workspace.targetWorkspace||x.workspace).getAllBlocks(!1),_e=y.toLowerCase();for(let ze=0;ze<Ee.length;ze++){if(Ee[ze].id===this.getSourceBlock().id)continue;const _t=Ee[ze].getFieldValue("NAME");if(_t&&_t.toLowerCase()===_e)return null}return x.isInFlyout||((x=oe.getVariable(y,""))&&x.name!==y&&oe.renameVariableById(x.getId(),y),x||(x=oe.createVariable(y,""))&&this.createdVariables_&&this.createdVariables_.push(x)),y},deleteIntermediateVars_:function(y){const x=this.getSourceBlock().workspace.getRootWorkspace();if(x)for(let oe=0;oe<this.createdVariables_.length;oe++){const Ee=this.createdVariables_[oe];Ee.name!==y&&x.deleteVariableById(Ee.getId())}}};V.procedures_mutatorarg=ee;var j={getProcedureCall:function(){return this.getFieldValue("NAME")},renameProcedure:function(y,x){_.Names$$module$build$src$core$names.equals(y,this.getProcedureCall())&&(this.setFieldValue(x,"NAME"),this.setTooltip((this.outputConnection?_.Msg$$module$build$src$core$msg.PROCEDURES_CALLRETURN_TOOLTIP:_.Msg$$module$build$src$core$msg.PROCEDURES_CALLNORETURN_TOOLTIP).replace("%1",x)))},setProcedureParameters_:function(y,x){var oe=_.getDefinition$$module$build$src$core$procedures(this.getProcedureCall(),this.workspace);if((oe=(oe=oe&&oe.getIcon(_.MutatorIcon$$module$build$src$core$icons$mutator_icon.TYPE))&&oe.bubbleIsVisible())?this.setCollapsed(!1):(this.quarkConnections_={},this.quarkIds_=null),y.join(`
- `)===this.arguments_.join(`
- `))this.quarkIds_=x;else{if(x.length!==y.length)throw RangeError("paramNames and paramIds must be the same length.");this.quarkIds_||(this.quarkConnections_={},this.quarkIds_=[]);for(let _e=0;_e<this.arguments_.length;_e++){var Ee=this.getInput("ARG"+_e);Ee&&(Ee=Ee.connection.targetConnection,this.quarkConnections_[this.quarkIds_[_e]]=Ee,oe&&Ee&&x.indexOf(this.quarkIds_[_e])===-1&&(Ee.disconnect(),Ee.getSourceBlock().bumpNeighbours()))}for(this.arguments_=[].concat(y),this.argumentVarModels_=[],y=0;y<this.arguments_.length;y++)oe=_.getOrCreateVariablePackage$$module$build$src$core$variables(this.workspace,null,this.arguments_[y],""),this.argumentVarModels_.push(oe);if(this.updateShape_(),this.quarkIds_=x){for(x=0;x<this.arguments_.length;x++)if(y=this.quarkIds_[x],y in this.quarkConnections_){let _e;(_e=this.quarkConnections_[y])!=null&&_e.reconnect(this,"ARG"+x)||delete this.quarkConnections_[y]}}}},updateShape_:function(){for(var y=0;y<this.arguments_.length;y++){var x=this.getField("ARGNAME"+y);if(x){_.disable$$module$build$src$core$events$utils();try{x.setValue(this.arguments_[y])}finally{_.enable$$module$build$src$core$events$utils()}}else x=_.fromJson$$module$build$src$core$field_registry({type:"field_label",text:this.arguments_[y]}),this.appendValueInput("ARG"+y).setAlign(_.Align$$module$build$src$core$inputs$input.RIGHT).appendField(x,"ARGNAME"+y).init()}for(y=this.arguments_.length;this.getInput("ARG"+y);y++)this.removeInput("ARG"+y);(y=this.getInput("TOPROW"))&&(this.arguments_.length?this.getField("WITH")||(y.appendField(_.Msg$$module$build$src$core$msg.PROCEDURES_CALL_BEFORE_PARAMS,"WITH"),y.init()):this.getField("WITH")&&y.removeField("WITH"))},mutationToDom:function(){const y=_.createElement$$module$build$src$core$utils$xml("mutation");y.setAttribute("name",this.getProcedureCall());for(let x=0;x<this.arguments_.length;x++){const oe=_.createElement$$module$build$src$core$utils$xml("arg");oe.setAttribute("name",this.arguments_[x]),y.appendChild(oe)}return y},domToMutation:function(y){var x=y.getAttribute("name");this.renameProcedure(this.getProcedureCall(),x),x=[];const oe=[];for(let Ee=0,_e;_e=y.childNodes[Ee];Ee++)_e.nodeName.toLowerCase()==="arg"&&(x.push(_e.getAttribute("name")),oe.push(_e.getAttribute("paramId")));this.setProcedureParameters_(x,oe)},saveExtraState:function(){const y=Object.create(null);return y.name=this.getProcedureCall(),this.arguments_.length&&(y.params=this.arguments_),y},loadExtraState:function(y){if(this.renameProcedure(this.getProcedureCall(),y.name),y=y.params){const x=[];x.length=y.length,x.fill(null),this.setProcedureParameters_(y,x)}},getVars:function(){return this.arguments_},getVarModels:function(){return this.argumentVarModels_},onchange:function(y){if(this.workspace&&!this.workspace.isFlyout&&y.recordUndo)if(y.type===_.CREATE$$module$build$src$core$events$utils&&y.ids.indexOf(this.id)!==-1){var x=this.getProcedureCall();if(x=_.getDefinition$$module$build$src$core$procedures(x,this.workspace),!x||x.type===this.defType_&&JSON.stringify(x.getVars())===JSON.stringify(this.arguments_)||(x=null),!x){_.setGroup$$module$build$src$core$events$utils(y.group),y=_.createElement$$module$build$src$core$utils$xml("xml"),x=_.createElement$$module$build$src$core$utils$xml("block"),x.setAttribute("type",this.defType_);var oe=this.getRelativeToSurfaceXY(),Ee=oe.y+2*_.config$$module$build$src$core$config.snapRadius;x.setAttribute("x",`${oe.x+_.config$$module$build$src$core$config.snapRadius*(this.RTL?-1:1)}`),x.setAttribute("y",`${Ee}`),oe=this.mutationToDom(),x.appendChild(oe),oe=_.createElement$$module$build$src$core$utils$xml("field"),oe.setAttribute("name","NAME"),Ee=this.getProcedureCall();const _e=_.findLegalName$$module$build$src$core$procedures(Ee,this);Ee!==_e&&this.renameProcedure(Ee,_e),oe.appendChild(_.createTextNode$$module$build$src$core$utils$xml(Ee)),x.appendChild(oe),y.appendChild(x),_.domToWorkspace$$module$build$src$core$xml(y,this.workspace),_.setGroup$$module$build$src$core$events$utils(!1)}}else y.type===_.DELETE$$module$build$src$core$events$utils?(x=this.getProcedureCall(),_.getDefinition$$module$build$src$core$procedures(x,this.workspace)||(_.setGroup$$module$build$src$core$events$utils(y.group),this.dispose(!0),_.setGroup$$module$build$src$core$events$utils(!1))):y.type===_.CHANGE$$module$build$src$core$events$utils&&y.element==="disabled"&&(x=this.getProcedureCall(),(x=_.getDefinition$$module$build$src$core$procedures(x,this.workspace))&&x.id===y.blockId&&((x=_.getGroup$$module$build$src$core$events$utils())&&console.log("Saw an existing group while responding to a definition change"),_.setGroup$$module$build$src$core$events$utils(y.group),y.newValue?(this.previousEnabledState_=this.isEnabled(),this.setEnabled(!1)):this.setEnabled(this.previousEnabledState_),_.setGroup$$module$build$src$core$events$utils(x)))},customContextMenu:function(y){if(this.workspace.isMovable()){var x=this.getProcedureCall(),oe=this.workspace;y.push({enabled:!0,text:_.Msg$$module$build$src$core$msg.PROCEDURES_HIGHLIGHT_DEF,callback:function(){const Ee=_.getDefinition$$module$build$src$core$procedures(x,oe);Ee&&(oe.centerOnBlock(Ee.id),Ee.select())}})}}};V.procedures_callnoreturn=Object.assign({},j,{init:function(){this.appendDummyInput("TOPROW").appendField("","NAME"),this.setPreviousStatement(!0),this.setNextStatement(!0),this.setStyle("procedure_blocks"),this.setHelpUrl(_.Msg$$module$build$src$core$msg.PROCEDURES_CALLNORETURN_HELPURL),this.arguments_=[],this.argumentVarModels_=[],this.quarkConnections_={},this.quarkIds_=null,this.previousEnabledState_=!0},defType_:"procedures_defnoreturn"}),V.procedures_callreturn=Object.assign({},j,{init:function(){this.appendDummyInput("TOPROW").appendField("","NAME"),this.setOutput(!0),this.setStyle("procedure_blocks"),this.setHelpUrl(_.Msg$$module$build$src$core$msg.PROCEDURES_CALLRETURN_HELPURL),this.arguments_=[],this.argumentVarModels_=[],this.quarkConnections_={},this.quarkIds_=null,this.previousEnabledState_=!0},defType_:"procedures_defreturn"});var J={init:function(){this.appendValueInput("CONDITION").setCheck("Boolean").appendField(_.Msg$$module$build$src$core$msg.CONTROLS_IF_MSG_IF),this.appendValueInput("VALUE").appendField(_.Msg$$module$build$src$core$msg.PROCEDURES_DEFRETURN_RETURN),this.setInputsInline(!0),this.setPreviousStatement(!0),this.setNextStatement(!0),this.setStyle("procedure_blocks"),this.setTooltip(_.Msg$$module$build$src$core$msg.PROCEDURES_IFRETURN_TOOLTIP),this.setHelpUrl(_.Msg$$module$build$src$core$msg.PROCEDURES_IFRETURN_HELPURL),this.hasReturnValue_=!0},mutationToDom:function(){const y=_.createElement$$module$build$src$core$utils$xml("mutation");return y.setAttribute("value",String(Number(this.hasReturnValue_))),y},domToMutation:function(y){this.hasReturnValue_=y.getAttribute("value")==="1",this.hasReturnValue_||(this.removeInput("VALUE"),this.appendDummyInput("VALUE").appendField(_.Msg$$module$build$src$core$msg.PROCEDURES_DEFRETURN_RETURN))},onchange:function(y){if(!(this.workspace.isDragging&&this.workspace.isDragging()||y.type!==_.MOVE$$module$build$src$core$events$utils)){var x=!1,oe=this;do{if(this.FUNCTION_TYPES.indexOf(oe.type)!==-1){x=!0;break}oe=oe.getSurroundParent()}while(oe);x?(oe.type==="procedures_defnoreturn"&&this.hasReturnValue_?(this.removeInput("VALUE"),this.appendDummyInput("VALUE").appendField(_.Msg$$module$build$src$core$msg.PROCEDURES_DEFRETURN_RETURN),this.hasReturnValue_=!1):oe.type!=="procedures_defreturn"||this.hasReturnValue_||(this.removeInput("VALUE"),this.appendValueInput("VALUE").appendField(_.Msg$$module$build$src$core$msg.PROCEDURES_DEFRETURN_RETURN),this.hasReturnValue_=!0),this.setWarningText(null)):this.setWarningText(_.Msg$$module$build$src$core$msg.PROCEDURES_IFRETURN_WARNING),this.isInFlyout||(oe=_.getGroup$$module$build$src$core$events$utils(),_.setGroup$$module$build$src$core$events$utils(y.group),this.setEnabled(x),_.setGroup$$module$build$src$core$events$utils(oe))}},FUNCTION_TYPES:["procedures_defnoreturn","procedures_defreturn"]};V.procedures_ifreturn=J,_.defineBlocks$$module$build$src$core$common(V);var ie={blocks:V},Y=_.createBlockDefinitionsFromJsonArray$$module$build$src$core$common([{type:"math_number",message0:"%1",args0:[{type:"field_number",name:"NUM",value:0}],output:"Number",helpUrl:"%{BKY_MATH_NUMBER_HELPURL}",style:"math_blocks",tooltip:"%{BKY_MATH_NUMBER_TOOLTIP}",extensions:["parent_tooltip_when_inline"]},{type:"math_arithmetic",message0:"%1 %2 %3",args0:[{type:"input_value",name:"A",check:"Number"},{type:"field_dropdown",name:"OP",options:[["%{BKY_MATH_ADDITION_SYMBOL}","ADD"],["%{BKY_MATH_SUBTRACTION_SYMBOL}","MINUS"],["%{BKY_MATH_MULTIPLICATION_SYMBOL}","MULTIPLY"],["%{BKY_MATH_DIVISION_SYMBOL}","DIVIDE"],["%{BKY_MATH_POWER_SYMBOL}","POWER"]]},{type:"input_value",name:"B",check:"Number"}],inputsInline:!0,output:"Number",style:"math_blocks",helpUrl:"%{BKY_MATH_ARITHMETIC_HELPURL}",extensions:["math_op_tooltip"]},{type:"math_single",message0:"%1 %2",args0:[{type:"field_dropdown",name:"OP",options:[["%{BKY_MATH_SINGLE_OP_ROOT}","ROOT"],["%{BKY_MATH_SINGLE_OP_ABSOLUTE}","ABS"],["-","NEG"],["ln","LN"],["log10","LOG10"],["e^","EXP"],["10^","POW10"]]},{type:"input_value",name:"NUM",check:"Number"}],output:"Number",style:"math_blocks",helpUrl:"%{BKY_MATH_SINGLE_HELPURL}",extensions:["math_op_tooltip"]},{type:"math_trig",message0:"%1 %2",args0:[{type:"field_dropdown",name:"OP",options:[["%{BKY_MATH_TRIG_SIN}","SIN"],["%{BKY_MATH_TRIG_COS}","COS"],["%{BKY_MATH_TRIG_TAN}","TAN"],["%{BKY_MATH_TRIG_ASIN}","ASIN"],["%{BKY_MATH_TRIG_ACOS}","ACOS"],["%{BKY_MATH_TRIG_ATAN}","ATAN"]]},{type:"input_value",name:"NUM",check:"Number"}],output:"Number",style:"math_blocks",helpUrl:"%{BKY_MATH_TRIG_HELPURL}",extensions:["math_op_tooltip"]},{type:"math_constant",message0:"%1",args0:[{type:"field_dropdown",name:"CONSTANT",options:[["π","PI"],["e","E"],["φ","GOLDEN_RATIO"],["sqrt(2)","SQRT2"],["sqrt(½)","SQRT1_2"],["∞","INFINITY"]]}],output:"Number",style:"math_blocks",tooltip:"%{BKY_MATH_CONSTANT_TOOLTIP}",helpUrl:"%{BKY_MATH_CONSTANT_HELPURL}"},{type:"math_number_property",message0:"%1 %2",args0:[{type:"input_value",name:"NUMBER_TO_CHECK",check:"Number"},{type:"field_dropdown",name:"PROPERTY",options:[["%{BKY_MATH_IS_EVEN}","EVEN"],["%{BKY_MATH_IS_ODD}","ODD"],["%{BKY_MATH_IS_PRIME}","PRIME"],["%{BKY_MATH_IS_WHOLE}","WHOLE"],["%{BKY_MATH_IS_POSITIVE}","POSITIVE"],["%{BKY_MATH_IS_NEGATIVE}","NEGATIVE"],["%{BKY_MATH_IS_DIVISIBLE_BY}","DIVISIBLE_BY"]]}],inputsInline:!0,output:"Boolean",style:"math_blocks",tooltip:"%{BKY_MATH_IS_TOOLTIP}",mutator:"math_is_divisibleby_mutator"},{type:"math_change",message0:"%{BKY_MATH_CHANGE_TITLE}",args0:[{type:"field_variable",name:"VAR",variable:"%{BKY_MATH_CHANGE_TITLE_ITEM}"},{type:"input_value",name:"DELTA",check:"Number"}],previousStatement:null,nextStatement:null,style:"variable_blocks",helpUrl:"%{BKY_MATH_CHANGE_HELPURL}",extensions:["math_change_tooltip"]},{type:"math_round",message0:"%1 %2",args0:[{type:"field_dropdown",name:"OP",options:[["%{BKY_MATH_ROUND_OPERATOR_ROUND}","ROUND"],["%{BKY_MATH_ROUND_OPERATOR_ROUNDUP}","ROUNDUP"],["%{BKY_MATH_ROUND_OPERATOR_ROUNDDOWN}","ROUNDDOWN"]]},{type:"input_value",name:"NUM",check:"Number"}],output:"Number",style:"math_blocks",helpUrl:"%{BKY_MATH_ROUND_HELPURL}",tooltip:"%{BKY_MATH_ROUND_TOOLTIP}"},{type:"math_on_list",message0:"%1 %2",args0:[{type:"field_dropdown",name:"OP",options:[["%{BKY_MATH_ONLIST_OPERATOR_SUM}","SUM"],["%{BKY_MATH_ONLIST_OPERATOR_MIN}","MIN"],["%{BKY_MATH_ONLIST_OPERATOR_MAX}","MAX"],["%{BKY_MATH_ONLIST_OPERATOR_AVERAGE}","AVERAGE"],["%{BKY_MATH_ONLIST_OPERATOR_MEDIAN}","MEDIAN"],["%{BKY_MATH_ONLIST_OPERATOR_MODE}","MODE"],["%{BKY_MATH_ONLIST_OPERATOR_STD_DEV}","STD_DEV"],["%{BKY_MATH_ONLIST_OPERATOR_RANDOM}","RANDOM"]]},{type:"input_value",name:"LIST",check:"Array"}],output:"Number",style:"math_blocks",helpUrl:"%{BKY_MATH_ONLIST_HELPURL}",mutator:"math_modes_of_list_mutator",extensions:["math_op_tooltip"]},{type:"math_modulo",message0:"%{BKY_MATH_MODULO_TITLE}",args0:[{type:"input_value",name:"DIVIDEND",check:"Number"},{type:"input_value",name:"DIVISOR",check:"Number"}],inputsInline:!0,output:"Number",style:"math_blocks",tooltip:"%{BKY_MATH_MODULO_TOOLTIP}",helpUrl:"%{BKY_MATH_MODULO_HELPURL}"},{type:"math_constrain",message0:"%{BKY_MATH_CONSTRAIN_TITLE}",args0:[{type:"input_value",name:"VALUE",check:"Number"},{type:"input_value",name:"LOW",check:"Number"},{type:"input_value",name:"HIGH",check:"Number"}],inputsInline:!0,output:"Number",style:"math_blocks",tooltip:"%{BKY_MATH_CONSTRAIN_TOOLTIP}",helpUrl:"%{BKY_MATH_CONSTRAIN_HELPURL}"},{type:"math_random_int",message0:"%{BKY_MATH_RANDOM_INT_TITLE}",args0:[{type:"input_value",name:"FROM",check:"Number"},{type:"input_value",name:"TO",check:"Number"}],inputsInline:!0,output:"Number",style:"math_blocks",tooltip:"%{BKY_MATH_RANDOM_INT_TOOLTIP}",helpUrl:"%{BKY_MATH_RANDOM_INT_HELPURL}"},{type:"math_random_float",message0:"%{BKY_MATH_RANDOM_FLOAT_TITLE_RANDOM}",output:"Number",style:"math_blocks",tooltip:"%{BKY_MATH_RANDOM_FLOAT_TOOLTIP}",helpUrl:"%{BKY_MATH_RANDOM_FLOAT_HELPURL}"},{type:"math_atan2",message0:"%{BKY_MATH_ATAN2_TITLE}",args0:[{type:"input_value",name:"X",check:"Number"},{type:"input_value",name:"Y",check:"Number"}],inputsInline:!0,output:"Number",style:"math_blocks",tooltip:"%{BKY_MATH_ATAN2_TOOLTIP}",helpUrl:"%{BKY_MATH_ATAN2_HELPURL}"}]),re={ADD:"%{BKY_MATH_ARITHMETIC_TOOLTIP_ADD}",MINUS:"%{BKY_MATH_ARITHMETIC_TOOLTIP_MINUS}",MULTIPLY:"%{BKY_MATH_ARITHMETIC_TOOLTIP_MULTIPLY}",DIVIDE:"%{BKY_MATH_ARITHMETIC_TOOLTIP_DIVIDE}",POWER:"%{BKY_MATH_ARITHMETIC_TOOLTIP_POWER}",ROOT:"%{BKY_MATH_SINGLE_TOOLTIP_ROOT}",ABS:"%{BKY_MATH_SINGLE_TOOLTIP_ABS}",NEG:"%{BKY_MATH_SINGLE_TOOLTIP_NEG}",LN:"%{BKY_MATH_SINGLE_TOOLTIP_LN}",LOG10:"%{BKY_MATH_SINGLE_TOOLTIP_LOG10}",EXP:"%{BKY_MATH_SINGLE_TOOLTIP_EXP}",POW10:"%{BKY_MATH_SINGLE_TOOLTIP_POW10}",SIN:"%{BKY_MATH_TRIG_TOOLTIP_SIN}",COS:"%{BKY_MATH_TRIG_TOOLTIP_COS}",TAN:"%{BKY_MATH_TRIG_TOOLTIP_TAN}",ASIN:"%{BKY_MATH_TRIG_TOOLTIP_ASIN}",ACOS:"%{BKY_MATH_TRIG_TOOLTIP_ACOS}",ATAN:"%{BKY_MATH_TRIG_TOOLTIP_ATAN}",SUM:"%{BKY_MATH_ONLIST_TOOLTIP_SUM}",MIN:"%{BKY_MATH_ONLIST_TOOLTIP_MIN}",MAX:"%{BKY_MATH_ONLIST_TOOLTIP_MAX}",AVERAGE:"%{BKY_MATH_ONLIST_TOOLTIP_AVERAGE}",MEDIAN:"%{BKY_MATH_ONLIST_TOOLTIP_MEDIAN}",MODE:"%{BKY_MATH_ONLIST_TOOLTIP_MODE}",STD_DEV:"%{BKY_MATH_ONLIST_TOOLTIP_STD_DEV}",RANDOM:"%{BKY_MATH_ONLIST_TOOLTIP_RANDOM}"};_.register$$module$build$src$core$extensions("math_op_tooltip",_.buildTooltipForDropdown$$module$build$src$core$extensions("OP",re));var H={mutationToDom:function(){const y=_.createElement$$module$build$src$core$utils$xml("mutation"),x=this.getFieldValue("PROPERTY")==="DIVISIBLE_BY";return y.setAttribute("divisor_input",String(x)),y},domToMutation:function(y){y=y.getAttribute("divisor_input")==="true",this.updateShape_(y)},updateShape_:function(y){const x=this.getInput("DIVISOR");y?x||this.appendValueInput("DIVISOR").setCheck("Number"):x&&this.removeInput("DIVISOR")}},Q=function(){this.getField("PROPERTY").setValidator(function(y){y=y==="DIVISIBLE_BY",this.getSourceBlock().updateShape_(y)})};_.registerMutator$$module$build$src$core$extensions("math_is_divisibleby_mutator",H,Q),_.register$$module$build$src$core$extensions("math_change_tooltip",_.buildTooltipWithFieldText$$module$build$src$core$extensions("%{BKY_MATH_CHANGE_TOOLTIP}","VAR"));var ae={updateType_:function(y){y==="MODE"?this.outputConnection.setCheck("Array"):this.outputConnection.setCheck("Number")},mutationToDom:function(){const y=_.createElement$$module$build$src$core$utils$xml("mutation");return y.setAttribute("op",this.getFieldValue("OP")),y},domToMutation:function(y){if(y=y.getAttribute("op"),y===null)throw new TypeError("xmlElement had no op attribute");this.updateType_(y)}},ge=function(){this.getField("OP").setValidator((function(y){this.updateType_(y)}).bind(this))};_.registerMutator$$module$build$src$core$extensions("math_modes_of_list_mutator",ae,ge),_.defineBlocks$$module$build$src$core$common(Y);var Se={blocks:Y},pe=_.createBlockDefinitionsFromJsonArray$$module$build$src$core$common([{type:"controls_repeat_ext",message0:"%{BKY_CONTROLS_REPEAT_TITLE}",args0:[{type:"input_value",name:"TIMES",check:"Number"}],message1:"%{BKY_CONTROLS_REPEAT_INPUT_DO} %1",args1:[{type:"input_statement",name:"DO"}],previousStatement:null,nextStatement:null,style:"loop_blocks",tooltip:"%{BKY_CONTROLS_REPEAT_TOOLTIP}",helpUrl:"%{BKY_CONTROLS_REPEAT_HELPURL}"},{type:"controls_repeat",message0:"%{BKY_CONTROLS_REPEAT_TITLE}",args0:[{type:"field_number",name:"TIMES",value:10,min:0,precision:1}],message1:"%{BKY_CONTROLS_REPEAT_INPUT_DO} %1",args1:[{type:"input_statement",name:"DO"}],previousStatement:null,nextStatement:null,style:"loop_blocks",tooltip:"%{BKY_CONTROLS_REPEAT_TOOLTIP}",helpUrl:"%{BKY_CONTROLS_REPEAT_HELPURL}"},{type:"controls_whileUntil",message0:"%1 %2",args0:[{type:"field_dropdown",name:"MODE",options:[["%{BKY_CONTROLS_WHILEUNTIL_OPERATOR_WHILE}","WHILE"],["%{BKY_CONTROLS_WHILEUNTIL_OPERATOR_UNTIL}","UNTIL"]]},{type:"input_value",name:"BOOL",check:"Boolean"}],message1:"%{BKY_CONTROLS_REPEAT_INPUT_DO} %1",args1:[{type:"input_statement",name:"DO"}],previousStatement:null,nextStatement:null,style:"loop_blocks",helpUrl:"%{BKY_CONTROLS_WHILEUNTIL_HELPURL}",extensions:["controls_whileUntil_tooltip"]},{type:"controls_for",message0:"%{BKY_CONTROLS_FOR_TITLE}",args0:[{type:"field_variable",name:"VAR",variable:null},{type:"input_value",name:"FROM",check:"Number",align:"RIGHT"},{type:"input_value",name:"TO",check:"Number",align:"RIGHT"},{type:"input_value",name:"BY",check:"Number",align:"RIGHT"}],message1:"%{BKY_CONTROLS_REPEAT_INPUT_DO} %1",args1:[{type:"input_statement",name:"DO"}],inputsInline:!0,previousStatement:null,nextStatement:null,style:"loop_blocks",helpUrl:"%{BKY_CONTROLS_FOR_HELPURL}",extensions:["contextMenu_newGetVariableBlock","controls_for_tooltip"]},{type:"controls_forEach",message0:"%{BKY_CONTROLS_FOREACH_TITLE}",args0:[{type:"field_variable",name:"VAR",variable:null},{type:"input_value",name:"LIST",check:"Array"}],message1:"%{BKY_CONTROLS_REPEAT_INPUT_DO} %1",args1:[{type:"input_statement",name:"DO"}],previousStatement:null,nextStatement:null,style:"loop_blocks",helpUrl:"%{BKY_CONTROLS_FOREACH_HELPURL}",extensions:["contextMenu_newGetVariableBlock","controls_forEach_tooltip"]},{type:"controls_flow_statements",message0:"%1",args0:[{type:"field_dropdown",name:"FLOW",options:[["%{BKY_CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK}","BREAK"],["%{BKY_CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE}","CONTINUE"]]}],previousStatement:null,style:"loop_blocks",helpUrl:"%{BKY_CONTROLS_FLOW_STATEMENTS_HELPURL}",suppressPrefixSuffix:!0,extensions:["controls_flow_tooltip","controls_flow_in_loop_check"]}]),We={WHILE:"%{BKY_CONTROLS_WHILEUNTIL_TOOLTIP_WHILE}",UNTIL:"%{BKY_CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL}"};_.register$$module$build$src$core$extensions("controls_whileUntil_tooltip",_.buildTooltipForDropdown$$module$build$src$core$extensions("MODE",We));var be={BREAK:"%{BKY_CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK}",CONTINUE:"%{BKY_CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE}"};_.register$$module$build$src$core$extensions("controls_flow_tooltip",_.buildTooltipForDropdown$$module$build$src$core$extensions("FLOW",be));var Me={customContextMenu:function(y){if(!this.isInFlyout){var x=this.getField("VAR"),oe=x.getVariable().name;this.isCollapsed()||oe===null||(x={type:"variables_get",fields:{VAR:x.saveState(!0)}},y.push({enabled:!0,text:_.Msg$$module$build$src$core$msg.VARIABLES_SET_CREATE_GET.replace("%1",oe),callback:_.callbackFactory$$module$build$src$core$contextmenu(this,x)}))}}};_.registerMixin$$module$build$src$core$extensions("contextMenu_newGetVariableBlock",Me),_.register$$module$build$src$core$extensions("controls_for_tooltip",_.buildTooltipWithFieldText$$module$build$src$core$extensions("%{BKY_CONTROLS_FOR_TOOLTIP}","VAR")),_.register$$module$build$src$core$extensions("controls_forEach_tooltip",_.buildTooltipWithFieldText$$module$build$src$core$extensions("%{BKY_CONTROLS_FOREACH_TOOLTIP}","VAR"));var Ie=new Set(["controls_repeat","controls_repeat_ext","controls_forEach","controls_for","controls_whileUntil"]),Pe={getSurroundLoop:function(){let y=this;do{if(Ie.has(y.type))return y;y=y.getSurroundParent()}while(y);return null},onchange:function(y){var x=this.workspace;if(x.isDragging&&!x.isDragging()&&y.type===_.MOVE$$module$build$src$core$events$utils&&(x=!!this.getSurroundLoop(),this.setWarningText(x?null:_.Msg$$module$build$src$core$msg.CONTROLS_FLOW_STATEMENTS_WARNING),!this.isInFlyout)){const oe=_.getGroup$$module$build$src$core$events$utils();_.setGroup$$module$build$src$core$events$utils(y.group),this.setEnabled(x),_.setGroup$$module$build$src$core$events$utils(oe)}}};_.registerMixin$$module$build$src$core$extensions("controls_flow_in_loop_check",Pe),_.defineBlocks$$module$build$src$core$common(pe);var Ae={blocks:pe,loopTypes:Ie},ke=_.createBlockDefinitionsFromJsonArray$$module$build$src$core$common([{type:"logic_boolean",message0:"%1",args0:[{type:"field_dropdown",name:"BOOL",options:[["%{BKY_LOGIC_BOOLEAN_TRUE}","TRUE"],["%{BKY_LOGIC_BOOLEAN_FALSE}","FALSE"]]}],output:"Boolean",style:"logic_blocks",tooltip:"%{BKY_LOGIC_BOOLEAN_TOOLTIP}",helpUrl:"%{BKY_LOGIC_BOOLEAN_HELPURL}"},{type:"controls_if",message0:"%{BKY_CONTROLS_IF_MSG_IF} %1",args0:[{type:"input_value",name:"IF0",check:"Boolean"}],message1:"%{BKY_CONTROLS_IF_MSG_THEN} %1",args1:[{type:"input_statement",name:"DO0"}],previousStatement:null,nextStatement:null,style:"logic_blocks",helpUrl:"%{BKY_CONTROLS_IF_HELPURL}",suppressPrefixSuffix:!0,mutator:"controls_if_mutator",extensions:["controls_if_tooltip"]},{type:"controls_ifelse",message0:"%{BKY_CONTROLS_IF_MSG_IF} %1",args0:[{type:"input_value",name:"IF0",check:"Boolean"}],message1:"%{BKY_CONTROLS_IF_MSG_THEN} %1",args1:[{type:"input_statement",name:"DO0"}],message2:"%{BKY_CONTROLS_IF_MSG_ELSE} %1",args2:[{type:"input_statement",name:"ELSE"}],previousStatement:null,nextStatement:null,style:"logic_blocks",tooltip:"%{BKYCONTROLS_IF_TOOLTIP_2}",helpUrl:"%{BKY_CONTROLS_IF_HELPURL}",suppressPrefixSuffix:!0,extensions:["controls_if_tooltip"]},{type:"logic_compare",message0:"%1 %2 %3",args0:[{type:"input_value",name:"A"},{type:"field_dropdown",name:"OP",options:[["=","EQ"],["≠","NEQ"],["<","LT"],["≤","LTE"],[">","GT"],["≥","GTE"]]},{type:"input_value",name:"B"}],inputsInline:!0,output:"Boolean",style:"logic_blocks",helpUrl:"%{BKY_LOGIC_COMPARE_HELPURL}",extensions:["logic_compare","logic_op_tooltip"]},{type:"logic_operation",message0:"%1 %2 %3",args0:[{type:"input_value",name:"A",check:"Boolean"},{type:"field_dropdown",name:"OP",options:[["%{BKY_LOGIC_OPERATION_AND}","AND"],["%{BKY_LOGIC_OPERATION_OR}","OR"]]},{type:"input_value",name:"B",check:"Boolean"}],inputsInline:!0,output:"Boolean",style:"logic_blocks",helpUrl:"%{BKY_LOGIC_OPERATION_HELPURL}",extensions:["logic_op_tooltip"]},{type:"logic_negate",message0:"%{BKY_LOGIC_NEGATE_TITLE}",args0:[{type:"input_value",name:"BOOL",check:"Boolean"}],output:"Boolean",style:"logic_blocks",tooltip:"%{BKY_LOGIC_NEGATE_TOOLTIP}",helpUrl:"%{BKY_LOGIC_NEGATE_HELPURL}"},{type:"logic_null",message0:"%{BKY_LOGIC_NULL}",output:null,style:"logic_blocks",tooltip:"%{BKY_LOGIC_NULL_TOOLTIP}",helpUrl:"%{BKY_LOGIC_NULL_HELPURL}"},{type:"logic_ternary",message0:"%{BKY_LOGIC_TERNARY_CONDITION} %1",args0:[{type:"input_value",name:"IF",check:"Boolean"}],message1:"%{BKY_LOGIC_TERNARY_IF_TRUE} %1",args1:[{type:"input_value",name:"THEN"}],message2:"%{BKY_LOGIC_TERNARY_IF_FALSE} %1",args2:[{type:"input_value",name:"ELSE"}],output:null,style:"logic_blocks",tooltip:"%{BKY_LOGIC_TERNARY_TOOLTIP}",helpUrl:"%{BKY_LOGIC_TERNARY_HELPURL}",extensions:["logic_ternary"]},{type:"controls_if_if",message0:"%{BKY_CONTROLS_IF_IF_TITLE_IF}",nextStatement:null,enableContextMenu:!1,style:"logic_blocks",tooltip:"%{BKY_CONTROLS_IF_IF_TOOLTIP}"},{type:"controls_if_elseif",message0:"%{BKY_CONTROLS_IF_ELSEIF_TITLE_ELSEIF}",previousStatement:null,nextStatement:null,enableContextMenu:!1,style:"logic_blocks",tooltip:"%{BKY_CONTROLS_IF_ELSEIF_TOOLTIP}"},{type:"controls_if_else",message0:"%{BKY_CONTROLS_IF_ELSE_TITLE_ELSE}",previousStatement:null,enableContextMenu:!1,style:"logic_blocks",tooltip:"%{BKY_CONTROLS_IF_ELSE_TOOLTIP}"}]),ve={EQ:"%{BKY_LOGIC_COMPARE_TOOLTIP_EQ}",NEQ:"%{BKY_LOGIC_COMPARE_TOOLTIP_NEQ}",LT:"%{BKY_LOGIC_COMPARE_TOOLTIP_LT}",LTE:"%{BKY_LOGIC_COMPARE_TOOLTIP_LTE}",GT:"%{BKY_LOGIC_COMPARE_TOOLTIP_GT}",GTE:"%{BKY_LOGIC_COMPARE_TOOLTIP_GTE}",AND:"%{BKY_LOGIC_OPERATION_TOOLTIP_AND}",OR:"%{BKY_LOGIC_OPERATION_TOOLTIP_OR}"};_.register$$module$build$src$core$extensions("logic_op_tooltip",_.buildTooltipForDropdown$$module$build$src$core$extensions("OP",ve));var Te={elseifCount_:0,elseCount_:0,mutationToDom:function(){if(!this.elseifCount_&&!this.elseCount_)return null;const y=_.createElement$$module$build$src$core$utils$xml("mutation");return this.elseifCount_&&y.setAttribute("elseif",String(this.elseifCount_)),this.elseCount_&&y.setAttribute("else","1"),y},domToMutation:function(y){this.elseifCount_=parseInt(y.getAttribute("elseif"),10)||0,this.elseCount_=parseInt(y.getAttribute("else"),10)||0,this.rebuildShape_()},saveExtraState:function(){if(!this.elseifCount_&&!this.elseCount_)return null;const y=Object.create(null);return this.elseifCount_&&(y.elseIfCount=this.elseifCount_),this.elseCount_&&(y.hasElse=!0),y},loadExtraState:function(y){this.elseifCount_=y.elseIfCount||0,this.elseCount_=y.hasElse?1:0,this.updateShape_()},decompose:function(y){const x=y.newBlock("controls_if_if");x.initSvg();let oe=x.nextConnection;for(let Ee=1;Ee<=this.elseifCount_;Ee++){const _e=y.newBlock("controls_if_elseif");_e.initSvg(),oe.connect(_e.previousConnection),oe=_e.nextConnection}return this.elseCount_&&(y=y.newBlock("controls_if_else"),y.initSvg(),oe.connect(y.previousConnection)),x},compose:function(y){y=y.nextConnection.targetBlock(),this.elseCount_=this.elseifCount_=0;const x=[null],oe=[null];let Ee=null;for(;y;){if(!y.isInsertionMarker())switch(y.type){case"controls_if_elseif":this.elseifCount_++,x.push(y.valueConnection_),oe.push(y.statementConnection_);break;case"controls_if_else":this.elseCount_++,Ee=y.statementConnection_;break;default:throw TypeError("Unknown block type: "+y.type)}y=y.getNextBlock()}this.updateShape_(),this.reconnectChildBlocks_(x,oe,Ee)},saveConnections:function(y){y=y.nextConnection.targetBlock();let x=1;for(;y;){if(!y.isInsertionMarker())switch(y.type){case"controls_if_elseif":var oe=this.getInput("IF"+x);const Ee=this.getInput("DO"+x);y.valueConnection_=oe&&oe.connection.targetConnection,y.statementConnection_=Ee&&Ee.connection.targetConnection,x++;break;case"controls_if_else":oe=this.getInput("ELSE"),y.statementConnection_=oe&&oe.connection.targetConnection;break;default:throw TypeError("Unknown block type: "+y.type)}y=y.getNextBlock()}},rebuildShape_:function(){const y=[null],x=[null];let oe=null;this.getInput("ELSE")&&(oe=this.getInput("ELSE").connection.targetConnection);for(let Ee=1;this.getInput("IF"+Ee);Ee++){const _e=this.getInput("IF"+Ee),ze=this.getInput("DO"+Ee);y.push(_e.connection.targetConnection),x.push(ze.connection.targetConnection)}this.updateShape_(),this.reconnectChildBlocks_(y,x,oe)},updateShape_:function(){this.getInput("ELSE")&&this.removeInput("ELSE");for(var y=1;this.getInput("IF"+y);y++)this.removeInput("IF"+y),this.removeInput("DO"+y);for(y=1;y<=this.elseifCount_;y++)this.appendValueInput("IF"+y).setCheck("Boolean").appendField(_.Msg$$module$build$src$core$msg.CONTROLS_IF_MSG_ELSEIF),this.appendStatementInput("DO"+y).appendField(_.Msg$$module$build$src$core$msg.CONTROLS_IF_MSG_THEN);this.elseCount_&&this.appendStatementInput("ELSE").appendField(_.Msg$$module$build$src$core$msg.CONTROLS_IF_MSG_ELSE)},reconnectChildBlocks_:function(y,x,oe){for(let Ee=1;Ee<=this.elseifCount_;Ee++){let _e;(_e=y[Ee])==null||_e.reconnect(this,"IF"+Ee);let ze;(ze=x[Ee])==null||ze.reconnect(this,"DO"+Ee)}oe==null||oe.reconnect(this,"ELSE")}};_.registerMutator$$module$build$src$core$extensions("controls_if_mutator",Te,null,["controls_if_elseif","controls_if_else"]);var Re=function(){this.setTooltip((function(){if(this.elseifCount_||this.elseCount_){if(!this.elseifCount_&&this.elseCount_)return _.Msg$$module$build$src$core$msg.CONTROLS_IF_TOOLTIP_2;if(this.elseifCount_&&!this.elseCount_)return _.Msg$$module$build$src$core$msg.CONTROLS_IF_TOOLTIP_3;if(this.elseifCount_&&this.elseCount_)return _.Msg$$module$build$src$core$msg.CONTROLS_IF_TOOLTIP_4}else return _.Msg$$module$build$src$core$msg.CONTROLS_IF_TOOLTIP_1;return""}).bind(this))};_.register$$module$build$src$core$extensions("controls_if_tooltip",Re);var Ue={onchange:function(y){this.prevBlocks_||(this.prevBlocks_=[null,null]);var x=this.getInputTargetBlock("A");const oe=this.getInputTargetBlock("B");x&&oe&&!this.workspace.connectionChecker.doTypeChecks(x.outputConnection,oe.outputConnection)&&(_.setGroup$$module$build$src$core$events$utils(y.group),y=this.prevBlocks_[0],y!==x&&(x.unplug(),!y||y.isDisposed()||y.isShadow()||this.getInput("A").connection.connect(y.outputConnection)),x=this.prevBlocks_[1],x!==oe&&(oe.unplug(),!x||x.isDisposed()||x.isShadow()||this.getInput("B").connection.connect(x.outputConnection)),this.bumpNeighbours(),_.setGroup$$module$build$src$core$events$utils(!1)),this.prevBlocks_[0]=this.getInputTargetBlock("A"),this.prevBlocks_[1]=this.getInputTargetBlock("B")}},Ye=function(){this.mixin(Ue)};_.register$$module$build$src$core$extensions("logic_compare",Ye);var De={prevParentConnection_:null,onchange:function(y){const x=this.getInputTargetBlock("THEN"),oe=this.getInputTargetBlock("ELSE"),Ee=this.outputConnection.targetConnection;if((x||oe)&&Ee)for(let _e=0;2>_e;_e++){const ze=_e===1?x:oe;ze&&!ze.workspace.connectionChecker.doTypeChecks(ze.outputConnection,Ee)&&(_.setGroup$$module$build$src$core$events$utils(y.group),Ee===this.prevParentConnection_?(this.unplug(),Ee.getSourceBlock().bumpNeighbours()):(ze.unplug(),ze.bumpNeighbours()),_.setGroup$$module$build$src$core$events$utils(!1))}this.prevParentConnection_=Ee}};_.registerMixin$$module$build$src$core$extensions("logic_ternary",De),_.defineBlocks$$module$build$src$core$common(ke);var Xe=_.createBlockDefinitionsFromJsonArray$$module$build$src$core$common([{type:"lists_create_empty",message0:"%{BKY_LISTS_CREATE_EMPTY_TITLE}",output:"Array",style:"list_blocks",tooltip:"%{BKY_LISTS_CREATE_EMPTY_TOOLTIP}",helpUrl:"%{BKY_LISTS_CREATE_EMPTY_HELPURL}"},{type:"lists_repeat",message0:"%{BKY_LISTS_REPEAT_TITLE}",args0:[{type:"input_value",name:"ITEM"},{type:"input_value",name:"NUM",check:"Number"}],output:"Array",style:"list_blocks",tooltip:"%{BKY_LISTS_REPEAT_TOOLTIP}",helpUrl:"%{BKY_LISTS_REPEAT_HELPURL}"},{type:"lists_reverse",message0:"%{BKY_LISTS_REVERSE_MESSAGE0}",args0:[{type:"input_value",name:"LIST",check:"Array"}],output:"Array",inputsInline:!0,style:"list_blocks",tooltip:"%{BKY_LISTS_REVERSE_TOOLTIP}",helpUrl:"%{BKY_LISTS_REVERSE_HELPURL}"},{type:"lists_isEmpty",message0:"%{BKY_LISTS_ISEMPTY_TITLE}",args0:[{type:"input_value",name:"VALUE",check:["String","Array"]}],output:"Boolean",style:"list_blocks",tooltip:"%{BKY_LISTS_ISEMPTY_TOOLTIP}",helpUrl:"%{BKY_LISTS_ISEMPTY_HELPURL}"},{type:"lists_length",message0:"%{BKY_LISTS_LENGTH_TITLE}",args0:[{type:"input_value",name:"VALUE",check:["String","Array"]}],output:"Number",style:"list_blocks",tooltip:"%{BKY_LISTS_LENGTH_TOOLTIP}",helpUrl:"%{BKY_LISTS_LENGTH_HELPURL}"}]),Ke={init:function(){this.setHelpUrl(_.Msg$$module$build$src$core$msg.LISTS_CREATE_WITH_HELPURL),this.setStyle("list_blocks"),this.itemCount_=3,this.updateShape_(),this.setOutput(!0,"Array"),this.setMutator(new _.MutatorIcon$$module$build$src$core$icons$mutator_icon(["lists_create_with_item"],this)),this.setTooltip(_.Msg$$module$build$src$core$msg.LISTS_CREATE_WITH_TOOLTIP)},mutationToDom:function(){const y=_.createElement$$module$build$src$core$utils$xml("mutation");return y.setAttribute("items",String(this.itemCount_)),y},domToMutation:function(y){if(y=y.getAttribute("items"),!y)throw new TypeError("element did not have items");this.itemCount_=parseInt(y,10),this.updateShape_()},saveExtraState:function(){return{itemCount:this.itemCount_}},loadExtraState:function(y){this.itemCount_=y.itemCount,this.updateShape_()},decompose:function(y){const x=y.newBlock("lists_create_with_container");x.initSvg();let oe=x.getInput("STACK").connection;for(let Ee=0;Ee<this.itemCount_;Ee++){const _e=y.newBlock("lists_create_with_item");if(_e.initSvg(),!_e.previousConnection)throw Error("itemBlock has no previousConnection");oe.connect(_e.previousConnection),oe=_e.nextConnection}return x},compose:function(y){var x=y.getInputTargetBlock("STACK");for(y=[];x;)x.isInsertionMarker()||y.push(x.valueConnection_),x=x.getNextBlock();for(x=0;x<this.itemCount_;x++){const oe=this.getInput("ADD"+x).connection.targetConnection;oe&&y.indexOf(oe)===-1&&oe.disconnect()}for(this.itemCount_=y.length,this.updateShape_(),x=0;x<this.itemCount_;x++){let oe;(oe=y[x])==null||oe.reconnect(this,"ADD"+x)}},saveConnections:function(y){y=y.getInputTargetBlock("STACK");let x=0;for(;y;){if(y.isInsertionMarker()){y=y.getNextBlock();continue}const oe=this.getInput("ADD"+x);let Ee;y.valueConnection_=(Ee=oe)==null?void 0:Ee.connection.targetConnection,y=y.getNextBlock(),x++}},updateShape_:function(){this.itemCount_&&this.getInput("EMPTY")?this.removeInput("EMPTY"):this.itemCount_||this.getInput("EMPTY")||this.appendDummyInput("EMPTY").appendField(_.Msg$$module$build$src$core$msg.LISTS_CREATE_EMPTY_TITLE);for(var y=0;y<this.itemCount_;y++)if(!this.getInput("ADD"+y)){const x=this.appendValueInput("ADD"+y).setAlign(_.Align$$module$build$src$core$inputs$align.RIGHT);y===0&&x.appendField(_.Msg$$module$build$src$core$msg.LISTS_CREATE_WITH_INPUT_WITH)}for(y=this.itemCount_;this.getInput("ADD"+y);y++)this.removeInput("ADD"+y)}};Xe.lists_create_with=Ke;var Be={init:function(){this.setStyle("list_blocks"),this.appendDummyInput().appendField(_.Msg$$module$build$src$core$msg.LISTS_CREATE_WITH_CONTAINER_TITLE_ADD),this.appendStatementInput("STACK"),this.setTooltip(_.Msg$$module$build$src$core$msg.LISTS_CREATE_WITH_CONTAINER_TOOLTIP),this.contextMenu=!1}};Xe.lists_create_with_container=Be;var qe={init:function(){this.setStyle("list_blocks"),this.appendDummyInput().appendField(_.Msg$$module$build$src$core$msg.LISTS_CREATE_WITH_ITEM_TITLE),this.setPreviousStatement(!0),this.setNextStatement(!0),this.setTooltip(_.Msg$$module$build$src$core$msg.LISTS_CREATE_WITH_ITEM_TOOLTIP),this.contextMenu=!1}};Xe.lists_create_with_item=qe;var xe={init:function(){var y=[[_.Msg$$module$build$src$core$msg.LISTS_INDEX_OF_FIRST,"FIRST"],[_.Msg$$module$build$src$core$msg.LISTS_INDEX_OF_LAST,"LAST"]];if(this.setHelpUrl(_.Msg$$module$build$src$core$msg.LISTS_INDEX_OF_HELPURL),this.setStyle("list_blocks"),this.setOutput(!0,"Number"),this.appendValueInput("VALUE").setCheck("Array").appendField(_.Msg$$module$build$src$core$msg.LISTS_INDEX_OF_INPUT_IN_LIST),y=_.fromJson$$module$build$src$core$field_registry({type:"field_dropdown",options:y}),!y)throw Error("field_dropdown not found");this.appendValueInput("FIND").appendField(y,"END"),this.setInputsInline(!0),this.setTooltip(()=>_.Msg$$module$build$src$core$msg.LISTS_INDEX_OF_TOOLTIP.replace("%1",this.workspace.options.oneBasedIndex?"0":"-1"))}};Xe.lists_indexOf=xe;var Le={init:function(){var y=[[_.Msg$$module$build$src$core$msg.LISTS_GET_INDEX_GET,"GET"],[_.Msg$$module$build$src$core$msg.LISTS_GET_INDEX_GET_REMOVE,"GET_REMOVE"],[_.Msg$$module$build$src$core$msg.LISTS_GET_INDEX_REMOVE,"REMOVE"]];this.WHERE_OPTIONS=[[_.Msg$$module$build$src$core$msg.LISTS_GET_INDEX_FROM_START,"FROM_START"],[_.Msg$$module$build$src$core$msg.LISTS_GET_INDEX_FROM_END,"FROM_END"],[_.Msg$$module$build$src$core$msg.LISTS_GET_INDEX_FIRST,"FIRST"],[_.Msg$$module$build$src$core$msg.LISTS_GET_INDEX_LAST,"LAST"],[_.Msg$$module$build$src$core$msg.LISTS_GET_INDEX_RANDOM,"RANDOM"]],this.setHelpUrl(_.Msg$$module$build$src$core$msg.LISTS_GET_INDEX_HELPURL),this.setStyle("list_blocks"),y=_.fromJson$$module$build$src$core$field_registry({type:"field_dropdown",options:y}),y.setValidator(function(x){x=x==="REMOVE",this.getSourceBlock().updateStatement_(x)}),this.appendValueInput("VALUE").setCheck("Array").appendField(_.Msg$$module$build$src$core$msg.LISTS_GET_INDEX_INPUT_IN_LIST),this.appendDummyInput().appendField(y,"MODE").appendField("","SPACE"),this.appendDummyInput("AT"),_.Msg$$module$build$src$core$msg.LISTS_GET_INDEX_TAIL&&this.appendDummyInput("TAIL").appendField(_.Msg$$module$build$src$core$msg.LISTS_GET_INDEX_TAIL),this.setInputsInline(!0),this.setOutput(!0),this.updateAt_(!0),this.setTooltip(()=>{const x=this.getFieldValue("MODE"),oe=this.getFieldValue("WHERE");let Ee="";switch(x+" "+oe){case"GET FROM_START":case"GET FROM_END":Ee=_.Msg$$module$build$src$core$msg.LISTS_GET_INDEX_TOOLTIP_GET_FROM;break;case"GET FIRST":Ee=_.Msg$$module$build$src$core$msg.LISTS_GET_INDEX_TOOLTIP_GET_FIRST;break;case"GET LAST":Ee=_.Msg$$module$build$src$core$msg.LISTS_GET_INDEX_TOOLTIP_GET_LAST;break;case"GET RANDOM":Ee=_.Msg$$module$build$src$core$msg.LISTS_GET_INDEX_TOOLTIP_GET_RANDOM;break;case"GET_REMOVE FROM_START":case"GET_REMOVE FROM_END":Ee=_.Msg$$module$build$src$core$msg.LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM;break;case"GET_REMOVE FIRST":Ee=_.Msg$$module$build$src$core$msg.LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST;break;case"GET_REMOVE LAST":Ee=_.Msg$$module$build$src$core$msg.LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST;break;case"GET_REMOVE RANDOM":Ee=_.Msg$$module$build$src$core$msg.LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM;break;case"REMOVE FROM_START":case"REMOVE FROM_END":Ee=_.Msg$$module$build$src$core$msg.LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM;break;case"REMOVE FIRST":Ee=_.Msg$$module$build$src$core$msg.LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST;break;case"REMOVE LAST":Ee=_.Msg$$module$build$src$core$msg.LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST;break;case"REMOVE RANDOM":Ee=_.Msg$$module$build$src$core$msg.LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM}return(oe==="FROM_START"||oe==="FROM_END")&&(Ee+=" "+(oe==="FROM_START"?_.Msg$$module$build$src$core$msg.LISTS_INDEX_FROM_START_TOOLTIP:_.Msg$$module$build$src$core$msg.LISTS_INDEX_FROM_END_TOOLTIP).replace("%1",this.workspace.options.oneBasedIndex?"#1":"#0")),Ee})},mutationToDom:function(){const y=_.createElement$$module$build$src$core$utils$xml("mutation");y.setAttribute("statement",String(!this.outputConnection));const x=this.getInput("AT")instanceof _.ValueInput$$module$build$src$core$inputs$value_input;return y.setAttribute("at",String(x)),y},domToMutation:function(y){const x=y.getAttribute("statement")==="true";this.updateStatement_(x),y=y.getAttribute("at")!=="false",this.updateAt_(y)},saveExtraState:function(){return this.outputConnection?null:{isStatement:!0}},loadExtraState:function(y){y.isStatement?this.updateStatement_(!0):typeof y=="string"&&this.domToMutation(_.textToDom$$module$build$src$core$utils$xml(y))},updateStatement_:function(y){y!==!this.outputConnection&&(this.unplug(!0,!0),y?(this.setOutput(!1),this.setPreviousStatement(!0),this.setNextStatement(!0)):(this.setPreviousStatement(!1),this.setNextStatement(!1),this.setOutput(!0)))},updateAt_:function(y){this.removeInput("AT"),this.removeInput("ORDINAL",!0),y?(this.appendValueInput("AT").setCheck("Number"),_.Msg$$module$build$src$core$msg.ORDINAL_NUMBER_SUFFIX&&this.appendDummyInput("ORDINAL").appendField(_.Msg$$module$build$src$core$msg.ORDINAL_NUMBER_SUFFIX)):this.appendDummyInput("AT");const x=_.fromJson$$module$build$src$core$field_registry({type:"field_dropdown",options:this.WHERE_OPTIONS});x.setValidator(function(oe){const Ee=oe==="FROM_START"||oe==="FROM_END";if(Ee!==y){const _e=this.getSourceBlock();return _e.updateAt_(Ee),_e.setFieldValue(oe,"WHERE"),null}}),this.getInput("AT").appendField(x,"WHERE"),_.Msg$$module$build$src$core$msg.LISTS_GET_INDEX_TAIL&&this.moveInputBefore("TAIL",null)}};Xe.lists_getIndex=Le;var je={init:function(){var y=[[_.Msg$$module$build$src$core$msg.LISTS_SET_INDEX_SET,"SET"],[_.Msg$$module$build$src$core$msg.LISTS_SET_INDEX_INSERT,"INSERT"]];this.WHERE_OPTIONS=[[_.Msg$$module$build$src$core$msg.LISTS_GET_INDEX_FROM_START,"FROM_START"],[_.Msg$$module$build$src$core$msg.LISTS_GET_INDEX_FROM_END,"FROM_END"],[_.Msg$$module$build$src$core$msg.LISTS_GET_INDEX_FIRST,"FIRST"],[_.Msg$$module$build$src$core$msg.LISTS_GET_INDEX_LAST,"LAST"],[_.Msg$$module$build$src$core$msg.LISTS_GET_INDEX_RANDOM,"RANDOM"]],this.setHelpUrl(_.Msg$$module$build$src$core$msg.LISTS_SET_INDEX_HELPURL),this.setStyle("list_blocks"),this.appendValueInput("LIST").setCheck("Array").appendField(_.Msg$$module$build$src$core$msg.LISTS_SET_INDEX_INPUT_IN_LIST),y=_.fromJson$$module$build$src$core$field_registry({type:"field_dropdown",options:y}),this.appendDummyInput().appendField(y,"MODE").appendField("","SPACE"),this.appendDummyInput("AT"),this.appendValueInput("TO").appendField(_.Msg$$module$build$src$core$msg.LISTS_SET_INDEX_INPUT_TO),this.setInputsInline(!0),this.setPreviousStatement(!0),this.setNextStatement(!0),this.setTooltip(_.Msg$$module$build$src$core$msg.LISTS_SET_INDEX_TOOLTIP),this.updateAt_(!0),this.setTooltip(()=>{const x=this.getFieldValue("MODE"),oe=this.getFieldValue("WHERE");let Ee="";switch(x+" "+oe){case"SET FROM_START":case"SET FROM_END":Ee=_.Msg$$module$build$src$core$msg.LISTS_SET_INDEX_TOOLTIP_SET_FROM;break;case"SET FIRST":Ee=_.Msg$$module$build$src$core$msg.LISTS_SET_INDEX_TOOLTIP_SET_FIRST;break;case"SET LAST":Ee=_.Msg$$module$build$src$core$msg.LISTS_SET_INDEX_TOOLTIP_SET_LAST;break;case"SET RANDOM":Ee=_.Msg$$module$build$src$core$msg.LISTS_SET_INDEX_TOOLTIP_SET_RANDOM;break;case"INSERT FROM_START":case"INSERT FROM_END":Ee=_.Msg$$module$build$src$core$msg.LISTS_SET_INDEX_TOOLTIP_INSERT_FROM;break;case"INSERT FIRST":Ee=_.Msg$$module$build$src$core$msg.LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST;break;case"INSERT LAST":Ee=_.Msg$$module$build$src$core$msg.LISTS_SET_INDEX_TOOLTIP_INSERT_LAST;break;case"INSERT RANDOM":Ee=_.Msg$$module$build$src$core$msg.LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM}return(oe==="FROM_START"||oe==="FROM_END")&&(Ee+=" "+_.Msg$$module$build$src$core$msg.LISTS_INDEX_FROM_START_TOOLTIP.replace("%1",this.workspace.options.oneBasedIndex?"#1":"#0")),Ee})},mutationToDom:function(){const y=_.createElement$$module$build$src$core$utils$xml("mutation"),x=this.getInput("AT")instanceof _.ValueInput$$module$build$src$core$inputs$value_input;return y.setAttribute("at",String(x)),y},domToMutation:function(y){y=y.getAttribute("at")!=="false",this.updateAt_(y)},saveExtraState:function(){return null},loadExtraState:function(){},updateAt_:function(y){this.removeInput("AT"),this.removeInput("ORDINAL",!0),y?(this.appendValueInput("AT").setCheck("Number"),_.Msg$$module$build$src$core$msg.ORDINAL_NUMBER_SUFFIX&&this.appendDummyInput("ORDINAL").appendField(_.Msg$$module$build$src$core$msg.ORDINAL_NUMBER_SUFFIX)):this.appendDummyInput("AT");const x=_.fromJson$$module$build$src$core$field_registry({type:"field_dropdown",options:this.WHERE_OPTIONS});x.setValidator(function(oe){const Ee=oe==="FROM_START"||oe==="FROM_END";if(Ee!==y){const _e=this.getSourceBlock();return _e.updateAt_(Ee),_e.setFieldValue(oe,"WHERE"),null}}),this.moveInputBefore("AT","TO"),this.getInput("ORDINAL")&&this.moveInputBefore("ORDINAL","TO"),this.getInput("AT").appendField(x,"WHERE")}};Xe.lists_setIndex=je;var He={init:function(){this.WHERE_OPTIONS_1=[[_.Msg$$module$build$src$core$msg.LISTS_GET_SUBLIST_START_FROM_START,"FROM_START"],[_.Msg$$module$build$src$core$msg.LISTS_GET_SUBLIST_START_FROM_END,"FROM_END"],[_.Msg$$module$build$src$core$msg.LISTS_GET_SUBLIST_START_FIRST,"FIRST"]],this.WHERE_OPTIONS_2=[[_.Msg$$module$build$src$core$msg.LISTS_GET_SUBLIST_END_FROM_START,"FROM_START"],[_.Msg$$module$build$src$core$msg.LISTS_GET_SUBLIST_END_FROM_END,"FROM_END"],[_.Msg$$module$build$src$core$msg.LISTS_GET_SUBLIST_END_LAST,"LAST"]],this.setHelpUrl(_.Msg$$module$build$src$core$msg.LISTS_GET_SUBLIST_HELPURL),this.setStyle("list_blocks"),this.appendValueInput("LIST").setCheck("Array").appendField(_.Msg$$module$build$src$core$msg.LISTS_GET_SUBLIST_INPUT_IN_LIST),this.appendDummyInput("AT1"),this.appendDummyInput("AT2"),_.Msg$$module$build$src$core$msg.LISTS_GET_SUBLIST_TAIL&&this.appendDummyInput("TAIL").appendField(_.Msg$$module$build$src$core$msg.LISTS_GET_SUBLIST_TAIL),this.setInputsInline(!0),this.setOutput(!0,"Array"),this.updateAt_(1,!0),this.updateAt_(2,!0),this.setTooltip(_.Msg$$module$build$src$core$msg.LISTS_GET_SUBLIST_TOOLTIP)},mutationToDom:function(){const y=_.createElement$$module$build$src$core$utils$xml("mutation");var x=this.getInput("AT1")instanceof _.ValueInput$$module$build$src$core$inputs$value_input;return y.setAttribute("at1",String(x)),x=this.getInput("AT2")instanceof _.ValueInput$$module$build$src$core$inputs$value_input,y.setAttribute("at2",String(x)),y},domToMutation:function(y){const x=y.getAttribute("at1")==="true";y=y.getAttribute("at2")==="true",this.updateAt_(1,x),this.updateAt_(2,y)},saveExtraState:function(){return null},loadExtraState:function(){},updateAt_:function(y,x){this.removeInput("AT"+y),this.removeInput("ORDINAL"+y,!0),x?(this.appendValueInput("AT"+y).setCheck("Number"),_.Msg$$module$build$src$core$msg.ORDINAL_NUMBER_SUFFIX&&this.appendDummyInput("ORDINAL"+y).appendField(_.Msg$$module$build$src$core$msg.ORDINAL_NUMBER_SUFFIX)):this.appendDummyInput("AT"+y);const oe=_.fromJson$$module$build$src$core$field_registry({type:"field_dropdown",options:this["WHERE_OPTIONS_"+y]});oe.setValidator(function(Ee){const _e=Ee==="FROM_START"||Ee==="FROM_END";if(_e!==x){const ze=this.getSourceBlock();return ze.updateAt_(y,_e),ze.setFieldValue(Ee,"WHERE"+y),null}}),this.getInput("AT"+y).appendField(oe,"WHERE"+y),y===1&&(this.moveInputBefore("AT1","AT2"),this.getInput("ORDINAL1")&&this.moveInputBefore("ORDINAL1","AT2")),_.Msg$$module$build$src$core$msg.LISTS_GET_SUBLIST_TAIL&&this.moveInputBefore("TAIL",null)}};Xe.lists_getSublist=He,Xe.lists_sort={init:function(){this.jsonInit({message0:"%{BKY_LISTS_SORT_TITLE}",args0:[{type:"field_dropdown",name:"TYPE",options:[["%{BKY_LISTS_SORT_TYPE_NUMERIC}","NUMERIC"],["%{BKY_LISTS_SORT_TYPE_TEXT}","TEXT"],["%{BKY_LISTS_SORT_TYPE_IGNORECASE}","IGNORE_CASE"]]},{type:"field_dropdown",name:"DIRECTION",options:[["%{BKY_LISTS_SORT_ORDER_ASCENDING}","1"],["%{BKY_LISTS_SORT_ORDER_DESCENDING}","-1"]]},{type:"input_value",name:"LIST",check:"Array"}],output:"Array",style:"list_blocks",tooltip:"%{BKY_LISTS_SORT_TOOLTIP}",helpUrl:"%{BKY_LISTS_SORT_HELPURL}"})}},Xe.lists_split={init:function(){const y=_.fromJson$$module$build$src$core$field_registry({type:"field_dropdown",options:[[_.Msg$$module$build$src$core$msg.LISTS_SPLIT_LIST_FROM_TEXT,"SPLIT"],[_.Msg$$module$build$src$core$msg.LISTS_SPLIT_TEXT_FROM_LIST,"JOIN"]]});if(!y)throw Error("field_dropdown not found");y.setValidator(x=>{this.updateType_(x)}),this.setHelpUrl(_.Msg$$module$build$src$core$msg.LISTS_SPLIT_HELPURL),this.setStyle("list_blocks"),this.appendValueInput("INPUT").setCheck("String").appendField(y,"MODE"),this.appendValueInput("DELIM").setCheck("String").appendField(_.Msg$$module$build$src$core$msg.LISTS_SPLIT_WITH_DELIMITER),this.setInputsInline(!0),this.setOutput(!0,"Array"),this.setTooltip(()=>{const x=this.getFieldValue("MODE");if(x==="SPLIT")return _.Msg$$module$build$src$core$msg.LISTS_SPLIT_TOOLTIP_SPLIT;if(x==="JOIN")return _.Msg$$module$build$src$core$msg.LISTS_SPLIT_TOOLTIP_JOIN;throw Error("Unknown mode: "+x)})},updateType_:function(y){if(this.getFieldValue("MODE")!==y){const x=this.getInput("INPUT").connection;x.setShadowDom(null);const oe=x.targetBlock();oe&&(x.disconnect(),oe.isShadow()?oe.dispose(!1):this.bumpNeighbours())}y==="SPLIT"?(this.outputConnection.setCheck("Array"),this.getInput("INPUT").setCheck("String")):(this.outputConnection.setCheck("String"),this.getInput("INPUT").setCheck("Array"))},mutationToDom:function(){const y=_.createElement$$module$build$src$core$utils$xml("mutation");return y.setAttribute("mode",this.getFieldValue("MODE")),y},domToMutation:function(y){this.updateType_(y.getAttribute("mode"))},saveExtraState:function(){return null},loadExtraState:function(){}},_.defineBlocks$$module$build$src$core$common(Xe);var Je={blocks:Xe},St=_.createBlockDefinitionsFromJsonArray$$module$build$src$core$common([{type:"colour_picker",message0:"%1",args0:[{type:"field_colour",name:"COLOUR",colour:"#ff0000"}],output:"Colour",helpUrl:"%{BKY_COLOUR_PICKER_HELPURL}",style:"colour_blocks",tooltip:"%{BKY_COLOUR_PICKER_TOOLTIP}",extensions:["parent_tooltip_when_inline"]},{type:"colour_random",message0:"%{BKY_COLOUR_RANDOM_TITLE}",output:"Colour",helpUrl:"%{BKY_COLOUR_RANDOM_HELPURL}",style:"colour_blocks",tooltip:"%{BKY_COLOUR_RANDOM_TOOLTIP}"},{type:"colour_rgb",message0:"%{BKY_COLOUR_RGB_TITLE} %{BKY_COLOUR_RGB_RED} %1 %{BKY_COLOUR_RGB_GREEN} %2 %{BKY_COLOUR_RGB_BLUE} %3",args0:[{type:"input_value",name:"RED",check:"Number",align:"RIGHT"},{type:"input_value",name:"GREEN",check:"Number",align:"RIGHT"},{type:"input_value",name:"BLUE",check:"Number",align:"RIGHT"}],output:"Colour",helpUrl:"%{BKY_COLOUR_RGB_HELPURL}",style:"colour_blocks",tooltip:"%{BKY_COLOUR_RGB_TOOLTIP}"},{type:"colour_blend",message0:"%{BKY_COLOUR_BLEND_TITLE} %{BKY_COLOUR_BLEND_COLOUR1} %1 %{BKY_COLOUR_BLEND_COLOUR2} %2 %{BKY_COLOUR_BLEND_RATIO} %3",args0:[{type:"input_value",name:"COLOUR1",check:"Colour",align:"RIGHT"},{type:"input_value",name:"COLOUR2",check:"Colour",align:"RIGHT"},{type:"input_value",name:"RATIO",check:"Number",align:"RIGHT"}],output:"Colour",helpUrl:"%{BKY_COLOUR_BLEND_HELPURL}",style:"colour_blocks",tooltip:"%{BKY_COLOUR_BLEND_TOOLTIP}"}]);_.defineBlocks$$module$build$src$core$common(St);var Ot={blocks:St},Nt=Object.assign({},St,Xe,ke,pe,Y,V,d,l),z={blocks:Nt,colour:Ot,lists:Je,loops:Ae,math:Se,procedures:ie,texts:F,variables:S,variablesDynamic:u};return z.__namespace__=_,z})}(sC)),sC.exports}var j1;function Y6(){return j1||(j1=1,function(t,e){(function(o,_){t.exports=_(X6())})(Is,function(o){/**
- * @license
- * Copyright 2020 Google LLC
- * SPDX-License-Identifier: Apache-2.0
- */return o})}(oC)),oC.exports}var iC={exports:{}},nC={exports:{}},q1;function K6(){return q1||(q1=1,function(t,e){(function(o,_){t.exports=_(aS())})(Is,function(o){var _=o.__namespace__,l=function(D,Z){return[Z.quote_(D.getFieldValue("COLOUR")),z.ATOMIC]},c=function(D,Z){return[Z.provideFunction_("colourRandom",`
- function ${Z.FUNCTION_NAME_PLACEHOLDER_}() {
- var num = Math.floor(Math.random() * Math.pow(2, 24));
- return '#' + ('00000' + num.toString(16)).substr(-6);
- }
- `)+"()",z.FUNCTION_CALL]},T=function(D,Z){const he=Z.valueToCode(D,"RED",z.NONE)||0,ce=Z.valueToCode(D,"GREEN",z.NONE)||0;return D=Z.valueToCode(D,"BLUE",z.NONE)||0,[Z.provideFunction_("colourRgb",`
- function ${Z.FUNCTION_NAME_PLACEHOLDER_}(r, g, b) {
- r = Math.max(Math.min(Number(r), 100), 0) * 2.55;
- g = Math.max(Math.min(Number(g), 100), 0) * 2.55;
- b = Math.max(Math.min(Number(b), 100), 0) * 2.55;
- r = ('0' + (Math.round(r) || 0).toString(16)).slice(-2);
- g = ('0' + (Math.round(g) || 0).toString(16)).slice(-2);
- b = ('0' + (Math.round(b) || 0).toString(16)).slice(-2);
- return '#' + r + g + b;
- }
- `)+"("+he+", "+ce+", "+D+")",z.FUNCTION_CALL]},E=function(D,Z){const he=Z.valueToCode(D,"COLOUR1",z.NONE)||"'#000000'",ce=Z.valueToCode(D,"COLOUR2",z.NONE)||"'#000000'";return D=Z.valueToCode(D,"RATIO",z.NONE)||.5,[Z.provideFunction_("colourBlend",`
- function ${Z.FUNCTION_NAME_PLACEHOLDER_}(c1, c2, ratio) {
- ratio = Math.max(Math.min(Number(ratio), 1), 0);
- var r1 = parseInt(c1.substring(1, 3), 16);
- var g1 = parseInt(c1.substring(3, 5), 16);
- var b1 = parseInt(c1.substring(5, 7), 16);
- var r2 = parseInt(c2.substring(1, 3), 16);
- var g2 = parseInt(c2.substring(3, 5), 16);
- var b2 = parseInt(c2.substring(5, 7), 16);
- var r = Math.round(r1 * (1 - ratio) + r2 * ratio);
- var g = Math.round(g1 * (1 - ratio) + g2 * ratio);
- var b = Math.round(b1 * (1 - ratio) + b2 * ratio);
- r = ('0' + (r || 0).toString(16)).slice(-2);
- g = ('0' + (g || 0).toString(16)).slice(-2);
- b = ('0' + (b || 0).toString(16)).slice(-2);
- return '#' + r + g + b;
- }
- `)+"("+he+", "+ce+", "+D+")",z.FUNCTION_CALL]},u=function(D,Z){return["[]",z.ATOMIC]},d=function(D,Z){const he=Array(D.itemCount_);for(let ce=0;ce<D.itemCount_;ce++)he[ce]=Z.valueToCode(D,"ADD"+ce,z.NONE)||"null";return["["+he.join(", ")+"]",z.ATOMIC]},O=function(D,Z){const he=Z.provideFunction_("listsRepeat",`
- function ${Z.FUNCTION_NAME_PLACEHOLDER_}(value, n) {
- var array = [];
- for (var i = 0; i < n; i++) {
- array[i] = value;
- }
- return array;
- }
- `),ce=Z.valueToCode(D,"ITEM",z.NONE)||"null";return D=Z.valueToCode(D,"NUM",z.NONE)||"0",[he+"("+ce+", "+D+")",z.FUNCTION_CALL]},h=function(D,Z){return[(Z.valueToCode(D,"VALUE",z.MEMBER)||"[]")+".length",z.MEMBER]},I=function(D,Z){return["!"+(Z.valueToCode(D,"VALUE",z.MEMBER)||"[]")+".length",z.LOGICAL_NOT]},S=function(D,Z){const he=D.getFieldValue("END")==="FIRST"?"indexOf":"lastIndexOf",ce=Z.valueToCode(D,"FIND",z.NONE)||"''";return Z=(Z.valueToCode(D,"VALUE",z.MEMBER)||"[]")+"."+he+"("+ce+")",D.workspace.options.oneBasedIndex?[Z+" + 1",z.ADDITION]:[Z,z.FUNCTION_CALL]},L=function(D,Z){const he=D.getFieldValue("MODE")||"GET",ce=D.getFieldValue("WHERE")||"FROM_START";var Ge=Z.valueToCode(D,"VALUE",ce==="RANDOM"?z.NONE:z.MEMBER)||"[]";switch(ce){case"FIRST":if(he==="GET")return[Ge+"[0]",z.MEMBER];if(he==="GET_REMOVE")return[Ge+".shift()",z.MEMBER];if(he==="REMOVE")return Ge+`.shift();
- `;break;case"LAST":if(he==="GET")return[Ge+".slice(-1)[0]",z.MEMBER];if(he==="GET_REMOVE")return[Ge+".pop()",z.MEMBER];if(he==="REMOVE")return Ge+`.pop();
- `;break;case"FROM_START":if(D=Z.getAdjusted(D,"AT"),he==="GET")return[Ge+"["+D+"]",z.MEMBER];if(he==="GET_REMOVE")return[Ge+".splice("+D+", 1)[0]",z.FUNCTION_CALL];if(he==="REMOVE")return Ge+".splice("+D+`, 1);
- `;break;case"FROM_END":if(D=Z.getAdjusted(D,"AT",1,!0),he==="GET")return[Ge+".slice("+D+")[0]",z.FUNCTION_CALL];if(he==="GET_REMOVE")return[Ge+".splice("+D+", 1)[0]",z.FUNCTION_CALL];if(he==="REMOVE")return Ge+".splice("+D+", 1);";break;case"RANDOM":if(Ge=Z.provideFunction_("listsGetRandomItem",`
- function ${Z.FUNCTION_NAME_PLACEHOLDER_}(list, remove) {
- var x = Math.floor(Math.random() * list.length);
- if (remove) {
- return list.splice(x, 1)[0];
- } else {
- return list[x];
- }
- }
- `)+"("+Ge+", "+(he!=="GET")+")",he==="GET"||he==="GET_REMOVE")return[Ge,z.FUNCTION_CALL];if(he==="REMOVE")return Ge+`;
- `}throw Error("Unhandled combination (lists_getIndex).")},p=function(D,Z){function he(){if(ce.match(/^\w+$/))return"";const wo=Z.nameDB_.getDistinctName("tmpList",_.NameType$$module$build$src$core$names.VARIABLE),Wo="var "+wo+" = "+ce+`;
- `;return ce=wo,Wo}let ce=Z.valueToCode(D,"LIST",z.MEMBER)||"[]";const Ge=D.getFieldValue("MODE")||"GET";var It=D.getFieldValue("WHERE")||"FROM_START";const bt=Z.valueToCode(D,"TO",z.ASSIGNMENT)||"null";switch(It){case"FIRST":if(Ge==="SET")return ce+"[0] = "+bt+`;
- `;if(Ge==="INSERT")return ce+".unshift("+bt+`);
- `;break;case"LAST":if(Ge==="SET")return he()+(ce+"["+ce+".length - 1] = "+bt+`;
- `);if(Ge==="INSERT")return ce+".push("+bt+`);
- `;break;case"FROM_START":if(D=Z.getAdjusted(D,"AT"),Ge==="SET")return ce+"["+D+"] = "+bt+`;
- `;if(Ge==="INSERT")return ce+".splice("+D+", 0, "+bt+`);
- `;break;case"FROM_END":if(D=Z.getAdjusted(D,"AT",1,!1,z.SUBTRACTION),It=he(),Ge==="SET")return It+(ce+"["+ce+".length - "+D+"] = "+bt+`;
- `);if(Ge==="INSERT")return It+(ce+".splice("+ce+".length - "+D+", 0, "+bt+`);
- `);break;case"RANDOM":if(D=he(),It=Z.nameDB_.getDistinctName("tmpX",_.NameType$$module$build$src$core$names.VARIABLE),D+="var "+It+" = Math.floor(Math.random() * "+ce+`.length);
- `,Ge==="SET")return D+(ce+"["+It+"] = "+bt+`;
- `);if(Ge==="INSERT")return D+(ce+".splice("+It+", 0, "+bt+`);
- `)}throw Error("Unhandled combination (lists_setIndex).")},C=function(D,Z){var he={FIRST:"First",LAST:"Last",FROM_START:"FromStart",FROM_END:"FromEnd"},ce=Z.valueToCode(D,"LIST",z.MEMBER)||"[]";const Ge=D.getFieldValue("WHERE1"),It=D.getFieldValue("WHERE2");if(Ge==="FIRST"&&It==="LAST")ce+=".slice(0)";else if(ce.match(/^\w+$/)||Ge!=="FROM_END"&&It==="FROM_START"){switch(Ge){case"FROM_START":he=Z.getAdjusted(D,"AT1");break;case"FROM_END":he=Z.getAdjusted(D,"AT1",1,!1,z.SUBTRACTION),he=ce+".length - "+he;break;case"FIRST":he="0";break;default:throw Error("Unhandled option (lists_getSublist).")}switch(It){case"FROM_START":Z=Z.getAdjusted(D,"AT2",1);break;case"FROM_END":Z=Z.getAdjusted(D,"AT2",0,!1,z.SUBTRACTION),Z=ce+".length - "+Z;break;case"LAST":Z=ce+".length";break;default:throw Error("Unhandled option (lists_getSublist).")}ce=ce+".slice("+he+", "+Z+")"}else{const bt=Z.getAdjusted(D,"AT1");D=Z.getAdjusted(D,"AT2"),ce=Z.provideFunction_("subsequence"+he[Ge]+he[It],`
- function ${Z.FUNCTION_NAME_PLACEHOLDER_}(sequence${Ge==="FROM_END"||Ge==="FROM_START"?", at1":""}${It==="FROM_END"||It==="FROM_START"?", at2":""}) {
- var start = ${oe("sequence",Ge,"at1")};
- var end = ${oe("sequence",It,"at2")} + 1;
- return sequence.slice(start, end);
- }
- `)+"("+ce+(Ge==="FROM_END"||Ge==="FROM_START"?", "+bt:"")+(It==="FROM_END"||It==="FROM_START"?", "+D:"")+")"}return[ce,z.FUNCTION_CALL]},m=function(D,Z){const he=Z.valueToCode(D,"LIST",z.FUNCTION_CALL)||"[]",ce=D.getFieldValue("DIRECTION")==="1"?1:-1;return D=D.getFieldValue("TYPE"),Z=Z.provideFunction_("listsGetSortCompare",`
- function ${Z.FUNCTION_NAME_PLACEHOLDER_}(type, direction) {
- var compareFuncs = {
- 'NUMERIC': function(a, b) {
- return Number(a) - Number(b); },
- 'TEXT': function(a, b) {
- return String(a) > String(b) ? 1 : -1; },
- 'IGNORE_CASE': function(a, b) {
- return String(a).toLowerCase() > String(b).toLowerCase() ? 1 : -1; },
- };
- var compare = compareFuncs[type];
- return function(a, b) { return compare(a, b) * direction; };
- }
- `),[he+".slice().sort("+Z+'("'+D+'", '+ce+"))",z.FUNCTION_CALL]},A=function(D,Z){let he=Z.valueToCode(D,"INPUT",z.MEMBER);if(Z=Z.valueToCode(D,"DELIM",z.NONE)||"''",D=D.getFieldValue("MODE"),D==="SPLIT")he||(he="''"),D="split";else if(D==="JOIN")he||(he="[]"),D="join";else throw Error("Unknown mode: "+D);return[he+"."+D+"("+Z+")",z.FUNCTION_CALL]},b=function(D,Z){return[(Z.valueToCode(D,"LIST",z.FUNCTION_CALL)||"[]")+".slice().reverse()",z.FUNCTION_CALL]},N=function(D,Z){var he=0;let ce="";Z.STATEMENT_PREFIX&&(ce+=Z.injectId(Z.STATEMENT_PREFIX,D));do{const Ge=Z.valueToCode(D,"IF"+he,z.NONE)||"false";let It=Z.statementToCode(D,"DO"+he);Z.STATEMENT_SUFFIX&&(It=Z.prefixLines(Z.injectId(Z.STATEMENT_SUFFIX,D),Z.INDENT)+It),ce+=(0<he?" else ":"")+"if ("+Ge+`) {
- `+It+"}",he++}while(D.getInput("IF"+he));return(D.getInput("ELSE")||Z.STATEMENT_SUFFIX)&&(he=Z.statementToCode(D,"ELSE"),Z.STATEMENT_SUFFIX&&(he=Z.prefixLines(Z.injectId(Z.STATEMENT_SUFFIX,D),Z.INDENT)+he),ce+=` else {
- `+he+"}"),ce+`
- `},U=function(D,Z){const he={EQ:"==",NEQ:"!=",LT:"<",LTE:"<=",GT:">",GTE:">="}[D.getFieldValue("OP")],ce=he==="=="||he==="!="?z.EQUALITY:z.RELATIONAL,Ge=Z.valueToCode(D,"A",ce)||"0";return D=Z.valueToCode(D,"B",ce)||"0",[Ge+" "+he+" "+D,ce]},P=function(D,Z){const he=D.getFieldValue("OP")==="AND"?"&&":"||",ce=he==="&&"?z.LOGICAL_AND:z.LOGICAL_OR;let Ge=Z.valueToCode(D,"A",ce);return D=Z.valueToCode(D,"B",ce),Ge||D?(Z=he==="&&"?"true":"false",Ge||(Ge=Z),D||(D=Z)):D=Ge="false",[Ge+" "+he+" "+D,ce]},G=function(D,Z){const he=z.LOGICAL_NOT;return["!"+(Z.valueToCode(D,"BOOL",he)||"true"),he]},w=function(D,Z){return[D.getFieldValue("BOOL")==="TRUE"?"true":"false",z.ATOMIC]},F=function(D,Z){return["null",z.ATOMIC]},V=function(D,Z){const he=Z.valueToCode(D,"IF",z.CONDITIONAL)||"false",ce=Z.valueToCode(D,"THEN",z.CONDITIONAL)||"null";return D=Z.valueToCode(D,"ELSE",z.CONDITIONAL)||"null",[he+" ? "+ce+" : "+D,z.CONDITIONAL]},W=function(D,Z){let he;he=D.getField("TIMES")?String(Number(D.getFieldValue("TIMES"))):Z.valueToCode(D,"TIMES",z.ASSIGNMENT)||"0";let ce=Z.statementToCode(D,"DO");ce=Z.addLoopTrap(ce,D),D="";const Ge=Z.nameDB_.getDistinctName("count",_.NameType$$module$build$src$core$names.VARIABLE);let It=he;return he.match(/^\w+$/)||_.isNumber$$module$build$src$core$utils$string(he)||(It=Z.nameDB_.getDistinctName("repeat_end",_.NameType$$module$build$src$core$names.VARIABLE),D+="var "+It+" = "+he+`;
- `),D+("for (var "+Ge+" = 0; "+Ge+" < "+It+"; "+Ge+`++) {
- `+ce+`}
- `)},K=function(D,Z){const he=D.getFieldValue("MODE")==="UNTIL";let ce=Z.valueToCode(D,"BOOL",he?z.LOGICAL_NOT:z.NONE)||"false",Ge=Z.statementToCode(D,"DO");return Ge=Z.addLoopTrap(Ge,D),he&&(ce="!"+ce),"while ("+ce+`) {
- `+Ge+`}
- `},ee=function(D,Z){var he=Z.getVariableName(D.getFieldValue("VAR")),ce=Z.valueToCode(D,"FROM",z.ASSIGNMENT)||"0",Ge=Z.valueToCode(D,"TO",z.ASSIGNMENT)||"0";const It=Z.valueToCode(D,"BY",z.ASSIGNMENT)||"1";let bt=Z.statementToCode(D,"DO");if(bt=Z.addLoopTrap(bt,D),_.isNumber$$module$build$src$core$utils$string(ce)&&_.isNumber$$module$build$src$core$utils$string(Ge)&&_.isNumber$$module$build$src$core$utils$string(It))Z=Number(ce)<=Number(Ge),D="for ("+he+" = "+ce+"; "+he+(Z?" <= ":" >= ")+Ge+"; "+he,he=Math.abs(Number(It)),D=he===1?D+(Z?"++":"--"):D+((Z?" += ":" -= ")+he),D+=`) {
- `+bt+`}
- `;else{D="";let wo=ce;ce.match(/^\w+$/)||_.isNumber$$module$build$src$core$utils$string(ce)||(wo=Z.nameDB_.getDistinctName(he+"_start",_.NameType$$module$build$src$core$names.VARIABLE),D+="var "+wo+" = "+ce+`;
- `),ce=Ge,Ge.match(/^\w+$/)||_.isNumber$$module$build$src$core$utils$string(Ge)||(ce=Z.nameDB_.getDistinctName(he+"_end",_.NameType$$module$build$src$core$names.VARIABLE),D+="var "+ce+" = "+Ge+`;
- `),Ge=Z.nameDB_.getDistinctName(he+"_inc",_.NameType$$module$build$src$core$names.VARIABLE),D+="var "+Ge+" = ",D=_.isNumber$$module$build$src$core$utils$string(It)?D+(Math.abs(Number(It))+`;
- `):D+("Math.abs("+It+`);
- `),D+="if ("+wo+" > "+ce+`) {
- `,D+=Z.INDENT+Ge+" = -"+Ge+`;
- `,D=D+`}
- for (`+(he+" = "+wo+"; "+Ge+" >= 0 ? "+he+" <= "+ce+" : "+he+" >= "+ce+"; "+he+" += "+Ge+`) {
- `+bt+`}
- `)}return D},j=function(D,Z){const he=Z.getVariableName(D.getFieldValue("VAR"));var ce=Z.valueToCode(D,"LIST",z.ASSIGNMENT)||"[]";let Ge=Z.statementToCode(D,"DO");Ge=Z.addLoopTrap(Ge,D),D="";let It=ce;return ce.match(/^\w+$/)||(It=Z.nameDB_.getDistinctName(he+"_list",_.NameType$$module$build$src$core$names.VARIABLE),D+="var "+It+" = "+ce+`;
- `),ce=Z.nameDB_.getDistinctName(he+"_index",_.NameType$$module$build$src$core$names.VARIABLE),Ge=Z.INDENT+he+" = "+It+"["+ce+`];
- `+Ge,D+("for (var "+ce+" in "+It+`) {
- `+Ge+`}
- `)},J=function(D,Z){let he="";if(Z.STATEMENT_PREFIX&&(he+=Z.injectId(Z.STATEMENT_PREFIX,D)),Z.STATEMENT_SUFFIX&&(he+=Z.injectId(Z.STATEMENT_SUFFIX,D)),Z.STATEMENT_PREFIX){const ce=D.getSurroundLoop();ce&&!ce.suppressPrefixSuffix&&(he+=Z.injectId(Z.STATEMENT_PREFIX,ce))}switch(D.getFieldValue("FLOW")){case"BREAK":return he+`break;
- `;case"CONTINUE":return he+`continue;
- `}throw Error("Unknown flow statement.")},ie=function(D,Z){return D=Number(D.getFieldValue("NUM")),[String(D),0<=D?z.ATOMIC:z.UNARY_NEGATION]},Y=function(D,Z){var he={ADD:[" + ",z.ADDITION],MINUS:[" - ",z.SUBTRACTION],MULTIPLY:[" * ",z.MULTIPLICATION],DIVIDE:[" / ",z.DIVISION],POWER:[null,z.NONE]}[D.getFieldValue("OP")];const ce=he[0];he=he[1];const Ge=Z.valueToCode(D,"A",he)||"0";return D=Z.valueToCode(D,"B",he)||"0",ce?[Ge+ce+D,he]:["Math.pow("+Ge+", "+D+")",z.FUNCTION_CALL]},re=function(D,Z){const he=D.getFieldValue("OP");let ce;if(he==="NEG")return D=Z.valueToCode(D,"NUM",z.UNARY_NEGATION)||"0",D[0]==="-"&&(D=" "+D),["-"+D,z.UNARY_NEGATION];switch(D=he==="SIN"||he==="COS"||he==="TAN"?Z.valueToCode(D,"NUM",z.DIVISION)||"0":Z.valueToCode(D,"NUM",z.NONE)||"0",he){case"ABS":ce="Math.abs("+D+")";break;case"ROOT":ce="Math.sqrt("+D+")";break;case"LN":ce="Math.log("+D+")";break;case"EXP":ce="Math.exp("+D+")";break;case"POW10":ce="Math.pow(10,"+D+")";break;case"ROUND":ce="Math.round("+D+")";break;case"ROUNDUP":ce="Math.ceil("+D+")";break;case"ROUNDDOWN":ce="Math.floor("+D+")";break;case"SIN":ce="Math.sin("+D+" / 180 * Math.PI)";break;case"COS":ce="Math.cos("+D+" / 180 * Math.PI)";break;case"TAN":ce="Math.tan("+D+" / 180 * Math.PI)"}if(ce)return[ce,z.FUNCTION_CALL];switch(he){case"LOG10":ce="Math.log("+D+") / Math.log(10)";break;case"ASIN":ce="Math.asin("+D+") / Math.PI * 180";break;case"ACOS":ce="Math.acos("+D+") / Math.PI * 180";break;case"ATAN":ce="Math.atan("+D+") / Math.PI * 180";break;default:throw Error("Unknown math operator: "+he)}return[ce,z.DIVISION]},H=function(D,Z){return{PI:["Math.PI",z.MEMBER],E:["Math.E",z.MEMBER],GOLDEN_RATIO:["(1 + Math.sqrt(5)) / 2",z.DIVISION],SQRT2:["Math.SQRT2",z.MEMBER],SQRT1_2:["Math.SQRT1_2",z.MEMBER],INFINITY:["Infinity",z.ATOMIC]}[D.getFieldValue("CONSTANT")]},Q=function(D,Z){var he={EVEN:[" % 2 === 0",z.MODULUS,z.EQUALITY],ODD:[" % 2 === 1",z.MODULUS,z.EQUALITY],WHOLE:[" % 1 === 0",z.MODULUS,z.EQUALITY],POSITIVE:[" > 0",z.RELATIONAL,z.RELATIONAL],NEGATIVE:[" < 0",z.RELATIONAL,z.RELATIONAL],DIVISIBLE_BY:[null,z.MODULUS,z.EQUALITY],PRIME:[null,z.NONE,z.FUNCTION_CALL]};const ce=D.getFieldValue("PROPERTY"),[Ge,It,bt]=he[ce];return he=Z.valueToCode(D,"NUMBER_TO_CHECK",It)||"0",ce==="PRIME"?D=Z.provideFunction_("mathIsPrime",`
- function ${Z.FUNCTION_NAME_PLACEHOLDER_}(n) {
- // https://en.wikipedia.org/wiki/Primality_test#Naive_methods
- if (n == 2 || n == 3) {
- return true;
- }
- // False if n is NaN, negative, is 1, or not whole.
- // And false if n is divisible by 2 or 3.
- if (isNaN(n) || n <= 1 || n % 1 !== 0 || n % 2 === 0 || n % 3 === 0) {
- return false;
- }
- // Check all the numbers of form 6k +/- 1, up to sqrt(n).
- for (var x = 6; x <= Math.sqrt(n) + 1; x += 6) {
- if (n % (x - 1) === 0 || n % (x + 1) === 0) {
- return false;
- }
- }
- return true;
- }
- `)+"("+he+")":ce==="DIVISIBLE_BY"?(D=Z.valueToCode(D,"DIVISOR",z.MODULUS)||"0",D=he+" % "+D+" === 0"):D=he+Ge,[D,bt]},ae=function(D,Z){const he=Z.valueToCode(D,"DELTA",z.ADDITION)||"0";return D=Z.getVariableName(D.getFieldValue("VAR")),D+" = (typeof "+D+" === 'number' ? "+D+" : 0) + "+he+`;
- `},ge=function(D,Z){var he=D.getFieldValue("OP");switch(he){case"SUM":D=Z.valueToCode(D,"LIST",z.MEMBER)||"[]",D+=".reduce(function(x, y) {return x + y;}, 0)";break;case"MIN":D=Z.valueToCode(D,"LIST",z.NONE)||"[]",D="Math.min.apply(null, "+D+")";break;case"MAX":D=Z.valueToCode(D,"LIST",z.NONE)||"[]",D="Math.max.apply(null, "+D+")";break;case"AVERAGE":he=Z.provideFunction_("mathMean",`
- function ${Z.FUNCTION_NAME_PLACEHOLDER_}(myList) {
- return myList.reduce(function(x, y) {return x + y;}, 0) / myList.length;
- }
- `),D=Z.valueToCode(D,"LIST",z.NONE)||"[]",D=he+"("+D+")";break;case"MEDIAN":he=Z.provideFunction_("mathMedian",`
- function ${Z.FUNCTION_NAME_PLACEHOLDER_}(myList) {
- var localList = myList.filter(function (x) {return typeof x === 'number';});
- if (!localList.length) return null;
- localList.sort(function(a, b) {return b - a;});
- if (localList.length % 2 === 0) {
- return (localList[localList.length / 2 - 1] + localList[localList.length / 2]) / 2;
- } else {
- return localList[(localList.length - 1) / 2];
- }
- }
- `),D=Z.valueToCode(D,"LIST",z.NONE)||"[]",D=he+"("+D+")";break;case"MODE":he=Z.provideFunction_("mathModes",`
- function ${Z.FUNCTION_NAME_PLACEHOLDER_}(values) {
- var modes = [];
- var counts = [];
- var maxCount = 0;
- for (var i = 0; i < values.length; i++) {
- var value = values[i];
- var found = false;
- var thisCount;
- for (var j = 0; j < counts.length; j++) {
- if (counts[j][0] === value) {
- thisCount = ++counts[j][1];
- found = true;
- break;
- }
- }
- if (!found) {
- counts.push([value, 1]);
- thisCount = 1;
- }
- maxCount = Math.max(thisCount, maxCount);
- }
- for (var j = 0; j < counts.length; j++) {
- if (counts[j][1] === maxCount) {
- modes.push(counts[j][0]);
- }
- }
- return modes;
- }
- `),D=Z.valueToCode(D,"LIST",z.NONE)||"[]",D=he+"("+D+")";break;case"STD_DEV":he=Z.provideFunction_("mathStandardDeviation",`
- function ${Z.FUNCTION_NAME_PLACEHOLDER_}(numbers) {
- var n = numbers.length;
- if (!n) return null;
- var mean = numbers.reduce(function(x, y) {return x + y;}) / n;
- var variance = 0;
- for (var j = 0; j < n; j++) {
- variance += Math.pow(numbers[j] - mean, 2);
- }
- variance = variance / n;
- return Math.sqrt(variance);
- }
- `),D=Z.valueToCode(D,"LIST",z.NONE)||"[]",D=he+"("+D+")";break;case"RANDOM":he=Z.provideFunction_("mathRandomList",`
- function ${Z.FUNCTION_NAME_PLACEHOLDER_}(list) {
- var x = Math.floor(Math.random() * list.length);
- return list[x];
- }
- `),D=Z.valueToCode(D,"LIST",z.NONE)||"[]",D=he+"("+D+")";break;default:throw Error("Unknown operator: "+he)}return[D,z.FUNCTION_CALL]},Se=function(D,Z){const he=Z.valueToCode(D,"DIVIDEND",z.MODULUS)||"0";return D=Z.valueToCode(D,"DIVISOR",z.MODULUS)||"0",[he+" % "+D,z.MODULUS]},pe=function(D,Z){const he=Z.valueToCode(D,"VALUE",z.NONE)||"0",ce=Z.valueToCode(D,"LOW",z.NONE)||"0";return D=Z.valueToCode(D,"HIGH",z.NONE)||"Infinity",["Math.min(Math.max("+he+", "+ce+"), "+D+")",z.FUNCTION_CALL]},We=function(D,Z){const he=Z.valueToCode(D,"FROM",z.NONE)||"0";return D=Z.valueToCode(D,"TO",z.NONE)||"0",[Z.provideFunction_("mathRandomInt",`
- function ${Z.FUNCTION_NAME_PLACEHOLDER_}(a, b) {
- if (a > b) {
- // Swap a and b to ensure a is smaller.
- var c = a;
- a = b;
- b = c;
- }
- return Math.floor(Math.random() * (b - a + 1) + a);
- }
- `)+"("+he+", "+D+")",z.FUNCTION_CALL]},be=function(D,Z){return["Math.random()",z.FUNCTION_CALL]},Me=function(D,Z){const he=Z.valueToCode(D,"X",z.NONE)||"0";return["Math.atan2("+(Z.valueToCode(D,"Y",z.NONE)||"0")+", "+he+") / Math.PI * 180",z.DIVISION]},Ie=function(D,Z){const he=Z.getProcedureName(D.getFieldValue("NAME"));var ce="";Z.STATEMENT_PREFIX&&(ce+=Z.injectId(Z.STATEMENT_PREFIX,D)),Z.STATEMENT_SUFFIX&&(ce+=Z.injectId(Z.STATEMENT_SUFFIX,D)),ce&&(ce=Z.prefixLines(ce,Z.INDENT));let Ge="";Z.INFINITE_LOOP_TRAP&&(Ge=Z.prefixLines(Z.injectId(Z.INFINITE_LOOP_TRAP,D),Z.INDENT));const It=Z.statementToCode(D,"STACK");let bt=Z.valueToCode(D,"RETURN",z.NONE)||"",wo="";It&&bt&&(wo=ce),bt&&(bt=Z.INDENT+"return "+bt+`;
- `);const Wo=[],ps=D.getVars();for(let Ls=0;Ls<ps.length;Ls++)Wo[Ls]=Z.getVariableName(ps[Ls]);return ce="function "+he+"("+Wo.join(", ")+`) {
- `+ce+Ge+It+wo+bt+"}",ce=Z.scrub_(D,ce),Z.definitions_["%"+he]=ce,null},Pe=function(D,Z){const he=Z.getProcedureName(D.getFieldValue("NAME")),ce=[],Ge=D.getVars();for(let It=0;It<Ge.length;It++)ce[It]=Z.valueToCode(D,"ARG"+It,z.NONE)||"null";return[he+"("+ce.join(", ")+")",z.FUNCTION_CALL]},Ae=function(D,Z){return Z.forBlock.procedures_callreturn(D,Z)[0]+`;
- `},ke=function(D,Z){let he="if ("+(Z.valueToCode(D,"CONDITION",z.NONE)||"false")+`) {
- `;return Z.STATEMENT_SUFFIX&&(he+=Z.prefixLines(Z.injectId(Z.STATEMENT_SUFFIX,D),Z.INDENT)),D.hasReturnValue_?(D=Z.valueToCode(D,"VALUE",z.NONE)||"null",he+=Z.INDENT+"return "+D+`;
- `):he+=Z.INDENT+`return;
- `,he+`}
- `},ve=function(D,Z){return[Z.quote_(D.getFieldValue("TEXT")),z.ATOMIC]},Te=function(D,Z){return D=Z.multiline_quote_(D.getFieldValue("TEXT")),Z=D.indexOf("+")!==-1?z.ADDITION:z.ATOMIC,[D,Z]},Re=function(D,Z){switch(D.itemCount_){case 0:return["''",z.ATOMIC];case 1:return D=Z.valueToCode(D,"ADD0",z.NONE)||"''",_o(D);case 2:var he=Z.valueToCode(D,"ADD0",z.NONE)||"''";return D=Z.valueToCode(D,"ADD1",z.NONE)||"''",[_o(he)[0]+" + "+_o(D)[0],z.ADDITION];default:he=Array(D.itemCount_);for(let ce=0;ce<D.itemCount_;ce++)he[ce]=Z.valueToCode(D,"ADD"+ce,z.NONE)||"''";return["["+he.join(",")+"].join('')",z.FUNCTION_CALL]}},Ue=function(D,Z){const he=Z.getVariableName(D.getFieldValue("VAR"));return D=Z.valueToCode(D,"TEXT",z.NONE)||"''",he+" += "+_o(D)[0]+`;
- `},Ye=function(D,Z){return[(Z.valueToCode(D,"VALUE",z.MEMBER)||"''")+".length",z.MEMBER]},De=function(D,Z){return["!"+(Z.valueToCode(D,"VALUE",z.MEMBER)||"''")+".length",z.LOGICAL_NOT]},Xe=function(D,Z){const he=D.getFieldValue("END")==="FIRST"?"indexOf":"lastIndexOf",ce=Z.valueToCode(D,"FIND",z.NONE)||"''";return Z=(Z.valueToCode(D,"VALUE",z.MEMBER)||"''")+"."+he+"("+ce+")",D.workspace.options.oneBasedIndex?[Z+" + 1",z.ADDITION]:[Z,z.FUNCTION_CALL]},Ke=function(D,Z){const he=D.getFieldValue("WHERE")||"FROM_START",ce=Z.valueToCode(D,"VALUE",he==="RANDOM"?z.NONE:z.MEMBER)||"''";switch(he){case"FIRST":return[ce+".charAt(0)",z.FUNCTION_CALL];case"LAST":return[ce+".slice(-1)",z.FUNCTION_CALL];case"FROM_START":return D=Z.getAdjusted(D,"AT"),[ce+".charAt("+D+")",z.FUNCTION_CALL];case"FROM_END":return D=Z.getAdjusted(D,"AT",1,!0),[ce+".slice("+D+").charAt(0)",z.FUNCTION_CALL];case"RANDOM":return[Z.provideFunction_("textRandomLetter",`
- function ${Z.FUNCTION_NAME_PLACEHOLDER_}(text) {
- var x = Math.floor(Math.random() * text.length);
- return text[x];
- }
- `)+"("+ce+")",z.FUNCTION_CALL]}throw Error("Unhandled option (text_charAt).")},Be=function(D,Z){var he={FIRST:"First",LAST:"Last",FROM_START:"FromStart",FROM_END:"FromEnd"};const ce=D.getFieldValue("WHERE1"),Ge=D.getFieldValue("WHERE2");var It=ce!=="FROM_END"&&ce!=="LAST"&&Ge!=="FROM_END"&&Ge!=="LAST",bt=Z.valueToCode(D,"STRING",It?z.MEMBER:z.NONE)||"''";if(ce==="FIRST"&&Ge==="LAST")return[bt,z.NONE];if(bt.match(/^'?\w+'?$/)||It){switch(ce){case"FROM_START":he=Z.getAdjusted(D,"AT1");break;case"FROM_END":he=Z.getAdjusted(D,"AT1",1,!1,z.SUBTRACTION),he=bt+".length - "+he;break;case"FIRST":he="0";break;default:throw Error("Unhandled option (text_getSubstring).")}switch(Ge){case"FROM_START":Z=Z.getAdjusted(D,"AT2",1);break;case"FROM_END":Z=Z.getAdjusted(D,"AT2",0,!1,z.SUBTRACTION),Z=bt+".length - "+Z;break;case"LAST":Z=bt+".length";break;default:throw Error("Unhandled option (text_getSubstring).")}bt=bt+".slice("+he+", "+Z+")"}else It=Z.getAdjusted(D,"AT1"),D=Z.getAdjusted(D,"AT2"),bt=Z.provideFunction_("subsequence"+he[ce]+he[Ge],`
- function ${Z.FUNCTION_NAME_PLACEHOLDER_}(sequence${ce==="FROM_END"||ce==="FROM_START"?", at1":""}${Ge==="FROM_END"||Ge==="FROM_START"?", at2":""}) {
- var start = ${Ko("sequence",ce,"at1")};
- var end = ${Ko("sequence",Ge,"at2")} + 1;
- return sequence.slice(start, end);
- }
- `)+"("+bt+(ce==="FROM_END"||ce==="FROM_START"?", "+It:"")+(Ge==="FROM_END"||Ge==="FROM_START"?", "+D:"")+")";return[bt,z.FUNCTION_CALL]},qe=function(D,Z){const he={UPPERCASE:".toUpperCase()",LOWERCASE:".toLowerCase()",TITLECASE:null}[D.getFieldValue("CASE")];return D=Z.valueToCode(D,"TEXT",he?z.MEMBER:z.NONE)||"''",[he?D+he:Z.provideFunction_("textToTitleCase",`
- function ${Z.FUNCTION_NAME_PLACEHOLDER_}(str) {
- return str.replace(/\\S+/g,
- function(txt) {return txt[0].toUpperCase() + txt.substring(1).toLowerCase();});
- }
- `)+"("+D+")",z.FUNCTION_CALL]},xe=function(D,Z){const he={LEFT:".replace(/^[\\s\\xa0]+/, '')",RIGHT:".replace(/[\\s\\xa0]+$/, '')",BOTH:".trim()"}[D.getFieldValue("MODE")];return[(Z.valueToCode(D,"TEXT",z.MEMBER)||"''")+he,z.FUNCTION_CALL]},Le=function(D,Z){return"window.alert("+(Z.valueToCode(D,"TEXT",z.NONE)||"''")+`);
- `},je=function(D,Z){return Z="window.prompt("+(D.getField("TEXT")?Z.quote_(D.getFieldValue("TEXT")):Z.valueToCode(D,"TEXT",z.NONE)||"''")+")",D.getFieldValue("TYPE")==="NUMBER"&&(Z="Number("+Z+")"),[Z,z.FUNCTION_CALL]},He=function(D,Z){const he=Z.valueToCode(D,"TEXT",z.NONE)||"''";return D=Z.valueToCode(D,"SUB",z.NONE)||"''",[Z.provideFunction_("textCount",`
- function ${Z.FUNCTION_NAME_PLACEHOLDER_}(haystack, needle) {
- if (needle.length === 0) {
- return haystack.length + 1;
- } else {
- return haystack.split(needle).length - 1;
- }
- }
- `)+"("+he+", "+D+")",z.FUNCTION_CALL]},Je=function(D,Z){const he=Z.valueToCode(D,"TEXT",z.NONE)||"''",ce=Z.valueToCode(D,"FROM",z.NONE)||"''";return D=Z.valueToCode(D,"TO",z.NONE)||"''",[Z.provideFunction_("textReplace",`
- function ${Z.FUNCTION_NAME_PLACEHOLDER_}(haystack, needle, replacement) {
- needle = needle.replace(/([-()\\[\\]{}+?*.$\\^|,:#<!\\\\])/g, '\\\\$1')
- .replace(/\\x08/g, '\\\\x08');
- return haystack.replace(new RegExp(needle, 'g'), replacement);
- }
- `)+"("+he+", "+ce+", "+D+")",z.FUNCTION_CALL]},St=function(D,Z){return[(Z.valueToCode(D,"TEXT",z.MEMBER)||"''")+".split('').reverse().join('')",z.FUNCTION_CALL]},Ot=function(D,Z){return[Z.getVariableName(D.getFieldValue("VAR")),z.ATOMIC]},Nt=function(D,Z){const he=Z.valueToCode(D,"VALUE",z.ASSIGNMENT)||"0";return Z.getVariableName(D.getFieldValue("VAR"))+" = "+he+`;
- `},z;(function(D){D[D.ATOMIC=0]="ATOMIC",D[D.NEW=1.1]="NEW",D[D.MEMBER=1.2]="MEMBER",D[D.FUNCTION_CALL=2]="FUNCTION_CALL",D[D.INCREMENT=3]="INCREMENT",D[D.DECREMENT=3]="DECREMENT",D[D.BITWISE_NOT=4.1]="BITWISE_NOT",D[D.UNARY_PLUS=4.2]="UNARY_PLUS",D[D.UNARY_NEGATION=4.3]="UNARY_NEGATION",D[D.LOGICAL_NOT=4.4]="LOGICAL_NOT",D[D.TYPEOF=4.5]="TYPEOF",D[D.VOID=4.6]="VOID",D[D.DELETE=4.7]="DELETE",D[D.AWAIT=4.8]="AWAIT",D[D.EXPONENTIATION=5]="EXPONENTIATION",D[D.MULTIPLICATION=5.1]="MULTIPLICATION",D[D.DIVISION=5.2]="DIVISION",D[D.MODULUS=5.3]="MODULUS",D[D.SUBTRACTION=6.1]="SUBTRACTION",D[D.ADDITION=6.2]="ADDITION",D[D.BITWISE_SHIFT=7]="BITWISE_SHIFT",D[D.RELATIONAL=8]="RELATIONAL",D[D.IN=8]="IN",D[D.INSTANCEOF=8]="INSTANCEOF",D[D.EQUALITY=9]="EQUALITY",D[D.BITWISE_AND=10]="BITWISE_AND",D[D.BITWISE_XOR=11]="BITWISE_XOR",D[D.BITWISE_OR=12]="BITWISE_OR",D[D.LOGICAL_AND=13]="LOGICAL_AND",D[D.LOGICAL_OR=14]="LOGICAL_OR",D[D.CONDITIONAL=15]="CONDITIONAL",D[D.ASSIGNMENT=16]="ASSIGNMENT",D[D.YIELD=17]="YIELD",D[D.COMMA=18]="COMMA",D[D.NONE=99]="NONE"})(z||(z={}));var y=class extends _.CodeGenerator$$module$build$src$core$generator{constructor(D="JavaScript"){super(D),this.ORDER_OVERRIDES=[[z.FUNCTION_CALL,z.MEMBER],[z.FUNCTION_CALL,z.FUNCTION_CALL],[z.MEMBER,z.MEMBER],[z.MEMBER,z.FUNCTION_CALL],[z.LOGICAL_NOT,z.LOGICAL_NOT],[z.MULTIPLICATION,z.MULTIPLICATION],[z.ADDITION,z.ADDITION],[z.LOGICAL_AND,z.LOGICAL_AND],[z.LOGICAL_OR,z.LOGICAL_OR]],this.isInitialized=!1;for(const Z in z)D=z[Z],typeof D!="string"&&(this["ORDER_"+Z]=D);this.addReservedWords("break,case,catch,class,const,continue,debugger,default,delete,do,else,export,extends,finally,for,function,if,import,in,instanceof,new,return,super,switch,this,throw,try,typeof,var,void,while,with,yield,enum,implements,interface,let,package,private,protected,public,static,await,null,true,false,arguments,"+Object.getOwnPropertyNames(globalThis).join(","))}init(D){super.init(D),this.nameDB_?this.nameDB_.reset():this.nameDB_=new _.Names$$module$build$src$core$names(this.RESERVED_WORDS_),this.nameDB_.setVariableMap(D.getVariableMap()),this.nameDB_.populateVariables(D),this.nameDB_.populateProcedures(D);const Z=[];var he=_.allDeveloperVariables$$module$build$src$core$variables(D);for(let ce=0;ce<he.length;ce++)Z.push(this.nameDB_.getName(he[ce],_.NameType$$module$build$src$core$names.DEVELOPER_VARIABLE));for(D=_.allUsedVarModels$$module$build$src$core$variables(D),he=0;he<D.length;he++)Z.push(this.nameDB_.getName(D[he].getId(),_.NameType$$module$build$src$core$names.VARIABLE));Z.length&&(this.definitions_.variables="var "+Z.join(", ")+";"),this.isInitialized=!0}finish(D){const Z=Object.values(this.definitions_);return super.finish(D),this.isInitialized=!1,this.nameDB_.reset(),Z.join(`
- `)+`
- `+D}scrubNakedValue(D){return D+`;
- `}quote_(D){return D=D.replace(/\\/g,"\\\\").replace(/\n/g,`\\
- `).replace(/'/g,"\\'"),"'"+D+"'"}multiline_quote_(D){return D.split(/\n/g).map(this.quote_).join(` + '\\n' +
- `)}scrub_(D,Z,he=!1){let ce="";if(!D.outputConnection||!D.outputConnection.targetConnection){var Ge=D.getCommentText();Ge&&(Ge=_.wrap$$module$build$src$core$utils$string(Ge,this.COMMENT_WRAP-3),ce+=this.prefixLines(Ge+`
- `,"// "));for(let It=0;It<D.inputList.length;It++)D.inputList[It].type===_.inputTypes$$module$build$src$core$inputs$input_types.VALUE&&(Ge=D.inputList[It].connection.targetBlock())&&(Ge=this.allNestedComments(Ge))&&(ce+=this.prefixLines(Ge,"// "))}return D=D.nextConnection&&D.nextConnection.targetBlock(),he=he?"":this.blockToCode(D),ce+Z+he}getAdjusted(D,Z,he=0,ce=!1,Ge=z.NONE){D.workspace.options.oneBasedIndex&&he--;const It=D.workspace.options.oneBasedIndex?"1":"0";let bt=Ge;return 0<he?bt=z.ADDITION:0>he?bt=z.SUBTRACTION:ce&&(bt=z.UNARY_NEGATION),D=this.valueToCode(D,Z,bt)||It,he===0&&!ce?D:_.isNumber$$module$build$src$core$utils$string(D)?(D=String(Number(D)+he),ce&&(D=String(-Number(D))),D):(0<he?D=`${D} + ${he}`:0>he&&(D=`${D} - ${-he}`),ce&&(D=he?`-(${D})`:`-${D}`),Math.floor(Ge)>=Math.floor(bt)&&(D=`(${D})`),D)}},x={};x.colour_blend=E,x.colour_picker=l,x.colour_random=c,x.colour_rgb=T;var oe=function(D,Z,he){return Z==="FIRST"?"0":Z==="FROM_END"?D+".length - 1 - "+he:Z==="LAST"?D+".length - 1":he},Ee={};Ee.lists_create_empty=u,Ee.lists_create_with=d,Ee.lists_getIndex=L,Ee.lists_getSublist=C,Ee.lists_indexOf=S,Ee.lists_isEmpty=I,Ee.lists_length=h,Ee.lists_repeat=O,Ee.lists_reverse=b,Ee.lists_setIndex=p,Ee.lists_sort=m,Ee.lists_split=A;var _e={};_e.controls_if=N,_e.controls_ifelse=N,_e.logic_boolean=w,_e.logic_compare=U,_e.logic_negate=G,_e.logic_null=F,_e.logic_operation=P,_e.logic_ternary=V;var ze={};ze.controls_flow_statements=J,ze.controls_for=ee,ze.controls_forEach=j,ze.controls_repeat=W,ze.controls_repeat_ext=W,ze.controls_whileUntil=K;var _t={};_t.math_arithmetic=Y,_t.math_atan2=Me,_t.math_change=ae,_t.math_constant=H,_t.math_constrain=pe,_t.math_modulo=Se,_t.math_number=ie,_t.math_number_property=Q,_t.math_on_list=ge,_t.math_random_float=be,_t.math_random_int=We,_t.math_round=re,_t.math_single=re,_t.math_trig=re;var wt={};wt.procedures_callnoreturn=Ae,wt.procedures_callreturn=Pe,wt.procedures_defnoreturn=Ie,wt.procedures_defreturn=Ie,wt.procedures_ifreturn=ke;var Ho=/^\s*'([^']|\\')*'\s*$/,_o=function(D){return Ho.test(D)?[D,z.ATOMIC]:["String("+D+")",z.FUNCTION_CALL]},Ko=function(D,Z,he){return Z==="FIRST"?"0":Z==="FROM_END"?D+".length - 1 - "+he:Z==="LAST"?D+".length - 1":he},no={};no.text=ve,no.text_append=Ue,no.text_changeCase=qe,no.text_charAt=Ke,no.text_count=He,no.text_getSubstring=Be,no.text_indexOf=Xe,no.text_isEmpty=De,no.text_join=Re,no.text_length=Ye,no.text_multiline=Te,no.text_print=Le,no.text_prompt=je,no.text_prompt_ext=je,no.text_replace=Je,no.text_reverse=St,no.text_trim=xe;var io={};io.variables_get=Ot,io.variables_set=Nt;var go={};go.variables_get_dynamic=Ot,go.variables_set_dynamic=Nt;var zo=new y,q=Object.assign({},x,Ee,_e,ze,_t,wt,no,io,go);for(const D in q)zo.forBlock[D]=q[D];var ue={};return ue.JavascriptGenerator=y,ue.Order=z,ue.javascriptGenerator=zo,ue.__namespace__=_,ue})}(nC)),nC.exports}var Q1;function z6(){return Q1||(Q1=1,function(t,e){(function(o,_){t.exports=_(RP(),K6())})(Is,function(o,_){/**
- * @license
- * Copyright 2020 Google LLC
- * SPDX-License-Identifier: Apache-2.0
- */return _})}(iC)),iC.exports}var J1;function Z6(){return J1||(J1=1,function(t,e){(function(o,_){t.exports=_(RP(),W6(),Y6(),z6())})(Is,function(o,_,l,c){return o.setLocale(_),o})}(qm)),qm.exports}(function(t,e){(function(o,_){t.exports=_(Z6())})(Is,function(o){/**
- * @license
- * Copyright 2019 Google LLC
- * SPDX-License-Identifier: Apache-2.0
- */return o})})(L2);var j6=L2.exports;const $e=Sr(j6);var i=i||{Msg:Object.create(null)};i.Msg.ADD_COMMENT="添加注释";i.Msg.CANNOT_DELETE_VARIABLE_PROCEDURE="不能删除变量“%1”,因为它是函数“%2”定义的一部分";i.Msg.CHANGE_VALUE_TITLE="更改值:";i.Msg.CLEAN_UP="整理块";i.Msg.COLLAPSED_WARNINGS_WARNING="已收起的信息块内包含警告。";i.Msg.COLLAPSE_ALL="折叠块";i.Msg.COLLAPSE_BLOCK="折叠块";i.Msg.COLOUR_BLEND_COLOUR1="颜色1";i.Msg.COLOUR_BLEND_COLOUR2="颜色2";i.Msg.COLOUR_BLEND_HELPURL="https://meyerweb.com/eric/tools/color-blend/#:::rgbp";i.Msg.COLOUR_BLEND_RATIO="比例";i.Msg.COLOUR_BLEND_TITLE="混合";i.Msg.COLOUR_BLEND_TOOLTIP="把两种颜色以一个给定的比例(0.0-1.0)进行混合。";i.Msg.COLOUR_PICKER_HELPURL="https://zh.wikipedia.org/wiki/颜色";i.Msg.COLOUR_PICKER_TOOLTIP="从调色板中选择一种颜色。";i.Msg.COLOUR_RANDOM_HELPURL="http://randomcolour.com";i.Msg.COLOUR_RANDOM_TITLE="随机颜色";i.Msg.COLOUR_RANDOM_TOOLTIP="随机选择一种颜色。";i.Msg.COLOUR_RGB_BLUE="蓝色";i.Msg.COLOUR_RGB_GREEN="绿色";i.Msg.COLOUR_RGB_HELPURL="https://www.december.com/html/spec/colorpercompact.html";i.Msg.COLOUR_RGB_RED="红色";i.Msg.COLOUR_RGB_TITLE="颜色";i.Msg.COLOUR_RGB_TOOLTIP="通过指定红色、绿色和蓝色的量创建一种颜色。所有的值必须在0和100之间。";i.Msg.CONTROLS_FLOW_STATEMENTS_HELPURL="https://github.com/google/blockly/wiki/Loops#loop-termination-blocks";i.Msg.CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK="跳出循环";i.Msg.CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE="继续下一轮循环";i.Msg.CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK="跳出包含它的循环。";i.Msg.CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE="跳过本轮循环的剩余部分,并继进行续下一轮循环。";i.Msg.CONTROLS_FLOW_STATEMENTS_WARNING="警告:这个块只能在循环内使用。";i.Msg.CONTROLS_FOREACH_HELPURL="https://github.com/google/blockly/wiki/Loops#for-each";i.Msg.CONTROLS_FOREACH_TITLE="遍历列表 %2 里的每一项 %1";i.Msg.CONTROLS_FOREACH_TOOLTIP="遍历列表中的每一项,将变量“%1”设为所选项,并执行一些语句。";i.Msg.CONTROLS_FOR_HELPURL="https://github.com/google/blockly/wiki/Loops#count-with";i.Msg.CONTROLS_FOR_TITLE="变量 %1 从 %2 数到 %3 每次增加 %4";i.Msg.CONTROLS_FOR_TOOLTIP="让变量“%1”记录开始数到结束数之间指定间隔的值,并执行指定的块。";i.Msg.CONTROLS_IF_ELSEIF_TOOLTIP="在这个if语句块中增加一个条件。";i.Msg.CONTROLS_IF_ELSE_TOOLTIP="在这个if语句块中添加一个最终的,包括所有其余情况的条件。";i.Msg.CONTROLS_IF_HELPURL="https://github.com/google/blockly/wiki/IfElse";i.Msg.CONTROLS_IF_IF_TOOLTIP="增加、删除或重新排列各节来重新配置这个if语句块。";i.Msg.CONTROLS_IF_MSG_ELSE="否则";i.Msg.CONTROLS_IF_MSG_ELSEIF="否则如果";i.Msg.CONTROLS_IF_MSG_IF="如果";i.Msg.CONTROLS_IF_TOOLTIP_1="如果值为真,执行一些语句。";i.Msg.CONTROLS_IF_TOOLTIP_2="如果值为真,则执行第一块语句。否则,则执行第二块语句。";i.Msg.CONTROLS_IF_TOOLTIP_3="如果第一个值为真,则执行第一块的语句。否则,如果第二个值为真,则执行第二块的语句。";i.Msg.CONTROLS_IF_TOOLTIP_4="如果第一个值为真,则执行第一块对语句。否则,如果第二个值为真,则执行语句的第二块。如果没有值为真,则执行最后一块的语句。";i.Msg.CONTROLS_REPEAT_HELPURL="https://zh.wikipedia.org/wiki/For循环";i.Msg.CONTROLS_REPEAT_INPUT_DO="执行";i.Msg.CONTROLS_REPEAT_TITLE="重复 %1 次";i.Msg.CONTROLS_REPEAT_TOOLTIP="多次执行一些语句。";i.Msg.CONTROLS_WHILEUNTIL_HELPURL="https://github.com/google/blockly/wiki/Loops#repeat";i.Msg.CONTROLS_WHILEUNTIL_OPERATOR_UNTIL="重复直到条件满足";i.Msg.CONTROLS_WHILEUNTIL_OPERATOR_WHILE="当条件满足时重复";i.Msg.CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL="只要值为假,就一直循环执行一些语句。";i.Msg.CONTROLS_WHILEUNTIL_TOOLTIP_WHILE="只要值为真,就一直循环执行一些语句。";i.Msg.DELETE_ALL_BLOCKS="删除所有 %1 个块吗?";i.Msg.DELETE_BLOCK="删除块";i.Msg.DELETE_VARIABLE="删除变量“%1”";i.Msg.DELETE_VARIABLE_CONFIRMATION="要删除对变量“%2”的%1个引用吗?";i.Msg.DELETE_X_BLOCKS="删除 %1 个块";i.Msg.DIALOG_CANCEL="取消";i.Msg.DIALOG_OK="确认";i.Msg.DISABLE_BLOCK="禁用块";i.Msg.DUPLICATE_BLOCK="复制";i.Msg.DUPLICATE_COMMENT="复制注释";i.Msg.ENABLE_BLOCK="启用块";i.Msg.EXPAND_ALL="展开块";i.Msg.EXPAND_BLOCK="展开块";i.Msg.EXTERNAL_INPUTS="外部输入";i.Msg.HELP="帮助";i.Msg.INLINE_INPUTS="单行输入";i.Msg.LISTS_CREATE_EMPTY_HELPURL="https://github.com/google/blockly/wiki/Lists#create-empty-list";i.Msg.LISTS_CREATE_EMPTY_TITLE="创建空列表";i.Msg.LISTS_CREATE_EMPTY_TOOLTIP="返回一个列表,长度为 0,不包含任何数据记录";i.Msg.LISTS_CREATE_WITH_CONTAINER_TITLE_ADD="列表";i.Msg.LISTS_CREATE_WITH_CONTAINER_TOOLTIP="增加、删除或重新排列各部分以此重新配置这个列表块。";i.Msg.LISTS_CREATE_WITH_HELPURL="https://github.com/google/blockly/wiki/Lists#create-list-with";i.Msg.LISTS_CREATE_WITH_INPUT_WITH="创建列表,内容:";i.Msg.LISTS_CREATE_WITH_ITEM_TOOLTIP="将一个项添加到列表中。";i.Msg.LISTS_CREATE_WITH_TOOLTIP="建立一个具有任意数量项目的列表。";i.Msg.LISTS_GET_INDEX_FIRST="第一项";i.Msg.LISTS_GET_INDEX_FROM_END="倒数第#项";i.Msg.LISTS_GET_INDEX_FROM_START="#";i.Msg.LISTS_GET_INDEX_GET="取得";i.Msg.LISTS_GET_INDEX_GET_REMOVE="取得并移除";i.Msg.LISTS_GET_INDEX_LAST="最后一项";i.Msg.LISTS_GET_INDEX_RANDOM="随机的一项";i.Msg.LISTS_GET_INDEX_REMOVE="移除";i.Msg.LISTS_GET_INDEX_TAIL="";i.Msg.LISTS_GET_INDEX_TOOLTIP_GET_FIRST="返回列表中的第一项。";i.Msg.LISTS_GET_INDEX_TOOLTIP_GET_FROM="返回在列表中的指定位置的项。";i.Msg.LISTS_GET_INDEX_TOOLTIP_GET_LAST="返回列表中的最后一项。";i.Msg.LISTS_GET_INDEX_TOOLTIP_GET_RANDOM="返回列表中的随机一项。";i.Msg.LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST="移除并返回列表中的第一项。";i.Msg.LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM="移除并返回列表中的指定位置的项。";i.Msg.LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST="移除并返回列表中的最后一项。";i.Msg.LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM="移除并返回列表中的随机一项。";i.Msg.LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST="移除列表中的第一项";i.Msg.LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM="移除在列表中的指定位置的项。";i.Msg.LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST="移除列表中的最后一项";i.Msg.LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM="删除列表中的随机一项。";i.Msg.LISTS_GET_SUBLIST_END_FROM_END="到倒数第#项";i.Msg.LISTS_GET_SUBLIST_END_FROM_START="到第#项";i.Msg.LISTS_GET_SUBLIST_END_LAST="到最后一项";i.Msg.LISTS_GET_SUBLIST_HELPURL="https://github.com/google/blockly/wiki/Lists#getting-a-sublist";i.Msg.LISTS_GET_SUBLIST_START_FIRST="获取子列表,从第一项";i.Msg.LISTS_GET_SUBLIST_START_FROM_END="获取子列表,从倒数第#项";i.Msg.LISTS_GET_SUBLIST_START_FROM_START="获取子列表,从第#项";i.Msg.LISTS_GET_SUBLIST_TAIL="";i.Msg.LISTS_GET_SUBLIST_TOOLTIP="复制列表中指定的部分。";i.Msg.LISTS_INDEX_FROM_END_TOOLTIP="%1是最后一项。";i.Msg.LISTS_INDEX_FROM_START_TOOLTIP="%1是第一项。";i.Msg.LISTS_INDEX_OF_FIRST="寻找第一次出现的项";i.Msg.LISTS_INDEX_OF_HELPURL="https://github.com/google/blockly/wiki/Lists#getting-items-from-a-list";i.Msg.LISTS_INDEX_OF_LAST="寻找最后一次出现的项";i.Msg.LISTS_INDEX_OF_TOOLTIP="返回在列表中的第一/最后一个匹配项的索引值。如果找不到项目则返回%1。";i.Msg.LISTS_INLIST="在列表中";i.Msg.LISTS_ISEMPTY_HELPURL="https://github.com/google/blockly/wiki/Lists#is-empty";i.Msg.LISTS_ISEMPTY_TITLE="%1是空的";i.Msg.LISTS_ISEMPTY_TOOLTIP="如果改列表为空,则返回真。";i.Msg.LISTS_LENGTH_HELPURL="https://github.com/google/blockly/wiki/Lists#length-of";i.Msg.LISTS_LENGTH_TITLE="%1的长度";i.Msg.LISTS_LENGTH_TOOLTIP="返回列表的长度。";i.Msg.LISTS_REPEAT_HELPURL="https://github.com/google/blockly/wiki/Lists#create-list-with";i.Msg.LISTS_REPEAT_TITLE="建立列表使用项 %1 重复 %2 次";i.Msg.LISTS_REPEAT_TOOLTIP="建立包含指定重复次数的值的列表。";i.Msg.LISTS_REVERSE_HELPURL="https://github.com/google/blockly/wiki/Lists#reversing-a-list";i.Msg.LISTS_REVERSE_MESSAGE0="倒转%1";i.Msg.LISTS_REVERSE_TOOLTIP="倒转一个列表,返回副本。";i.Msg.LISTS_SET_INDEX_HELPURL="https://github.com/google/blockly/wiki/Lists#in-list--set";i.Msg.LISTS_SET_INDEX_INPUT_TO="值为";i.Msg.LISTS_SET_INDEX_INSERT="插入在";i.Msg.LISTS_SET_INDEX_SET="设置";i.Msg.LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST="在列表的起始处添加该项。";i.Msg.LISTS_SET_INDEX_TOOLTIP_INSERT_FROM="在列表中指定位置插入项。";i.Msg.LISTS_SET_INDEX_TOOLTIP_INSERT_LAST="在列表的末尾处添加该项。";i.Msg.LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM="在列表的随机位置插入该项。";i.Msg.LISTS_SET_INDEX_TOOLTIP_SET_FIRST="设置列表中的第一项。";i.Msg.LISTS_SET_INDEX_TOOLTIP_SET_FROM="设置在列表中指定位置的项。";i.Msg.LISTS_SET_INDEX_TOOLTIP_SET_LAST="设置列表中的最后一项。";i.Msg.LISTS_SET_INDEX_TOOLTIP_SET_RANDOM="设置列表中的随机一项。";i.Msg.LISTS_SORT_HELPURL="https://github.com/google/blockly/wiki/Lists#sorting-a-list";i.Msg.LISTS_SORT_ORDER_ASCENDING="升序";i.Msg.LISTS_SORT_ORDER_DESCENDING="降序";i.Msg.LISTS_SORT_TITLE="排序%1 %2 %3";i.Msg.LISTS_SORT_TOOLTIP="排序一个列表,返回副本。";i.Msg.LISTS_SORT_TYPE_IGNORECASE="按字母(忽略大小写)";i.Msg.LISTS_SORT_TYPE_NUMERIC="按数字";i.Msg.LISTS_SORT_TYPE_TEXT="按字母";i.Msg.LISTS_SPLIT_HELPURL="https://github.com/google/blockly/wiki/Lists#splitting-strings-and-joining-lists";i.Msg.LISTS_SPLIT_LIST_FROM_TEXT="从文本制作列表";i.Msg.LISTS_SPLIT_TEXT_FROM_LIST="将列表合并为文本";i.Msg.LISTS_SPLIT_TOOLTIP_JOIN="加入文本列表至一个文本,由分隔符分隔。";i.Msg.LISTS_SPLIT_TOOLTIP_SPLIT="将文本按指定的分隔符拆分为文本组成的列表。";i.Msg.LISTS_SPLIT_WITH_DELIMITER="分隔符:";i.Msg.LOGIC_BOOLEAN_FALSE="false";i.Msg.LOGIC_BOOLEAN_HELPURL="https://github.com/google/blockly/wiki/Logic#values";i.Msg.LOGIC_BOOLEAN_TOOLTIP="返回 true 或 false。";i.Msg.LOGIC_BOOLEAN_TRUE="true";i.Msg.LOGIC_COMPARE_HELPURL="https://zh.wikipedia.org/wiki/不等";i.Msg.LOGIC_COMPARE_TOOLTIP_EQ="如果两个输入结果相等,则返回真。";i.Msg.LOGIC_COMPARE_TOOLTIP_GT="如果第一个输入结果比第二个大,则返回真。";i.Msg.LOGIC_COMPARE_TOOLTIP_GTE="如果第一个输入结果大于或等于第二个输入结果,则返回真。";i.Msg.LOGIC_COMPARE_TOOLTIP_LT="如果第一个输入结果比第二个小,则返回真。";i.Msg.LOGIC_COMPARE_TOOLTIP_LTE="如果第一个输入结果小于或等于第二个输入结果,则返回真。";i.Msg.LOGIC_COMPARE_TOOLTIP_NEQ="如果两个输入结果不相等,则返回真。";i.Msg.LOGIC_NEGATE_HELPURL="https://github.com/google/blockly/wiki/Logic#not";i.Msg.LOGIC_NEGATE_TITLE="非 %1";i.Msg.LOGIC_NEGATE_TOOLTIP="如果输入结果为false,则返回true;如果输入结果为true,则返回false。";i.Msg.LOGIC_NULL="空";i.Msg.LOGIC_NULL_HELPURL="https://en.wikipedia.org/wiki/Nullable_type";i.Msg.LOGIC_NULL_TOOLTIP="返回空值。";i.Msg.LOGIC_OPERATION_AND="并且";i.Msg.LOGIC_OPERATION_HELPURL="https://github.com/google/blockly/wiki/Logic#logical-operations";i.Msg.LOGIC_OPERATION_OR="或";i.Msg.LOGIC_OPERATION_TOOLTIP_AND="如果两个输入结果都为真,则返回真。";i.Msg.LOGIC_OPERATION_TOOLTIP_OR="如果至少有一个输入结果为真,则返回真。";i.Msg.LOGIC_TERNARY_CONDITION="断言";i.Msg.LOGIC_TERNARY_HELPURL="https://zh.wikipedia.org/wiki/条件运算符";i.Msg.LOGIC_TERNARY_IF_FALSE="如果为 false";i.Msg.LOGIC_TERNARY_IF_TRUE="如果为 true";i.Msg.LOGIC_TERNARY_TOOLTIP="检查“断言”里的条件语句。如果条件为真,则返回“如果为真”的值,否则,则返回“如果为假”的值。";i.Msg.MATH_ADDITION_SYMBOL="+";i.Msg.MATH_ARITHMETIC_HELPURL="https://zh.wikipedia.org/wiki/算术";i.Msg.MATH_ARITHMETIC_TOOLTIP_ADD="返回两个数的和。";i.Msg.MATH_ARITHMETIC_TOOLTIP_DIVIDE="返回两个数的商。";i.Msg.MATH_ARITHMETIC_TOOLTIP_MINUS="返回两个数的差。";i.Msg.MATH_ARITHMETIC_TOOLTIP_MULTIPLY="返回两个数的积。";i.Msg.MATH_ARITHMETIC_TOOLTIP_POWER="返回第一个数的第二个数次幂。";i.Msg.MATH_ATAN2_HELPURL="https://zh.wikipedia.org/wiki/反正切2";i.Msg.MATH_ATAN2_TITLE="点(x:%1,y:%2)的方位角";i.Msg.MATH_ATAN2_TOOLTIP="返回点(X,Y)的反正切值,范围为-180到180度。";i.Msg.MATH_CHANGE_HELPURL="https://zh.wikipedia.org/wiki/加法";i.Msg.MATH_CHANGE_TITLE="给 %1 加 %2";i.Msg.MATH_CHANGE_TOOLTIP="把数加到变量“%1”。";i.Msg.MATH_CONSTANT_HELPURL="https://zh.wikipedia.org/wiki/数学常数";i.Msg.MATH_CONSTANT_TOOLTIP="返回一个以下常见常数:π (3.141…)、e (2.718…)、φ (1.618…)、根号2 (1.414…)、根号½ (0.707…)或∞ (无穷)。";i.Msg.MATH_CONSTRAIN_HELPURL="https://en.wikipedia.org/wiki/Clamping_(graphics)";i.Msg.MATH_CONSTRAIN_TITLE="将 %1 限制在 最低 %2 到最高 %3 之间";i.Msg.MATH_CONSTRAIN_TOOLTIP="把一个数限制在指定的极限(含)之间。";i.Msg.MATH_DIVISION_SYMBOL="÷";i.Msg.MATH_IS_DIVISIBLE_BY="可整除被";i.Msg.MATH_IS_EVEN="是偶数";i.Msg.MATH_IS_NEGATIVE="是负数";i.Msg.MATH_IS_ODD="是奇数";i.Msg.MATH_IS_POSITIVE="是正数";i.Msg.MATH_IS_PRIME="是质数";i.Msg.MATH_IS_TOOLTIP="检查一个数是否是偶数、奇数、质数、整数、正数、负数,或者是否能被某数整除。返回真或假。";i.Msg.MATH_IS_WHOLE="是整数";i.Msg.MATH_MODULO_HELPURL="https://zh.wikipedia.org/wiki/模除";i.Msg.MATH_MODULO_TITLE="%1 ÷ %2 的余数";i.Msg.MATH_MODULO_TOOLTIP="返回两个数相除的余数。";i.Msg.MATH_MULTIPLICATION_SYMBOL="×";i.Msg.MATH_NUMBER_HELPURL="https://zh.wikipedia.org/wiki/数";i.Msg.MATH_NUMBER_TOOLTIP="一个数。";i.Msg.MATH_ONLIST_HELPURL="";i.Msg.MATH_ONLIST_OPERATOR_AVERAGE="列表的平均";i.Msg.MATH_ONLIST_OPERATOR_MAX="列表的最大数";i.Msg.MATH_ONLIST_OPERATOR_MEDIAN="列表的中位数";i.Msg.MATH_ONLIST_OPERATOR_MIN="列表的最小数";i.Msg.MATH_ONLIST_OPERATOR_MODE="列表的众数";i.Msg.MATH_ONLIST_OPERATOR_RANDOM="列表的随机项";i.Msg.MATH_ONLIST_OPERATOR_STD_DEV="列表的标准差";i.Msg.MATH_ONLIST_OPERATOR_SUM="列表的和";i.Msg.MATH_ONLIST_TOOLTIP_AVERAGE="返回列表内数值的平均(算术平均)。";i.Msg.MATH_ONLIST_TOOLTIP_MAX="返回列表内的最大数。";i.Msg.MATH_ONLIST_TOOLTIP_MEDIAN="返回列表内数的中位数。";i.Msg.MATH_ONLIST_TOOLTIP_MIN="返回列表内的最小数。";i.Msg.MATH_ONLIST_TOOLTIP_MODE="返回列表中的出现次数最多的项的列表。";i.Msg.MATH_ONLIST_TOOLTIP_RANDOM="返回列表内的一个随机元素。";i.Msg.MATH_ONLIST_TOOLTIP_STD_DEV="返回列表的标准差。";i.Msg.MATH_ONLIST_TOOLTIP_SUM="返回列表内的所有数的和。";i.Msg.MATH_POWER_SYMBOL="^";i.Msg.MATH_RANDOM_FLOAT_HELPURL="https://zh.wikipedia.org/wiki/随机数生成器";i.Msg.MATH_RANDOM_FLOAT_TITLE_RANDOM="随机小数";i.Msg.MATH_RANDOM_FLOAT_TOOLTIP="返回一个从0.0(含)到1.0(不含)之间的随机数。";i.Msg.MATH_RANDOM_INT_HELPURL="https://zh.wikipedia.org/wiki/随机数生成器";i.Msg.MATH_RANDOM_INT_TITLE="从 %1 到 %2 范围内的随机整数";i.Msg.MATH_RANDOM_INT_TOOLTIP="返回两个指定的极限(含)之间的随机整数。";i.Msg.MATH_ROUND_HELPURL="https://zh.wikipedia.org/wiki/数值修约";i.Msg.MATH_ROUND_OPERATOR_ROUND="四舍五入";i.Msg.MATH_ROUND_OPERATOR_ROUNDDOWN="向下舍入";i.Msg.MATH_ROUND_OPERATOR_ROUNDUP="向上舍入";i.Msg.MATH_ROUND_TOOLTIP="数向上或向下取整。";i.Msg.MATH_SINGLE_HELPURL="https://zh.wikipedia.org/wiki/平方根";i.Msg.MATH_SINGLE_OP_ABSOLUTE="绝对值";i.Msg.MATH_SINGLE_OP_ROOT="平方根";i.Msg.MATH_SINGLE_TOOLTIP_ABS="返回一个数的绝对值。";i.Msg.MATH_SINGLE_TOOLTIP_EXP="返回e的一个数次幂。";i.Msg.MATH_SINGLE_TOOLTIP_LN="返回一个数的自然对数。";i.Msg.MATH_SINGLE_TOOLTIP_LOG10="返回一个数的以10为底的对数。";i.Msg.MATH_SINGLE_TOOLTIP_NEG="返回一个数的相反数。";i.Msg.MATH_SINGLE_TOOLTIP_POW10="返回10的一个数次幂。";i.Msg.MATH_SINGLE_TOOLTIP_ROOT="返回一个数的平方根。";i.Msg.MATH_SUBTRACTION_SYMBOL="-";i.Msg.MATH_TRIG_ACOS="反余弦";i.Msg.MATH_TRIG_ASIN="反正弦";i.Msg.MATH_TRIG_ATAN="反正切";i.Msg.MATH_TRIG_COS="余弦";i.Msg.MATH_TRIG_HELPURL="https://zh.wikipedia.org/wiki/三角函数";i.Msg.MATH_TRIG_SIN="正弦";i.Msg.MATH_TRIG_TAN="正切";i.Msg.MATH_TRIG_TOOLTIP_ACOS="返回一个数的反余弦。";i.Msg.MATH_TRIG_TOOLTIP_ASIN="返回一个数的反正弦。";i.Msg.MATH_TRIG_TOOLTIP_ATAN="返回一个数的反正切。";i.Msg.MATH_TRIG_TOOLTIP_COS="返回角度(非弧度)的余弦。";i.Msg.MATH_TRIG_TOOLTIP_SIN="返回角度(非弧度)的正弦。";i.Msg.MATH_TRIG_TOOLTIP_TAN="返回角度(非弧度)的正切。";i.Msg.NEW_COLOUR_VARIABLE="创建颜色变量...";i.Msg.NEW_NUMBER_VARIABLE="创建数变量...";i.Msg.NEW_STRING_VARIABLE="创建字符串变量...";i.Msg.NEW_VARIABLE="创建变量...";i.Msg.NEW_VARIABLE_TITLE="新变量的名称:";i.Msg.NEW_VARIABLE_TYPE_TITLE="新变量的类型:";i.Msg.ORDINAL_NUMBER_SUFFIX="";i.Msg.PROCEDURES_ALLOW_STATEMENTS="允许声明";i.Msg.PROCEDURES_BEFORE_PARAMS="与:";i.Msg.PROCEDURES_CALLNORETURN_HELPURL="https://zh.wikipedia.org/wiki/子程序";i.Msg.PROCEDURES_CALLNORETURN_TOOLTIP="运行用户定义的函数“%1”。";i.Msg.PROCEDURES_CALLRETURN_HELPURL="https://zh.wikipedia.org/wiki/子程序";i.Msg.PROCEDURES_CALLRETURN_TOOLTIP="运行用户定义的函数“%1”,并使用它的输出值。";i.Msg.PROCEDURES_CALL_BEFORE_PARAMS="与:";i.Msg.PROCEDURES_CREATE_DO="创建“%1”";i.Msg.PROCEDURES_DEFNORETURN_COMMENT="描述该功能...";i.Msg.PROCEDURES_DEFNORETURN_DO="";i.Msg.PROCEDURES_DEFNORETURN_HELPURL="https://zh.wikipedia.org/wiki/子程序";i.Msg.PROCEDURES_DEFNORETURN_PROCEDURE="做点什么";i.Msg.PROCEDURES_DEFNORETURN_TITLE="至";i.Msg.PROCEDURES_DEFNORETURN_TOOLTIP="创建一个不带输出值的函数。";i.Msg.PROCEDURES_DEFRETURN_HELPURL="https://zh.wikipedia.org/wiki/子程序";i.Msg.PROCEDURES_DEFRETURN_RETURN="返回";i.Msg.PROCEDURES_DEFRETURN_TOOLTIP="创建一个有输出值的函数。";i.Msg.PROCEDURES_DEF_DUPLICATE_WARNING="警告:此函数具有重复参数。";i.Msg.PROCEDURES_HIGHLIGHT_DEF="突出显示函数定义";i.Msg.PROCEDURES_IFRETURN_HELPURL="https://c2.com/cgi/wiki?GuardClause";i.Msg.PROCEDURES_IFRETURN_TOOLTIP="如果值为真,则返回第二个值。";i.Msg.PROCEDURES_IFRETURN_WARNING="警告:这个块只能在函数内部使用。";i.Msg.PROCEDURES_MUTATORARG_TITLE="输入名称:";i.Msg.PROCEDURES_MUTATORARG_TOOLTIP="添加函数输入。";i.Msg.PROCEDURES_MUTATORCONTAINER_TITLE="输入";i.Msg.PROCEDURES_MUTATORCONTAINER_TOOLTIP="添加、移除或重新排此函数的输入。";i.Msg.REDO="重做";i.Msg.REMOVE_COMMENT="删除注释";i.Msg.RENAME_VARIABLE="重命名变量...";i.Msg.RENAME_VARIABLE_TITLE="将所有“%1”变量重命名为:";i.Msg.TEXT_APPEND_HELPURL="https://github.com/google/blockly/wiki/Text#text-modification";i.Msg.TEXT_APPEND_TITLE="在%1之后加上文本%2";i.Msg.TEXT_APPEND_TOOLTIP="将一些文本追加到变量“%1”里。";i.Msg.TEXT_CHANGECASE_HELPURL="https://github.com/google/blockly/wiki/Text#adjusting-text-case";i.Msg.TEXT_CHANGECASE_OPERATOR_LOWERCASE="转为小写";i.Msg.TEXT_CHANGECASE_OPERATOR_TITLECASE="转为首字母大写";i.Msg.TEXT_CHANGECASE_OPERATOR_UPPERCASE="转为大写";i.Msg.TEXT_CHANGECASE_TOOLTIP="用不同的大小写模式复制并返回这段文字。";i.Msg.TEXT_CHARAT_FIRST="获取第一个字符";i.Msg.TEXT_CHARAT_FROM_END="获取倒数第#个字符";i.Msg.TEXT_CHARAT_FROM_START="获取第#个字符";i.Msg.TEXT_CHARAT_HELPURL="https://github.com/google/blockly/wiki/Text#extracting-text";i.Msg.TEXT_CHARAT_LAST="获取最后一个字符";i.Msg.TEXT_CHARAT_RANDOM="获取随机一个字符";i.Msg.TEXT_CHARAT_TAIL="";i.Msg.TEXT_CHARAT_TITLE="在文本%1 里 %2";i.Msg.TEXT_CHARAT_TOOLTIP="返回位于指定位置的字符。";i.Msg.TEXT_COUNT_HELPURL="https://github.com/google/blockly/wiki/Text#counting-substrings";i.Msg.TEXT_COUNT_MESSAGE0="计算%1在%2里出现的次数";i.Msg.TEXT_COUNT_TOOLTIP="计算在一段文本中,某个部分文本重复出现了多少次。";i.Msg.TEXT_CREATE_JOIN_ITEM_TOOLTIP="将一个项添加到文本中。";i.Msg.TEXT_CREATE_JOIN_TITLE_JOIN="拼接";i.Msg.TEXT_CREATE_JOIN_TOOLTIP="添加、移除或重新排列各节来重新配置这个文本块。";i.Msg.TEXT_GET_SUBSTRING_END_FROM_END="到倒数第#个字符";i.Msg.TEXT_GET_SUBSTRING_END_FROM_START="到第#个字符";i.Msg.TEXT_GET_SUBSTRING_END_LAST="到最后一个字符";i.Msg.TEXT_GET_SUBSTRING_HELPURL="https://github.com/google/blockly/wiki/Text#extracting-a-region-of-text";i.Msg.TEXT_GET_SUBSTRING_INPUT_IN_TEXT="从文本";i.Msg.TEXT_GET_SUBSTRING_START_FIRST="获取子串,从第一个字符";i.Msg.TEXT_GET_SUBSTRING_START_FROM_END="获取子串,从倒数第#个字符";i.Msg.TEXT_GET_SUBSTRING_START_FROM_START="获取子串,从第#个字符";i.Msg.TEXT_GET_SUBSTRING_TAIL="";i.Msg.TEXT_GET_SUBSTRING_TOOLTIP="返回文本中指定的一部分。";i.Msg.TEXT_INDEXOF_HELPURL="https://github.com/google/blockly/wiki/Text#finding-text";i.Msg.TEXT_INDEXOF_OPERATOR_FIRST="寻找第一次出现的文本";i.Msg.TEXT_INDEXOF_OPERATOR_LAST="寻找最后一次出现的文本";i.Msg.TEXT_INDEXOF_TITLE="在文本 %1 里 %2 %3";i.Msg.TEXT_INDEXOF_TOOLTIP="返回第一个文本段在第二个文本段中的第一/最后一个匹配项的起始位置。如果未找到,则返回%1。";i.Msg.TEXT_ISEMPTY_HELPURL="https://github.com/google/blockly/wiki/Text#checking-for-empty-text";i.Msg.TEXT_ISEMPTY_TITLE="%1是空的";i.Msg.TEXT_ISEMPTY_TOOLTIP="如果给定的文本为空,则返回真。";i.Msg.TEXT_JOIN_HELPURL="https://github.com/google/blockly/wiki/Text#text-creation";i.Msg.TEXT_JOIN_TITLE_CREATEWITH="创建文本,内容:";i.Msg.TEXT_JOIN_TOOLTIP="通过串起任意数量的项以建立一段文本。";i.Msg.TEXT_LENGTH_HELPURL="https://github.com/google/blockly/wiki/Text#text-modification";i.Msg.TEXT_LENGTH_TITLE="%1的长度";i.Msg.TEXT_LENGTH_TOOLTIP="返回给定文本的字母数(包括空格)。";i.Msg.TEXT_PRINT_HELPURL="https://github.com/google/blockly/wiki/Text#printing-text";i.Msg.TEXT_PRINT_TITLE="输出%1";i.Msg.TEXT_PRINT_TOOLTIP="打印指定的文字、数或其他值。";i.Msg.TEXT_PROMPT_HELPURL="https://github.com/google/blockly/wiki/Text#getting-input-from-the-user";i.Msg.TEXT_PROMPT_TOOLTIP_NUMBER="提示用户输入一个数。";i.Msg.TEXT_PROMPT_TOOLTIP_TEXT="要求用户输入一些文本。";i.Msg.TEXT_PROMPT_TYPE_NUMBER="提示输入数并显示消息";i.Msg.TEXT_PROMPT_TYPE_TEXT="要求输入文本,并显示提示消息";i.Msg.TEXT_REPLACE_HELPURL="https://github.com/google/blockly/wiki/Text#replacing-substrings";i.Msg.TEXT_REPLACE_MESSAGE0="把%3中的%1替换为%2";i.Msg.TEXT_REPLACE_TOOLTIP="在一段文本中,将出现过的某部分文本都替换掉。";i.Msg.TEXT_REVERSE_HELPURL="https://github.com/google/blockly/wiki/Text#reversing-text";i.Msg.TEXT_REVERSE_MESSAGE0="倒转文本%1";i.Msg.TEXT_REVERSE_TOOLTIP="将文本中各个字符的顺序倒转。";i.Msg.TEXT_TEXT_HELPURL="https://zh.wikipedia.org/wiki/字符串";i.Msg.TEXT_TEXT_TOOLTIP="一个字、词或一行文本。";i.Msg.TEXT_TRIM_HELPURL="https://github.com/google/blockly/wiki/Text#trimming-removing-spaces";i.Msg.TEXT_TRIM_OPERATOR_BOTH="消除其两侧的空格";i.Msg.TEXT_TRIM_OPERATOR_LEFT="消除其左侧的空格";i.Msg.TEXT_TRIM_OPERATOR_RIGHT="消除其右侧的空格";i.Msg.TEXT_TRIM_TOOLTIP="从某一端或同时从两端删除多余的空白,并返回这段文字的一个副本。";i.Msg.TODAY="今天";i.Msg.UNDO="撤销";i.Msg.UNNAMED_KEY="未命名";i.Msg.VARIABLES_DEFAULT_NAME="项目";i.Msg.VARIABLES_GET_CREATE_SET="创建“设定%1”";i.Msg.VARIABLES_GET_HELPURL="https://github.com/google/blockly/wiki/Variables#get";i.Msg.VARIABLES_GET_TOOLTIP="返回此变量的值。";i.Msg.VARIABLES_SET="赋值 %1 为 %2";i.Msg.VARIABLES_SET_CREATE_GET="创建“获得%1”";i.Msg.VARIABLES_SET_HELPURL="https://github.com/google/blockly/wiki/Variables#set";i.Msg.VARIABLES_SET_TOOLTIP="设置此变量,以使它和输入值相等。";i.Msg.VARIABLE_ALREADY_EXISTS="名字叫“%1”的变量已经存在了。";i.Msg.VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE="名字叫“%1”的变量已经有了另一个类型:“%2”。";i.Msg.WORKSPACE_ARIA_LABEL="Blockly工作区";i.Msg.WORKSPACE_COMMENT_DEFAULT_TEXT="说点什么...";i.Msg.CONTROLS_FOREACH_INPUT_DO=i.Msg.CONTROLS_REPEAT_INPUT_DO;i.Msg.CONTROLS_FOR_INPUT_DO=i.Msg.CONTROLS_REPEAT_INPUT_DO;i.Msg.CONTROLS_IF_ELSEIF_TITLE_ELSEIF=i.Msg.CONTROLS_IF_MSG_ELSEIF;i.Msg.CONTROLS_IF_ELSE_TITLE_ELSE=i.Msg.CONTROLS_IF_MSG_ELSE;i.Msg.CONTROLS_IF_IF_TITLE_IF=i.Msg.CONTROLS_IF_MSG_IF;i.Msg.CONTROLS_IF_MSG_THEN=i.Msg.CONTROLS_REPEAT_INPUT_DO;i.Msg.CONTROLS_WHILEUNTIL_INPUT_DO=i.Msg.CONTROLS_REPEAT_INPUT_DO;i.Msg.LISTS_CREATE_WITH_ITEM_TITLE=i.Msg.VARIABLES_DEFAULT_NAME;i.Msg.LISTS_GET_INDEX_HELPURL=i.Msg.LISTS_INDEX_OF_HELPURL;i.Msg.LISTS_GET_INDEX_INPUT_IN_LIST=i.Msg.LISTS_INLIST;i.Msg.LISTS_GET_SUBLIST_INPUT_IN_LIST=i.Msg.LISTS_INLIST;i.Msg.LISTS_INDEX_OF_INPUT_IN_LIST=i.Msg.LISTS_INLIST;i.Msg.LISTS_SET_INDEX_INPUT_IN_LIST=i.Msg.LISTS_INLIST;i.Msg.MATH_CHANGE_TITLE_ITEM=i.Msg.VARIABLES_DEFAULT_NAME;i.Msg.PROCEDURES_DEFRETURN_COMMENT=i.Msg.PROCEDURES_DEFNORETURN_COMMENT;i.Msg.PROCEDURES_DEFRETURN_DO=i.Msg.PROCEDURES_DEFNORETURN_DO;i.Msg.PROCEDURES_DEFRETURN_PROCEDURE=i.Msg.PROCEDURES_DEFNORETURN_PROCEDURE;i.Msg.PROCEDURES_DEFRETURN_TITLE=i.Msg.PROCEDURES_DEFNORETURN_TITLE;i.Msg.TEXT_APPEND_VARIABLE=i.Msg.VARIABLES_DEFAULT_NAME;i.Msg.TEXT_CREATE_JOIN_ITEM_TITLE_ITEM=i.Msg.VARIABLES_DEFAULT_NAME;i.Msg.MATH_HUE="230";i.Msg.LOOPS_HUE="120";i.Msg.LISTS_HUE="260";i.Msg.LOGIC_HUE="210";i.Msg.VARIABLES_HUE="330";i.Msg.TEXTS_HUE="160";i.Msg.PROCEDURES_HUE="290";i.Msg.COLOUR_HUE="20";i.Msg.VARIABLES_DYNAMIC_HUE="310";i.Msg.TEXT_IS_NUMBER_HELPURL="";i.Msg.TEXT_IS_NUMBER_TOOLTIP="判断文本%1,并返回True或False";i.Msg.TEXT_IS_NUMBER_MESSAGE0="%1 %2";i.Msg.TEXT_IS_DIGIT="是数字";i.Msg.TEXT_IS_ALPHA="是字母";i.Msg.TEXT_IS_ALNUM="是数字和字母的组合";i.Msg.TEXT_LIST_START="初始化列表 [";i.Msg.TEXT_LIST_END="]";i.Msg.TEXT_TUPLE_START="初始化元组 (";i.Msg.TEXT_TUPLE_END=")";i.Msg.TEXT_DICT_START="初始化字典 {";i.Msg.TEXT_DICT_END="}";i.Msg.TEXT_SET_START="初始化集合 {";i.Msg.TEXT_SET_END="}";i.Msg.TEXT_SET_HELPURL="https://CocoRobox.readthedocs.io/zh_CN/latest/index.html";i.Msg.ADD_COMMENT="添加注释";i.Msg.CHANGE_VALUE_TITLE="更改值:";i.Msg.CLEAN_UP="整理块";i.Msg.COLLAPSE_ALL="折叠块";i.Msg.COLLAPSE_BLOCK="折叠块";i.Msg.COLOUR_BLEND_COLOUR1="颜色1";i.Msg.COLOUR_BLEND_COLOUR2="颜色2";i.Msg.COLOUR_BLEND_HELPURL="http://meyerweb.com/eric/tools/color-blend/";i.Msg.COLOUR_BLEND_RATIO="比例";i.Msg.COLOUR_BLEND_TITLE="混合";i.Msg.COLOUR_BLEND_TOOLTIP="用一个给定的比率(0.0-1.0)混合两种颜色。";i.Msg.COLOUR_PICKER_HELPURL="https://zh.wikipedia.org/wiki/颜色";i.Msg.COLOUR_PICKER_TOOLTIP="从调色板中选择一种颜色。";i.Msg.COLOUR_RANDOM_HELPURL="http://randomcolour.com";i.Msg.COLOUR_RANDOM_TITLE="随机颜色";i.Msg.COLOUR_RANDOM_TOOLTIP="随机选择一种颜色。";i.Msg.COLOUR_RGB_BLUE="蓝色";i.Msg.COLOUR_RGB_GREEN="绿色";i.Msg.COLOUR_RGB_HELPURL="http://www.december.com/html/spec/colorper.html";i.Msg.COLOUR_RGB_RED="红色";i.Msg.COLOUR_RGB_TITLE="颜色";i.Msg.COLOUR_RGB_TOOLTIP="通过指定红色、绿色和蓝色的量创建一种颜色。所有的值必须介于0和100之间。";i.Msg.CONTROLS_FLOW_STATEMENTS_HELPURL="https://github.com/google/blockly/wiki/Loops#loop-termination-blocks";i.Msg.CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK="中断循环";i.Msg.CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE="继续下一次循环";i.Msg.CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK="中断包含它的循环。";i.Msg.CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE="跳过这个循环的剩余部分,并继续下一次迭代。";i.Msg.CONTROLS_FLOW_STATEMENTS_WARNING="警告:此块仅可用于在一个循环内。";i.Msg.CONTROLS_FOREACH_HELPURL="https://github.com/google/blockly/wiki/Loops#for-each";i.Msg.CONTROLS_FOREACH_TITLE="在列表 %2 中以 %1 遍历每个项目";i.Msg.CONTROLS_FOREACH_TOOLTIP="遍历每个列表中的项目,将变量“%1”设定到该项中,然后执行某些语句。";i.Msg.CONTROLS_FOR_HELPURL="https://github.com/google/blockly/wiki/Loops#count-with";i.Msg.CONTROLS_FOR_TITLE="使用 %1 从范围 %2 到 %3 每隔 %4";i.Msg.CONTROLS_FOR_TOOLTIP="从起始数到结尾数中取出变量“%1”的值,按指定的时间间隔,执行指定的块。";i.Msg.CONTROLS_IF_ELSEIF_TOOLTIP="在if语句块中增加一个条件。";i.Msg.CONTROLS_IF_ELSE_TOOLTIP="添加一个最终的,包括所有情况的节到if块中。";i.Msg.CONTROLS_IF_HELPURL="https://github.com/google/blockly/wiki/IfElse";i.Msg.TRY_EXCEPT_HELPURL="https://CocoRobox.readthedocs.io/zh_CN/latest/index.html";i.Msg.CONTROLS_IF_IF_TOOLTIP="增加、删除或重新排列各节来重新配置“if”块。";i.Msg.CONTROLS_IF_MSG_ELSE="否则";i.Msg.CONTROLS_IF_MSG_ELSEIF="否则如果";i.Msg.TRY_EXCEPT_FINALLY="最后";i.Msg.TRY_EXCEPT_FINALLY_TOOLTIP="";i.Msg.TRY_EXCEPT_EXCEPT="除了";i.Msg.TRY_EXCEPT_EXCEPT_TOOLTIP="";i.Msg.TRY_EXCEPT_TRY="尝试";i.Msg.TRY_EXCEPT_TRY_TOOLTIP="";i.Msg.CONTROLS_IF_MSG_IF="如果";i.Msg.CONTROLS_IF_TOOLTIP_1="如果值为真,执行一些语句。";i.Msg.CONTROLS_IF_TOOLTIP_2="如果值为真,则执行第一块语句。否则,则执行第二块语句。";i.Msg.CONTROLS_IF_TOOLTIP_3="如果第一个值为真,则执行第一块的语句。否则,如果第二个值为真,则执行第二块的语句。";i.Msg.CONTROLS_IF_TOOLTIP_4="如果第一个值为真,则执行第一块对语句。否则,如果第二个值为真,则执行语句的第二块。如果没有值为真,则执行最后一块的语句。";i.Msg.CONTROLS_REPEAT_FOREVER="一直重复";i.Msg.CONTROLS_REPEAT_FOREVER_TOOLTIP="一直执行一些语句。";i.Msg.CONTROLS_REPEAT_HELPURL="https://zh.wikipedia.org/wiki/For循环";i.Msg.CONTROLS_REPEAT_INPUT_DO="执行";i.Msg.CONTROLS_REPEAT_TITLE="重复 %1 次";i.Msg.CONTROLS_REPEAT_TOOLTIP="多次执行一些语句。";i.Msg.CONTROLS_WHILEUNTIL_HELPURL="https://github.com/google/blockly/wiki/Loops#repeat";i.Msg.CONTROLS_WHILEUNTIL_OPERATOR_UNTIL="重复直到";i.Msg.CONTROLS_WHILEUNTIL_OPERATOR_WHILE="重复当";i.Msg.CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL="只要值为假,执行一些语句。";i.Msg.CONTROLS_WHILEUNTIL_TOOLTIP_WHILE="只要值为真,执行一些语句。";i.Msg.DELETE_ALL_BLOCKS="删除所有%1块吗?";i.Msg.DELETE_BLOCK="删除块";i.Msg.DELETE_VARIABLE="删除“%1”变量";i.Msg.DELETE_VARIABLE_CONFIRMATION="删除“%2”变量的%1种用途么?";i.Msg.DELETE_X_BLOCKS="删除块";i.Msg.DISABLE_BLOCK="禁用块";i.Msg.DUPLICATE_BLOCK="复制";i.Msg.ENABLE_BLOCK="启用块";i.Msg.EXPAND_ALL="展开块";i.Msg.EXPAND_BLOCK="展开块";i.Msg.EXTERNAL_INPUTS="多行输入";i.Msg.HELP="帮助";i.Msg.INLINE_INPUTS="单行输入";i.Msg.LISTS_CREATE_EMPTY_HELPURL="https://github.com/google/blockly/wiki/Lists#create-empty-list";i.Msg.LISTS_CREATE_EMPTY_TITLE="创建空列表";i.Msg.TUPLE_CREATE_EMPTY_TITLE="创建空元组";i.Msg.DICT_CREATE_EMPTY_TITLE="创建空字典";i.Msg.SET_CREATE_EMPTY_TITLE="创建空集合";i.Msg.LISTS_CREATE_EMPTY_TOOLTIP="返回一个列表,长度为 0,不包含任何数据记录";i.Msg.LISTS_CREATE_WITH_CONTAINER_TITLE_ADD="列表";i.Msg.TUPLE_CREATE_WITH_CONTAINER_TITLE_ADD="元组";i.Msg.DICT_CREATE_WITH_CONTAINER_TITLE_ADD="字典";i.Msg.SET_CREATE_WITH_CONTAINER_TITLE_ADD="集合";i.Msg.LISTS_CREATE_WITH_CONTAINER_TOOLTIP="增加、删除或重新排列各部分以此重新配置这个列表块。";i.Msg.TUPLE_CREATE_WITH_CONTAINER_TOOLTIP="增加、删除或重新排列各部分以此重新配置这个元组块。";i.Msg.DICT_CREATE_WITH_CONTAINER_TOOLTIP="增加、删除或重新排列各部分以此重新配置这个字典块。";i.Msg.SET_CREATE_WITH_CONTAINER_TOOLTIP="增加、删除或重新排列各部分以此重新配置这个集合块。";i.Msg.LISTS_CREATE_WITH_HELPURL="https://github.com/google/blockly/wiki/Lists#create-list-with";i.Msg.LISTS_CREATE_WITH_INPUT_WITH="初始化列表";i.Msg.TUPLE_CREATE_WITH_INPUT_WITH="初始化元组";i.Msg.DICT_CREATE_WITH_INPUT_WITH="初始化字典";i.Msg.SET_CREATE_WITH_INPUT_WITH="初始化集合";i.Msg.LISTS_CREATE_WITH_ITEM_TOOLTIP="将一个项添加到列表中。";i.Msg.TUPLE_CREATE_WITH_ITEM_TOOLTIP="将一个项添加到元组中。";i.Msg.DICT_CREATE_WITH_ITEM_TOOLTIP="将一个项添加到字典中。";i.Msg.SET_CREATE_WITH_ITEM_TOOLTIP="将一个项添加到集合中。";i.Msg.LISTS_CREATE_WITH_TOOLTIP="建立一个具有任意数量项目的列表。";i.Msg.LISTS_GET_INDEX_FIRST="第一";i.Msg.LISTS_GET_INDEX_FROM_END="倒数第";i.Msg.LISTS_GET_INDEX_FROM_START="第";i.Msg.LISTS_GET_INDEX_GET="获得";i.Msg.LISTS_GET_INDEX_GET_REMOVE="取出并移除";i.Msg.LISTS_GET_INDEX_LAST="最后";i.Msg.LISTS_GET_INDEX_RANDOM="随机";i.Msg.LISTS_GET_INDEX_REMOVE="移除";i.Msg.LISTS_POP_HELPURL="";i.Msg.LISTS_POP_TOOLTIP="";i.Msg.LISTS_POP_MESSAGE0="在列表 %1 中移除 %2 项";i.Msg.LISTS_GET_INDEX_TAIL="";i.Msg.LISTS_GET_INDEX_TOOLTIP_GET_FIRST="返回列表中的第一个项目。";i.Msg.LISTS_GET_INDEX_TOOLTIP_GET_FROM="返回在列表中的指定位置的项。";i.Msg.LISTS_GET_INDEX_TOOLTIP_GET_LAST="返回列表中的最后一项。";i.Msg.LISTS_GET_INDEX_TOOLTIP_GET_RANDOM="随机返回列表中的一个项目。";i.Msg.LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST="移除并返回列表中的第一个项目。";i.Msg.LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM="移除并返回列表中的指定位置的项。";i.Msg.LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST="移除并返回列表中的最后一个项目。";i.Msg.LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM="移除并返回列表中的一个随机项目中。";i.Msg.LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST="移除列表中的第一项";i.Msg.LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM="移除在列表中的指定位置的项。";i.Msg.LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST="移除列表中的最后一项";i.Msg.LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM="删除列表中的一个随机的项。";i.Msg.LISTS_GET_SUBLIST_END_FROM_END="到倒数第#";i.Msg.LISTS_GET_SUBLIST_END_FROM_START="到#";i.Msg.LISTS_GET_SUBLIST_END_LAST="到最后";i.Msg.LISTS_GET_SUBLIST_HELPURL="https://github.com/google/blockly/wiki/Lists#getting-a-sublist";i.Msg.LISTS_GET_SUBLIST_START_FIRST="从头获得子列表";i.Msg.LISTS_GET_SUBLIST_START_FROM_END="从倒数#取得子列表";i.Msg.LISTS_GET_SUBLIST_START_FROM_START="从#取得子列表";i.Msg.LISTS_GET_SUBLIST_TAIL="";i.Msg.LISTS_GET_SUBLIST_TOOLTIP="复制列表中指定的部分。";i.Msg.LISTS_INDEX_FROM_END_TOOLTIP="%1是最后一项。";i.Msg.LISTS_INDEX_FROM_START_TOOLTIP="%1是第一个项目。";i.Msg.LISTS_INDEX_OF_FIRST="找出第一个项出现";i.Msg.LISTS_INDEX_OF_HELPURL="https://github.com/google/blockly/wiki/Lists#getting-items-from-a-list";i.Msg.LISTS_INDEX_OF_LAST="找出最后一个项出现";i.Msg.LISTS_INDEX_OF_TOOLTIP="返回在列表中的第一/最后一个匹配项的索引值。如果找不到项目则返回0";i.Msg.LISTS_INLIST="在列表中";i.Msg.LISTS_ISEMPTY_HELPURL="https://github.com/google/blockly/wiki/Lists#is-empty";i.Msg.LISTS_ISEMPTY_TITLE="%1是空的";i.Msg.LISTS_ISEMPTY_TOOLTIP="如果改列表为空,则返回真。";i.Msg.LISTS_LENGTH_HELPURL="https://github.com/google/blockly/wiki/Lists#length-of";i.Msg.LISTS_LENGTH_TITLE="%1的长度";i.Msg.LISTS_LENGTH_TOOLTIP="返回列表的长度。";i.Msg.LISTS_REPEAT_HELPURL="https://github.com/google/blockly/wiki/Lists#create-list-with";i.Msg.LISTS_REPEAT_TITLE="建立列表 项 %1 重复 %2 次";i.Msg.LISTS_REPEAT_TOOLTIP="建立包含指定重复次数的值的列表。";i.Msg.LISTS_SET_INDEX_HELPURL="https://github.com/google/blockly/wiki/Lists#in-list--set";i.Msg.LISTS_SET_INDEX_INPUT_TO="为";i.Msg.LISTS_SET_INDEX_INSERT="插入在";i.Msg.LISTS_SET_INDEX_SET="设置";i.Msg.LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST="在列表的起始处添加该项。";i.Msg.LISTS_SET_INDEX_TOOLTIP_INSERT_FROM="插入在列表中指定位置的项。";i.Msg.LISTS_SET_INDEX_TOOLTIP_INSERT_LAST="将该项追加到列表的末尾。";i.Msg.LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM="在列表中随机插入项。";i.Msg.LISTS_SET_INDEX_TOOLTIP_SET_FIRST="设置列表中的第一个项目。";i.Msg.LISTS_SET_INDEX_TOOLTIP_SET_FROM="设置在列表中指定位置的项。";i.Msg.LISTS_SET_INDEX_TOOLTIP_SET_LAST="设置列表中的最后一项。";i.Msg.LISTS_SET_INDEX_TOOLTIP_SET_RANDOM="设置列表中一个随机的项目。";i.Msg.LISTS_SORT_HELPURL="https://github.com/google/blockly/wiki/Lists#sorting-a-list";i.Msg.LISTS_SORT_ORDER_ASCENDING="升序";i.Msg.LISTS_SORT_ORDER_DESCENDING="降序";i.Msg.LISTS_SORT_TITLE="排序%1 %2 %3";i.Msg.LISTS_SORT_TOOLTIP="排序一个列表的拷贝。";i.Msg.LISTS_SORT_TYPE_IGNORECASE="按字母排序,忽略大小写";i.Msg.LISTS_SORT_TYPE_NUMERIC="按数字排序";i.Msg.LISTS_SORT_TYPE_TEXT="按字母排序";i.Msg.LISTS_SPLIT_HELPURL="https://github.com/google/blockly/wiki/Lists#splitting-strings-and-joining-lists";i.Msg.LISTS_SPLIT_LIST_FROM_TEXT="从文本制作列表";i.Msg.LISTS_SPLIT_TEXT_FROM_LIST="从列表组合文本";i.Msg.LISTS_SPLIT_TOOLTIP_JOIN="加入文本列表至一个文本,由分隔符分隔。";i.Msg.LISTS_SPLIT_TOOLTIP_SPLIT="拆分文本到文本列表,按每个分隔符拆分。";i.Msg.LISTS_SPLIT_WITH_DELIMITER="用分隔符";i.Msg.LOGIC_BOOLEAN_FALSE="假";i.Msg.LOGIC_BOOLEAN_HELPURL="https://github.com/google/blockly/wiki/Logic#values";i.Msg.LOGIC_BOOLEAN_TOOLTIP="返回真或假。";i.Msg.LOGIC_BOOLEAN_TRUE="真";i.Msg.LOGIC_COMPARE_HELPURL="https://zh.wikipedia.org/wiki/不等";i.Msg.LOGIC_COMPARE_TOOLTIP_EQ="如果两个输入结果相等,则返回真。";i.Msg.LOGIC_COMPARE_TOOLTIP_GT="如果第一个输入结果比第二个大,则返回真。";i.Msg.LOGIC_COMPARE_TOOLTIP_GTE="如果第一个输入结果大于或等于第二个输入结果,则返回真。";i.Msg.LOGIC_COMPARE_TOOLTIP_LT="如果第一个输入结果比第二个小,则返回真。";i.Msg.LOGIC_COMPARE_TOOLTIP_LTE="如果第一个输入结果小于或等于第二个输入结果,则返回真。";i.Msg.LOGIC_COMPARE_TOOLTIP_NEQ="如果两个输入结果不相等,则返回真。";i.Msg.LOGIC_NEGATE_HELPURL="https://github.com/google/blockly/wiki/Logic#not";i.Msg.LOGIC_NEGATE_TITLE="非%1";i.Msg.LOGIC_NEGATE_TOOLTIP="如果输入结果为假,则返回真;如果输入结果为真,则返回假。";i.Msg.LOGIC_NULL="空";i.Msg.LOGIC_NULL_HELPURL="https://en.wikipedia.org/wiki/Nullable_type";i.Msg.LOGIC_NULL_TOOLTIP="返回空值。";i.Msg.LOGIC_OPERATION_AND="和";i.Msg.LOGIC_OPERATION_HELPURL="https://github.com/google/blockly/wiki/Logic#logical-operations";i.Msg.LOGIC_OPERATION_OR="或";i.Msg.LOGIC_OPERATION_TOOLTIP_AND="如果两个输入结果都为真,则返回真。";i.Msg.LOGIC_OPERATION_TOOLTIP_OR="如果至少有一个输入结果为真,则返回真。";i.Msg.LOGIC_TERNARY_CONDITION="测试";i.Msg.LOGIC_TERNARY_HELPURL="https://zh.wikipedia.org/wiki/条件运算符";i.Msg.LOGIC_TERNARY_IF_FALSE="如果为假";i.Msg.LOGIC_TERNARY_IF_TRUE="如果为真";i.Msg.LOGIC_TERNARY_TOOLTIP="检查“test”中的条件。如果条件为真,则返回“if true”的值,否则,则返回“if false”的值。";i.Msg.MATH_ADDITION_SYMBOL="+";i.Msg.MATH_ARITHMETIC_HELPURL="https://zh.wikipedia.org/wiki/算术";i.Msg.MATH_ARITHMETIC_TOOLTIP_ADD="返回两个数字的和。";i.Msg.MATH_ARITHMETIC_TOOLTIP_DIVIDE="返回两个数字的商。";i.Msg.MATH_ARITHMETIC_TOOLTIP_MINUS="返回两个数字的区别。";i.Msg.MATH_ARITHMETIC_TOOLTIP_MULTIPLY="返回两个数字的乘积。";i.Msg.MATH_ARITHMETIC_TOOLTIP_POWER="返回第一个数的第二个数次幂。";i.Msg.MATH_CHANGE_HELPURL="https://zh.wikipedia.org/wiki/%E5%8A%A0%E6%B3%95";i.Msg.MATH_CHANGE_TITLE="将变量 %1 的值增加 %2";i.Msg.MATH_CHANGE_TOOLTIP="将一个数添加到变量“%1”。";i.Msg.MATH_CONSTANT_HELPURL="https://zh.wikipedia.org/wiki/数学常数";i.Msg.MATH_CONSTANT_TOOLTIP="返回一个常见常量:π (3.141......),e (2.718...)、φ (1.618...)、 sqrt(2) (1.414......)、sqrt(½) (0.707......)或 ∞(无穷大)。";i.Msg.MATH_CONSTRAIN_HELPURL="https://en.wikipedia.org/wiki/Clamping_%28graphics%29";i.Msg.MATH_CONSTRAIN_TITLE="限制数字 %1 介于 (低) %2 到 (高) %3";i.Msg.MATH_CONSTRAIN_TOOLTIP="限制数字介于两个指定的数字之间";i.Msg.MATH_CONVERT_HELPURL="";i.Msg.MATH_CONVERT_MESSAGE0="%1 %2";i.Msg.MATH_CONVERT_TOOLTIP="强制转换数据类型";i.Msg.MATH_DIVISION_CONSULT_HELPURL="";i.Msg.MATH_DIVISION_CONSULT_TITLE="%1 ÷ %2 商的整数部分";i.Msg.MATH_DIVISION_CONSULT_TOOLTIP="返回两数商的整数部分";i.Msg.MATH_DIVISION_SYMBOL="÷";i.Msg.MATH_IS_DIVISIBLE_BY="可被整除";i.Msg.MATH_IS_EVEN="是偶数";i.Msg.MATH_IS_NEGATIVE="为负";i.Msg.MATH_IS_ODD="是奇数";i.Msg.MATH_IS_POSITIVE="为正";i.Msg.MATH_IS_PRIME="是质数";i.Msg.MATH_IS_TOOLTIP="如果数字是偶数、奇数、非负整数、正数、负数或如果它可被某数字整除,则返回真或假。";i.Msg.MATH_IS_WHOLE="为整数";i.Msg.MATH_MODULO_HELPURL="https://zh.wikipedia.org/wiki/模除";i.Msg.MATH_MODULO_TITLE="%1 ÷ %2 的余数";i.Msg.MATH_MODULO_TOOLTIP="返回这两个数字相除后的余数。";i.Msg.MATH_MULTIPLICATION_SYMBOL="×";i.Msg.MATH_NUMBER_BITS_OPS_HELPURL="";i.Msg.MATH_NUMBER_BITS_OPS_MESSAGE0="%1 %2 %3";i.Msg.MATH_NUMBER_BITS_OPS_TOOLTIP="对数字进行位运算";i.Msg.MATH_NUMBER_HELPURL="https://zh.wikipedia.org/wiki/数";i.Msg.MATH_NUMBER_TOOLTIP="一个数字。";i.Msg.MATH_ONLIST_HELPURL="";i.Msg.MATH_ONLIST_OPERATOR_AVERAGE="列表中的平均数";i.Msg.MATH_ONLIST_OPERATOR_MAX="列表中的最大值";i.Msg.MATH_ONLIST_OPERATOR_MEDIAN="列表中位数";i.Msg.MATH_ONLIST_OPERATOR_MIN="列表中的最小值";i.Msg.MATH_ONLIST_OPERATOR_MODE="列表模式";i.Msg.MATH_ONLIST_OPERATOR_RANDOM="列表的随机项";i.Msg.MATH_ONLIST_OPERATOR_STD_DEV="列表中的标准差";i.Msg.MATH_ONLIST_OPERATOR_SUM="列表中的数的总和";i.Msg.MATH_ONLIST_TOOLTIP_AVERAGE="返回列表中的数值的平均值。";i.Msg.MATH_ONLIST_TOOLTIP_MAX="返回列表中最大数。";i.Msg.MATH_ONLIST_TOOLTIP_MEDIAN="返回列表中的中位数。";i.Msg.MATH_ONLIST_TOOLTIP_MIN="返回列表中最小数。";i.Msg.MATH_ONLIST_TOOLTIP_MODE="返回列表中的最常见的项的列表。";i.Msg.MATH_ONLIST_TOOLTIP_RANDOM="从列表中返回一个随机的元组。";i.Msg.MATH_ONLIST_TOOLTIP_STD_DEV="返回列表的标准偏差。";i.Msg.MATH_ONLIST_TOOLTIP_SUM="返回列表中的所有数字的和。";i.Msg.MATH_POWER_SYMBOL="**";i.Msg.MATH_RANDOM_FLOAT_HELPURL="https://zh.wikipedia.org/wiki/随机数生成器";i.Msg.MATH_RANDOM_FLOAT_TITLE_RANDOM="随机小数";i.Msg.MATH_RANDOM_FLOAT_TOOLTIP="返回介于(包含)0.0到1.0之间的随机数。";i.Msg.MATH_RANDOM_INT_HELPURL="https://zh.wikipedia.org/wiki/随机数生成器";i.Msg.MATH_RANDOM_INT_TITLE="从 %1 到 %2 之间的随机整数";i.Msg.MATH_RANDOM_INT_TOOLTIP="返回两个指定的范围(含)之间的随机整数。";i.Msg.MATH_ROUND_HELPURL="https://zh.wikipedia.org/wiki/数值修约";i.Msg.MATH_ROUND_OPERATOR_ROUND="四舍五入";i.Msg.MATH_ROUND_OPERATOR_ROUNDDOWN="向下舍入";i.Msg.MATH_ROUND_OPERATOR_ROUNDUP="向上舍入";i.Msg.MATH_ROUND_TOOLTIP="数字向上或向下舍入。";i.Msg.MATH_SINGLE_HELPURL="https://zh.wikipedia.org/wiki/平方根";i.Msg.MATH_SINGLE_OP_ABSOLUTE="绝对";i.Msg.MATH_SINGLE_OP_ROOT="平方根";i.Msg.MATH_SINGLE_TOOLTIP_ABS="返回一个数的绝对值。";i.Msg.MATH_SINGLE_TOOLTIP_EXP="返回数的e次幂。";i.Msg.MATH_SINGLE_TOOLTIP_LN="返回一个数的自然对数。";i.Msg.MATH_SINGLE_TOOLTIP_LOG10="返回数字的对数。";i.Msg.MATH_SINGLE_TOOLTIP_NEG="返回数的逻辑非。";i.Msg.MATH_SINGLE_TOOLTIP_POW10="返回数的10次幂。";i.Msg.MATH_SINGLE_TOOLTIP_ROOT="返回数的平方根。";i.Msg.MATH_SUBTRACTION_SYMBOL="-";i.Msg.MATH_TRIG_ACOS="acos";i.Msg.MATH_TRIG_ASIN="asin";i.Msg.MATH_TRIG_ATAN="atan";i.Msg.MATH_TRIG_COS="cos";i.Msg.MATH_TRIG_HELPURL="https://zh.wikipedia.org/wiki/三角函数";i.Msg.MATH_TRIG_SIN="sin";i.Msg.MATH_TRIG_TAN="tan";i.Msg.MATH_TRIG_TOOLTIP_ACOS="返回一个数的反余弦值。";i.Msg.MATH_TRIG_TOOLTIP_ASIN="返回一个数的反正弦值。";i.Msg.MATH_TRIG_TOOLTIP_ATAN="返回指定角度的反正切值。";i.Msg.MATH_TRIG_TOOLTIP_COS="返回指定角度的余弦值(非弧度)。";i.Msg.MATH_TRIG_TOOLTIP_SIN="返回指定角度的正弦值(非弧度)。";i.Msg.MATH_TRIG_TOOLTIP_TAN="返回指定角度的正切值(非弧度)。";i.Msg.NEW_VARIABLE="创建变量...";i.Msg.NEW_VARIABLE_TITLE="新变量的名称:";i.Msg.ORDINAL_NUMBER_SUFFIX="";i.Msg.PROCEDURES_ALLOW_STATEMENTS="允许声明";i.Msg.PROCEDURES_BEFORE_PARAMS="参数:";i.Msg.PROCEDURES_CALLNORETURN_HELPURL="https://zh.wikipedia.org/wiki/子程序";i.Msg.PROCEDURES_CALLNORETURN_TOOLTIP="运行用户定义的函数“%1”。";i.Msg.PROCEDURES_CALLRETURN_HELPURL="https://zh.wikipedia.org/wiki/子程序";i.Msg.PROCEDURES_CALLRETURN_TOOLTIP="运行用户定义的函数“%1”,并使用它的输出值。";i.Msg.PROCEDURES_CALL_BEFORE_PARAMS="与:";i.Msg.PROCEDURES_CREATE_DO="创建“%1”";i.Msg.PROCEDURES_DEFNORETURN_COMMENT="";i.Msg.PROCEDURES_DEFNORETURN_DO="";i.Msg.PROCEDURES_DEFNORETURN_HELPURL="https://zh.wikipedia.org/wiki/子程序";i.Msg.PROCEDURES_DEFNORETURN_PROCEDURE="my_func";i.Msg.PROCEDURES_DEFNORETURN_TITLE="定义函数";i.Msg.PROCEDURES_DEFNORETURN_TOOLTIP="创建一个不带输出值的函数。";i.Msg.PROCEDURES_DEFRETURN_HELPURL="https://zh.wikipedia.org/wiki/子程序";i.Msg.PROCEDURES_DEFRETURN_RETURN="返回";i.Msg.PROCEDURES_DEFRETURN_TOOLTIP="创建一个有输出值的函数。";i.Msg.PROCEDURES_DEF_DUPLICATE_WARNING="警告: 此函数具有重复参数。";i.Msg.PROCEDURES_HIGHLIGHT_DEF="突出显示函数定义";i.Msg.PROCEDURES_IFRETURN_HELPURL="http://c2.com/cgi/wiki?GuardClause";i.Msg.PROCEDURES_IFRETURN_TOOLTIP="如果值为真,则返回第二个值。";i.Msg.PROCEDURES_IFRETURN_WARNING="警告: 仅在定义函数内可使用此块。";i.Msg.PROCEDURES_MUTATORARG_TITLE="输入名称:";i.Msg.PROCEDURES_MUTATORARG_TOOLTIP="添加函数输入。";i.Msg.PROCEDURES_MUTATORCONTAINER_TITLE="输入";i.Msg.PROCEDURES_MUTATORCONTAINER_TOOLTIP="添加、删除或重新排此函数的输入。";i.Msg.REDO="重做";i.Msg.REMOVE_COMMENT="删除注释";i.Msg.RENAME_VARIABLE="重命名变量...";i.Msg.RENAME_VARIABLE_TITLE="将所有“%1”变量重命名为:";i.Msg.TEXT_APPEND_APPENDTEXT="追加文本";i.Msg.TEXT_APPEND_HELPURL="https://github.com/google/blockly/wiki/Text#text-modification";i.Msg.TEXT_APPEND_TO="";i.Msg.TEXT_APPEND_TOOLTIP="将一些文本追加到变量“%1”。";i.Msg.TEXT_CHANGECASE_HELPURL="https://github.com/google/blockly/wiki/Text#adjusting-text-case";i.Msg.TEXT_CHANGECASE_OPERATOR_LOWERCASE="转为小写";i.Msg.TEXT_CHANGECASE_OPERATOR_TITLECASE="转为首字母大写";i.Msg.TEXT_CHANGECASE_OPERATOR_UPPERCASE="转为大写";i.Msg.TEXT_CHANGECASE_TOOLTIP="使用不同的大小写复制这段文字。";i.Msg.TEXT_CHARAT_FIRST="获得第一个字符";i.Msg.TEXT_CHARAT_FROM_END="获得倒数第#个字符";i.Msg.TEXT_CHARAT_FROM_START="获得字符#";i.Msg.TEXT_CHARAT_HELPURL="https://github.com/google/blockly/wiki/Text#extracting-text";i.Msg.TEXT_CHARAT_INPUT_INTEXT="从文本";i.Msg.TEXT_CHARAT_LAST="获得最后一个字符";i.Msg.TEXT_CHARAT_RANDOM="获取随机的字母";i.Msg.TEXT_CHARAT_TAIL="";i.Msg.TEXT_CHARAT_TOOLTIP="返回位于指定位置的字母。";i.Msg.TEXT_CREATE_JOIN_ITEM_TOOLTIP="将一个项添加到文本中。";i.Msg.TEXT_CREATE_JOIN_TITLE_JOIN="加入";i.Msg.TEXT_CREATE_JOIN_TOOLTIP="添加、移除或重新排列各节来重新配置这个文本块。";i.Msg.TEXT_GET_SUBSTRING_END_FROM_END="到倒数第#个字符";i.Msg.TEXT_GET_SUBSTRING_END_FROM_START="到字符#";i.Msg.TEXT_GET_SUBSTRING_END_LAST="到最后一个字符";i.Msg.TEXT_GET_SUBSTRING_HELPURL="https://github.com/google/blockly/wiki/Text#extracting-a-region-of-text";i.Msg.TEXT_GET_SUBSTRING_INPUT_IN_TEXT="从文本";i.Msg.TEXT_GET_SUBSTRING_START_FIRST="取得一段字串自第一个字符";i.Msg.TEXT_GET_SUBSTRING_START_FROM_END="取得一段字串自倒数第#个字符";i.Msg.TEXT_GET_SUBSTRING_START_FROM_START="取得一段字串自#";i.Msg.TEXT_GET_SUBSTRING_TAIL="";i.Msg.TEXT_GET_SUBSTRING_TOOLTIP="返回指定的部分文本。";i.Msg.TEXT_INDEXOF_HELPURL="https://github.com/google/blockly/wiki/Text#finding-text";i.Msg.TEXT_INDEXOF_INPUT_INTEXT="在文本";i.Msg.TEXT_INDEXOF_OPERATOR_FIRST="中查找 最先 出现";i.Msg.TEXT_INDEXOF_OPERATOR_LAST="中查找 最后 出现";i.Msg.TEXT_INDEXOF_TAIL="的位置";i.Msg.TEXT_INDEXOF_TOOLTIP="返回在第二个字串中的第一/最后一个匹配项的索引值。如果未找到则返回%1。";i.Msg.TEXT_ISEMPTY_HELPURL="https://github.com/google/blockly/wiki/Text#checking-for-empty-text";i.Msg.TEXT_ISEMPTY_TITLE="%1是空的";i.Msg.TEXT_ISEMPTY_TOOLTIP="如果提供的文本为空,则返回真。";i.Msg.TEXT_JOIN_HELPURL="https://github.com/google/blockly/wiki/Text#text-creation";i.Msg.TEXT_JOIN_TITLE_CREATEWITH="转为文本";i.Msg.TEXT_JOIN_TOOLTIP="通过串起任意数量的项以建立一段文字。";i.Msg.TEXT_LENGTH_HELPURL="https://github.com/google/blockly/wiki/Text#text-modification";i.Msg.TEXT_LENGTH_TITLE="%1的长度";i.Msg.TEXT_LENGTH_TOOLTIP="返回提供文本的字母数(包括空格)。";i.Msg.TEXT_PRINT_HELPURL="https://github.com/google/blockly/wiki/Text#printing-text";i.Msg.TEXT_PRINT_TITLE="打印%1";i.Msg.CocoRobo_INPUT_MESSAGE0="输入%1";i.Msg.TEXT_PRINT_TOOLTIP="打印指定的文字、数字或其他值。";i.Msg.TEXT_PROMPT_HELPURL="https://github.com/google/blockly/wiki/Text#getting-input-from-the-user";i.Msg.TEXT_PROMPT_TOOLTIP_NUMBER="提示用户输入数字。";i.Msg.TEXT_PROMPT_TOOLTIP_TEXT="提示用户输入一些文本。";i.Msg.TEXT_PROMPT_TYPE_NUMBER="输入数字并显示提示消息";i.Msg.TEXT_PROMPT_TYPE_TEXT="输入数字并显示提示消息";i.Msg.TEXT_TEXT_HELPURL="https://zh.wikipedia.org/wiki/字符串";i.Msg.TEXT_TEXT_TOOLTIP="一个字母、单词或一行文本。";i.Msg.TEXT_TRIM_HELPURL="https://github.com/google/blockly/wiki/Text#trimming-removing-spaces";i.Msg.TEXT_TRIM_OPERATOR_BOTH="消除两侧空格";i.Msg.TEXT_TRIM_OPERATOR_LEFT="消除左侧空格";i.Msg.TEXT_TRIM_OPERATOR_RIGHT="消除右侧空格";i.Msg.TEXT_TRIM_TOOLTIP="复制这段文字的同时删除两端多余的空格。";i.Msg.TODAY="今天";i.Msg.UNDO="撤销";i.Msg.VARIABLES_DEFAULT_NAME="item";i.Msg.VARIABLES_GET_CREATE_SET="创建“设定%1”";i.Msg.VARIABLES_GET_HELPURL="https://github.com/google/blockly/wiki/Variables#get";i.Msg.VARIABLES_GET_TOOLTIP="返回此变量的值。";i.Msg.VARIABLES_SET="将变量 %1 设定为 %2";i.Msg.VARIABLES_SET_CREATE_GET="创建“获得%1”";i.Msg.VARIABLES_SET_HELPURL="https://github.com/google/blockly/wiki/Variables#set";i.Msg.VARIABLES_SET_TOOLTIP="设置此变量,以使它和输入值相等。";i.Msg.VARIABLE_ALREADY_EXISTS="已存在名为“%1”的变量。";i.Msg.PROCEDURES_DEFRETURN_TITLE=i.Msg.PROCEDURES_DEFNORETURN_TITLE;i.Msg.CONTROLS_IF_IF_TITLE_IF=i.Msg.CONTROLS_IF_MSG_IF;i.Msg.CONTROLS_WHILEUNTIL_INPUT_DO=i.Msg.CONTROLS_REPEAT_INPUT_DO;i.Msg.CONTROLS_IF_MSG_THEN=i.Msg.CONTROLS_REPEAT_INPUT_DO;i.Msg.TRY_EXCEPT_TRY="尝试";i.Msg.CONTROLS_IF_ELSE_TITLE_ELSE=i.Msg.CONTROLS_IF_MSG_ELSE;i.Msg.CONTROLS_IF_ELSE_TITLE_ELSE=i.Msg.CONTROLS_IF_MSG_ELSE;i.Msg.PROCEDURES_DEFRETURN_PROCEDURE=i.Msg.PROCEDURES_DEFNORETURN_PROCEDURE;i.Msg.LISTS_GET_SUBLIST_INPUT_IN_LIST=i.Msg.LISTS_INLIST;i.Msg.LISTS_GET_INDEX_INPUT_IN_LIST=i.Msg.LISTS_INLIST;i.Msg.PROCEDURES_DEFRETURN_DO=i.Msg.PROCEDURES_DEFNORETURN_DO;i.Msg.CONTROLS_IF_ELSEIF_TITLE_ELSEIF=i.Msg.CONTROLS_IF_MSG_ELSEIF;i.Msg.LISTS_GET_INDEX_HELPURL=i.Msg.LISTS_INDEX_OF_HELPURL;i.Msg.CONTROLS_FOREACH_INPUT_DO=i.Msg.CONTROLS_REPEAT_INPUT_DO;i.Msg.LISTS_SET_INDEX_INPUT_IN_LIST=i.Msg.LISTS_INLIST;i.Msg.CONTROLS_FOR_INPUT_DO=i.Msg.CONTROLS_REPEAT_INPUT_DO;i.Msg.LISTS_CREATE_WITH_ITEM_TITLE=i.Msg.VARIABLES_DEFAULT_NAME;i.Msg.TUPLE_CREATE_WITH_ITEM_TITLE=i.Msg.VARIABLES_DEFAULT_NAME;i.Msg.DICT_CREATE_WITH_ITEM_TITLE=i.Msg.VARIABLES_DEFAULT_NAME;i.Msg.SET_CREATE_WITH_ITEM_TITLE=i.Msg.VARIABLES_DEFAULT_NAME;i.Msg.TEXT_APPEND_VARIABLE=i.Msg.VARIABLES_DEFAULT_NAME;i.Msg.TEXT_CREATE_JOIN_ITEM_TITLE_ITEM=i.Msg.VARIABLES_DEFAULT_NAME;i.Msg.MATH_CHANGE_TITLE_ITEM=i.Msg.VARIABLES_DEFAULT_NAME;i.Msg.LISTS_INDEX_OF_INPUT_IN_LIST=i.Msg.LISTS_INLIST;i.Msg.PROCEDURES_DEFRETURN_COMMENT=i.Msg.PROCEDURES_DEFNORETURN_COMMENT;i.Msg.CocoRobo_OPEN="开启";i.Msg.CocoRobo_CLOSE="关闭";i.Msg.CocoRoboBOX_RGB_IMAGE_SHIFT_LEFT="左移";i.Msg.CocoRoboBOX_RGB_IMAGE_SHIFT_RIGHT="右移";i.Msg.CocoRoboBOX_RGB_IMAGE_SHIFT_UP="上移";i.Msg.CocoRoboBOX_RGB_IMAGE_SHIFT_DOWN="下移";i.Msg.CocoRobo_AI_LCD_SHOW_IMAGE_HEAT_GRAYSCALE="灰度";i.Msg.CocoRobo_AI_LCD_SHOW_IMAGE_HEAT_RAINBOW="彩虹";i.Msg.CocoRobo_AI_LCD_SHOW_IMAGE_HEAT_NEGATE="数字反转";i.Msg.CocoRobo_AI_LCD_SHOW_IMAGE_HEAT_INVERT="黑白翻转";i.Msg.CocoRobo_AI_LCD_SHOW_IMAGE_DESCARTES_LINPOLAR="线性极";i.Msg.CocoRobo_AI_LCD_SHOW_IMAGE_DESCARTES_LOGPOLAR="对数极";i.Msg.CocoRobo_AI_SENSOR_PATTERN_GRAYSCALE="灰度";i.Msg.CocoRobo_AI_SENSOR_PATTERN_COLOR="彩色";i.Msg.CocoRobo_AI_SENSOR_ENABLE_START="开始抓取图像";i.Msg.CocoRobo_AI_SENSOR_ENABLE_STOP="停止抓取图像";i.Msg.CocoRobo_AI_SENSOR_LEVEL_MI_H="水平镜像";i.Msg.CocoRobo_AI_SENSOR_LEVEL_MI_V="垂直翻转";i.Msg.CocoRobo_AI_SENSOR_SETS_CONTRAST="对比度";i.Msg.CocoRobo_AI_SENSOR_SETS_BRIGHTNESS="亮度";i.Msg.CocoRobo_AI_SENSOR_SETS_SATURATION="饱和度";i.Msg.CocoRobo_AI2_FACE_YOLO="人脸检测";i.Msg.CocoRobo_AI2_CLASS_20_YOLO="20类识别";i.Msg.CocoRobo_AI2_MNIST_NET="数字识别";i.Msg.CocoRobo_AI2_PHOTOGRAPH_FACE_YOLO="人脸";i.Msg.CocoRobo_AI2_PHOTOGRAPH_CLASS_20_YOLO="20类";i.Msg.CocoRobo_AI_TRACE_COLOR_RECTANGLE="矩形";i.Msg.CocoRobo_AI_TRACE_COLOR_CROSS="十字";i.Msg.TEXT_APPEND_TEXT_HELPURL="";i.Msg.TEXT_APPEND_TEXT_TOOLTIP="在指定文本后追加文本,并返回结果";i.Msg.TEXT_APPEND_TEXT_MESSAGE0="%1 追加文本 %2";i.Msg.CHINA_CITY_MESSAGE0="%1 %2";i.Msg.CHINA_CITY_TOWN_MESSAGE0="%1 %2 %3 返回 %4";i.Msg.CHINA_CITY_CNNAME="中文简称";i.Msg.CHINA_CITY_PINYIN="拼音";i.Msg.CocoRobo_SENIVERSE_WEATHER_LANGUAGE_1="简体中文";i.Msg.CocoRobo_SENIVERSE_WEATHER_LANGUAGE_2="正體中文";i.Msg.CocoRobo_SENIVERSE_CITY_WEATHER_HELPURL="";i.Msg.CocoRobo_SENIVERSE_CITY_WEATHER_TOOLTIP="";i.Msg.CocoRobo_SENIVERSE_CITY_WEATHER_MESSAGE0="[心知天气] %1 信息 %2 地理位置 %3 API私钥 %4 %5 语言 %6 %7 温度单位 %8";i.Msg.CocoRobo_SENIVERSE_WEATHER_API_1="天气实况";i.Msg.CocoRobo_SENIVERSE_WEATHER_API_2="3天天气预报";i.Msg.CocoRobo_SENIVERSE_WEATHER_API_3="6项生活指数";i.Msg.CocoRobo_SENIVERSE_WEATHER_UNIT_1="摄氏度";i.Msg.CocoRobo_SENIVERSE_WEATHER_UNIT_2="华氏度";i.Msg.CocoRobo_DEFINE_SENIVERSE_WEATHER_HELPURL="";i.Msg.CocoRobo_DEFINE_SENIVERSE_WEATHER_TOOLTIP="";i.Msg.CocoRobo_DEFINE_SENIVERSE_WEATHER_MESSAGE0="设定 %1 为 %2";i.Msg.CocoRobo_GET_SENIVERSE_WEATHER_INFO_HELPURL="";i.Msg.CocoRobo_GET_SENIVERSE_WEATHER_INFO_TOOLTIP="";i.Msg.CocoRobo_GET_SENIVERSE_WEATHER_INFO_MESSAGE0="%1 [心知天气] 通用字段 %2";i.Msg.CocoRobo_GET_SENIVERSE_WEATHER_INFO1_HELPURL="";i.Msg.CocoRobo_GET_SENIVERSE_WEATHER_INFO1_TOOLTIP="";i.Msg.CocoRobo_GET_SENIVERSE_WEATHER_INFO1_MESSAGE0="%1 [心知天气] 天气实况 %2";i.Msg.CocoRobo_GET_SENIVERSE_WEATHER_INFO2_HELPURL="";i.Msg.CocoRobo_GET_SENIVERSE_WEATHER_INFO2_TOOLTIP=`风向角度,范围0~360
- 风速,单位km/h(当unit=c时)、mph(当unit=f时)`;i.Msg.CocoRobo_GET_SENIVERSE_WEATHER_INFO2_MESSAGE0="%1 [心知天气] 3天天气预报 %2 的 %3";i.Msg.CocoRobo_GET_SENIVERSE_WEATHER_INFO3_HELPURL="";i.Msg.CocoRobo_GET_SENIVERSE_WEATHER_INFO3_TOOLTIP="";i.Msg.CocoRobo_GET_SENIVERSE_WEATHER_INFO3_MESSAGE0="%1 [心知天气] 6项生活指数 %2";i.Msg.CocoRobo_SENIVERSE_WEATHER_city_name="城市名称";i.Msg.CocoRobo_SENIVERSE_WEATHER_city_id="城市ID";i.Msg.CocoRobo_SENIVERSE_WEATHER_country="国家代码";i.Msg.CocoRobo_SENIVERSE_WEATHER_path="行政归属";i.Msg.CocoRobo_SENIVERSE_WEATHER_timezone="时区";i.Msg.CocoRobo_SENIVERSE_WEATHER_timezone_offset="UTC偏移量";i.Msg.CocoRobo_SENIVERSE_WEATHER_last_update_date="数据更新日期";i.Msg.CocoRobo_SENIVERSE_WEATHER_last_update="数据更新时间";i.Msg.CocoRobo_SENIVERSE_WEATHER_object="原始字典对象";i.Msg.CocoRobo_SENIVERSE_WEATHER_text="天气现象";i.Msg.CocoRobo_SENIVERSE_WEATHER_code="天气现象代码";i.Msg.CocoRobo_SENIVERSE_WEATHER_temperature="温度";i.Msg.CocoRobo_SENIVERSE_WEATHER_today="今天";i.Msg.CocoRobo_SENIVERSE_WEATHER_tomorrow="明天";i.Msg.CocoRobo_SENIVERSE_WEATHER_the_day_after_tomorrow="后天";i.Msg.CocoRobo_SENIVERSE_WEATHER_date="日期";i.Msg.CocoRobo_SENIVERSE_WEATHER_text_day="白天天气现象";i.Msg.CocoRobo_SENIVERSE_WEATHER_code_day="白天天气现象代码";i.Msg.CocoRobo_SENIVERSE_WEATHER_text_night="晚间天气现象";i.Msg.CocoRobo_SENIVERSE_WEATHER_code_night="晚间天气现象代码";i.Msg.CocoRobo_SENIVERSE_WEATHER_high="当天最高温度";i.Msg.CocoRobo_SENIVERSE_WEATHER_low="当天最低温度";i.Msg.CocoRobo_SENIVERSE_WEATHER_wind_direction="风向";i.Msg.CocoRobo_SENIVERSE_WEATHER_wind_direction_degree="风向角度";i.Msg.CocoRobo_SENIVERSE_WEATHER_wind_speed="风速";i.Msg.CocoRobo_SENIVERSE_WEATHER_wind_scale="风力等级";i.Msg.CocoRobo_SENIVERSE_WEATHER_car_washing="洗车指数";i.Msg.CocoRobo_SENIVERSE_WEATHER_dressing="穿衣指数";i.Msg.CocoRobo_SENIVERSE_WEATHER_flu="感冒指数";i.Msg.CocoRobo_SENIVERSE_WEATHER_sport="运动指数";i.Msg.CocoRobo_SENIVERSE_WEATHER_travel="旅游指数";i.Msg.CocoRobo_SENIVERSE_WEATHER_uv="紫外线指数";i.Msg.CocoRobo_RED="红";i.Msg.CocoRobo_GREEN="绿";i.Msg.CocoRobo_BLUE="蓝";i.Msg.CocoRobo_BLUEBIT_HELPURL="http://wiki.labplus.cn/index.php?title=Bluebit";i.Msg.CocoRobo_BLUEBIT_ULTRASONIC_MESSAGE0="I2C超声波";i.Msg.CocoRobo_BLUEBIT_ULTRASONIC_TOOLTIP="";i.Msg.CocoRobo_BLUEBIT_ULTRASONIC_HELPURL="http://wiki.labplus.cn/index.php?title=Bluebit";i.Msg.CocoRobo_BLUEBIT_READ_DIGITAL_MESSAGE0="%1 被触发 引脚%2";i.Msg.CocoRobo_BLUEBIT_READ_DIGITAL_TOOLTIP="";i.Msg.CocoRobo_BLUEBIT_READ_DIGITAL_HELPURL="http://wiki.labplus.cn/index.php?title=Bluebit";i.Msg.CocoRobo_BLUEBIT_READ_ANALOG_MESSAGE0="%1 模拟值 引脚%2";i.Msg.CocoRobo_BLUEBIT_READ_ANALOG_TOOLTIP="";i.Msg.CocoRobo_BLUEBIT_READ_ANALOG_HELPURL="http://wiki.labplus.cn/index.php?title=Bluebit";i.Msg.CocoRobo_BLUEBIT_SET_ANALOG_MESSAGE0="设置LED灯 输出%1 引脚%2";i.Msg.CocoRobo_BLUEBIT_SET_ANALOG_TOOLTIP="";i.Msg.CocoRobo_BLUEBIT_SET_ANALOG_HELPURL="http://wiki.labplus.cn/index.php?title=Bluebit";i.Msg.CocoRobo_BLUEBIT_LINE_FOLLOWER_MESSAGE0="循迹传感器 检测为黑 引脚%1";i.Msg.CocoRobo_BLUEBIT_LINE_FOLLOWER_TOOLTIP="";i.Msg.CocoRobo_BLUEBIT_LINE_FOLLOWER_HELPURL="http://wiki.labplus.cn/index.php?title=Bluebit";i.Msg.CocoRobo_BLUEBIT_SET_TRUE_HELPURL="http://wiki.labplus.cn/index.php?title=Bluebit";i.Msg.CocoRobo_BLUEBIT_SET_TRUE_MESSAGE0="打开 %1 引脚 %2";i.Msg.CocoRobo_BLUEBIT_SET_TRUE_TOOLTIP="";i.Msg.CocoRobo_BLUEBIT_SET_FALSE_HELPURL="http://wiki.labplus.cn/index.php?title=Bluebit";i.Msg.CocoRobo_BLUEBIT_SET_FALSE_MESSAGE0="关闭 %1 引脚 %2";i.Msg.CocoRobo_BLUEBIT_SET_FALSE_TOOLTIP="";i.Msg.CocoRobo_BLUEBIT_VOICE_RECORD_ON_HELPURL="http://wiki.labplus.cn/index.php?title=%E8%AF%AD%E9%9F%B3%E5%BD%95%E6%94%BE";i.Msg.CocoRobo_BLUEBIT_VOICE_RECORD_ON_TOOLTIP="";i.Msg.CocoRobo_BLUEBIT_VOICE_RECORD_ON_MESSAGE0="打开录放器 %1 %2 REC %3 PLAY %4";i.Msg.CocoRobo_BLUEBIT_VOICE_RECORD_OFF_HELPURL="http://wiki.labplus.cn/index.php?title=%E8%AF%AD%E9%9F%B3%E5%BD%95%E6%94%BE";i.Msg.CocoRobo_BLUEBIT_VOICE_RECORD_OFF_TOOLTIP="";i.Msg.CocoRobo_BLUEBIT_VOICE_RECORD_OFF_MESSAGE0="关闭录放器 %1 REC %2 PLAY %3";i.Msg.CocoRobo_BLUEBIT_VOICE_RECORD_PLAY="播放";i.Msg.CocoRobo_BLUEBIT_VOICE_RECORD_REC="录音";i.Msg.CocoRobo_BLUEBIT_IR_RECEIVE="红外探测";i.Msg.CocoRobo_BLUEBIT_SOUND="麦克风";i.Msg.CocoRobo_BLUEBIT_LINE_FOLLOWER="循迹";i.Msg.CocoRobo_BLUEBIT_VIBRATION="震动";i.Msg.CocoRobo_BLUEBIT_RFID="射频卡";i.Msg.CocoRobo_BLUEBIT_FINGERPRINT_SCANNER="指纹";i.Msg.CocoRobo_BLUEBIT_PIR="人体感应";i.Msg.CocoRobo_BLUEBIT_MAGNETIC="门磁开关";i.Msg.CocoRobo_BLUEBIT_BUTTON="按键";i.Msg.CocoRobo_BLUEBIT_FAN="风扇";i.Msg.CocoRobo_BLUEBIT_LASER="激光";i.Msg.CocoRobo_BLUEBIT_NTC_TEMP="热敏电阻";i.Msg.CocoRobo_BLUEBIT_WATER="水位";i.Msg.CocoRobo_BLUEBIT_SOIL_MOISTURE="土壤湿度";i.Msg.CocoRobo_BLUEBIT_ROTATE_DIMMER="旋钮电位器";i.Msg.CocoRobo_BLUEBIT_LINEAR_SLIDING_POTENTIOMETER="直滑电位器";i.Msg.CocoRobo_BLUEBIT_ANALOG_LIGHT="模拟光线";i.Msg.CocoRobo_BLUEBIT_LM35_TEMP="LM35温度";i.Msg.CocoRobo_BLUEBIT_MOTOR_ON_CLOCKWISE="正转";i.Msg.CocoRobo_BLUEBIT_MOTOR_ON_ANTICLOCKWISE="反转";i.Msg.CocoRobo_BLUEBIT_MOTOR_ON_HELPURL="http://wiki.labplus.cn/index.php?title=%E7%94%B5%E6%9C%BA%E9%A9%B1%E5%8A%A8";i.Msg.CocoRobo_BLUEBIT_MOTOR_ON_TOOLTIP="速度:-100~100 映射至 -1023~1023";i.Msg.CocoRobo_BLUEBIT_MOTOR_ON_MESSAGE0="打开直流电机 %1 速度 %2 引脚AIN1 %3 引脚AIN2 %4";i.Msg.CocoRobo_BLUEBIT_MOTOR_OFF_HELPURL="http://wiki.labplus.cn/index.php?title=%E7%94%B5%E6%9C%BA%E9%A9%B1%E5%8A%A8";i.Msg.CocoRobo_BLUEBIT_MOTOR_OFF_TOOLTIP="";i.Msg.CocoRobo_BLUEBIT_MOTOR_OFF_MESSAGE0="停止直流电机 %1 引脚AIN1 %2 引脚AIN2 %3";i.Msg.CocoRobo_BLUEBIT_SET_FAN_HELPURL="";i.Msg.CocoRobo_BLUEBIT_SET_FAN_TOOLTIP="";i.Msg.CocoRobo_BLUEBIT_SET_FAN_MESSAGE0="扩展板 打开风扇 %1";i.Msg.CocoRobo_BLUEBIT_SET_FAN_OFF_HELPURL="";i.Msg.CocoRobo_BLUEBIT_SET_FAN_OFF_TOOLTIP="";i.Msg.CocoRobo_BLUEBIT_SET_FAN_OFF_MESSAGE0="扩展板 关闭风扇 %1";i.Msg.CocoRobo_BLUEBIT_4BUTTON_HELPURL="http://wiki.CocoRobo_BLUEBIT.cn/index.php?title=%E5%9B%9B%E6%8C%89%E9%94%AE";i.Msg.CocoRobo_BLUEBIT_4BUTTON_TOOLTIP="";i.Msg.CocoRobo_BLUEBIT_4BUTTON_MESSAGE0="四向按键模組 引脚 %1 按键 %2 被按下";i.Msg.BLUE="A";i.Msg.GREEN="B";i.Msg.RED="C";i.Msg.YELLOW="D";i.Msg.CocoRobo_BLUEBIT_JOYSTICK_HELPURL="";i.Msg.CocoRobo_BLUEBIT_JOYSTICK_TOOLTIP="";i.Msg.CocoRobo_BLUEBIT_JOYSTICK_MESSAGE0="摇杆 引脚A0 %1 引脚A1 %2 %3 轴的值";i.Msg.CocoRobo_BLUEBIT_MOTOR_ON_I2C_HELPURL="";i.Msg.CocoRobo_BLUEBIT_MOTOR_ON_I2C_TOOLTIP="速度:0~100";i.Msg.CocoRobo_BLUEBIT_MOTOR_ON_I2C_MESSAGE0="扩展板 打开直流电机 %1 %2 速度 %3";i.Msg.CocoRobo_BLUEBIT_BLUEBIT_MOTOR_OFF_I2C_HELPURL="";i.Msg.CocoRobo_BLUEBIT_MOTOR_OFF_I2C_TOOLTIP="速度:0~100";i.Msg.CocoRobo_BLUEBIT_MOTOR_OFF_I2C_MESSAGE0="扩展板 关闭直流电机";i.Msg.CocoRobo_BLUEBIT_CODED_THREE_MOTOR_ON_I2C_HELPURL="";i.Msg.CocoRobo_BLUEBIT_CODED_THREE_MOTOR_ON_I2C_TOOLTIP="速度:-1023~1023";i.Msg.CocoRobo_BLUEBIT_CODED_THREE_MOTOR_ON_I2C_MESSAGE0="编码电机 模式 %1 拨码 %2 M1速度 %3 M2速度 %4";i.Msg.CocoRobo_BLUEBIT_CODED_STOP_MOTOR_ON_I2C_HELPURL="";i.Msg.CocoRobo_BLUEBIT_CODED_STOP_MOTOR_ON_I2C_TOOLTIP="停止编码电机转动";i.Msg.CocoRobo_BLUEBIT_CODED_STOP_MOTOR_ON_I2C_MESSAGE0="停止编码电机转动 %1";i.Msg.CocoRobo_BLUEBIT_HUM_TEM_HELPURL="";i.Msg.CocoRobo_BLUEBIT_HUM_TEM_TOOLTIP="";i.Msg.CocoRobo_BLUEBIT_HUM_TEM_MESSAGE0="I2C %1";i.Msg.CocoRobo_BLUEBIT_TEMPERATURE="温度";i.Msg.CocoRobo_BLUEBIT_HUMIDITY="湿度";i.Msg.CocoRobo_BLUEBIT_INIT_MIDI_HELPURL="";i.Msg.CocoRobo_BLUEBIT_INIT_MIDI_MESSAGE0="初始化MIDI TX引脚 %1";i.Msg.CocoRobo_BLUEBIT_INIT_MIDI_TOOLTIP="";i.Msg.CocoRobo_BLUEBIT_MIDI_VOLUME_HELPURL="";i.Msg.CocoRobo_BLUEBIT_MIDI_VOLUME_MESSAGE0="设MIDI音量 %1";i.Msg.CocoRobo_BLUEBIT_MIDI_VOLUME_TOOLTIP="音量 0~127";i.Msg.MIDI_PIANO="平台钢琴";i.Msg.MIDI_BRIGHTACOUSTICPIANO="亮音钢琴";i.Msg.MIDI_ELECTRICGRANDPIANO="电钢琴";i.Msg.MIDI_HARPSICHORD="大键琴";i.Msg.MIDI_CELESTA="钢片琴";i.Msg.MIDI_GLOCKENSPIEL="钟琴";i.Msg.MIDI_MUSICALBOX="音乐盒";i.Msg.MIDI_MARIMBA="马林巴琴";i.Msg.MIDI_XYLOPHONE="木琴";i.Msg.MIDI_TUBULARBELL="管钟";i.Msg.MIDI_DULCIMER="洋琴";i.Msg.MIDI_VIBRAPHONE="颤音琴";i.Msg.MIDI_ORGAN="音栓风琴";i.Msg.MIDI_ACOUSTIC_GUITAR="木吉他";i.Msg.MIDI_ELECTRIC_GUITAR="电吉他";i.Msg.MIDI_ACOUSTIC_BASS="民谣贝斯";i.Msg.MIDI_STRING_ENSEMBLE="弦乐合奏";i.Msg.MIDI_VIOLIN="小提琴";i.Msg.MIDI_TRUMPET="小号";i.Msg.MIDI_SAX="萨克斯";i.Msg.MIDI_STEEL_DRUMS="钢鼓";i.Msg.MIDI_LEAD="合成音主旋律";i.Msg.MIDI_PAD="合成音衬底";i.Msg.CocoRobo_BLUEBIT_MIDI_INSTRUMENT_HELPURL="";i.Msg.CocoRobo_BLUEBIT_MIDI_INSTRUMENT_MESSAGE0="设MIDI乐器 %1";i.Msg.CocoRobo_BLUEBIT_MIDI_INSTRUMENT_TOOLTIP="";i.Msg.CocoRobo_BLUEBIT_MIDI_PLAY_HELPURL="";i.Msg.CocoRobo_BLUEBIT_MIDI_PLAY_MESSAGE0="MIDI %1 音调 %2";i.Msg.CocoRobo_BLUEBIT_MIDI_PLAY_TOOLTIP="";i.Msg.CocoRobo_BLUEBIT_MATRIX_BRIGHTNESS_HELPURL="";i.Msg.CocoRobo_BLUEBIT_MATRIX_BRIGHTNESS_MESSAGE0="设点阵亮度等級 %1";i.Msg.CocoRobo_BLUEBIT_MATRIX_BRIGHTNESS_TOOLTIP="亮度等級 0~15";i.Msg.CocoRobo_BLUEBIT_MATRIX_FILL_HELPURL="";i.Msg.CocoRobo_BLUEBIT_MATRIX_FILL_MESSAGE0="点阵 %1";i.Msg.CocoRobo_BLUEBIT_MATRIX_FILL_TOOLTIP="";i.Msg.CocoRobo_BLUEBIT_MATRIX_BITMAP_HELPURL="";i.Msg.CocoRobo_BLUEBIT_MATRIX_BITMAP_MESSAGE0="设置点阵 %1 %2 %3 %4 %5 %6 %7 %8 %9 %10 %11 %12 %13 %14 %15 %16 %17 %18 %19 %20 %21 %22 %23 %24 %25 %26 %27 %28 %29 %30 %31 %32 %33 %34 %35 %36 %37 %38 %39 %40 %41 %42 %43 %44 %45 %46 %47 %48 %49 %50 %51 %52 %53 %54 %55 %56 %57 %58 %59 %60 %61 %62 %63 %64 %65 %66 %67 %68 %69 %70 %71 %72";i.Msg.CocoRobo_BLUEBIT_MATRIX_BITMAP_TOOLTIP="";i.Msg.CocoRobo_BLUEBIT_MATRIX_SHOW_HELPURL="";i.Msg.CocoRobo_BLUEBIT_MATRIX_SHOW_MESSAGE0="点阵设置生效";i.Msg.CocoRobo_BLUEBIT_MATRIX_SHOW_TOOLTIP="";i.Msg.CocoRobo_BLUEBIT_MP3_VOLUME_HELPURL="";i.Msg.CocoRobo_BLUEBIT_MP3_VOLUME_MESSAGE0="设MP3音量 %1";i.Msg.CocoRobo_BLUEBIT_MP3_VOLUME_TOOLTIP="音量:0~30";i.Msg.CocoRobo_BLUEBIT_MP3_INIT_HELPURL="";i.Msg.CocoRobo_BLUEBIT_MP3_INIT_MESSAGE0="初始化MP3 TX引脚 %1";i.Msg.CocoRobo_BLUEBIT_MP3_INIT_TOOLTIP="教科板的 tx 引脚连接音乐模組的 RXI 引脚";i.Msg.CocoRobo_BLUEBIT_MP3_VOLUME_PLUS_HELPURL="";i.Msg.CocoRobo_BLUEBIT_MP3_VOLUME_PLUS_MESSAGE0="MP3 音量 %1";i.Msg.CocoRobo_BLUEBIT_MP3_VOLUME_PLUS_TOOLTIP="";i.Msg.CocoRobo_PLUS_1="加1";i.Msg.CocoRobo_MINUS_1="減1";i.Msg.CocoRobo_BLUEBIT_MP3_PLAY_SONG_HELPURL="";i.Msg.CocoRobo_BLUEBIT_MP3_PLAY_SONG_MESSAGE0="MP3 播放第 %1 首歌";i.Msg.CocoRobo_BLUEBIT_MP3_PLAY_SONG_TOOLTIP="";i.Msg.CocoRobo_BLUEBIT_MP3_CMD_HELPURL="";i.Msg.CocoRobo_BLUEBIT_MP3_CMD_MESSAGE0="MP3 播放 %1";i.Msg.CocoRobo_BLUEBIT_MP3_CMD_TOOLTIP="";i.Msg.CocoRobo_BLUEBIT_MP3_SINGLELOOP_HELPURL="";i.Msg.CocoRobo_BLUEBIT_MP3_SINGLELOOP_MESSAGE0="MP3 单曲循环 %1";i.Msg.CocoRobo_BLUEBIT_MP3_SINGLELOOP_TOOLTIP="";i.Msg.CocoRobo_BLUEBIT_EXTIO_IOMODE_HELPURL="";i.Msg.CocoRobo_BLUEBIT_EXTIO_IOMODE_MESSAGE0="设扩展端口 IO %2 为 %1";i.Msg.CocoRobo_BLUEBIT_EXTIO_IOMODE_TOOLTIP="IO: 0~7";i.Msg.CocoRobo_BLUEBIT_EXTIO_READIO_HELPURL="";i.Msg.CocoRobo_BLUEBIT_EXTIO_READIO_MESSAGE0="扩展端口值 IO %1";i.Msg.CocoRobo_BLUEBIT_EXTIO_READIO_TOOLTIP="";i.Msg.CocoRobo_BLUEBIT_EXTIO_WRITEIO_HELPURL="";i.Msg.CocoRobo_BLUEBIT_EXTIO_WRITEIO_MESSAGE0="设扩展端口 IO %2 为 %1";i.Msg.CocoRobo_BLUEBIT_EXTIO_WRITEIO_TOOLTIP="";i.Msg.CocoRobo_LCD_OBJECT_HELPURL="";i.Msg.CocoRobo_LCD_OBJECT_MESSAGE0="LCD1602 初始化";i.Msg.CocoRobo_LCD_OBJECT_TOOLTIP="";i.Msg.CocoRobo_LCD_PRINT_HELPURL="";i.Msg.CocoRobo_LCD_PRINT_MESSAGE0="LCD1602 显示 %1";i.Msg.CocoRobo_LCD_PRINT_TOOLTIP="";i.Msg.CocoRobo_LCD_HOME_HELPURL="";i.Msg.CocoRobo_LCD_HOME_MESSAGE0="LCD1602 光标 回到原点";i.Msg.CocoRobo_LCD_HOME_TOOLTIP="";i.Msg.CocoRobo_LCD_CURSOR_HELPURL="";i.Msg.CocoRobo_LCD_CURSOR_MESSAGE0="LCD1602 光标 %1";i.Msg.CocoRobo_LCD_CURSOR_TOOLTIP="";i.Msg.CocoRobo_LCD_SET_CURSOR_HELPURL="";i.Msg.CocoRobo_LCD_SET_CURSOR_MESSAGE0="LCD1602 起始点 行 %2 列 %1";i.Msg.CocoRobo_LCD_SET_CURSOR_TOOLTIP="行列从0开始计数";i.Msg.CocoRobo_LCD_CLEAR_HELPURL="";i.Msg.CocoRobo_LCD_CLEAR_MESSAGE0="LCD1602 清屏";i.Msg.CocoRobo_LCD_CLEAR_TOOLTIP="";i.Msg.CocoRobo_LCD_CURSOR_BLINK="闪烁";i.Msg.CocoRobo_LCD_CURSOR_NO_BLINK="不闪烁";i.Msg.CocoRobo_LEFT_TO_RIGHT="从左向右";i.Msg.CocoRobo_RIGHT_TO_LEFT="从右向左";i.Msg.CocoRobo_LCD_TEXT_DIRECTION_HELPURL="";i.Msg.CocoRobo_LCD_TEXT_DIRECTION_MESSAGE0="LCD1602 文字方向 %1";i.Msg.CocoRobo_LCD_TEXT_DIRECTION_TOOLTIP="";i.Msg.CocoRobo_LCD_MOVE_HELPURL="";i.Msg.CocoRobo_LCD_MOVE_MESSAGE0="LCD1602 向 %1 滚动一格";i.Msg.CocoRobo_LCD_MOVE_TOOLTIP="";i.Msg.CocoRobo_IR_TRANS_HELPURL="";i.Msg.CocoRobo_IR_TRANS_MESSAGE0="红外发送 单字节字符串 %1 tx 引脚 %2";i.Msg.CocoRobo_IR_TRANS_TOOLTIP=`
- 单字节字符串:
- 'A', 'b', '1'等
- `;i.Msg.OUTPUT_PIN_HELPURL="";i.Msg.OUTPUT_PIN_MESSAGE0="%1";i.Msg.OUTPUT_PIN_TOOLTIP="";i.Msg.INPUT_PIN_HELPURL="";i.Msg.INPUT_PIN_MESSAGE0="%1";i.Msg.INPUT_PIN_TOOLTIP="";i.Msg.READ_ANALOG_PIN_HELPURL="";i.Msg.READ_ANALOG_PIN_MESSAGE0="%1";i.Msg.READ_ANALOG_PIN_TOOLTIP="";i.Msg.SET_DIGITAL_HELPURL="";i.Msg.SET_DIGITAL_MESSAGE0="%1";i.Msg.SET_DIGITAL_TOOLTIP="";i.Msg.SET_ANALOG_HELPURL="";i.Msg.SET_ANALOG_MESSAGE0="%1";i.Msg.SET_ANALOG_TOOLTIP="";i.Msg.ALL_PIN_HELPURL="";i.Msg.ALL_PIN_MESSAGE0="%1";i.Msg.ALL_PIN_TOOLTIP="";i.Msg.PWM_PIN_HELPURL="";i.Msg.PWM_PIN_MESSAGE0="%1";i.Msg.PWM_PIN_TOOLTIP="";i.Msg.DH11_HUM_TEM_PIN_HELPURL="";i.Msg.DH11_HUM_TEM_PIN_MESSAGE0="%1";i.Msg.DH11_HUM_TEM_PIN_TOOLTIP="";i.Msg.UART_TX_PIN_HELPURL="";i.Msg.UART_TX_PIN_MESSAGE0="%1";i.Msg.UART_TX_PIN_TOOLTIP="";i.Msg.UART_RX_PIN_HELPURL="";i.Msg.UART_RX_PIN_MESSAGE0="%1";i.Msg.UART_RX_PIN_TOOLTIP="";i.Msg.I2C_PIN_HELPURL="";i.Msg.I2C_PIN_MESSAGE0="%1";i.Msg.I2C_PIN_TOOLTIP="";i.Msg.MQTT_COMMON_SETUP_HELPURL="https://CocoRobo.readthedocs.io/zh/master/library/cocorobo/umqtt.simple.html?highlight=mqtt#MQTTClient";i.Msg.MQTT_COMMON_SETUP_MESSAGE0="MQTT %1 client_id %2 server %3 port %4 user %5 password %6 keepalive %7";i.Msg.MQTT_COMMON_SETUP_TOOLTIP="";i.Msg.MQTT_TENCENT_SETUP_HELPURL="https://CocoRobo.readthedocs.io/zh/master/library/cocorobo/umqtt.simple.html?highlight=mqtt#MQTTClient";i.Msg.MQTT_TENCENT_SETUP_MESSAGE0="MQTT 腾讯物联网 %1 服务器 %2 Port %3 AppId %4 Device %5 -- 传出参数 -- %6 ReportTopic %7 ControlTopic %8";i.Msg.MQTT_TENCENT_SETUP_TOOLTIP="";i.Msg.MQTT_TENCENT_SETUPS_HELPURL="https://CocoRobo.readthedocs.io/zh/master/library/cocorobo/umqtt.simple.html?highlight=mqtt#MQTTClient";i.Msg.MQTT_TENCENT_SETUPS_MESSAGE0="MQTT 腾讯物联网 %1 服务器 %2 Port %3 AppId %4 Device %5 -- 传出参数 -- %6 ReportTopic %7 ControlTopic %8";i.Msg.MQTT_TENCENT_SETUPS_TOOLTIP="";i.Msg.MQTT_SETUP_HELPURL="https://CocoRobo.readthedocs.io/zh/master/tutorials/advance/iot/mqtt.html#id2";i.Msg.MQTT_SETUP_MESSAGE0="MQTT-Easy IoT %1 服务器 %2 Client ID %5 Iot_id %3 Iot_pwd %4";i.Msg.MQTT_SETUP_TOOLTIP="";i.Msg.MQTT_CONNECT_HELPURL="https://CocoRobo.readthedocs.io/zh/master/tutorials/advance/iot/mqtt.html#id2";i.Msg.MQTT_CONNECT_MESSAGE0="连接 MQTT";i.Msg.MQTT_CONNECT_TOOLTIP="";i.Msg.MQTT_PUBLISH_HELPURL="https://CocoRobo.readthedocs.io/zh/master/tutorials/advance/iot/mqtt.html#id2";i.Msg.MQTT_PUBLISH_MESSAGE0="发布 %1 至 主题 %2";i.Msg.MQTT_PUBLISH_TOOLTIP="";i.Msg.MQTT_REC_FROM_TOPIC_HELPURL="https://CocoRobo.readthedocs.io/zh/master/tutorials/advance/iot/mqtt.html#id2";i.Msg.MQTT_REC_FROM_TOPIC_MESSAGE0="当从主题 %1 接收到 %2 时";i.Msg.MQTT_REC_FROM_TOPIC_TOOLTIP="";i.Msg.MQTT_RECEIVE_HELPURL="https://CocoRobo.readthedocs.io/zh/master/tutorials/advance/iot/mqtt.html#id2";i.Msg.MQTT_RECEIVE_MESSAGE0="当从主题 %1 接收到 %2 时";i.Msg.MQTT_RECEIVE_TOOLTIP='参数"主题"只接受变量';i.Msg.MQTT_WAIT_MSG_HELPURL="https://CocoRobo.readthedocs.io/zh/master/tutorials/advance/iot/mqtt.html#id2";i.Msg.MQTT_WAIT_MSG_MESSAGE0="等待主题消息 以 %1 模式";i.Msg.MQTT_WAIT_MSG_TOOLTIP="建议放在'一直重复'中运行";i.Msg.MQTT_DISCONNECT_HELPURL="https://CocoRobo.readthedocs.io/zh/master/tutorials/advance/iot/mqtt.html#id2";i.Msg.MQTT_DISCONNECT_MESSAGE0="MQTT 断开连接";i.Msg.MQTT_DISCONNECT_TOOLTIP="";i.Msg.MQTT_LAST_WILL_HELPURL="https://CocoRobo.readthedocs.io/zh/master/library/cocorobo/umqtt.simple.html?highlight=mqtt#MQTTClient.set_last_will";i.Msg.MQTT_LAST_WILL_MESSAGE0="设置 MQTT 主题 %2 离线消息 %1";i.Msg.MQTT_LAST_WILL_TOOLTIP="设置 MQTT last will 消息。应该在 connect() 之前调用。";i.Msg.MQTT_LAST_WILL_HELPURL="https://CocoRobo.readthedocs.io/zh/master/library/cocorobo/umqtt.simple.html?highlight=mqtt#MQTTClient.set_last_will";i.Msg.MQTT_LAST_WILL_MESSAGE0="设置 MQTT 主题 %2 离线消息 %1";i.Msg.MQTT_LAST_WILL_TOOLTIP="设置 MQTT last will 消息。应该在 connect() 之前调用。";i.Msg.CocoRobo_IR_RECV_HELPURL="";i.Msg.CocoRobo_IR_RECV_MESSAGE0="红外接收 整型 rx 引脚 %1";i.Msg.CocoRobo_IR_RECV_TOOLTIP="第一次接收总为空";i.Msg.CocoRobo_BLUEBIT_OLCD_PRINT_HELPURL="";i.Msg.CocoRobo_BLUEBIT_OLCD_PRINT_MESSAGE0="bluebit LCD 显示 %1 x %2 y %3";i.Msg.CocoRobo_BLUEBIT_OLCD_PRINT_TOOLTIP="";i.Msg.CocoRobo_BLUEBIT_OLCD_INIT_HELPURL="";i.Msg.CocoRobo_BLUEBIT_OLCD_INIT_MESSAGE0="bluebit LCD 初始化 tx %1 rx %2";i.Msg.CocoRobo_BLUEBIT_OLCD_INIT_TOOLTIP="";i.Msg.CocoRobo_BLUEBIT_OLCD_CLEAR_HELPURL="";i.Msg.CocoRobo_BLUEBIT_OLCD_CLEAR_MESSAGE0="bluebit LCD 清空";i.Msg.CocoRobo_BLUEBIT_OLCD_CLEAR_TOOLTIP="";i.Msg.CocoRobo_BLUEBIT_OLCD_BMP_HELPURL="";i.Msg.CocoRobo_BLUEBIT_OLCD_BMP_MESSAGE0="bluebit LCD 显示图像 x %1 y %2 宽 %3 高 %4 16进制图像数据 %5";i.Msg.CocoRobo_BLUEBIT_OLCD_BMP_TOOLTIP="";i.Msg.CocoRobo_bme280_hum_tem_pre_MESSAGE0="BME280 %1";i.Msg.CocoRobo_bme280_hum_tem_pre_TOOLTIP="气压单位Pa, 温度单位摄氏度, 环境湿度单位%";i.Msg.CocoRobobox_sound_MESSAGE0="声音值";i.Msg.CocoRobobox_sound_TOOLTIP="采样数据,为0~4095。";i.Msg.CocoRobobox_sound_HELPURL="https://CocoRobo.readthedocs.io/zh/doc_CocoRobobox/CocoRoboBox/lib/CocoRobo.html";i.Msg.CocoRoboBOX_SLIDER_HELPURL="https://CocoRobo.readthedocs.io/zh/doc_CocoRobobox/CocoRoboBox/lib/CocoRobo_box.html#CocoRobo-box";i.Msg.CocoRoboBOX_SLIDER_MESSAGE0="滑杆";i.Msg.CocoRoboBOX_SLIDER_TOOLTIP="返回滑杆电阻采样值。范围0~4095。";i.Msg.CocoRoboBOX_5BUTTON_HELPURL="https://CocoRobo.readthedocs.io/zh/doc_CocoRobobox/CocoRoboBox/lib/CocoRobo_box.html#CocoRobo-box";i.Msg.CocoRoboBOX_5BUTTON_MESSAGE0="五向按键%1";i.Msg.CocoRoboBOX_5BUTTON_TOOLTIP="";i.Msg.CocoRoboBOX_MOTOR_HELPURL="https://CocoRobo.readthedocs.io/zh/doc_CocoRobobox/CocoRoboBox/lib/CocoRobo_box.html#CocoRobo-box";i.Msg.CocoRoboBOX_MOTOR_MESSAGE0="马达 速度%1";i.Msg.CocoRoboBOX_MOTOR_TOOLTIP="马达速度,范围±100。正值表示正转,负值则反。";i.Msg.CocoRoboBOX_ULTRASONIC_HELPURL="https://CocoRobo.readthedocs.io/zh/doc_CocoRobobox/CocoRoboBox/lib/CocoRobo_box.html#CocoRobo_box.get_key";i.Msg.CocoRoboBOX_ULTRASONIC_MESSAGE0="超声波";i.Msg.CocoRoboBOX_ULTRASONIC_TOOLTIP="超声波测距,获取超声波传感器测距值,单位cm。范围3~340CM";i.Msg.CocoRoboBOX_THEHUMANBODYINFRARE_HELPURL="https://CocoRobo.readthedocs.io/zh/doc_CocoRobobox/CocoRoboBox/lib/CocoRobo_box.html#CocoRobo_box.get_key";i.Msg.CocoRoboBOX_THEHUMANBODYINFRARE_MESSAGE0="人体红外";i.Msg.CocoRoboBOX_THEHUMANBODYINFRARE_TOOLTIP="返回人体红外触发值。当为1时,表示已触发;当为0时,表示未触发。";i.Msg.CocoRoboBOX_RGB_pixel_HELPURL="";i.Msg.CocoRoboBOX_RGB_pixel_MESSAGE0="设定第 %1列 %2行 R%3 G%4 B%5";i.Msg.CocoRoboBOX_RGB_pixel_TOOLTIP="设定第多少列,行的RGB顏色";i.Msg.CocoRoboBOX_RGB_get_pixel_HELPURL="";i.Msg.CocoRoboBOX_RGB_get_pixel_MESSAGE0="返回 第%1列 %2行 RGB颜色";i.Msg.CocoRoboBOX_RGB_get_pixel_TOOLTIP="返回第多少列,行位置的RGB颜色";i.Msg.CocoRoboBOX_RGB_ImageText_HELPURL="";i.Msg.CocoRoboBOX_RGB_ImageText_MESSAGE0="滚动显示文本%1 速度%2";i.Msg.CocoRoboBOX_RGB_ImageText_TOOLTIP="滚动显示文本,亮度为0不亮,9最亮";i.Msg.CocoRoboBOX_RGB_Image_HELPURL="";i.Msg.CocoRoboBOX_RGB_Image_MESSAGE0="显示图像%1";i.Msg.CocoRoboBOX_RGB_Image_TOOLTIP="显示图像";i.Msg.CocoRoboBOX_RGB_SetImage_HELPURL="";i.Msg.CocoRoboBOX_RGB_SetImage_MESSAGE0="创建图像 %1 第一行%2第二行%3第三行%4第四行%5第五行%6";i.Msg.CocoRoboBOX_RGB_SetImage_TOOLTIP="创建新图像,每行每位数代表第几位灯,默认红色;亮度为0不亮,9最亮。";i.Msg.CocoRoboBOX_RGB_SHOW_IMAGE_MESSAGE0="显示图像/文本 %1";i.Msg.CocoRoboBOX_RGB_SHOW_IMAGE_TOOLTIP="显示图像或文本消息。";i.Msg.CocoRoboBOX_RGB_SHOW_IMAGE_HELPURL="";i.Msg.CocoRoboBOX_RGB_SHOW_IMAGEImport_MESSAGE0="显示图像 %1";i.Msg.CocoRoboBOX_RGB_SHOW_IMAGEImport_TOOLTIP="显示图像。";i.Msg.CocoRoboBOX_RGB_SHOW_IMAGEImport_HELPURL="";i.Msg.CocoRoboBOX_RGB_SHOW_IMAGE_Copy_MESSAGE0="复制图像 %1";i.Msg.CocoRoboBOX_RGB_SHOW_IMAGE_Copy_TOOLTIP="复制图像。";i.Msg.CocoRoboBOX_RGB_SHOW_IMAGE_Copy_HELPURL="";i.Msg.CocoRoboBOX_RGB_ImageCot_HELPURL="";i.Msg.CocoRoboBOX_RGB_ImageCot_MESSAGE0="切剪图像%1 列%2 行%3 宽%4 高%5";i.Msg.CocoRoboBOX_RGB_ImageCot_TOOLTIP="切剪图像";i.Msg.CocoRoboBOX_RGB_IMAGE_BUILTINS_MESSAGE0="内置图像 %1";i.Msg.CocoRoboBOX_RGB_IMAGE_BUILTINS_TOOLTIP="选择一个内置的图像。";i.Msg.CocoRoboBOX_RGB_IMAGE_BUILTINS_HELPURL="";i.Msg.CocoRoboBOX_RGB_IMAGE_SHIFT_MESSAGE0="平移图像 %1 %2 %3 位";i.Msg.CocoRoboBOX_RGB_IMAGE_SHIFT_TOOLTIP="向特定方向移动图像,并返回移动后的结果。";i.Msg.CocoRoboBOX_RGB_IMAGE_SHIFT_HELPURL="";i.Msg.CocoRoboBOX_RGB_clear_HELPURL="";i.Msg.CocoRoboBOX_RGB_clear_MESSAGE0="关闭所有 RGB 灯";i.Msg.CocoRoboBOX_RGB_clear_TOOLTIP="";i.Msg.CocoRoboBOX_RGB_pixel_return_HELPURL="";i.Msg.CocoRoboBOX_RGB_pixel_return_MESSAGE0="返回第 %1列 %2行 颜色";i.Msg.CocoRoboBOX_RGB_pixel_return_TOOLTIP="返回第多少列,行的RGB顏色";i.Msg.CocoRoboBOX_TRIAXIAL_ACCELERATION_HELPURL="https://CocoRobo.readthedocs.io/zh/doc_CocoRobobox/CocoRobo_classroom_kit/lib/CocoRobo.html";i.Msg.CocoRoboBOX_TRIAXIAL_ACCELERATION_MESSAGE0="%1轴加速度";i.Msg.CocoRoboBOX_TRIAXIAL_ACCELERATION_TOOLTIP="单位g,范围-2~+2g。";i.Msg.CocoRoboBOX_TRIAXIAL_AUGULAR_VELOCITY_HELPURL="https://CocoRobo.readthedocs.io/zh/doc_CocoRobobox/CocoRobo_classroom_kit/lib/CocoRobo.html";i.Msg.CocoRoboBOX_TRIAXIAL_AUGULAR_VELOCITY_MESSAGE0="%1轴角速度";i.Msg.CocoRoboBOX_TRIAXIAL_AUGULAR_VELOCITY_TOOLTIP="范围±500°/秒";i.Msg.CocoRoboBOX_EULER_ANGLE_HELPURL="https://CocoRobo.readthedocs.io/zh/doc_CocoRobobox/CocoRobo_classroom_kit/lib/CocoRobo.html";i.Msg.CocoRoboBOX_EULER_ANGLE_MESSAGE0="%1欧拉角";i.Msg.CocoRoboBOX_EULER_ANGLE_TOOLTIP="返回当前欧拉角(Pitch,Roll,Yaw),单位角度";i.Msg.CocoRoboBOX_QUATERNION_HELPURL="https://CocoRobo.readthedocs.io/zh/doc_CocoRobobox/CocoRobo_classroom_kit/lib/CocoRobo.html";i.Msg.CocoRoboBOX_QUATERNION_MESSAGE0="%1四元数";i.Msg.CocoRoboBOX_QUATERNION_TOOLTIP="返回当前四元数(w,x,y,z)";i.Msg.LIST_FIRST_INDEX_HELPURL="";i.Msg.LIST_FIRST_INDEX_MESSAGE0="项 %1 在列表 %2 %3 出现的位置";i.Msg.LIST_FIRST_INDEX_TOOLTIP="返回指定字符串在列表中%3出现的位置";i.Msg.CocoRobo_AI_LCD_INIT_HELPURL="https://CocoRobo.readthedocs.io/zh/doc_CocoRobobox/CocoRobo_classroom_kit/lib/CocoRobo_classroom_kit.html#CocoRobo_classroom_kit.lcd.init";i.Msg.CocoRobo_AI_LCD_INIT_MESSAGE0="屏幕 初始化 ";i.Msg.CocoRobo_AI_LCD_INIT_TOOLTIP="初始化 屏幕显示";i.Msg.CocoRobo_AI_SENSOR_RESET_HELPURL="https://maixpy.sipeed.com/zh/libs/machine_vision/sensor.html#%E5%8D%95%E7%9B%AE%E6%91%84%E5%83%8F%E5%A4%B4%E9%87%8D%E7%BD%AE%E5%87%BD%E6%95%B0";i.Msg.CocoRobo_AI_SENSOR_RESET_MESSAGE0="摄像头 初始化";i.Msg.CocoRobo_AI_SENSOR_RESET_TOOLTIP="初始化单目摄像头";i.Msg.CocoRobo_AI_SENSOR_ENABLE_HELPURL="https://maixpy.sipeed.com/zh/libs/machine_vision/sensor.html#%E8%8E%B7%E5%8F%96%E5%9B%BE%E5%83%8F";i.Msg.CocoRobo_AI_SENSOR_ENABLE_MESSAGE0="摄像头%1";i.Msg.CocoRobo_AI_SENSOR_ENABLE_TOOLTIP="获取图像";i.Msg.CocoRobo_AI_LCD_TEXT_HELPURL="https://maixpy.sipeed.com/zh/libs/machine_vision/lcd.html#%E4%BE%8B%E7%A8%8B-1%EF%BC%9A-%E6%98%BE%E7%A4%BA%E8%8B%B1%E6%96%87";i.Msg.CocoRobo_AI_LCD_TEXT_MESSAGE0="显示文本 x %1 y %2 内容 %3";i.Msg.CocoRobo_AI_LCD_TEXT_TOOLTIP="仅支持字母和数字";i.Msg.CocoRobo_AI_SENSOR_SKIP_HELPURL="https://maixpy.sipeed.com/zh/libs/machine_vision/sensor.html#%E8%B7%B3%E5%B8%A7";i.Msg.CocoRobo_AI_SENSOR_SKIP_MESSAGE0="摄像头 跳过帧数%1 毫秒%2内的图像 ";i.Msg.CocoRobo_AI_SENSOR_SKIP_TOOLTIP="摄像头跳过指定帧数或者跳过指定时间内的图像";i.Msg.CocoRobo_AI_SENSOR_RETURN_HELPURL="https://maixpy.sipeed.com/zh/libs/machine_vision/sensor.html#%E5%88%86%E8%BE%A8%E7%8E%87%E5%AE%BD%E5%BA%A6";i.Msg.CocoRobo_AI_SENSOR_RETURN_MESSAGE0="测 摄像头 获取%1";i.Msg.CocoRobo_AI_SENSOR_RETURN_TOOLTIP="(AI)摄像头返回参数(宽高,图像帧的格式,图像帧的大小)";i.Msg.CocoRobo_AI_SENSOR_SETS_HELPURL="https://maixpy.sipeed.com/zh/libs/machine_vision/sensor.html#%E8%AE%BE%E7%BD%AE%E5%AF%B9%E6%AF%94%E5%BA%A6";i.Msg.CocoRobo_AI_SENSOR_SETS_MESSAGE0="摄像头 设置%1 为%2";i.Msg.CocoRobo_AI_SENSOR_SETS_TOOLTIP="设置摄像头对比度,亮度,饱和度范围为[-2,+2]";i.Msg.CocoRobo_AI_SENSOR_AUTO_GAIN_HELPURL="https://maixpy.sipeed.com/zh/libs/machine_vision/sensor.html#%E8%AE%BE%E7%BD%AE%E8%87%AA%E5%8A%A8%E5%A2%9E%E7%9B%8A";i.Msg.CocoRobo_AI_SENSOR_AUTO_GAIN_MESSAGE0="摄像头 自动增益%1";i.Msg.CocoRobo_AI_SENSOR_AUTO_GAIN_TOOLTIP="1开启摄像头自动增益 0关闭摄像头自动增益";i.Msg.CocoRobo_AI_SENSOR_AUTO_WHITEBAL_HELPURL="https://maixpy.sipeed.com/zh/libs/machine_vision/sensor.html#%E8%AE%BE%E7%BD%AE%E8%87%AA%E5%8A%A8%E5%A2%9E%E7%9B%8A";i.Msg.CocoRobo_AI_SENSOR_AUTO_WHITEBAL_MESSAGE0="摄像头 白平衡%1";i.Msg.CocoRobo_AI_SENSOR_AUTO_WHITEBAL_TOOLTIP="设置摄像自动白平衡模式,默认打开。True为打开, False为关闭自动白平衡。若您想追踪颜色,则需关闭白平衡。";i.Msg.CocoRobo_AI_SENSOR_LEVEL_MI_HELPURL="https://maixpy.sipeed.com/zh/libs/machine_vision/sensor.html#%E8%AE%BE%E7%BD%AE%E6%B0%B4%E5%B9%B3%E9%95%9C%E5%83%8F";i.Msg.CocoRobo_AI_SENSOR_LEVEL_MI_MESSAGE0="摄像头 %1 %2";i.Msg.CocoRobo_AI_SENSOR_LEVEL_MI_TOOLTIP="1 表示开启水平镜像 0 表示关闭水平镜像";i.Msg.CocoRobo_AI_LCD_DISPLAY_HELPURL="https://CocoRobo.readthedocs.io/zh/doc_CocoRobobox/CocoRobo_classroom_kit/lib/CocoRobo_classroom_kit.html#CocoRobo_classroom_kit.lcd.display";i.Msg.CocoRobo_AI_LCD_DISPLAY_MESSAGE0="屏幕 显示生效";i.Msg.CocoRobo_AI_LCD_DISPLAY_TOOLTIP="可以在液晶屏上显示";i.Msg.CocoRobo_AI_LCD_DISPLAY_SIZE_HELPURL="https://CocoRobo.readthedocs.io/zh/doc_CocoRobobox/CocoRobo_classroom_kit/lib/CocoRobo_classroom_kit.html#CocoRobo_classroom_kit.lcd.display";i.Msg.CocoRobo_AI_LCD_DISPLAY_SIZE_MESSAGE0="图像 显示生效 x%1 y%2 宽%3 高%4";i.Msg.CocoRobo_AI_LCD_DISPLAY_SIZE_TOOLTIP="可以在液晶屏上显示一张图片";i.Msg.CocoRobo_AI_SENSOR_IMAGES_HELPURL="https://maixpy.sipeed.com/zh/libs/machine_vision/sensor.html#%E8%8E%B7%E5%8F%96%E5%9B%BE%E5%83%8F";i.Msg.CocoRobo_AI_SENSOR_IMAGES_MESSAGE0="摄像头 获取图像";i.Msg.CocoRobo_AI_SENSOR_IMAGES_TOOLTIP="控制摄像头捕捉图像";i.Msg.CocoRobo_AI_IMAGE_FACEDETECT_HELPURL="https://maixpy.sipeed.com/zh/libs/Maix/kpu.html#%E8%BF%90%E8%A1%8Cyolo2%E7%BD%91%E7%BB%9C";i.Msg.CocoRobo_AI_IMAGE_FACEDETECT_MESSAGE0="人脸检测";i.Msg.CocoRobo_AI_IMAGE_FACEDETECT_TOOLTIP="";i.Msg.CocoRobo_AI_LCD_SHOW_REC_HELPURL="https://CocoRobo.readthedocs.io/zh/doc_CocoRobobox/CocoRobo_classroom_kit/lib/CocoRobo_classroom_kit.html#CocoRobo_classroom_kit.image.draw_rectangle";i.Msg.CocoRobo_AI_LCD_SHOW_REC_MESSAGE0="矩形%1 x%3 y%4 宽%5 高%6 颜色为 R%7 G%8 B%9 加粗%2";i.Msg.CocoRobo_AI_LCD_SHOW_REC_TOOLTIP="在图像上绘制矩形";i.Msg.CocoRobo_AI_LCD_SHOW_STRING_MESSAGE0="线条 x1%1 y1%2 到x2%3 y2%4 颜色为R%5 G%6 B%7 加粗%8";i.Msg.CocoRobo_AI_LCD_SHOW_STRING_TOOLTIP="在图像上绘制线条";i.Msg.CocoRobo_AI_LCD_SHOW_STRING_HELPURL="https://CocoRobo.readthedocs.io/zh/doc_CocoRobobox/CocoRobo_classroom_kit/lib/CocoRobo_classroom_kit.html#CocoRobo_classroom_kit.image.draw_rectangle";i.Msg.CocoRobo_AI_LCD_CLEAR_ALL_MESSAGE0="屏幕 显示清空";i.Msg.CocoRobo_AI_LCD_CLEAR_ALL_TOOLTIP="将液晶屏清空为黑色或者指定的颜色";i.Msg.CocoRobo_AI_LCD_CLEAR_ALL_HELPURL="https://CocoRobo.readthedocs.io/zh/doc_CocoRobobox/CocoRobo_classroom_kit/lib/CocoRobo_classroom_kit.html#CocoRobo_classroom_kit.image.draw_rectangle";i.Msg.CocoRobo_AI_LCD_return_colour_MESSAGE0="LCD 返回 x%1 y%2 颜色";i.Msg.CocoRobo_AI_LCD_return_colour_TOOLTIP="返回某个坐标点的颜色";i.Msg.CocoRobo_AI_LCD_return_colour_HELPURL="https://CocoRobo.readthedocs.io/zh/doc_CocoRobobox/CocoRobo_classroom_kit/lib/CocoRobo_classroom_kit.html#CocoRobo_classroom_kit.image.draw_rectangle";i.Msg.CocoRobo_AI_LCD_SHOW_CIRCLE_MESSAGE0="圆形%1 x%2 y%3 半径%4 颜色为 R%5 G%6 B%7 加粗%8";i.Msg.CocoRobo_AI_LCD_SHOW_CIRCLE_TOOLTIP="在图像上绘制圆形";i.Msg.CocoRobo_AI_LCD_SHOW_CIRCLE_HELPURL="https://CocoRobo.readthedocs.io/zh/doc_CocoRobobox/CocoRobo_classroom_kit/lib/CocoRobo_classroom_kit.html#CocoRobo_classroom_kit.image.draw_rectangle";i.Msg.CocoRobo_AI_LCD_TEXT_MOST_HELPURL="https://CocoRobo.readthedocs.io/zh/doc_CocoRobobox/CocoRobo_classroom_kit/lib/CocoRobo_classroom_kit.html#CocoRobo_classroom_kit.image.draw_rectangle";i.Msg.CocoRobo_AI_LCD_TEXT_MOST_MESSAGE0="显示文本 x %1 y %2 内容 %3 颜色为R%4 G%5 B%6 字号%7";i.Msg.CocoRobo_AI_LCD_TEXT_MOST_TOOLTIP="仅支持字母和数字";i.Msg.CocoRobo_AI_LCD_SHOW_TEN_STRING_MESSAGE0="十字线 x%1 y%2 颜色为R%3 G%4 B%5 尺寸%6 加粗%7";i.Msg.CocoRobo_AI_LCD_SHOW_TEN_STRING_TOOLTIP="在图像上绘制十字线";i.Msg.CocoRobo_AI_LCD_SHOW_TEN_STRING_HELPURL="https://CocoRobo.readthedocs.io/zh/doc_CocoRobobox/CocoRobo_classroom_kit/lib/CocoRobo_classroom_kit.html#CocoRobo_classroom_kit.image.draw_rectangle";i.Msg.CocoRobo_AI_LCD_SHOW_ARROWS_MESSAGE0="箭头 x1%1 y1%2 到x2%3 y2%4 颜色为R%5 G%6 B%7 加粗%8";i.Msg.CocoRobo_AI_LCD_SHOW_ARROWS_TOOLTIP="在图像上绘制一个箭头";i.Msg.CocoRobo_AI_LCD_SHOW_ARROWS_HELPURL="https://CocoRobo.readthedocs.io/zh/doc_CocoRobobox/CocoRobo_classroom_kit/lib/CocoRobo_classroom_kit.html#CocoRobo_classroom_kit.image.draw_rectangle";i.Msg.CocoRobo_AI_LCD_SHOW_IMAGE_PIRCTURE_HELPURL=".https://CocoRobo.readthedocs.io/zh/doc_CocoRobobox/CocoRobo_classroom_kit/lib/CocoRobo_classroom_kit.html#CocoRobo_classroom_kit.lcd.display";i.Msg.CocoRobo_AI_LCD_SHOW_IMAGE_PIRCTURE_MESSAGE0="显示图像 路径%1";i.Msg.CocoRobo_AI_LCD_SHOW_IMAGE_PIRCTURE_TOOLTIP="显示图像";i.Msg.CocoRobo_AI_LCD_SHOW_IMAGE_HEAT_HELPURL="https://CocoRobo.readthedocs.io/zh/doc_CocoRobobox/CocoRobo_classroom_kit/lib/CocoRobo_classroom_kit.html#CocoRobo_classroom_kit.image.invert";i.Msg.CocoRobo_AI_LCD_SHOW_IMAGE_HEAT_MESSAGE0="图像转换为%1";i.Msg.CocoRobo_AI_LCD_SHOW_IMAGE_HEAT_TOOLTIP="黑白翻转是将二进制图像0(黑色)变为1(白色),1(白色)变为0(黑色),非常快速地翻转二进制图像中的所有像素值。";i.Msg.CocoRobo_AI_LCD_SHOW_IMAGE_DESCARTES_HELPURL="https://CocoRobo.readthedocs.io/zh/doc_CocoRobobox/CocoRobo_classroom_kit/lib/CocoRobo_classroom_kit.html#CocoRobo_classroom_kit.image.linpolar";i.Msg.CocoRobo_AI_LCD_SHOW_IMAGE_DESCARTES_MESSAGE0="图像 从笛卡尔坐标到%1 坐标重新投影 反向%2";i.Msg.CocoRobo_AI_LCD_SHOW_IMAGE_DESCARTES_TOOLTIP="";i.Msg.CocoRobo_AI_LCD_SHOW_IMAGE_EROSION_HELPURL="https://CocoRobo.readthedocs.io/zh/doc_CocoRobobox/CocoRobo_classroom_kit/lib/CocoRobo_classroom_kit.html#CocoRobo_classroom_kit.image.dilate";i.Msg.CocoRobo_AI_LCD_SHOW_IMAGE_EROSION_MESSAGE0="图像 膨胀 级别%1";i.Msg.CocoRobo_AI_LCD_SHOW_IMAGE_EROSION_TOOLTIP="膨胀就是对图像高亮部分进行“领域扩张”,效果图拥有比原图更大的高亮区域。";i.Msg.CocoRobo_AI_LCD_SHOW_IMAGE_MIDDLE_HELPURL="https://CocoRobo.readthedocs.io/zh/doc_CocoRobobox/CocoRobo_classroom_kit/lib/CocoRobo_classroom_kit.html#CocoRobo_classroom_kit.image.midpoint";i.Msg.CocoRobo_AI_LCD_SHOW_IMAGE_MIDDLE_MESSAGE0="图像 中点滤波 级别%1 滤波%2";i.Msg.CocoRobo_AI_LCD_SHOW_IMAGE_MIDDLE_TOOLTIP="控制图像混合的最小/最大程度。0只适用于最小滤波,1仅用于最大滤波。";i.Msg.CocoRobo_AI_LCD_SHOW_IMAGE_MODE_HELPURL="https://CocoRobo.readthedocs.io/zh/doc_CocoRobobox/CocoRobo_classroom_kit/lib/CocoRobo_classroom_kit.html#CocoRobo_classroom_kit.image.modehttps://CocoRobo.readthedocs.io/zh/doc_CocoRobobox/CocoRobo_classroom_kit/lib/CocoRobo_classroom_kit.html#CocoRobo_classroom_kit.image.mode";i.Msg.CocoRobo_AI_LCD_SHOW_IMAGE_MODE_MESSAGE0="图像 众数滤波 级别%1";i.Msg.CocoRobo_AI_LCD_SHOW_IMAGE_MODE_TOOLTIP="在图像上运行众数滤波,用相邻像素的模式替换每个像素。";i.Msg.CocoRobo_AI_LCD_SHOW_IMAGE_INDISTINCT_HELPURL="https://CocoRobo.readthedocs.io/zh/doc_CocoRobobox/CocoRobo_classroom_kit/lib/CocoRobo_classroom_kit.html#CocoRobo_classroom_kit.image.mean";i.Msg.CocoRobo_AI_LCD_SHOW_IMAGE_INDISTINCT_MESSAGE0="图像 模糊滤波 级别%1";i.Msg.CocoRobo_AI_LCD_SHOW_IMAGE_INDISTINCT_TOOLTIP="使用盒式滤波器的标准均值模糊滤波。";i.Msg.CocoRobo_AI_LCD_SHOW_IMAGE_CARTOON_HELPURL="https://CocoRobo.readthedocs.io/zh/doc_CocoRobobox/CocoRobo_classroom_kit/lib/CocoRobo_classroom_kit.html#CocoRobo_classroom_kit.image.cartoon";i.Msg.CocoRobo_AI_LCD_SHOW_IMAGE_CARTOON_MESSAGE0="图像 卡通化 级别%1 起始像素差异%2 相邻像素差异%3";i.Msg.CocoRobo_AI_LCD_SHOW_IMAGE_CARTOON_TOOLTIP="使图像卡通化";i.Msg.CocoRobo_AI_LCD_SHOW_IMAGE_3D_HELPURL="https://CocoRobo.readthedocs.io/zh/doc_CocoRobobox/CocoRobo_classroom_kit/lib/CocoRobo_classroom_kit.html#CocoRobo_classroom_kit.image.rotation_corr";i.Msg.CocoRobo_AI_LCD_SHOW_IMAGE_3D_MESSAGE0="图像 3D旋转 上下旋转%1 左右旋转%2 度数%3 左右移动%4 上下移动%5 缩放%6";i.Msg.CocoRobo_AI_LCD_SHOW_IMAGE_3D_TOOLTIP="通过执行帧缓冲区的3D旋转来纠正图像中的透视问题。";i.Msg.CocoRobo_AI_LCD_SHOW_ECTYPE_HELPURL="https://CocoRobo.readthedocs.io/zh/doc_CocoRobobox/CocoRobo_classroom_kit/lib/CocoRobo_classroom_kit.html#CocoRobo_classroom_kit.image.copy";i.Msg.CocoRobo_AI_LCD_SHOW_ECTYPE_MESSAGE0="将图像的副本保存到SD卡 图像名%1 图像显示区域 x%2 y%3 宽%4 高%5";i.Msg.CocoRobo_AI_LCD_SHOW_ECTYPE_TOOLTIP="将图像的副本保存到SD卡";i.Msg.CocoRobo_AI_LCD_SHOW_ECTYPE_SHOW_HELPURL="https://CocoRobo.readthedocs.io/zh/doc_CocoRobobox/CocoRobo_classroom_kit/lib/CocoRobo_classroom_kit.html#CocoRobo_classroom_kit.image.save";i.Msg.CocoRobo_AI_LCD_SHOW_ECTYPE_SHOW_MESSAGE0="创建一个图像对象的副本 复制图像区域 x%1 y%2 宽%3 高%4";i.Msg.CocoRobo_AI_LCD_SHOW_ECTYPE_SHOW_TOOLTIP="创建一个图像对象的副本";i.Msg.CocoRobo_AI2_FACE_TRACKING_HELPURL="https://CocoRobo.readthedocs.io/zh/doc_CocoRobobox/CocoRobo_classroom_kit/lib/CocoRobo_classroom_kit.html#CocoRobo_classroom_kit.model.select_model";i.Msg.CocoRobo_AI2_FACE_TRACKING_MESSAGE0="选择训练模型 人脸";i.Msg.CocoRobo_AI2_FACE_TRACKING_TOOLTIP="可以识别并且追踪人脸,显示人脸大小等";i.Msg.CocoRobo_AI2_PHOTOGRAPH_TRACKING_HELPURL="https://CocoRobo.readthedocs.io/zh/doc_CocoRobobox/CocoRobo_classroom_kit/lib/CocoRobo_classroom_kit.html#CocoRobo_classroom_kit.model.select_model";i.Msg.CocoRobo_AI2_PHOTOGRAPH_TRACKING_MESSAGE0="调用摄像头进行 人脸检测";i.Msg.CocoRobo_AI2_PHOTOGRAPH_TRACKING_TOOLTIP="可以识别并且追踪人脸,显示人脸大小等";i.Msg.CocoRobo_AI2_RESULT_FACE_HELPURL="https://CocoRobo.readthedocs.io/zh/doc_CocoRobobox/CocoRobo_classroom_kit/lib/CocoRobo_classroom_kit.html#CocoRobo_classroom_kit.model.select_model";i.Msg.CocoRobo_AI2_RESULT_FACE_MESSAGE0="获取识别后人脸的 所有参数";i.Msg.CocoRobo_AI2_RESULT_FACE_TOOLTIP="获取识别后人脸的 所有参数";i.Msg.CocoRobo_AI2_RESULT_FACE_X_HELPURL="https://CocoRobo.readthedocs.io/zh/doc_CocoRobobox/CocoRobo_classroom_kit/lib/CocoRobo_classroom_kit.html#CocoRobo_classroom_kit.model.select_model";i.Msg.CocoRobo_AI2_RESULT_FACE_X_MESSAGE0="获取识别后人脸的 x坐标";i.Msg.CocoRobo_AI2_RESULT_FACE_X_TOOLTIP="获取识别后人脸的 x坐标";i.Msg.CocoRobo_AI2_RESULT_FACE_Y_HELPURL="https://CocoRobo.readthedocs.io/zh/doc_CocoRobobox/CocoRobo_classroom_kit/lib/CocoRobo_classroom_kit.html#CocoRobo_classroom_kit.model.select_model";i.Msg.CocoRobo_AI2_RESULT_FACE_Y_MESSAGE0="获取识别后人脸的 y坐标";i.Msg.CocoRobo_AI2_RESULT_FACE_Y_TOOLTIP="获取识别后人脸的 y坐标";i.Msg.CocoRobo_AI2_RESULT_FACE_W_HELPURL="https://CocoRobo.readthedocs.io/zh/doc_CocoRobobox/CocoRobo_classroom_kit/lib/CocoRobo_classroom_kit.html#CocoRobo_classroom_kit.model.select_model";i.Msg.CocoRobo_AI2_RESULT_FACE_W_MESSAGE0="获取识别后人脸的 宽度";i.Msg.CocoRobo_AI2_RESULT_FACE_W_TOOLTIP="获取识别后人脸的 宽度";i.Msg.CocoRobo_AI2_RESULT_FACE_H_HELPURL="https://CocoRobo.readthedocs.io/zh/doc_CocoRobobox/CocoRobo_classroom_kit/lib/CocoRobo_classroom_kit.html#CocoRobo_classroom_kit.model.select_model";i.Msg.CocoRobo_AI2_RESULT_FACE_H_MESSAGE0="获取识别后人脸的 高度";i.Msg.CocoRobo_AI2_RESULT_FACE_H_TOOLTIP="获取识别后人脸的 高度";i.Msg.CocoRobo_AI2_RESULT_FACE_VALUE_HELPURL="https://CocoRobo.readthedocs.io/zh/doc_CocoRobobox/CocoRobo_classroom_kit/lib/CocoRobo_classroom_kit.html#CocoRobo_classroom_kit.model.select_model";i.Msg.CocoRobo_AI2_RESULT_FACE_VALUE_MESSAGE0="获取识别后人脸的 置信度";i.Msg.CocoRobo_AI2_RESULT_FACE_VALUE_TOOLTIP="获取识别后人脸的 置信度";i.Msg.CocoRobo_AI2_RESULT_FACE_OBJNUM_HELPURL="https://CocoRobo.readthedocs.io/zh/doc_CocoRobobox/CocoRobo_classroom_kit/lib/CocoRobo_classroom_kit.html#CocoRobo_classroom_kit.model.select_model";i.Msg.CocoRobo_AI2_RESULT_FACE_OBJNUM_MESSAGE0="获取识别后人脸的 数量";i.Msg.CocoRobo_AI2_RESULT_FACE_OBJNUM_TOOLTIP="获取识别后人脸的 数量";i.Msg.CocoRobo_AI2_20class_TRACKING_HELPURL="https://CocoRobo.readthedocs.io/zh/doc_CocoRobobox/CocoRobo_classroom_kit/lib/CocoRobo_classroom_kit.html#CocoRobo_classroom_kit.model.select_model";i.Msg.CocoRobo_AI2_20class_TRACKING_MESSAGE0="选择训练模型 20类";i.Msg.CocoRobo_AI2_20class_TRACKING_TOOLTIP="可以识别20个类型,分别是0-19为飞机,自行车,鸟,船,瓶子,公交车,汽车,猫,椅子,奶牛,餐桌,狗,屋子,摩托车,人,盆栽,羊,沙发,火车,电视";i.Msg.CocoRobo_AI2_PHOTOGRAPH_20TRACKING_HELPURL="https://CocoRobo.readthedocs.io/zh/doc_CocoRobobox/CocoRobo_classroom_kit/lib/CocoRobo_classroom_kit.html#CocoRobo_classroom_kit.model.select_model";i.Msg.CocoRobo_AI2_PHOTOGRAPH_20TRACKING_MESSAGE0="调用摄像头进行 20类识别";i.Msg.CocoRobo_AI2_PHOTOGRAPH_20TRACKING_TOOLTIP="调用摄像头进行 20类识别";i.Msg.CocoRobo_AI2_RESULT_20CLASS_HELPURL="https://CocoRobo.readthedocs.io/zh/doc_CocoRobobox/CocoRobo_classroom_kit/lib/CocoRobo_classroom_kit.html#CocoRobo_classroom_kit.model.select_model";i.Msg.CocoRobo_AI2_RESULT_20CLASS_MESSAGE0="获取识别后20类的 所有参数";i.Msg.CocoRobo_AI2_RESULT_20CLASS_TOOLTIP="获取识别后20类的 所有参数";i.Msg.CocoRobo_AI2_RESULT_20CLASS_X_HELPURL="https://CocoRobo.readthedocs.io/zh/doc_CocoRobobox/CocoRobo_classroom_kit/lib/CocoRobo_classroom_kit.html#CocoRobo_classroom_kit.model.select_model";i.Msg.CocoRobo_AI2_RESULT_20CLASS_X_MESSAGE0="获取识别后20类的 x坐标";i.Msg.CocoRobo_AI2_RESULT_20CLASS_X_TOOLTIP="获取识别后20类的 x坐标";i.Msg.CocoRobo_AI2_RESULT_20CLASS_Y_HELPURL="https://CocoRobo.readthedocs.io/zh/doc_CocoRobobox/CocoRobo_classroom_kit/lib/CocoRobo_classroom_kit.html#CocoRobo_classroom_kit.model.select_model";i.Msg.CocoRobo_AI2_RESULT_20CLASS_Y_MESSAGE0="获取识别后20类的 y坐标";i.Msg.CocoRobo_AI2_RESULT_20CLASS_Y_TOOLTIP="获取识别后20类的 y坐标";i.Msg.CocoRobo_AI2_RESULT_20CLASS_W_HELPURL="https://CocoRobo.readthedocs.io/zh/doc_CocoRobobox/CocoRobo_classroom_kit/lib/CocoRobo_classroom_kit.html#CocoRobo_classroom_kit.model.select_model";i.Msg.CocoRobo_AI2_RESULT_20CLASS_W_MESSAGE0="获取识别后20类的 宽度";i.Msg.CocoRobo_AI2_RESULT_20CLASS_W_TOOLTIP="获取识别后20类的 宽度";i.Msg.CocoRobo_AI2_RESULT_20CLASS_H_HELPURL="https://CocoRobo.readthedocs.io/zh/doc_CocoRobobox/CocoRobo_classroom_kit/lib/CocoRobo_classroom_kit.html#CocoRobo_classroom_kit.model.select_model";i.Msg.CocoRobo_AI2_RESULT_20CLASS_H_MESSAGE0="获取识别后20类的 高度";i.Msg.CocoRobo_AI2_RESULT_20CLASS_H_TOOLTIP="获取识别后20类的 高度";i.Msg.CocoRobo_AI2_RESULT_20CLASS_VALUE_HELPURL="https://CocoRobo.readthedocs.io/zh/doc_CocoRobobox/CocoRobo_classroom_kit/lib/CocoRobo_classroom_kit.html#CocoRobo_classroom_kit.model.select_model";i.Msg.CocoRobo_AI2_RESULT_20CLASS_VALUE_MESSAGE0="获取识别后20类的 置信度";i.Msg.CocoRobo_AI2_RESULT_20CLASS_VALUE_TOOLTIP="获取识别后20类的 置信度";i.Msg.CocoRobo_AI2_RESULT_20CLASS_OBJNUM_HELPURL="https://CocoRobo.readthedocs.io/zh/doc_CocoRobobox/CocoRobo_classroom_kit/lib/CocoRobo_classroom_kit.html#CocoRobo_classroom_kit.model.select_model";i.Msg.CocoRobo_AI2_RESULT_20CLASS_OBJNUM_MESSAGE0="获取识别后20类的 数量";i.Msg.CocoRobo_AI2_RESULT_20CLASS_OBJNUM_TOOLTIP="获取识别后20类的 数量";i.Msg.CocoRobo_AI2_RESULT_20CLASS_CLASSID_HELPURL="https://CocoRobo.readthedocs.io/zh/doc_CocoRobobox/CocoRobo_classroom_kit/lib/CocoRobo_classroom_kit.html#CocoRobo_classroom_kit.model.select_model";i.Msg.CocoRobo_AI2_RESULT_20CLASS_CLASSID_MESSAGE0="获取识别后20类的 类型";i.Msg.CocoRobo_AI2_RESULT_20CLASS_CLASSID_TOOLTIP="获取识别后20类的 类型可以放入获取识别的参数,可以识别20个类型,分别是0-19为飞机,自行车,鸟,船,瓶子,公交车,汽车,猫,椅子,奶牛,餐桌,狗,屋子,摩托车,人,盆栽,羊,沙发,火车,电视";i.Msg.CocoRobo_AI2_RESULT_20CLASS_INDEX_HELPURL="https://CocoRobo.readthedocs.io/zh/doc_CocoRobobox/CocoRobo_classroom_kit/lib/CocoRobo_classroom_kit.html#CocoRobo_classroom_kit.model.select_model";i.Msg.CocoRobo_AI2_RESULT_20CLASS_INDEX_MESSAGE0="获取识别后20类的 类型数量";i.Msg.CocoRobo_AI2_RESULT_20CLASS_INDEX_TOOLTIP="获取识别后20类的 类型数量";i.Msg.CocoRobo_AI2_NUMBER_DISCERN_HELPURL="https://CocoRobo.readthedocs.io/zh/doc_CocoRobobox/CocoRobo_classroom_kit/lib/CocoRobo_classroom_kit.html#CocoRobo_classroom_kit.model.select_model";i.Msg.CocoRobo_AI2_NUMBER_DISCERN_MESSAGE0="选择训练模型 手写数字";i.Msg.CocoRobo_AI2_NUMBER_DISCERN_TOOLTIP="选择训练模型 手写数字识别";i.Msg.CocoRobo_AI2_RESULT_NUMBER_DISCERN_HELPURL="https://CocoRobo.readthedocs.io/zh/doc_CocoRobobox/CocoRobo_classroom_kit/lib/CocoRobo_classroom_kit.html#CocoRobo_classroom_kit.model.select_model";i.Msg.CocoRobo_AI2_RESULT_NUMBER_DISCERN_MESSAGE0="调用摄像头进行 手写数字识别";i.Msg.CocoRobo_AI2_RESULT_NUMBER_DISCERN_TOOLTIP="调用摄像头进行 手写数字识别";i.Msg.CocoRobo_AI2_NUMBER_DETECT_ALL_HELPURL="https://CocoRobo.readthedocs.io/zh/doc_CocoRobobox/CocoRobo_classroom_kit/lib/CocoRobo_classroom_kit.html#id2";i.Msg.CocoRobo_AI2_NUMBER_DETECT_ALL_MESSAGE0="获取识别后手写数字的 所有参数";i.Msg.CocoRobo_AI2_NUMBER_DETECT_ALL_TOOLTIP="手写数字识别参数";i.Msg.CocoRobo_AI2_NUMBER_DETECT_NUMBER_HELPURL="https://CocoRobo.readthedocs.io/zh/doc_CocoRobobox/CocoRobo_classroom_kit/lib/CocoRobo_classroom_kit.html#id2";i.Msg.CocoRobo_AI2_NUMBER_DETECT_NUMBER_MESSAGE0="获取识别后手写数字的 数字";i.Msg.CocoRobo_AI2_NUMBER_DETECT_NUMBER_TOOLTIP="手写数字识别 数字";i.Msg.CocoRobo_AI2_NUMBER_DETECT_ADIENCE_HELPURL="https://CocoRobo.readthedocs.io/zh/doc_CocoRobobox/CocoRobo_classroom_kit/lib/CocoRobo_classroom_kit.html#id2";i.Msg.CocoRobo_AI2_NUMBER_DETECT_ADIENCE_MESSAGE0="获取识别后手写数字的 置信度";i.Msg.CocoRobo_AI2_NUMBER_DETECT_ADIENCE_TOOLTIP="手写数字 识别数字 置信度";i.Msg.CocoRobo_AI_TRACE_COLOR_HELPURL="https://CocoRobo.readthedocs.io/zh/doc_CocoRobobox/CocoRobo_classroom_kit/lib/CocoRobo_classroom_kit.html#CocoRobo_classroom_kit.image.find_blobs";i.Msg.CocoRobo_AI_TRACE_COLOR_MESSAGE0="追踪色块 LAB颜色%1 边界框小于%2 像素小于%3 过滤";i.Msg.CocoRobo_AI_TRACE_COLOR_TOOLTIP="追踪色块";i.Msg.CocoRobo_AI_TRACE_CILOR_DISPLAYTEN_HELPURL="";i.Msg.CocoRobo_AI_TRACE_CILOR_DISPLAYTEN_MESSAGE0="追踪颜色 显示%1";i.Msg.CocoRobo_AI_TRACE_CILOR_DISPLAYTEN_TOOLTIP="";i.Msg.CocoRobo_AI_BLOB_ALL_HELPURL="https://CocoRobo.readthedocs.io/zh/doc_CocoRobobox/CocoRobo_classroom_kit/lib/CocoRobo_classroom_kit.html#blob";i.Msg.CocoRobo_AI_BLOB_ALL_MESSAGE0="%1获取识别后色块的 所有参数";i.Msg.CocoRobo_AI_BLOB_ALL_TOOLTIP="返回blob 类 -- 色块对象";i.Msg.CocoRobo_AI_BLOB_X_HELPURL="https://CocoRobo.readthedocs.io/zh/doc_CocoRobobox/CocoRobo_classroom_kit/lib/CocoRobo_classroom_kit.html#blob";i.Msg.CocoRobo_AI_BLOB_X_MESSAGE0="%1获取识别后色块的 x坐标";i.Msg.CocoRobo_AI_BLOB_X_TOOLTIP="返回blob 类 -- 色块对象";i.Msg.CocoRobo_AI_BLOB_Y_HELPURL="https://CocoRobo.readthedocs.io/zh/doc_CocoRobobox/CocoRobo_classroom_kit/lib/CocoRobo_classroom_kit.html#blob";i.Msg.CocoRobo_AI_BLOB_Y_MESSAGE0="%1获取识别后色块的 y坐标";i.Msg.CocoRobo_AI_BLOB_Y_TOOLTIP="返回blob 类 -- 色块对象";i.Msg.CocoRobo_AI_BLOB_W_HELPURL="https://CocoRobo.readthedocs.io/zh/doc_CocoRobobox/CocoRobo_classroom_kit/lib/CocoRobo_classroom_kit.html#blob";i.Msg.CocoRobo_AI_BLOB_W_MESSAGE0="%1获取识别后色块的 宽度";i.Msg.CocoRobo_AI_BLOB_W_TOOLTIP="返回blob 类 -- 色块对象";i.Msg.CocoRobo_AI_BLOB_H_HELPURL="https://CocoRobo.readthedocs.io/zh/doc_CocoRobobox/CocoRobo_classroom_kit/lib/CocoRobo_classroom_kit.html#blob";i.Msg.CocoRobo_AI_BLOB_H_MESSAGE0="%1获取识别后色块的 高度";i.Msg.CocoRobo_AI_BLOB_H_TOOLTIP="返回blob 类 -- 色块对象";i.Msg.CocoRobo_AI_BLOB_NUMBER_HELPURL="https://CocoRobo.readthedocs.io/zh/doc_CocoRobobox/CocoRobo_classroom_kit/lib/CocoRobo_classroom_kit.html#blob";i.Msg.CocoRobo_AI_BLOB_NUMBER_MESSAGE0="%1获取识别后色块的 数量";i.Msg.CocoRobo_AI_BLOB_NUMBER_TOOLTIP="返回blob 类 -- 色块对象";i.Msg.CocoRobo_AI_BLOB_CENTER_X_HELPURL="https://CocoRobo.readthedocs.io/zh/doc_CocoRobobox/CocoRobo_classroom_kit/lib/CocoRobo_classroom_kit.html#blob";i.Msg.CocoRobo_AI_BLOB_CENTER_X_MESSAGE0="%1获取识别后色块的 中心x坐标";i.Msg.CocoRobo_AI_BLOB_CENTER_X_TOOLTIP="返回blob 类 -- 色块对象";i.Msg.CocoRobo_AI_BLOB_CENTER_Y_HELPURL="https://CocoRobo.readthedocs.io/zh/doc_CocoRobobox/CocoRobo_classroom_kit/lib/CocoRobo_classroom_kit.html#blob";i.Msg.CocoRobo_AI_BLOB_CENTER_Y_MESSAGE0="%1获取识别后色块的 中心y坐标";i.Msg.CocoRobo_AI_BLOB_CENTER_Y_TOOLTIP="返回blob 类 -- 色块对象";i.Msg.CocoRobo_AI_BLOB_ORTHOGON_HELPURL="https://CocoRobo.readthedocs.io/zh/doc_CocoRobobox/CocoRobo_classroom_kit/lib/CocoRobo_classroom_kit.html#blob";i.Msg.CocoRobo_AI_BLOB_ORTHOGON_MESSAGE0="%1获取识别后色块的 矩形";i.Msg.CocoRobo_AI_BLOB_ORTHOGON_TOOLTIP="返回blob 类 -- 色块对象";i.Msg.CocoRobo_AI_LCD_PIXEL_COLOUR_HELPURL="https://CocoRobo.readthedocs.io/zh/doc_CocoRobobox/CocoRobo_classroom_kit/lib/CocoRobo_classroom_kit.html?highlight=get_pixel#CocoRobo_classroom_kit.image.set_pixel";i.Msg.CocoRobo_AI_LCD_PIXEL_COLOUR_MESSAGE0="屏幕 x%1 y%2 显示颜色 R%3 G%4 B%5";i.Msg.CocoRobo_AI_LCD_PIXEL_COLOUR_TOOLTIP="屏幕显示颜色";i.Msg.CocoRobo_AI_LCD_COLOUR_HELPURL="https://CocoRobo.readthedocs.io/zh/doc_CocoRobobox/CocoRobo_classroom_kit/lib/CocoRobo_classroom_kit.html#CocoRobo_classroom_kit.lcd.clear";i.Msg.CocoRobo_AI_LCD_COLOUR_MESSAGE0="屏幕 初始化 显示颜色 R%1 G%2 B%3";i.Msg.CocoRobo_AI_LCD_COLOUR_TOOLTIP="屏幕显示颜色";i.Msg.CocoRobo_AI_SENSOR_PATTERN_HELPURL="https://CocoRobo.readthedocs.io/zh/doc_CocoRobobox/CocoRobo_classroom_kit/lib/CocoRobo_classroom_kit.html#CocoRobo_classroom_kit.camera.set_pixformat";i.Msg.CocoRobo_AI_SENSOR_PATTERN_MESSAGE0="摄像头 初始化 像素模式 %1";i.Msg.CocoRobo_AI_SENSOR_PATTERN_TOOLTIP="用于设置摄像头像素模式,有黑白和rgb彩色";i.Msg.CocoRobo_DRILL_WEIGHT_MESSAGE0="初始化 训练 %1";i.Msg.CocoRobo_DRILL_WEIGHT_TOOLTIP="";i.Msg.CocoRobo_DRILL_WEIGHT_HELPURL="";i.Msg.CocoRobo_DRILL_LINEAR_REGRESSION_HELPURL="";i.Msg.CocoRobo_DRILL_LINEAR_REGRESSION_MESSAGE0="实例化 线性回归直线";i.Msg.CocoRobo_DRILL_LINEAR_REGRESSION_TOOLTIP="";i.Msg.CocoRobo_DRILL_TITLE_HELPURL="";i.Msg.CocoRobo_DRILL_TITLE_MESSAGE0="标题%1 字号%2";i.Msg.CocoRobo_DRILL_TITLE_TOOLTIP="";i.Msg.CocoRobo_DRILL_LABEL_HELPURL="";i.Msg.CocoRobo_DRILL_LABEL_MESSAGE0="标签%1 标题%2 字号%3";i.Msg.CocoRobo_DRILL_LABEL_TOOLTIP="";i.Msg.CocoRobo_DRILL_DRILL_REALITY_HELPURL="";i.Msg.CocoRobo_DRILL_DRILL_REALITY_MESSAGE0="真实数据 符号标记%1 颜色为r%2 g%3 b%4 标题%5";i.Msg.CocoRobo_DRILL_DRILL_REALITY_TOOLTIP="";i.Msg.CocoRobo_DRILL_PREDICTED_REALITY_HELPURL="";i.Msg.CocoRobo_DRILL_PREDICTED_REALITY_MESSAGE0="预测线性回归直线 符号标记%1 颜色为r%2 g%3 b%4 标题%5";i.Msg.CocoRobo_DRILL_PREDICTED_REALITY_TOOLTIP="";i.Msg.CocoRobo_DRILL_LEGEND_HELPURL="";i.Msg.CocoRobo_DRILL_LEGEND_MESSAGE0="展示图例";i.Msg.CocoRobo_DRILL_LEGEND_TOOLTIP="";i.Msg.CocoRobo_DRILL_SHOW_HELPURL="";i.Msg.CocoRobo_DRILL_SHOW_MESSAGE0="显示图片";i.Msg.CocoRobo_DRILL_SHOW_TOOLTIP="";i.Msg.CocoRobo_DRILL_DRILL_PRINT_HELPURL="";i.Msg.CocoRobo_DRILL_DRILL_PRINT_MESSAGE0="返回对应键值%1";i.Msg.CocoRobo_DRILL_DRILL_PRINT_TOOLTIP="";i.Msg.CocoRobo_DRILL_DRILL_full_line="实线";i.Msg.CocoRobo_DRILL_DRILL_dash_line="破折线";i.Msg.CocoRobo_DRILL_DRILL_chain_line="点划线";i.Msg.CocoRobo_DRILL_DRILL_imaginary_line="虚线";i.Msg.CocoRobo_DRILL_DRILL_dot="点";i.Msg.CocoRobo_DRILL_DRILL_pixel="像素";i.Msg.CocoRobo_DRILL_DRILL_solid_rim="实心圈";i.Msg.CocoRobo_DRILL_DRILL_down_triangle="下三角";i.Msg.CocoRobo_DRILL_DRILL_up_triangle="上三角";i.Msg.CocoRobo_DRILL_DRILL_right_triangle="右三角";i.Msg.CocoRobo_DRILL_DRILL_left_triangle="左三角";i.Msg.CocoRobo_DRILL_DRILL_down_flower_triangle="下花三角";i.Msg.CocoRobo_DRILL_DRILL_up_flower_triangle="上花三角";i.Msg.CocoRobo_DRILL_DRILL_right_flower_triangle="右花三角";i.Msg.CocoRobo_DRILL_DRILL_left_flower_triangle="左花三角";i.Msg.CocoRobo_DRILL_DRILL_solid_square="实心方形";i.Msg.CocoRobo_DRILL_DRILL_solid_pentagon="实心五角";i.Msg.CocoRobo_DRILL_DRILL_star="星形";i.Msg.CocoRobo_DRILL_DRILL_vertical_hexagon="竖六边形";i.Msg.CocoRobo_DRILL_DRILL_across_hexagon="横六边形";i.Msg.CocoRobo_DRILL_DRILL_cross="十字";i.Msg.CocoRobo_DRILL_DRILL_X="X";i.Msg.CocoRobo_DRILL_DRILL_rhombus="菱形";i.Msg.CocoRobo_DRILL_DRILL_thin_rhombus="瘦菱形";i.Msg.CocoRobo_DRILL_DRILL_vertical_line="垂直线";i.Msg.CocoRoboS_FLOWER_DE_LUCE_INITIALIZE_HELPURL="";i.Msg.CocoRoboS_FLOWER_DE_LUCE_INITIALIZE_MESSAGE0="初始化 鸢尾花数据集";i.Msg.CocoRoboS_FLOWER_DE_LUCE_INITIALIZE_TOOLTIP="采用Python的Sklearn机器学习库中自带的数据集——鸢尾花数据集。简单分析数据集之间特征的关系图,根据花瓣长度、花瓣宽度、花萼长度、花萼宽度四个特征进行绘图Iris plants 数据集可以从KEEL dataset数据集网站获取,也可以直接从Sklearn.datasets机器学习包得到。数据集共包含4个特征变量、1个类别变量,共有150个样本。类别变量分别对应鸢尾花的三个亚属,分别是山鸢尾 (Iris-setosa)、变色鸢尾(Iris-versicolor)和维吉尼亚鸢尾(Iris-virginica) 分别用[0,1,2]来做映射";i.Msg.CocoRoboS_FLOWER_DE_LUCE_PCA_HELPURL="";i.Msg.CocoRoboS_FLOWER_DE_LUCE_PCA_MESSAGE0="鸢尾花 主成分分析";i.Msg.CocoRoboS_FLOWER_DE_LUCE_PCA_TOOLTIP="";i.Msg.CocoRoboS_FLOWER_DE_LUCE_FA3D_HELPURL="";i.Msg.CocoRoboS_FLOWER_DE_LUCE_FA3D_MESSAGE0="鸢尾花 因子分析 3D";i.Msg.CocoRoboS_FLOWER_DE_LUCE_FA3D_TOOLTIP="";i.Msg.CocoRoboS_FLOWER_DE_LUCE_FA_HELPURL="";i.Msg.CocoRoboS_FLOWER_DE_LUCE_FA_MESSAGE0="鸢尾花 因子分析";i.Msg.CocoRoboS_FLOWER_DE_LUCE_FA_TOOLTIP="";i.Msg.CocoRoboS_FLOWER_DE_LUCE_PCA_DISPLAY_HELPURL="";i.Msg.CocoRoboS_FLOWER_DE_LUCE_PCA_DISPLAY_MESSAGE0="预测图示 鸢尾花类型%1 呈现内容 x%3 y%4 呈现种类%2 颜色为 r%5 g%6 b%7 标题%8 向上合并%9";i.Msg.CocoRoboS_FLOWER_DE_LUCE_PCA_DISPLAY_TOOLTIP="";i.Msg.CocoRoboS_FLOWER_DE_LUCE_DATA_HELPURL="";i.Msg.CocoRoboS_FLOWER_DE_LUCE_DATA_MESSAGE0="预测图示 呈现内容 x%1 y%2 呈现种类%3 颜色为 r%4 g%5 b%6 标题%7";i.Msg.CocoRoboS_FLOWER_DE_LUCE_DATA_TOOLTIP="";i.Msg.CocoRoboS_FLOWER_DE_LUCE_DATA3D_HELPURL="";i.Msg.CocoRoboS_FLOWER_DE_LUCE_DATA3D_MESSAGE0="3D 预测图示 呈现内容 x朝向%1 y朝向%2 z朝向%3 颜色为 r%4 g%5 b%6 标题%7";i.Msg.CocoRoboS_FLOWER_DE_LUCE_DATA3D_TOOLTIP="";i.Msg.CocoRoboS_FLOWER_DE_LUCE_TITLE_HELPURL="";i.Msg.CocoRoboS_FLOWER_DE_LUCE_TITLE_MESSAGE0="标题%1 字号%2";i.Msg.CocoRoboS_FLOWER_DE_LUCE_TITLE_TOOLTIP="";i.Msg.CocoRoboS_FLOWER_DE_LUCE_LABEL_HELPURL="";i.Msg.CocoRoboS_FLOWER_DE_LUCE_LABEL_MESSAGE0="标签%1 标题%2 字号%3";i.Msg.CocoRoboS_FLOWER_DE_LUCE_LABEL_TOOLTIP="";i.Msg.CocoRoboS_FLOWER_DE_LUCE_TITLE3D_HELPURL="";i.Msg.CocoRoboS_FLOWER_DE_LUCE_TITLE3D_MESSAGE0="3D 标题%1 字号%2";i.Msg.CocoRoboS_FLOWER_DE_LUCE_TITLE3D_TOOLTIP="";i.Msg.CocoRoboS_FLOWER_DE_LUCE_LABEL3D_HELPURL="";i.Msg.CocoRoboS_FLOWER_DE_LUCE_LABEL3D_MESSAGE0="3D 标签%1 标题%2 字号%3";i.Msg.CocoRoboS_FLOWER_DE_LUCE_LABEL3D_TOOLTIP="";i.Msg.CocoRoboS_FLOWER_DE_LUCE_LEGEND_HELPURL="";i.Msg.CocoRoboS_FLOWER_DE_LUCE_LEGEND_MESSAGE0="展示图例";i.Msg.CocoRoboS_FLOWER_DE_LUCE_LEGEND_TOOLTIP="";i.Msg.CocoRoboS_FLOWER_DE_LUCE_SHOW_HELPURL="";i.Msg.CocoRoboS_FLOWER_DE_LUCE_SHOW_MESSAGE0="显示图片";i.Msg.CocoRoboS_FLOWER_DE_LUCE_SHOW_TOOLTIP="";i.Msg.CocoRoboS_FLOWER_DE_LUCE_LOAD_IRIS_HELPURL="";i.Msg.CocoRoboS_FLOWER_DE_LUCE_LOAD_IRIS_MESSAGE0="花萼和花瓣的x,y坐标";i.Msg.CocoRoboS_FLOWER_DE_LUCE_LOAD_IRIS_TOOLTIP="共150条记录,分别代表50条山鸢尾 (Iris-setosa)、变色鸢尾(Iris-versicolor)、维吉尼亚鸢尾(Iris-virginica)";i.Msg.CocoRoboS_FLOWER_DE_LUCE_Iris_setosa="山鸢尾";i.Msg.CocoRoboS_FLOWER_DE_LUCE_Iris_versicolor="变色鸢尾";i.Msg.CocoRoboS_FLOWER_DE_LUCE_Iris_virginica="维吉尼亚鸢尾";i.Msg.CocoRoboS_FLOWER_DE_LUCE_scatter_diagram="散点图";i.Msg.CocoRoboS_FLOWER_DE_LUCE_kde_diagram="kde图";i.Msg.CocoRoboS_FLOWER_DE_LUCE_box_diagram="箱图";i.Msg.CocoRoboS_FLOWER_DE_LUCE_merge="合并";i.Msg.CocoRoboS_FLOWER_DE_LUCE_not_merge="不合并";i.Msg.CocoRoboS_FLOWER_DE_LUCE_calyx_length="花萼长度";i.Msg.CocoRoboS_FLOWER_DE_LUCE_calyx_width="花萼宽度";i.Msg.CocoRoboS_FLOWER_DE_LUCE_petal_length="花瓣长度";i.Msg.CocoRoboS_FLOWER_DE_LUCE_petal_width="花瓣宽度";i.Msg.CocoRoboS_CONVERT_PICTURE_HELPURL="";i.Msg.CocoRoboS_CONVERT_PICTURE_MESSAGE0="将图片转换为28²二值图%1 待处理的图片存储路径%2 处理后的图片存储路径%3 格式%4";i.Msg.CocoRoboS_CONVERT_PICTURE_TOOLTIP="教科板通过串口把WIF传给语音助手";i.Msg.CocoRoboS_NUMBER_REPERTOIRE_HELPURL="";i.Msg.CocoRoboS_NUMBER_REPERTOIRE_MESSAGE0="查找解析 手写数字数据 存储路径%1";i.Msg.CocoRoboS_NUMBER_REPERTOIRE_TOOLTIP="使用手写数字字符库";i.Msg.CocoRoboS_SHOW_NUMBER_PATH_HELPURL="";i.Msg.CocoRoboS_SHOW_NUMBER_PATH_MESSAGE0="手写数字图像 存储路径%1";i.Msg.CocoRoboS_SHOW_NUMBER_PATH_TOOLTIP="手写数字图像的路径";i.Msg.CocoRoboS_SHOW_NUMBER_HELPURL="";i.Msg.CocoRoboS_SHOW_NUMBER_MESSAGE0="显示手写数字图像";i.Msg.CocoRoboS_SHOW_NUMBER_TOOLTIP="显示手写数字图像";i.Msg.CocoRoboS_NUMBER_RECOGNITION_HELPURL="";i.Msg.CocoRoboS_NUMBER_RECOGNITION_MESSAGE0="识别手写数字图像 存储路径%1";i.Msg.CocoRoboS_NUMBER_RECOGNITION_TOOLTIP="识别手写数字图像的路径";i.Msg.CocoRoboS_NUMBER_PLACEHOLDER_HELPURL="";i.Msg.CocoRoboS_NUMBER_PLACEHOLDER_MESSAGE0="创建变量%1 初始化 神经网络张量 变量名%2";i.Msg.CocoRoboS_NUMBER_PLACEHOLDER_TOOLTIP="";i.Msg.CocoRobo_DRILL_RESHAPE_MESSAGE0="创建变量%1 将输入照片变量 %2 转换为 神经网络输出张量%3";i.Msg.CocoRobo_DRILL_RESHAPE_TOOLTIP="";i.Msg.CocoRobo_DRILL_RESHAPE_HELPURL="";i.Msg.CocoRobo_NUMBER_CONV_WEIGHT_MESSAGE0="创建变量%1 共享变量名%2 初始化模式%3";i.Msg.CocoRobo_NUMBER_CONV_WEIGHT_TOOLTIP="";i.Msg.CocoRobo_NUMBER_CONV_WEIGHT_HELPURL="";i.Msg.CocoRobo_NUMBER_INITIALIZER_MESSAGE0="产生截断正态分布随机数 输出张量%1 标准差%2";i.Msg.CocoRobo_NUMBER_INITIALIZER_TOOLTIP="";i.Msg.CocoRobo_NUMBER_INITIALIZER_HELPURL="";i.Msg.CocoRobo_NUMBER_CONSTANT_MESSAGE0="创建常量 数值%1 输出张量%2";i.Msg.CocoRobo_NUMBER_CONSTANT_TOOLTIP="";i.Msg.CocoRobo_NUMBER_CONSTANT_HELPURL="";i.Msg.CocoRobo_NUMBER_CONV2D_MESSAGE0="神经网络输出张量%1 共享变量%2 步长%3 填充%4";i.Msg.CocoRobo_NUMBER_CONV2D_TOOLTIP="";i.Msg.CocoRobo_NUMBER_CONV2D_HELPURL="";i.Msg.CocoRobo_NUMBER_CONV_BIASES_MESSAGE0="张量%1";i.Msg.CocoRobo_NUMBER_CONV_BIASES_TOOLTIP="";i.Msg.CocoRobo_NUMBER_CONV_BIASES_HELPURL="";i.Msg.CocoRobo_NUMBER_CONV_CONV2D_MESSAGE0="卷积二维层 变量%1 %2";i.Msg.CocoRobo_NUMBER_CONV_CONV2D_TOOLTIP="";i.Msg.CocoRobo_NUMBER_CONV_CONV2D_HELPURL="";i.Msg.CocoRobo_NUMBER_RELU_MESSAGE0="创建变量%1 Relu正向激励函数 卷积二维层%2";i.Msg.CocoRobo_NUMBER_RELU_TOOLTIP="";i.Msg.CocoRobo_NUMBER_RELU_HELPURL="";i.Msg.CocoRobo_NUMBER_MAX_POOL_MESSAGE0="池化二维层 变量%1 卷积层%2 池化窗口%3 步长%4 填充%5";i.Msg.CocoRobo_NUMBER_MAX_POOL_TOOLTIP="";i.Msg.CocoRobo_NUMBER_MAX_POOL_HELPURL="";i.Msg.CocoRobo_NUMBER_MATMUL_MESSAGE0="两个参数的对应元组各自相乘 x%1 y%2";i.Msg.CocoRobo_NUMBER_MATMUL_TOOLTIP="";i.Msg.CocoRobo_NUMBER_MATMUL_HELPURL="";i.Msg.CocoRobo_NUMBER_ADD_MESSAGE0="全连接层 变量%1 两个参数的元组相加 x%2 y%3";i.Msg.CocoRobo_NUMBER_ADD_TOOLTIP="";i.Msg.CocoRobo_NUMBER_ADD_HELPURL="";i.Msg.CocoRobo_NUMBER_SOFTMAX_MESSAGE0="创建变量%1 预测模型准确度 变量名%2";i.Msg.CocoRobo_NUMBER_SOFTMAX_TOOLTIP="";i.Msg.CocoRobo_NUMBER_SOFTMAX_HELPURL="";i.Msg.CocoRobo_NUMBER_REDUCE_MEAN_MESSAGE0="创建变量%1 损失函数%2";i.Msg.CocoRobo_NUMBER_REDUCE_MEAN_TOOLTIP="";i.Msg.CocoRobo_NUMBER_REDUCE_MEAN_HELPURL="";i.Msg.CocoRobo_NUMBER_LOG_MESSAGE0="自然对数 %1";i.Msg.CocoRobo_NUMBER_LOG_TOOLTIP="";i.Msg.CocoRobo_NUMBER_LOG_HELPURL="";i.Msg.CocoRobo_NUMBER_REDUCE_SUM_MESSAGE0="压缩求和%1 维度%2";i.Msg.CocoRobo_NUMBER_REDUCE_SUM_TOOLTIP="因为log函数是单调递增的,所以logP(Y|X)也会达到最大值,因此在前面加上负号之后,最大化P(Y|X)就等价于最小化L了。";i.Msg.CocoRobo_NUMBER_REDUCE_SUM_HELPURL="https://www.cnblogs.com/guoyaohua/p/9217206.html";i.Msg.CocoRobo_NUMBER_TRAIN_MESSAGE0="优化学习速率 %1";i.Msg.CocoRobo_NUMBER_TRAIN_TOOLTIP="";i.Msg.CocoRobo_NUMBER_TRAIN_HELPURL="";i.Msg.CocoRobo_NUMBER_MINIMIZE_MESSAGE0="创建变量%1 优化张量%2";i.Msg.CocoRobo_NUMBER_MINIMIZE_TOOLTIP="";i.Msg.CocoRobo_NUMBER_MINIMIZE_HELPURL="";i.Msg.CocoRobo_NUMBER_INIT_MESSAGE0="初始化模型 完成";i.Msg.CocoRobo_NUMBER_INIT_TOOLTIP="";i.Msg.CocoRobo_NUMBER_INIT_HELPURL="";i.Msg.CocoRobo_NUMBER_TRAIN_TEST_MESSAGE0="选择 手写数字集%1 数量%2";i.Msg.CocoRobo_NUMBER_TRAIN_TEST_TOOLTIP="";i.Msg.CocoRobo_NUMBER_TRAIN_TEST_HELPURL="";i.Msg.CocoRobo_NUMBER_SESSION_RUN_MESSAGE0="启动数据流图会话进行计算 会话%1 图片%2 标签%3";i.Msg.CocoRobo_NUMBER_SESSION_RUN_TOOLTIP="";i.Msg.CocoRobo_NUMBER_SESSION_RUN_HELPURL="";i.Msg.CocoRobo_NUMBER_SESSION_RUN2_MESSAGE0="启动数据流图会话进行计算 会话%1 图片%2 标签%3";i.Msg.CocoRobo_NUMBER_SESSION_RUN2_TOOLTIP="";i.Msg.CocoRobo_NUMBER_SESSION_RUN2_HELPURL="";i.Msg.CocoRobo_NUMBER_SESSION_RUN3_MESSAGE0="预测模型%1 拟合度%2 会话%3";i.Msg.CocoRobo_NUMBER_SESSION_RUN3_TOOLTIP="";i.Msg.CocoRobo_NUMBER_SESSION_RUN3_HELPURL="";i.Msg.CocoRobo_NUMBER_EQUAL_MESSAGE0="两个张量的每一维是否相等 x%1 y%2";i.Msg.CocoRobo_NUMBER_EQUAL_TOOLTIP="";i.Msg.CocoRobo_NUMBER_EQUAL_HELPURL="";i.Msg.CocoRobo_NUMBER_ARGMAX_MESSAGE0="张量 %1 按%2比较返回最大值的索引";i.Msg.CocoRobo_NUMBER_ARGMAX_TOOLTIP="";i.Msg.CocoRobo_NUMBER_ARGMAX_HELPURL="";i.Msg.CocoRobo_NUMBER_CAST_MESSAGE0="转为浮点型 %1";i.Msg.CocoRobo_NUMBER_CAST_TOOLTIP="";i.Msg.CocoRobo_NUMBER_CAST_HELPURL="";i.Msg.CocoRoboS_NUMBER_SAVER_SAVE_HELPURL="";i.Msg.CocoRoboS_NUMBER_SAVER_SAVE_MESSAGE0="手写数字识别模型 变量名%1 存储路径%2";i.Msg.CocoRoboS_NUMBER_SAVER_SAVE_TOOLTIP="MNIST手写数字识别模型保存路径";i.Msg.CocoRoboS_NUMBER_SAVER_RESTORE_HELPURL="";i.Msg.CocoRoboS_NUMBER_SAVER_RESTORE_MESSAGE0="加载模型 %1 存储路径%2";i.Msg.CocoRoboS_NUMBER_SAVER_RESTORE_TOOLTIP="加载模型";i.Msg.CocoRoboS_NUMBER_SAME="包含边界";i.Msg.CocoRoboS_NUMBER_VALID="不包含边界";i.Msg.CocoRoboS_NUMBER_train="训练";i.Msg.CocoRoboS_NUMBER_test="测试";i.Msg.CocoRoboS_NUMBER_row="行";i.Msg.CocoRoboS_NUMBER_rank="列";i.Msg.CocoRoboS_FACE_RECOGNITION_CAMERA_HELPURL="";i.Msg.CocoRoboS_FACE_RECOGNITION_CAMERA_MESSAGE0="调用摄像头 %1";i.Msg.CocoRoboS_FACE_RECOGNITION_CAMERA_TOOLTIP="调用笔记本内置摄像头,所以参数为0,如果有其他的摄像头可以调整参数为1,2";i.Msg.CocoRoboS_FACE_RECOGNITION_CAMERA_OFF_HELPURL="";i.Msg.CocoRoboS_FACE_RECOGNITION_CAMERA_OFF_MESSAGE0="关闭摄像头";i.Msg.CocoRoboS_FACE_RECOGNITION_CAMERA_OFF_TOOLTIP="";i.Msg.CocoRoboS_FACE_RECOGNITION_WINDOWS_DELETE_HELPURL="";i.Msg.CocoRoboS_FACE_RECOGNITION_WINDOWS_DELETE_MESSAGE0="删除所有窗口";i.Msg.CocoRoboS_FACE_RECOGNITION_WINDOWS_DELETE_TOOLTIP="";i.Msg.CocoRoboS_FACE_RECOGNITION_IMPORT_MODEL_SITE_HELPURL="";i.Msg.CocoRoboS_FACE_RECOGNITION_IMPORT_MODEL_SITE_MESSAGE0="加载模型 存储路径%1";i.Msg.CocoRoboS_FACE_RECOGNITION_IMPORT_MODEL_SITE_TOOLTIP="";i.Msg.CocoRoboS_FACE_RECOGNITION_READ_IMAGES_HELPURL="";i.Msg.CocoRoboS_FACE_RECOGNITION_READ_IMAGES_MESSAGE0="从摄像头读取图片";i.Msg.CocoRoboS_FACE_RECOGNITION_READ_IMAGES_TOOLTIP="ret如果有读取图片就True,否则false;第二个参数是frame,是当前截取一帧的图片。";i.Msg.CocoRoboS_FACE_RECOGNITION_GRAY_IMAGES_HELPURL="";i.Msg.CocoRoboS_FACE_RECOGNITION_GRAY_IMAGES_MESSAGE0="转为灰度图片";i.Msg.CocoRoboS_FACE_RECOGNITION_GRAY_IMAGES_TOOLTIP="";i.Msg.CocoRoboS_FACE_RECOGNITION_DETECTION_FACES_HELPURL="";i.Msg.CocoRoboS_FACE_RECOGNITION_DETECTION_FACES_MESSAGE0="检测人脸 每次图像尺寸减小比例%1";i.Msg.CocoRoboS_FACE_RECOGNITION_DETECTION_FACES_TOOLTIP="";i.Msg.CocoRoboS_FACE_DISPLAY_RECOGNITION_ORTHOGON_HELPURL="";i.Msg.CocoRoboS_FACE_DISPLAY_RECOGNITION_ORTHOGON_MESSAGE0="人脸区域显示矩形框 颜色为 红%1 绿%2 蓝%3";i.Msg.CocoRoboS_FACE_DISPLAY_RECOGNITION_ORTHOGON_TOOLTIP="";i.Msg.CocoRoboS_FACE_RECOGNITIONR_PSTORAGE_PICTURE_HELPURL="";i.Msg.CocoRoboS_FACE_RECOGNITIONR_PSTORAGE_PICTURE_MESSAGE0="保存图像 位置%1 ID%2 编号%3";i.Msg.CocoRoboS_FACE_RECOGNITIONR_PSTORAGE_PICTURE_TOOLTIP="";i.Msg.CocoRoboS_FACE_RECOGNITIONR_PRESERVE_PICTURE_HELPURL="";i.Msg.CocoRoboS_FACE_RECOGNITIONR_PRESERVE_PICTURE_MESSAGE0="窗口中显示图像 文件名%1";i.Msg.CocoRoboS_FACE_RECOGNITIONR_PRESERVE_PICTURE_TOOLTIP="";i.Msg.CocoRoboS_FACE_RECOGNITIONR_ESC_HELPURL="";i.Msg.CocoRoboS_FACE_RECOGNITIONR_ESC_MESSAGE0="通过esc键 退出";i.Msg.CocoRoboS_FACE_RECOGNITIONR_ESC_TOOLTIP="在窗口置顶时使用才有效果";i.Msg.CocoRoboS_FACE_RECOGNITIONR_HELPURL="";i.Msg.CocoRoboS_FACE_RECOGNITIONR_MESSAGE0="获得人脸在图像中的坐标值 人脸%1";i.Msg.CocoRoboS_FACE_RECOGNITIONR_TOOLTIP="";i.Msg.CocoRoboS_FACE_RECOGNITION_JUDGE_FACES_HELPURL="";i.Msg.CocoRoboS_FACE_RECOGNITION_JUDGE_FACES_MESSAGE0="是否有读取图片";i.Msg.CocoRoboS_FACE_RECOGNITION_JUDGE_FACES_TOOLTIP="";i.Msg.CocoRoboS_FACE_RECOGNITION_JUDGE_CAMERA_HELPURL="";i.Msg.CocoRoboS_FACE_RECOGNITION_JUDGE_CAMERA_MESSAGE0="是否打开摄像头";i.Msg.CocoRoboS_FACE_RECOGNITION_JUDGE_CAMERA_TOOLTIP="";i.Msg.CocoRoboS_FACE_RECOGNITION_ACQUIRE_ID_PICTURE_HELPURL="";i.Msg.CocoRoboS_FACE_RECOGNITION_ACQUIRE_ID_PICTURE_MESSAGE0="获取照片及id 照片存储路径%1";i.Msg.CocoRoboS_FACE_RECOGNITION_ACQUIRE_ID_PICTURE_TOOLTIP="";i.Msg.CocoRoboS_FACE_RECOGNITION_INITIALIZE_TRANI_MODEL_HELPURL="";i.Msg.CocoRoboS_FACE_RECOGNITION_INITIALIZE_TRANI_MODEL_MESSAGE0="初始化训练模型";i.Msg.CocoRoboS_FACE_RECOGNITION_INITIALIZE_TRANI_MODEL_TOOLTIP="初始化训练模型";i.Msg.CocoRoboS_FACE_RECOGNITION_START_DRILL_HELPURL="";i.Msg.CocoRoboS_FACE_RECOGNITION_START_DRILL_MESSAGE0="开始训练模型";i.Msg.CocoRoboS_FACE_RECOGNITION_START_DRILL_TOOLTIP="";i.Msg.CocoRoboS_FACE_RECOGNITION_STORAGE_DRILL_MODEL_HELPURL="";i.Msg.CocoRoboS_FACE_RECOGNITION_STORAGE_DRILL_MODEL_MESSAGE0="%1训练模型 存储路径%2";i.Msg.CocoRoboS_FACE_RECOGNITION_STORAGE_DRILL_MODEL_TOOLTIP="";i.Msg.CocoRoboS_FACE_RECOGNITION_DRILL_NUMBERS_HELPURL="";i.Msg.CocoRoboS_FACE_RECOGNITION_DRILL_NUMBERS_MESSAGE0="人脸模型训练 数目";i.Msg.CocoRoboS_FACE_RECOGNITION_DRILL_NUMBERS_TOOLTIP="";i.Msg.CocoRoboS_FACE_RECOGNITION_FONT_HELPURL="";i.Msg.CocoRoboS_FACE_RECOGNITION_FONT_MESSAGE0="窗口显示 识别的名字%1 设置字体为%2 颜色为 红%3 绿%4 蓝%5";i.Msg.CocoRoboS_FACE_RECOGNITION_FONT_TOOLTIP="";i.Msg.CocoRoboS_FACE_RECOGNITION_PERCENT_HELPURL="";i.Msg.CocoRoboS_FACE_RECOGNITION_PERCENT_MESSAGE0="窗口显示 识别的置信度%1 设置字体为%2 颜色为 红%3 绿%4 蓝%5";i.Msg.CocoRoboS_FACE_RECOGNITION_PERCENT_TOOLTIP="";i.Msg.CocoRoboS_FACE_RECOGNITION_FORECAST_FACE_INITIALIZE_HELPURL="";i.Msg.CocoRoboS_FACE_RECOGNITION_FORECAST_FACE_INITIALIZE_MESSAGE0="预测人脸 名字%1 置信度%2";i.Msg.CocoRoboS_FACE_RECOGNITION_FORECAST_FACE_INITIALIZE_TOOLTIP="";i.Msg.CocoRoboS_FACE_RECOGNITION_FORECAST_Write="写入";i.Msg.CocoRoboS_FACE_RECOGNITION_FORECAST_Read="读取";i.Msg.FIRST="第一次";i.Msg.LAST="最后一次";i.Msg.CocoRobo_USOCKET_BLOCK="阻塞";i.Msg.CocoRobo_USOCKET_UNBLOCK="非阻塞";i.Msg.CocoRobo_USOCKET_SETSOCKOPT_HELPURL="https://CocoRobo.readthedocs.io/zh/master/library/pythonStd/usocket.html#usocket.socket";i.Msg.CocoRobo_USOCKET_SETSOCKOPT_MESSAGE0="设置socket %1 地址 %2 类型 %3";i.Msg.CocoRobo_USOCKET_SETSOCKOPT_TOOLTIP="设置给定套接字选项的值。所需的符号常量在套接字模組中定义(SO_ *等)。该值可以是整数或表示缓冲区的类字节对象。";i.Msg.CocoRobo_USOCKET_READLINE_HELPURL="https://CocoRobo.readthedocs.io/zh/master/library/pythonStd/usocket.html#usocket.socket.accept";i.Msg.CocoRobo_USOCKET_READLINE_MESSAGE0="socket %1 接收一行数据,遇换行符结束并返回接收数据的对象";i.Msg.CocoRobo_USOCKET_READLINE_TOOLTIP=" 接收一行数据,遇换行符结束,并返回接收数据的对象";i.Msg.CocoRobo_USOCKET_SETBLOCKING_HELPURL="https://CocoRobo.readthedocs.io/zh/master/library/pythonStd/usocket.html#usocket.socket.setblocking";i.Msg.CocoRobo_USOCKET_SETBLOCKING_MESSAGE0="设 socket %1 为 %2 模式";i.Msg.CocoRobo_USOCKET_SETBLOCKING_TOOLTIP="";i.Msg.CocoRobo_USOCKET_READ_HELPURL="https://CocoRobo.readthedocs.io/zh/master/library/pythonStd/usocket.html#usocket.socket.read";i.Msg.CocoRobo_USOCKET_READ_MESSAGE0="从socket %1 读取 %2 字节并返回字节对象";i.Msg.CocoRobo_USOCKET_READ_TOOLTIP="若未给定读取数量 ,则按照类似 socket.readall() 的模式运行";i.Msg.CocoRobo_ESC_HELPURL="https://CocoRobo.readthedocs.io/zh/master/library/pythonStd/usocket.html#usocket.socket.setblocking";i.Msg.CocoRobo_ESC_MESSAGE0="设 socket %1 为 %2 模式";i.Msg.CocoRobo_ESC_TOOLTIP="";i.Msg.CocoRobo_USOCKET_SETTIMEOUT_HELPURL="https://CocoRobo.readthedocs.io/zh/master/library/pythonStd/usocket.html#usocket.socket.settimeout";i.Msg.CocoRobo_USOCKET_SETTIMEOUT_MESSAGE0="socket %1 设超时时间 %2 秒";i.Msg.CocoRobo_USOCKET_SETTIMEOUT_TOOLTIP="";i.Msg.CocoRobo_USOCKET_SENDALL_HELPURL="https://CocoRobo.readthedocs.io/zh/master/library/pythonStd/usocket.html#usocket.socket.send";i.Msg.CocoRobo_USOCKET_SENDALL_MESSAGE0="socket %1 连续发送 %2 并返回发送的字节数";i.Msg.CocoRobo_USOCKET_SENDALL_TOOLTIP="将所有数据发送到套接字。套接字必须连接到远程套接字。与 send() 此不同,此方法将尝试通过连续发送数据块来发送所有数据。";i.Msg.CocoRobo_USOCKET_SENDS_HELPURL="https://CocoRobo.readthedocs.io/zh/master/library/pythonStd/usocket.html#usocket.socket.send";i.Msg.CocoRobo_USOCKET_SENDS_MESSAGE0="socket %1 发送 %2 并返回发送的字节数";i.Msg.CocoRobo_USOCKET_SENDS_TOOLTIP='将数据发送到套接字。套接字必须连接到远程套接字。返回发送的字节数,可能小于数据长度 ("short write")。';i.Msg.CocoRobo_USOCKET_SEND_HELPURL="https://CocoRobo.readthedocs.io/zh/master/library/pythonStd/usocket.html#usocket.socket.send";i.Msg.CocoRobo_USOCKET_SEND_MESSAGE0="socket %1 发送 %2 并返回发送的字节数";i.Msg.CocoRobo_USOCKET_SEND_TOOLTIP="Send data to the socket. The socket must be connected to a remote socket. Returns number of bytes sent, which may be smaller than the length of data (“short write”).";i.Msg.CocoRobo_USOCKET_SENDTO_HELPURL="https://CocoRobo.readthedocs.io/zh/master/library/pythonStd/usocket.html#usocket.socket.sendto";i.Msg.CocoRobo_USOCKET_SENDTO_MESSAGE0="socket %1 发送 %2 到地址 %3";i.Msg.CocoRobo_USOCKET_SENDTO_TOOLTIP="Send data to the socket. The socket should not be connected to a remote socket, since the destination socket is specified by address.";i.Msg.CocoRobo_USOCKET_RECV_HELPURL="https://CocoRobo.readthedocs.io/zh/master/library/pythonStd/usocket.html#usocket.socket.recv";i.Msg.CocoRobo_USOCKET_RECV_MESSAGE0="socket %1 接收并返回接收到的数据对象 最大数据量为 %2";i.Msg.CocoRobo_USOCKET_RECV_TOOLTIP="";i.Msg.CocoRobo_TEXT_ESC_HELPURL="";i.Msg.CocoRobo_TEXT_ESC_MESSAGE0="文本转义字符 %1";i.Msg.CocoRobo_TEXT_ESC_TOOLTIP="文本转义字符";i.Msg.CocoRobo_USOCKET_RECVFROM_HELPURL="https://CocoRobo.readthedocs.io/zh/master/library/pythonStd/usocket.html#usocket.socket.recvfrom";i.Msg.CocoRobo_USOCKET_RECVFROM_MESSAGE0="socket %1 接收并返回接收到的数据元组 最大数据量为 %2";i.Msg.CocoRobo_USOCKET_RECVFROM_TOOLTIP="元组格式 (bytes, address)";i.Msg.CocoRobo_USOCKET_CONNECT_HELPURL="https://CocoRobo.readthedocs.io/zh/master/library/pythonStd/usocket.html#usocket.socket.connect";i.Msg.CocoRobo_USOCKET_CONNECT_MESSAGE0="socket %1 连接 host %2 端口 %3";i.Msg.CocoRobo_USOCKET_CONNECT_TOOLTIP="";i.Msg.CocoRobo_USOCKET_GETADDRINFO_HELPURL="https://CocoRobo.readthedocs.io/zh/master/library/pythonStd/usocket.html#usocket.getaddrinfo";i.Msg.CocoRobo_USOCKET_GETADDRINFO_MESSAGE0="解析 host %1 端口 %2 并返回 ip";i.Msg.CocoRobo_USOCKET_GETADDRINFO_TOOLTIP="需联网";i.Msg.CocoRobo_USOCKET_ACCEPT_HELPURL="https://CocoRobo.readthedocs.io/zh/master/library/pythonStd/usocket.html#usocket.socket.accept";i.Msg.CocoRobo_USOCKET_ACCEPT_MESSAGE0="socket %1 接收连接请求并返回socket元组";i.Msg.CocoRobo_USOCKET_ACCEPT_TOOLTIP=`接收连接请求。socket需要指定地址并监听连接。返回值是 (conn, address)。
- conn:新的socket对象,可以用来收发消息
- address:连接到服务器的客户端地址`;i.Msg.CocoRobo_USOCKET_LISTEN_HELPURL="https://CocoRobo.readthedocs.io/zh/master/library/pythonStd/usocket.html#usocket.socket.listen";i.Msg.CocoRobo_USOCKET_LISTEN_MESSAGE0="监听socket %1 backlog个数 %2";i.Msg.CocoRobo_USOCKET_LISTEN_TOOLTIP="backlog :接受套接字的最大个数,至少为0,如果没有指定,则默认一个合理值。";i.Msg.CocoRobo_USOCKET_BIND_HELPURL="https://CocoRobo.readthedocs.io/zh/master/library/pythonStd/usocket.html#usocket.socket.bind";i.Msg.CocoRobo_USOCKET_BIND_MESSAGE0="socket %1 绑定地址 %2 端口 %3";i.Msg.CocoRobo_USOCKET_BIND_TOOLTIP="";i.Msg.CocoRobo_USOCKET_CLOSE_HELPURL="https://CocoRobo.readthedocs.io/zh/master/library/pythonStd/usocket.html#usocket.socket.close";i.Msg.CocoRobo_USOCKET_CLOSE_MESSAGE0="socket %1 关闭";i.Msg.CocoRobo_USOCKET_CLOSE_TOOLTIP="";i.Msg.CocoRobo_USOCKET_INIT_HELPURL="https://CocoRobo.readthedocs.io/zh/master/library/pythonStd/usocket.html#usocket.socket";i.Msg.CocoRobo_USOCKET_INIT_MESSAGE0="创建 socket %1 地址 %2 类型 %3";i.Msg.CocoRobo_USOCKET_INIT_TOOLTIP=`AF_INET:=2 — TCP/IP – IPv4
- AF_INET6 :=10 — TCP/IP – IPv6
- SOCK_STREAM:=1 — TCP流
- SOCK_DGRAM:=2 — UDP数据报
- SOCK_RAW :=3 — 原始套接字
- SO_REUSEADDR : =4 — socket可重用
- `;i.Msg.CocoRobo_GET_POST_HELPURL="";i.Msg.CocoRobo_GET_POST_MESSAGE0="%1 请求网址 %2 提交字段 %3";i.Msg.CocoRobo_GET_POST_TOOLTIP="";i.Msg.CocoRobo_UREQUESTS_GET_POST_HELPURL="";i.Msg.CocoRobo_UREQUESTS_GET_POST_TOOLTIP="";i.Msg.CocoRobo_UREQUESTS_GET_POST_MESSAGE0="%1 请求网址 %2 提交字段 %3";i.Msg.CocoRobo_UREQUESTS_POST_FILE_HELPURL="";i.Msg.CocoRobo_UREQUESTS_POST_FILE_TOOLTIP="";i.Msg.CocoRobo_UREQUESTS_POST_FILE_MESSAGE0="Post 提交文件 %1 请求网址 %2 文件路径 %3 Mime类型 %4 附加字段 %5";i.Msg.CocoRobo_RESPONSE_HELPURL="";i.Msg.CocoRobo_RESPONSE_MESSAGE0="响应内容 形式 %1";i.Msg.CocoRobo_RESPONSE_TOOLTIP="";i.Msg.STRING="字符串";i.Msg._BYTE="二进制";i.Msg.BYTES="字节";i.Msg.TEXT="文本";i.Msg.CocoRobo_RESPONSE_ATTRIBUTE_HELPURL="";i.Msg.CocoRobo_RESPONSE_ATTRIBUTE_MESSAGE0="响应属性 %1";i.Msg.CocoRobo_RESPONSE_ATTRIBUTE_TOOLTIP="";i.Msg.CocoRobo_SETS_PIN_MODE_HELPURL="https://CocoRobo.readthedocs.io/zh/master/board/hardware.html#CocoRobopindesc";i.Msg.CocoRobo_SETS_PIN_MODE_TOOLTIP="右键帮助,查看引脚声明";i.Msg.CocoRobo_SETS_PIN_MODE_MESSAGE0="设置引脚 %1 为 %2 模式 %3 并设置值为 %4";i.Msg.CocoRobo_SET_PIN_IN="输入";i.Msg.CocoRobo_SET_PIN_PUSH_PULL_OUT="推挽输出";i.Msg.CocoRobo_SET_PIN_LEAKY_OUT="开漏输出";i.Msg.CocoRobo_SET_PIN_NO_PULL="无上下拉";i.Msg.CocoRobo_SET_PIN_DOWN_PULL="下拉";i.Msg.CocoRobo_SET_PIN_UP_PULL="上拉";i.Msg.CocoRobo_LOCK_OBJECT_ACQUIRE_LOCK_HELPURL="";i.Msg.CocoRobo_LOCK_OBJECT_ACQUIRE_LOCK_MESSAGE0="线程锁对象 %1 请求锁";i.Msg.CocoRobo_LOCK_OBJECT_ACQUIRE_LOCK_TOOLTIP="";i.Msg.CocoRobo_START_NEW_THREAD_HELPURL="";i.Msg.CocoRobo_START_NEW_THREAD_MESSAGE0="子线程 %1";i.Msg.CocoRobo_START_NEW_THREAD_TOOLTIP="";i.Msg.CocoRobo_UART_INIT_HELPURL="";i.Msg.CocoRobo_UART_INIT_MESSAGE0="串口 %4 初始化 波特率 %1 tx %2 rx %3";i.Msg.CocoRobo_UART_INIT_TOOLTIP="教科板支持3组串口。0用于REPL,剩下1、2两组串口可用。所有引脚均可以作为串口的输入RX,除 P2、P3 、P4 、P10 只能作为输入,其余所有的引脚理论上都可以作为输出TX。";i.Msg.CocoRobo_UART_DEINIT_HELPURL="";i.Msg.CocoRobo_UART_DEINIT_MESSAGE0="关闭串口 %1";i.Msg.CocoRobo_UART_DEINIT_TOOLTIP="关闭 UART 总线";i.Msg.CocoRobo_UART_WRITE_STR_HELPURL="";i.Msg.CocoRobo_UART_WRITE_STR_MESSAGE0="串口 %1 写入文本 %2 %3";i.Msg.CocoRobo_UART_WRITE_STR_TOOLTIP=`将文本写入总线。
- 返回值:写入或 None 超时的字节数。`;i.Msg.CocoRobo_UART_WRITE_HEX_HELPURL="";i.Msg.CocoRobo_UART_WRITE_HEX_MESSAGE0="串口 %1 发送16进制字符串 %2 %3";i.Msg.CocoRobo_UART_WRITE_HEX_TOOLTIP="";i.Msg.CocoRobo_UART_HAS_DATA_HELPURL="";i.Msg.CocoRobo_UART_HAS_DATA_MESSAGE0="串口 %1 有可读数据";i.Msg.CocoRobo_UART_HAS_DATA_TOOLTIP=`返回一个整数,计算可以无阻塞地读取的字符数。
- 如果没有可用字符,它将返回0,如果有字符,则返回正数。
- 即使有多个可读的字符,该方法也可以返回1。`;i.Msg.CocoRobo_UART_READLINE_HELPURL="";i.Msg.CocoRobo_UART_READLINE_MESSAGE0="串口 %1 读取一行数据";i.Msg.CocoRobo_UART_READLINE_TOOLTIP=`读一行,以换行符结尾。
- 返回值:读取行或 None 超时。`;i.Msg.CocoRobo_UART_READ_HELPURL="";i.Msg.CocoRobo_UART_READ_MESSAGE0="串口 %1 读取数据";i.Msg.CocoRobo_UART_READ_TOOLTIP=`读取尽可能多的串口数据
- 返回值:包含读入字节的字节列表。若读取超时则返回 None。`;i.Msg.CocoRobo_UART_READ_LENGTH_HELPURL="";i.Msg.CocoRobo_UART_READ_LENGTH_MESSAGE0="串口 %1 读取数据 长度 %2";i.Msg.CocoRobo_UART_READ_LENGTH_TOOLTIP=`读取指定长度字节数据
- 返回值:包含读入字节的字节列表。若读取超时则返回 None。`;i.Msg.CocoRobo_UART_WRITE_BYTE_HELPURL="";i.Msg.CocoRobo_UART_WRITE_BYTE_MESSAGE0="串口 %1 写入单字节 %2";i.Msg.CocoRobo_UART_WRITE_BYTE_TOOLTIP=`参数取值为 0~255 整数
- 将字节写入总线。
- 返回值:写入或 None 超时的字节数。`;i.Msg.CocoRobo_UART_WRITE_BYTES_HELPURL="";i.Msg.CocoRobo_UART_WRITE_BYTES_MESSAGE0="串口 %1 写入字节数组 %2";i.Msg.CocoRobo_UART_WRITE_BYTES_TOOLTIP=`将字节数组写入总线。
- 返回值:写入或 None 超时的字节数。`;i.Msg.CocoRobo_BAUDRATE_HELPURL="";i.Msg.CocoRobo_BAUDRATE_MESSAGE0="%1";i.Msg.CocoRobo_BAUDRATE_TOOLTIP="";i.Msg.CocoRobo_HIGH_LOW_HELPURL="";i.Msg.CocoRobo_HIGH_LOW_MESSAGE0="%1";i.Msg.CocoRobo_HIGH_LOW_TOOLTIP="";i.Msg.CocoRobo_TEN_CONVERT_TO_HELPURL="";i.Msg.CocoRobo_TEN_CONVERT_TO_MESSAGE0="10进制整数 %1 转化为 %2 字符串";i.Msg.CocoRobo_TEN_CONVERT_TO_TOOLTIP="将10进制整数转化为%2字符串,并返回结果";i.Msg.CocoRobo_BIN="二进制";i.Msg.CocoRobo_OCT="八进制";i.Msg.CocoRobo_HEX="十六进制";i.Msg.CocoRobo_CONVERT_TO_TEN_HELPURL="";i.Msg.CocoRobo_CONVERT_TO_TEN_MESSAGE0="%1 字符串 %2 转 10进制整数";i.Msg.CocoRobo_CONVERT_TO_TEN_TOOLTIP="将%2字符串转化为10进制整数,并返回结果";i.Msg.CocoRobo_TEN_CONVERTED_TO_BYTES_HELPURL="";i.Msg.CocoRobo_TEN_CONVERTED_TO_BYTES_MESSAGE0="10进制整数 %2 转 %1 字节";i.Msg.CocoRobo_TEN_CONVERTED_TO_BYTES_TOOLTIP="将10进制整数转为%1字节,并返回结果";i.Msg.CocoRobo_INT_TO_CHR_HELPURL="";i.Msg.CocoRobo_INT_TO_CHR_MESSAGE0="整型 %1 转 ASCII 单字符";i.Msg.CocoRobo_INT_TO_CHR_TOOLTIP="ASCII:基于拉丁字母的一套电脑编码系统,主要用于显示现代英语和其他西欧语言。";i.Msg.CocoRobo_CHR_TO_INT_HELPURL="";i.Msg.CocoRobo_CHR_TO_INT_MESSAGE0="ASCII 单字符 %1 转 整型";i.Msg.CocoRobo_CHR_TO_INT_TOOLTIP="ASCII是基于拉丁字母的一套电脑编码系统,主要用于显示现代英语和其他西欧语言。";i.Msg.CocoRobo_STR_TO_HEX_HELPURL="";i.Msg.CocoRobo_STR_TO_HEX_MESSAGE0="字符串 %1 转 十六进制 字节";i.Msg.CocoRobo_STR_TO_HEX_TOOLTIP="返回结果中用空格分隔两个十六进制数";i.Msg.CocoRobo_HEX_TO_BIN_STR_HELPURL="";i.Msg.CocoRobo_HEX_TO_BIN_STR_MESSAGE0="十六进制字符串 %1 转 二进制 字节";i.Msg.CocoRobo_HEX_TO_BIN_STR_TOOLTIP="十六进制字符串转二进制字节,并返回结果";i.Msg.CocoRobo_DATA_TO_BASE64_HELPURL="";i.Msg.CocoRobo_DATA_TO_BASE64_MESSAGE0="%1 以 base64 格式编码 返回字节对象";i.Msg.CocoRobo_DATA_TO_BASE64_TOOLTIP="Base64编码是从二进制到字符的过程";i.Msg.CocoRobo_BASE64_TO_DATA_HELPURL="";i.Msg.CocoRobo_BASE64_TO_DATA_MESSAGE0="解码 base64 数据 %1 返回字节对象";i.Msg.CocoRobo_BASE64_TO_DATA_TOOLTIP="Base64编码是从二进制到字符的过程";i.Msg.CocoRobo_UJSON_DUMPS_HELPURL="";i.Msg.CocoRobo_UJSON_DUMPS_MESSAGE0="%1 转 json 字符串";i.Msg.CocoRobo_UJSON_DUMPS_TOOLTIP="JSON 格式的 key 必须是字符串,value 可以是合法的 JSON 数据类型(字符串, 数字, 对象, 数组, 布尔值或 none)";i.Msg.CocoRobo_UJSON_LOADS_HELPURL="";i.Msg.CocoRobo_UJSON_LOADS_MESSAGE0="解析 json 字符串 %1 返回对象";i.Msg.CocoRobo_UJSON_LOADS_TOOLTIP="JSON 格式的 key 必须是字符串,value 可以是合法的 JSON 数据类型(字符串, 数字, 对象, 数组, 布尔值或 none)";i.Msg.CocoRobo_code_annotation_HELPURL="";i.Msg.CocoRobo_code_annotation_MESSAGE0="注释 # %1";i.Msg.CocoRobo_code_annotation_TOOLTIP="生成代码注释";i.Msg.CocoRobo_BLYNK_TERMINAL_WIDGET_VPIN_HELPURL="";i.Msg.CocoRobo_BLYNK_TERMINAL_WIDGET_VPIN_MESSAGE0="自定义终端部件 Terminal 虚拟管脚 V %1";i.Msg.CocoRobo_BLYNK_TERMINAL_WIDGET_VPIN_TOOLTIP="";i.Msg.CocoRobo_BLYNK_SYNC_VIRTUAL_HELPURL="";i.Msg.CocoRobo_BLYNK_SYNC_VIRTUAL_MESSAGE0="同步虚拟管脚的状态 V %1";i.Msg.CocoRobo_BLYNK_SYNC_VIRTUAL_TOOLTIP="";i.Msg.CocoRobo_BLYNK_ON_DISCONNECTED_HELPURL="";i.Msg.CocoRobo_BLYNK_ON_DISCONNECTED_MESSAGE0="当 Blynk 断开连接时";i.Msg.CocoRobo_BLYNK_ON_DISCONNECTED_TOOLTIP="";i.Msg.CocoRobo_BLYNK_ON_CONNECTED_HELPURL="";i.Msg.CocoRobo_BLYNK_ON_CONNECTED_MESSAGE0="当 Blynk 连接时";i.Msg.CocoRobo_BLYNK_ON_CONNECTED_TOOLTIP="";i.Msg.CocoRobo_BLYNKTIMER_RUN_HELPURL="";i.Msg.CocoRobo_BLYNKTIMER_RUN_MESSAGE0="运行 Blynk 定时器进程";i.Msg.CocoRobo_BLYNKTIMER_RUN_TOOLTIP="建议放在 '一直重复' 中循环执行";i.Msg.CocoRobo_BLYNK_GET_TIMERS_HELPURL="";i.Msg.CocoRobo_BLYNK_GET_TIMERS_MESSAGE0="可用的 Blynk 定时器";i.Msg.CocoRobo_BLYNK_GET_TIMERS_TOOLTIP="";i.Msg.CocoRobo_BLYNK_STOP_TIMERS_HELPURL="";i.Msg.CocoRobo_BLYNK_STOP_TIMERS_MESSAGE0="停止 Blynk 定时器 %1";i.Msg.CocoRobo_BLYNK_STOP_TIMERS_TOOLTIP=`注意:
- 定时器序号为自动获取,自上而下,从0开始且连续,不可"定时器0,定时器2",此处暴露序号参数为方便查看!
- 参数:
- no_timers_err=False-如果所有计时器都停止,禁用异常触发`;i.Msg.CocoRobo_UART_INPUT_HELPURL="";i.Msg.CocoRobo_UART_INPUT_MESSAGE0="从串口获取文本 提示语句 %1";i.Msg.CocoRobo_UART_INPUT_TOOLTIP="";i.Msg.CocoRobo_BLYNK_SET_PROPERTY_HELPURL="";i.Msg.CocoRobo_BLYNK_SET_PROPERTY_MESSAGE0="给虚拟管脚添加 属性 %1 值 %2";i.Msg.CocoRobo_BLYNK_SET_PROPERTY_TOOLTIP="放于 read 或 write 事件中,虚拟管脚由事件决定,与该管脚绑定的组件会拥有添加的属性";i.Msg.CocoRobo_BLYNK_EMAIL_HELPURL="";i.Msg.CocoRobo_BLYNK_EMAIL_MESSAGE0="向预设邮箱发邮件 %1 主题 %2 正文 %3";i.Msg.CocoRobo_BLYNK_EMAIL_TOOLTIP="";i.Msg.CocoRobo_BLYNK_RUN_HELPURL="";i.Msg.CocoRobo_BLYNK_RUN_MESSAGE0="运行 Blynk 进程";i.Msg.CocoRobo_BLYNK_RUN_TOOLTIP="建议放在 '一直重复' 中循环执行";i.Msg.CocoRobo_BLYNK_APP_NOTIFY_HELPURL="";i.Msg.CocoRobo_BLYNK_APP_NOTIFY_MESSAGE0="Blynk APP 显示通知 %1";i.Msg.CocoRobo_BLYNK_APP_NOTIFY_TOOLTIP="";i.Msg.CocoRobo_BLYNKTIMER_HELPURL="";i.Msg.CocoRobo_BLYNKTIMER_MESSAGE0="Blynk 定时器 %1 %2 周期 %3 秒";i.Msg.CocoRobo_BLYNKTIMER_TOOLTIP=`注意:
- 定时器序号为自动获取,自上而下,从0开始且连续,不可"定时器0,定时器2",此处暴露序号参数为方便查看!
- 参数:
- no_timers_err=False-如果所有计时器都停止,禁用异常触发`;i.Msg.CocoRobo_BLYNK_SENSOR_DATA_TO_APP_HELPURL="";i.Msg.CocoRobo_BLYNK_SENSOR_DATA_TO_APP_MESSAGE0="发送数据 %1 到 Blynk APP 的 虚拟管脚 V %2";i.Msg.CocoRobo_BLYNK_SENSOR_DATA_TO_APP_TOOLTIP="虚拟管脚:V0 ~ V255";i.Msg.CocoRobo_BLYNK_SETUP_HELPURL="";i.Msg.CocoRobo_BLYNK_SETUP_MESSAGE0="Blynk 设置 %1 服务器 %2 端口 %3 授权码 %4";i.Msg.CocoRobo_BLYNK_SETUP_TOOLTIP=`服务器可填 blynk-cloud.com(官网) 或者 blynk.cocorobo.cn(国内)
- 默认端口为 8080
- 注意:手机APP访问端口为 9443`;i.Msg.CocoRobo_BLYNK_APP_DATA_HELPURL="";i.Msg.CocoRobo_BLYNK_APP_DATA_MESSAGE0="当 从 Blynk APP 收到 虚拟管脚 V %1 的值 %2";i.Msg.CocoRobo_BLYNK_APP_DATA_TOOLTIP="虚拟管脚:V0 ~ V255";i.Msg.CocoRobo_ONENET_DISCONNECT_MESSAGE0="OneNET 断开连接";i.Msg.CocoRobo_ONENET_DISCONNECT_TOOLTIP="";i.Msg.CocoRobo_ONENET_DISCONNECT_HELPURL="";i.Msg.CocoRobo_ONENET_RECV_MESSAGE0="当 从 OneNET 收到消息 %1 时";i.Msg.CocoRobo_ONENET_RECV_TOOLTIP="";i.Msg.CocoRobo_ONENET_RECV_HELPURL="";i.Msg.CocoRobo_ONENET_RECV_MSG_MESSAGE0="当 从 OneNET 收到特定消息 %1 时";i.Msg.CocoRobo_ONENET_RECV_MSG_TOOLTIP="";i.Msg.CocoRobo_ONENET_RECV_MSG_HELPURL="";i.Msg.CocoRobo_ONENET_PUB_VALUE_MESSAGE0="向 OneNET 发送数据流 名称 %1 值 %2";i.Msg.CocoRobo_ONENET_PUB_VALUE_TOOLTIP="";i.Msg.CocoRobo_ONENET_PUB_VALUE_HELPURL="";i.Msg.CocoRobo_ONENET_PUB_DICT_MESSAGE0="向 OneNET 发送数据流 %1";i.Msg.CocoRobo_ONENET_PUB_DICT_TOOLTIP="";i.Msg.CocoRobo_ONENET_PUB_DICT_HELPURL="";i.Msg.CocoRobo_ONENET_PUB_VALUE2_MESSAGE0="向 小程序 发送数据流 名称 %1 值 %2";i.Msg.CocoRobo_ONENET_PUB_VALUE2_TOOLTIP="";i.Msg.CocoRobo_ONENET_PUB_VALUE2_HELPURL="";i.Msg.INT_TO_CHR_HELPURL="";i.Msg.INT_TO_CHR_MESSAGE0="整数 %1 转 ASCII 单字符";i.Msg.INT_TO_CHR_TOOLTIP="";i.Msg.CocoRobo_ONENET_ACCEPT_MESSAGE="收到消息";i.Msg.CocoRobo_ONENET="OneNET 设置";i.Msg.CocoRobo_ONENET_WECHAT_APP="小程序 设置";i.Msg.CocoRobo_ONENET_OPTION_BOARDS="可选教科板";i.Msg.CocoRobo_ONENET_TITLE="OneNET";i.Msg.CocoRobo_SERVER="服务器";i.Msg.CocoRobo_DEVICE_ID="设备ID";i.Msg.CocoRobo_PRODUCT_ID="产品ID";i.Msg.CocoRobo_API_KEY="产品APIKey";i.Msg.CocoRobo_ONENET_CALLBACK="回调函数";i.Msg.CocoRobo_TOPIC="主题";i.Msg.CocoRobo_ONENET_CALLBACK_TITLE="OneNET回调函数";i.Msg.CocoRobo_ONENET_OPTION_BOARDS_HELPURL="";i.Msg.CocoRobo_ONENET_OPTION_BOARDS_MESSAGE0="小程序 选择教科板应用 %1";i.Msg.CocoRobo_ONENET_OPTION_BOARDS_TOOLTIP="";i.Msg.CocoRobo_HCSR04_DISTANCE_HELPURL="https://CocoRobo-lib.readthedocs.io/zh/master/hcsr04/index.html#hcsr04";i.Msg.CocoRobo_HCSR04_DISTANCE_MESSAGE0="%1 hcsr04 超声波距离 测量单位 %2";i.Msg.CocoRobo_HCSR04_DISTANCE_TOOLTIP="";i.Msg.CocoRobo_HCSR04_DISTANCE_MM_HELPURL="https://CocoRobo-lib.readthedocs.io/zh/master/hcsr04/index.html#hcsr04";i.Msg.CocoRobo_HCSR04_DISTANCE_MM_MESSAGE0="%1 hcsr04 超声波(mm)";i.Msg.CocoRobo_HCSR04_DISTANCE_MM_TOOLTIP="";i.Msg.CocoRobo_HCSR04_OBJ_HELPURL="https://CocoRobo-lib.readthedocs.io/zh/master/hcsr04/index.html#hcsr04";i.Msg.CocoRobo_HCSR04_OBJ_MESSAGE0="hcsr04 超声波初始化 名称 %1 trigger %2 echo %3";i.Msg.CocoRobo_HCSR04_OBJ_TOOLTIP="";i.Msg.CocoRobo_PM2_5_MIC_HELPURL="";i.Msg.CocoRobo_PM2_5_MIC_MESSAGE0="rx引脚%1 PM值浓度%2";i.Msg.CocoRobo_PM2_5_MIC_TOOLTIP="";i.Msg.CocoRobo_PM2_5_LitresAir_HELPURL="";i.Msg.CocoRobo_PM2_5_LitresAir_MESSAGE0="rx引脚%1 0.1升空气中直径在%2 颗颗物个数";i.Msg.CocoRobo_PM2_5_LitresAir_TOOLTIP="";i.Msg.CocoRobo_IR_REMOTE_RECV_MESSAGE0="红外接收 %1 回调地址 %2 回调命令 %3";i.Msg.CocoRobo_IR_REMOTE_RECV_HELPURL="";i.Msg.CocoRobo_IR_REMOTE_RECV_TOOLTIP="";i.Msg.CocoRobo_IR_REMOTE_SEND_MESSAGE0="红外发送 %1 地址 %2 命令 %3";i.Msg.CocoRobo_IR_REMOTE_SEND_HELPURL="";i.Msg.CocoRobo_IR_REMOTE_SEND_TOOLTIP="";i.Msg.TEXT_FORMAT_MESSAGE0="格式化字符串 %1 % %2";i.Msg.TEXT_FORMAT_TOOLTIP='使用"%"的方式格式化字符串,并返回结果';i.Msg.TEXT_FORMAT_HELPURL="";i.Msg.TEXT_FORMAT2_MESSAGE0="格式化字符串 %1 format %2";i.Msg.TEXT_FORMAT2_TOOLTIP='使用"format"的方式格式化字符串,并返回结果';i.Msg.TEXT_FORMAT2_HELPURL="";i.Msg.TEXT_TO_BYTE_MESSAGE0="转字节 %1";i.Msg.TEXT_TO_BYTE_TOOLTIP="支持数据类型:string";i.Msg.TEXT_TO_BYTE_HELPURL="";i.Msg.CocoRobo_BYTES_DECODE_HELPURL="";i.Msg.CocoRobo_BYTES_DECODE_MESSAGE0="字节 %1 转 字符串";i.Msg.CocoRobo_BYTES_DECODE_TOOLTIP="返回指定字节转字符串的结果";i.Msg.OTHER_TO_BYTE_MESSAGE0="非文本转字节 %1";i.Msg.OTHER_TO_BYTE_TOOLTIP="";i.Msg.OTHER_TO_BYTE_HELPURL="";i.Msg.CocoRobo_ONENET_TOOLTIP="创建OneNET连接";i.Msg.CocoRobo_ONENET_INIT_WIFI_MESSAGE0="物联网 确保连接到 Wi-Fi 名称 %1 密码 %2";i.Msg.CocoRobo_ONENET_INIT_WIFI_TOOLTIP="";i.Msg.CocoRobo_ONENET_INIT_WIFI_HELPURL="";i.Msg.CocoRobo_ONENET_RECV_FROM_WECHAT_APP_HELPURL="";i.Msg.CocoRobo_ONENET_RECV_FROM_WECHAT_APP_MESSAGE0="当从小程序收到 %1 和 %2 时";i.Msg.CocoRobo_ONENET_RECV_FROM_WECHAT_APP_TOOLTIP="";i.Msg.CocoRobo_MAC_ADDRESS_HELPURL="";i.Msg.CocoRobo_MAC_ADDRESS_MESSAGE0="MAC 地址";i.Msg.CocoRobo_MAC_ADDRESS_TOOLTIP="";i.Msg.CocoRobo_RADIO_REC_HELPURL="";i.Msg.CocoRobo_RADIO_REC_MESSAGE0="无线广播 接收消息";i.Msg.CocoRobo_RADIO_REC_TOOLTIP="所接收为字节型";i.Msg.CocoRobo_RADIO_SEND_HELPURL="";i.Msg.CocoRobo_RADIO_SEND_MESSAGE0="无线广播 发送 %1";i.Msg.CocoRobo_RADIO_SEND_TOOLTIP="频道: 1~13";i.Msg.CocoRobo_RADIO_CHANNEL_HELPURL="";i.Msg.CocoRobo_RADIO_CHANNEL_MESSAGE0="设无线广播 频道为 %1";i.Msg.CocoRobo_RADIO_CHANNEL_TOOLTIP="频道: 1~13";i.Msg.CocoRobo_RADIO_ON_OFF_HELPURL="";i.Msg.CocoRobo_RADIO_ON_OFF_MESSAGE0="%1 无线广播";i.Msg.CocoRobo_RADIO_ON_OFF_TOOLTIP="频道: 1~13";i.Msg.CocoRobo_RADIO_RECV_MESSAGE0="当 收到无线广播消息 %1 时";i.Msg.CocoRobo_RADIO_RECV_TOOLTIP="频道: 1~13";i.Msg.CocoRobo_RADIO_RECV_HELPURL="";i.Msg.CocoRobo_RADIO_RECV_MSG_MESSAGE0="当 收到特定无线广播消息 %1 时";i.Msg.CocoRobo_RADIO_RECV_MSG_TOOLTIP="频道: 1~13";i.Msg.CocoRobo_RADIO_RECV_MSG_HELPURL="";i.Msg.CocoRobo_AUDIO_SET_VOLUME_HELPURL="";i.Msg.CocoRobo_AUDIO_SET_VOLUME_MESSAGE0="设音频音量 %1";i.Msg.CocoRobo_AUDIO_SET_VOLUME_TOOLTIP="";i.Msg.CocoRobo_DISPCHAR_MODE_1="普通";i.Msg.CocoRobo_DISPCHAR_MODE_2="反转";i.Msg.CocoRobo_DISPCHAR_MODE_3="透明";i.Msg.CocoRobo_AUDIO_XUNFEI_TTS_HELPURL="";i.Msg.CocoRobo_AUDIO_XUNFEI_TTS_MESSAGE0="TTS 语音播放 %1";i.Msg.CocoRobo_AUDIO_XUNFEI_TTS_TOOLTIP="需要在 讯飞开放平台 www.xfyun.cn 上开通“在线语音合成”服务";i.Msg.CocoRobo_AUDIO_XUNFEI_TTS_CONFIG_HELPURL="https://CocoRobo.readthedocs.io/zh/master/extboard/tutorials/tutorials_parrot.html#id3";i.Msg.CocoRobo_AUDIO_XUNFEI_TTS_CONFIG_MESSAGE0="TTS 语音配置 APPID %1 APIKey %2";i.Msg.CocoRobo_AUDIO_XUNFEI_TTS_CONFIG_TOOLTIP=`输入在 讯飞开放平台 www.xfyun.cn 获取的 APPID 与 APIKey
- 注意:要设置IP白名单`;i.Msg.CocoRobo_AUDIO_PLAY_HELPURL="";i.Msg.CocoRobo_AUDIO_PLAY_MESSAGE0="音频 播放 %1";i.Msg.CocoRobo_AUDIO_PLAY_TOOLTIP=`需要有源音箱
- P8 左声道
- P9 右声道
- GND 接地
- 播放参数:
- 网络 MP3 的 url 或已上传至教科板的 MP3, 如'music_1.mp3' `;i.Msg.CocoRobo_AUDIO_DEINIT_HELPURL="";i.Msg.CocoRobo_AUDIO_DEINIT_MESSAGE0="音频 释放缓存";i.Msg.CocoRobo_AUDIO_DEINIT_TOOLTIP="";i.Msg.CocoRobo_AUDIO_INIT_HELPURL="";i.Msg.CocoRobo_AUDIO_INIT_MESSAGE0="音频 初始化";i.Msg.CocoRobo_AUDIO_INIT_TOOLTIP="为音频解码开辟缓存";i.Msg.CocoRobo_AUDIO_CMD_HELPURL="";i.Msg.CocoRobo_AUDIO_CMD_MESSAGE0="音频 %1";i.Msg.CocoRobo_AUDIO_CMD_TOOLTIP="";i.Msg.CocoRobo_RECORD_INIT_HELPURL="";i.Msg.CocoRobo_RECORD_INIT_MESSAGE0="测试 -- 录音 初始化";i.Msg.CocoRobo_RECORD_INIT_TOOLTIP=`录音初始化。
- 此功能测试中,需要教科板v1.1以上硬件版本。`;i.Msg.CocoRobo_RECORD_DEINIT_HELPURL="";i.Msg.CocoRobo_RECORD_DEINIT_MESSAGE0="测试 -- 录音 释放资源";i.Msg.CocoRobo_RECORD_DEINIT_TOOLTIP=`录音结束后释放资源。
- 此功能测试中,需要教科板v1.1以上硬件版本。`;i.Msg.CocoRobo_RECORD_WAV_HELPURL="";i.Msg.CocoRobo_RECORD_WAV_MESSAGE0="测试 -- 录制音频 存储路径 %1 时长 %2 秒";i.Msg.CocoRobo_RECORD_WAV_TOOLTIP=`录制音频,并以 WAV 格式存储。
- 此功能测试中,需要教科板v1.1以上硬件版本。`;i.Msg.CocoRobo_ASR_HELPURL="";i.Msg.CocoRobo_ASR_MESSAGE0="测试 -- 识别语音,并返回结果";i.Msg.CocoRobo_ASR_TOOLTIP=`语音指令需要在2秒内完成。
- 此功能测试中,需要教科板v1.1以上硬件版本。`;i.Msg.CocoRobo_HELPURL="https://CocoRobox.readthedocs.io/zh_CN/latest/CocoRoboX.html";i.Msg.CocoRobo_button_A="P5(按键A)";i.Msg.CocoRobo_button_B="P11(按键B)";i.Msg.CocoRobo_PIN7_RGB="P7(板载RGB)";i.Msg.CocoRobo_PWM_PIN_P7="P7 (教科板)";i.Msg.CocoRobo_PWM_PIN_P9="P9 (掌控实验箱)";i.Msg.CocoRobo_tem="温度";i.Msg.CocoRobo_hum="湿度";i.Msg.CocoRobo_pre="气压";i.Msg.CocoRobo_left_right="左右";i.Msg.CocoRobo_LEFT="左";i.Msg.CocoRobo_RIGHT="右";i.Msg.CocoRobo_front_back="前后";i.Msg.CocoRobo_vertical="垂直";i.Msg.CocoRobo_horizontal="水平";i.Msg.CocoRobo_run_in_back="后台运行";i.Msg.CocoRobo_run_in_front="前台运行";i.Msg.CocoRobo_draw="绘制";i.Msg.CocoRobo_clear="清除";i.Msg.CocoRobo_s="秒";i.Msg.CocoRobo_ms="毫秒";i.Msg.CocoRobo_us="微秒";i.Msg.CocoRobo_year="年";i.Msg.CocoRobo_month="月";i.Msg.CocoRobo_date="日";i.Msg.CocoRobo_hour="时";i.Msg.CocoRobo_minute="分";i.Msg.CocoRobo_week="星期数";i.Msg.CocoRobo_days="天数";i.Msg.CocoRobo_ORDER="第";i.Msg.CocoRobo_REVERSE_ORDER="倒数第";i.Msg.MATH_RANDOM_RANDRANGE_HELPURL="https://CocoRobox.readthedocs.io/zh_CN/latest/CocoRoboX.html";i.Msg.MATH_RANDOM_RANDRANGE_TOOLTIP="返回指定递增基数集合中的一个随机数,基数缺省值为1";i.Msg.MATH_RANDOM_RANDRANGE_MESSAGE0="随机数 从递增区间 [%1 ,%2) 递增步长%3";i.Msg.MATH_KEEP_DECIMAL_HELPURL="";i.Msg.MATH_KEEP_DECIMAL_TOOLTIP="返回指定值保留小数点的结果";i.Msg.MATH_KEEP_DECIMAL_MESSAGE0="%1 保留 %2 位小数";i.Msg.CocoRobo_MIN="最小值";i.Msg.CocoRobo_MAX="最大值";i.Msg.CocoRobo_LENTH="长度";i.Msg.TUPLE_MIN_MAX_LEN_HELPURL="https://CocoRobox.readthedocs.io/zh_CN/latest/CocoRoboX.html";i.Msg.TUPLE_MIN_MAX_LEN_TOOLTIP="返回元组的%2";i.Msg.TUPLE_MIN_MAX_LEN_MESSAGE0="元组 %1 %2";i.Msg.TUPLE_ITEM_EXIST_HELPURL="https://CocoRobox.readthedocs.io/zh_CN/latest/CocoRoboX.html";i.Msg.TUPLE_ITEM_EXIST_TOOLTIP="判断是否包含指定值,并返回True或False";i.Msg.TUPLE_ITEM_EXIST_MESSAGE0="元组%1 包含%2";i.Msg.LIST_ITEM_EXIST_HELPURL="https://CocoRobox.readthedocs.io/zh_CN/latest/CocoRoboX.html";i.Msg.LIST_ITEM_EXIST_TOOLTIP="列表包含特定的字符串";i.Msg.LIST_ITEM_EXIST_MESSAGE0="列表%1 包含%2";i.Msg.PARTS_OF_TUPLE_HELPURL="https://CocoRobox.readthedocs.io/zh_CN/latest/CocoRoboX.html";i.Msg.PARTS_OF_TUPLE_TOOLTIP="正序计数从0开始,倒序计数从1开始";i.Msg.PARTS_OF_TUPLE_MESSAGE0="返回元组%1 取第%2 项到尾项";i.Msg.PARTS_OF_TUPLE2_HELPURL="https://CocoRobox.readthedocs.io/zh_CN/latest/CocoRoboX.html";i.Msg.PARTS_OF_TUPLE2_TOOLTIP=`递增顺序取项
- 举例:
- 倒数第5到倒数第2;
- 第0到第5`;i.Msg.PARTS_OF_TUPLE2_MESSAGE0="返回元组%1 取%2 %3 项到 %4 %5 项";i.Msg.PARTS_OF_LIST_HELPURL="https://CocoRobox.readthedocs.io/zh_CN/latest/CocoRoboX.html";i.Msg.PARTS_OF_LIST_TOOLTIP=`递增顺序取项
- 举例:
- 倒数第5到倒数第2;
- 第0到第5`;i.Msg.PARTS_OF_LIST_MESSAGE0="返回列表%1 取%2 %3 项到 %4 %5 项";i.Msg.LIST_TO_TUPLE_HELPURL="https://CocoRobox.readthedocs.io/zh_CN/latest/CocoRoboX.html";i.Msg.LIST_TO_TUPLE_TOOLTIP="列表转元组";i.Msg.LIST_TO_TUPLE_MESSAGE0="列表%1 转元组";i.Msg.tuple_create_with_MESSAGE0="定义元组 %1 = %2 ";i.Msg.tuple_create_with_TOOLTIP="只包含一个元组时,需要在元组后面添加逗号";i.Msg.tuple_create_with_HELPURL="https://CocoRobox.readthedocs.io/zh_CN/latest/CocoRoboX.html";i.Msg.tuple_order_item_MESSAGE0="元组%1 %2 %3 项";i.Msg.tuple_order_item_TOOLTIP="正序计数从0开始,倒序计数从1开始";i.Msg.tuple_order_item_HELPURL="https://CocoRobox.readthedocs.io/zh_CN/latest/CocoRoboX.html";i.Msg.LIST_ORDER_ITEM_MESSAGE0="列表%1 %2 %3 项";i.Msg.LIST_ORDER_ITEM_TOOLTIP="正序计数从0开始,倒序计数从1开始";i.Msg.LIST_ORDER_ITEM_HELPURL="https://CocoRobox.readthedocs.io/zh_CN/latest/CocoRoboX.html";i.Msg.SET_LIST_ORDER_ITEM_MESSAGE0="设列表%1 %2 %3 项为%4";i.Msg.SET_LIST_ORDER_ITEM_TOOLTIP="正序计数从0开始,倒序计数从1开始";i.Msg.SET_LIST_ORDER_ITEM_HELPURL="https://CocoRobox.readthedocs.io/zh_CN/latest/CocoRoboX.html";i.Msg.INSERT_LIST_ORDER_ITEM_MESSAGE0="插入列表%1 %2 %3 项为%4";i.Msg.INSERT_LIST_ORDER_ITEM_TOOLTIP="正序计数从0开始,倒序计数从1开始";i.Msg.INSERT_LIST_ORDER_ITEM_HELPURL="https://CocoRobox.readthedocs.io/zh_CN/latest/CocoRoboX.html";i.Msg.SET_TUPLE_ORDER_ITEM_MESSAGE0="设元组%1 %2 %3 项为%4";i.Msg.SET_TUPLE_ORDER_ITEM_TOOLTIP="正序计数从0开始,倒序计数从1开始";i.Msg.SET_TUPLE_ORDER_ITEM_HELPURL="https://CocoRobox.readthedocs.io/zh_CN/latest/CocoRoboX.html";i.Msg.DICT_CREATE_WITH_HELPURL="https://CocoRobox.readthedocs.io/zh_CN/latest/CocoRoboX.html";i.Msg.DICT_CREATE_WITH_TOOLTIP="定义一个字典";i.Msg.DICT_CREATE_WITH_MESSAGE0="定义字典 %1 = %2";i.Msg.SET_CREATE_WITH_HELPURL="https://CocoRobox.readthedocs.io/zh_CN/latest/CocoRoboX.html";i.Msg.SET_CREATE_WITH_TOOLTIP="定义集合";i.Msg.SET_CREATE_WITH_MESSAGE0="定义集合 %1 = %2";i.Msg.SET_UPDATE_WITH_HELPURL="https://CocoRobox.readthedocs.io/zh_CN/latest/CocoRoboX.html";i.Msg.SET_UPDATE_WITH_TOOLTIP="添加参数可为字符串、列表、元组、集合、字典(只添加key),已有元组则不进行操作";i.Msg.SET_UPDATE_WITH_MESSAGE0="集合 %1 添加 %2";i.Msg.INTERSECTION_OF_SETS_HELPURL="https://CocoRobox.readthedocs.io/zh_CN/latest/CocoRoboX.html";i.Msg.INTERSECTION_OF_SETS_TOOLTIP="返回两集合的%1";i.Msg.INTERSECTION_OF_SETS_MESSAGE0="取 %1 集合 %2 集合 %3";i.Msg.CocoRobo_INTERSECTION="交集";i.Msg.CocoRobo_UNION="并集";i.Msg.CocoRobo_DIFFERENCE="差集";i.Msg.SETS_UPDATE_WAYS_HELPURL="https://CocoRobox.readthedocs.io/zh_CN/latest/CocoRoboX.html";i.Msg.SETS_UPDATE_WAYS_TOOLTIP="集合更新为与指定集合的%3";i.Msg.SETS_UPDATE_WAYS_MESSAGE0="集合 %1 更新为 与集合 %2 的 %3";i.Msg.SUBSET_SUPERSET_HELPURL="https://CocoRobox.readthedocs.io/zh_CN/latest/CocoRoboX.html";i.Msg.SUBSET_SUPERSET_TOOLTIP="集合为集合的%3";i.Msg.SUBSET_SUPERSET_MESSAGE0="集合 %1 为集合 %2 的 %3";i.Msg.CocoRobo_SUBSET="子集";i.Msg.CocoRobo_SUPERSET="超集";i.Msg.LEN_OF_SETS_HELPURL="https://CocoRobox.readthedocs.io/zh_CN/latest/CocoRoboX.html";i.Msg.LEN_OF_SETS_TOOLTIP="返回指定集合的长度";i.Msg.LEN_OF_SETS_MESSAGE0="集合 %1 长度";i.Msg.GET_SETS_POP_HELPURL="https://CocoRobox.readthedocs.io/zh_CN/latest/CocoRoboX.html";i.Msg.GET_SETS_POP_TOOLTIP="返回移除随机项后的集合";i.Msg.GET_SETS_POP_MESSAGE0="返回随机项并移除之 从集合 %1";i.Msg.CREATE_EMPTY_SET_HELPURL="https://CocoRobox.readthedocs.io/zh_CN/latest/CocoRoboX.html";i.Msg.CREATE_EMPTY_SET_TOOLTIP="";i.Msg.CREATE_EMPTY_SET_MESSAGE0="创建空集合 %1";i.Msg.BIT_INVERSION_HELPURL="https://CocoRobox.readthedocs.io/zh_CN/latest/CocoRoboX.html";i.Msg.BIT_INVERSION_TOOLTIP="对数据的每个二进制位取反";i.Msg.BIT_INVERSION_MESSAGE0="二进制取反 %1";i.Msg.TUPLE_CREATE_WITH_ITEMS_INSERT_HELPURL="https://CocoRobox.readthedocs.io/zh_CN/latest/CocoRoboX.html";i.Msg.TUPLE_CREATE_WITH_ITEMS_INSERT_TOOLTIP="正序计数从0开始,倒序计数从1开始";i.Msg.SET_CREATE_WITH_ITEMS_INSERT_HELPURL="https://CocoRobox.readthedocs.io/zh_CN/latest/CocoRoboX.html";i.Msg.SET_CREATE_WITH_ITEMS_INSERT_TOOLTIP="项可为字符串、已创建变量变量、元组";i.Msg.DICT_CREATE_WITH_ITEMS_INSERT_HELPURL="https://CocoRobox.readthedocs.io/zh_CN/latest/CocoRoboX.html";i.Msg.DICT_CREATE_WITH_ITEMS_INSERT_TOOLTIP="初始化字典";i.Msg.DICT_KEY_VALUE_HELPURL="https://CocoRobox.readthedocs.io/zh_CN/latest/CocoRoboX.html";i.Msg.DICT_KEY_VALUE_TOOLTIP="返回字典指定键的值";i.Msg.DICT_KEY_VALUE_MESSAGE0="字典%1 键%2 的值";i.Msg.ADD_DICT_KEY_VALUE_HELPURL="https://CocoRobox.readthedocs.io/zh_CN/latest/CocoRoboX.html";i.Msg.ADD_DICT_KEY_VALUE_TOOLTIP="已有该键则更新该键";i.Msg.ADD_DICT_KEY_VALUE_MESSAGE0="字典%1 添加键%2 值%3";i.Msg.DICT_LENGTH_HELPURL="https://CocoRobox.readthedocs.io/zh_CN/latest/CocoRoboX.html";i.Msg.DICT_LENGTH_TOOLTIP="返回字典的长度";i.Msg.DICT_LENGTH_MESSAGE0="字典%1 长度";i.Msg.DICT_KEY_EXIST_HELPURL="https://CocoRobox.readthedocs.io/zh_CN/latest/CocoRoboX.html";i.Msg.DICT_KEY_EXIST_TOOLTIP="判断字典中是否包含指定键,并返回True或False";i.Msg.DICT_KEY_EXIST_MESSAGE0="字典%1 包含键%2";i.Msg.DICT_KEY_OR_VAL_LIST_HELPURL="https://CocoRobox.readthedocs.io/zh_CN/latest/CocoRoboX.html";i.Msg.DICT_KEY_OR_VAL_LIST_TOOLTIP="返回字典%2的列表";i.Msg.DICT_KEY_OR_VAL_LIST_MESSAGE0="字典%1 %2的列表";i.Msg.DICT_KEYS="键";i.Msg.DICT_VALUES="值";i.Msg.CocoRobo_lists_append_MESSAGE0="列表%1 末尾添加项%2";i.Msg.CocoRobo_lists_append_TOOLTIP="列表末尾添加项";i.Msg.CocoRobo_lists_append_HELPURL="https://CocoRobox.readthedocs.io/zh_CN/latest/CocoRoboX.html";i.Msg.CocoRobo_lists_extend_MESSAGE0="列表%1 追加列表%2";i.Msg.CocoRobo_lists_extend_TOOLTIP="在列表中追加列表";i.Msg.CocoRobo_lists_extend_HELPURL="https://CocoRobox.readthedocs.io/zh_CN/latest/CocoRoboX.html";i.Msg.CocoRobo_lists_clear_MESSAGE0="列表%1 清空";i.Msg.CocoRobo_lists_clear_TOOLTIP="清空列表";i.Msg.CocoRobo_lists_clear_HELPURL="https://CocoRobox.readthedocs.io/zh_CN/latest/CocoRoboX.html";i.Msg.CocoRobo_Timer_value_MESSAGE0="定时器 %1 的计数值";i.Msg.CocoRobo_Timer_value_TOOLTIP="获取并返回计时器当前计数值";i.Msg.CocoRobo_Timer_deinit_MESSAGE0="清除 定时器/事件 %1";i.Msg.CocoRobo_Timer_deinit_TOOLTIP="取消定时器的初始化。停止计时器,并禁用计时器外围设备";i.Msg.CocoRobo_Interrupt_AB_HELPURL="https://CocoRobo.readthedocs.io/zh/latest/tutorials/basics/buttons.html#id3";i.Msg.CocoRobo_Interrupt_AB_TOOLTIP="";i.Msg.CocoRobo_Interrupt_AB_MESSAGE0="当按键 %1 被 %2 时";i.Msg.CocoRobo_Interrupt_pin_HELPURL="https://CocoRobo.readthedocs.io/zh/latest/tutorials/basics/io/digital_io.html#id3";i.Msg.CocoRobo_Interrupt_pin_TOOLTIP="上升沿触发:由低电平到高电平;下降沿触发:由高电平到低电平";i.Msg.CocoRobo_Interrupt_pin_MESSAGE0="当引脚 %1 电平 %2 时";i.Msg.CocoRobo_Interrupt_pin_IRQ_FALLING="↘ 从高到低";i.Msg.CocoRobo_Interrupt_pin_IRQ_RISING="↗ 从低到高";i.Msg.CocoRobo_IRQ_FALLING="按下";i.Msg.CocoRobo_IRQ_RISING="松开";i.Msg.CocoRobo_PERIODIC="重复执行";i.Msg.CocoRobo_ONE_SHOT="延时执行";i.Msg.CocoRobo_IS_SHAKED_MESSAGE0="教科板 %1";i.Msg.CocoRobo_IS_SHAKED_HELPURL="";i.Msg.CocoRobo_IS_SHAKED_TOOLTIP="";i.Msg.CocoRobo_IS_SHAKED="被摇晃";i.Msg.CocoRobo_IS_THROWN="被抛起";i.Msg.CocoRobo_SHAKE_DETECTOR_MESSAGE0="当教科板 %1 时";i.Msg.CocoRobo_SHAKE_DETECTOR_HELPURL="";i.Msg.CocoRobo_SHAKE_DETECTOR_TOOLTIP="";i.Msg.CocoRobo_IS_TILTED_MESSAGE0="教科板 %1";i.Msg.CocoRobo_IS_TILTED_HELPURL="";i.Msg.CocoRobo_IS_TILTED_TOOLTIP="";i.Msg.CocoRobo_TILT_DETECTOR_MESSAGE0="当教科板 %1 时";i.Msg.CocoRobo_TILT_DETECTOR_HELPURL="";i.Msg.CocoRobo_TILT_DETECTOR_TOOLTIP="";i.Msg.CocoRobo_DIRECTION_FORWARD="向前倾斜";i.Msg.CocoRobo_DIRECTION_BACK="向后倾斜";i.Msg.CocoRobo_DIRECTION_RIGHT="向右倾斜";i.Msg.CocoRobo_DIRECTION_LEFT="向左倾斜";i.Msg.CocoRobo_DIRECTION_NONE="平放";i.Msg.CocoRobo_TOUCH_EVENT_MESSAGE0="当触摸键 %1 被 %2 时";i.Msg.CocoRobo_TOUCH_EVENT_HELPURL="";i.Msg.CocoRobo_TOUCH_EVENT_TOOLTIP="";i.Msg.CocoRobo_TOUCH_EVENT_PRESSED="触摸";i.Msg.CocoRobo_TOUCH_EVENT_UNPRESSED="释放";i.Msg.CocoRobo_CUSTOM_EVENT_MESSAGE0="事件 %1 : 当 %2 时";i.Msg.CocoRobo_CUSTOM_EVENT_HELPURL="";i.Msg.CocoRobo_CUSTOM_EVENT_TOOLTIP=`自定义事件与定时器共用 1/2/4/7/8/9/10,不可同时占用一个端口。
- 最大同时创建4个事件/定时器,如果存在冲突,请尝试换一个编号。`;i.Msg.CocoRobo_music_HELPURL="https://CocoRobox.readthedocs.io/zh_CN/latest/CocoRoboX.html";i.Msg.CocoRobo_music_range_pitch_TOOLTIP="时长为单个频率的时长";i.Msg.CocoRobo_music_range_pitch_MESSAGE0="播放音调 从%1 到%2 步长%3 时长%4 毫秒 引脚 %5";i.Msg.CocoRobo_neopixel_init_HELPURL="https://CocoRobox.readthedocs.io/zh_CN/latest/CocoRoboX.html";i.Msg.CocoRobo_neopixel_init_TOOLTIP="";i.Msg.CocoRobo_neopixel_init_MESSAGE0="灯带初始化 名称%1 引脚%2 数量%3";i.Msg.CocoRobo_NEOPIXEL_RAINBOW_HELPURL="https://CocoRobox.readthedocs.io/zh_CN/latest/CocoRoboX.html";i.Msg.CocoRobo_NEOPIXEL_RAINBOW_TOOLTIP="";i.Msg.CocoRobo_NEOPIXEL_RAINBOW_MESSAGE0="彩虹灯效 灯带%1 数量 %2 亮度 %3 偏移 %4";i.Msg.CocoRobo_NEOPIXEL_BRIGHTNESS_HELPURL="https://CocoRobo.readthedocs.io/zh/master/library/micropython/neopixel.html#NeoPixel.brightness";i.Msg.CocoRobo_NEOPIXEL_BRIGHTNESS_TOOLTIP="亮度调节, 范围 0 ~ 100";i.Msg.CocoRobo_NEOPIXEL_BRIGHTNESS_MESSAGE0="灯带 %1 设置亮度为 %2";i.Msg.CocoRobo_neopixel_single_TOOLTIP="";i.Msg.CocoRobo_neopixel_single_MESSAGE0="灯带%1 %2号 红%3 绿%4 蓝%5";i.Msg.CocoRobo_neopixel_single_gui_MESSAGE0="灯带 %1 %2号 颜色为 %3";i.Msg.CocoRobo_neopixel_single_gui_TOOLTIP="";i.Msg.CocoRobo_neopixel_show_TOOLTIP="";i.Msg.CocoRobo_neopixel_show_MESSAGE0="灯带%1 设置生效";i.Msg.CocoRobo_neopixel_off_TOOLTIP="";i.Msg.CocoRobo_neopixel_off_MESSAGE0="灯带%1 关闭";i.Msg.CocoRobo_neopixel_all_TOOLTIP="";i.Msg.CocoRobo_neopixel_all_MESSAGE0="灯带%1 全亮 红%2 绿%3 蓝%4";i.Msg.CocoRobo_neopixel_all_gui_TOOLTIP="";i.Msg.CocoRobo_neopixel_all_gui_MESSAGE0="灯带%1 全亮 颜色%2";i.Msg.CocoRobo_image_to_lcd_MESSAGE0="打开图片 %1 宽 %2 高 %3";i.Msg.CocoRobo_image_to_lcd_TOOLTIP="";i.Msg.CocoRobo_time_localtime_MESSAGE0="本地时间 %1";i.Msg.CocoRobo_time_localtime_TOOLTIP=`星期数:返回0~6,周一为0,周日为6
- 天数:获取当前日期是一年中的第几天
- 建议先连接wifi并获取网络时间`;i.Msg.CocoRobo_WiFi_config_MESSAGE0="Wi-Fi 配置信息 %1";i.Msg.CocoRobo_WiFi_config_TOOLTIP="netmask-子网掩码;gateway-网关";i.Msg.CocoRobo_time_ticks_HELPURL="https://CocoRobox.readthedocs.io/zh_CN/latest/CocoRoboX.html";i.Msg.CocoRobo_time_ticks_MESSAGE0="运行时间 %1";i.Msg.CocoRobo_time_ticks_TOOLTIP="";i.Msg.CocoRobo_Timer_MESSAGE0="设置定时器 %1 %2 周期 %3 毫秒";i.Msg.CocoRobo_Timer_TOOLTIP=`创建定时器n,n=1-14。
- 最大同时创建4个定时器,如果存在冲突,请尝试换一个编号。
- 3用于内部程序,
- 5/6用于伺服系统和ADC,
- 11用于摇晃检测,
- 12用于触摸键检测,
- 13用于Radio和DHT11/DHT22定时取值(共用),
- 14用于OneNET和倾斜检测(共用),
- 其余端口与自定义事件共用。`;i.Msg.CocoRobo_Timer_HELPURL="https://CocoRobox.readthedocs.io/zh_CN/latest/blocks/index.html";i.Msg.CocoRobo_sway_xyz_MESSAGE0="%1 摇晃教科板";i.Msg.CocoRobo_sway_xyz_TOOLTIP="教科板正面朝上,触摸键 'python' 靠近使用者,开始左右或前后摇晃教科板";i.Msg.CocoRobo_init_bluetooth_MESSAGE0="初始化 蓝牙名称%1";i.Msg.CocoRobo_init_bluetooth_TOOLTIP="初始化 蓝牙名称";i.Msg.CocoRobo_OnOff_bluetooth_MESSAGE0="蓝牙设备 %1广播";i.Msg.CocoRobo_OnOff_bluetooth_TOOLTIP="蓝牙设备 开启或关闭广播";i.Msg.CocoRobo_HID_keyboard_bluetooth_MESSAGE0="键盘 按键%1";i.Msg.CocoRobo_HID_keyboard_bluetooth_TOOLTIP="HID键盘设备";i.Msg.CocoRobo_HID_consumer_bluetooth_MESSAGE0="消费类设备%1 状态%2";i.Msg.CocoRobo_HID_consumer_bluetooth_TOOLTIP="模拟HID消费类设备的控制器,如蓝牙遥控器";i.Msg.CocoRobo_HID_release_keyboard_bluetooth_MESSAGE0="键盘 释放按键";i.Msg.CocoRobo_HID_release_keyboard_bluetooth_TOOLTIP="键盘设备";i.Msg.CocoRobo_HID_mouse_bluetooth_MESSAGE0="鼠标%1";i.Msg.CocoRobo_HID_mouse_bluetooth_TOOLTIP="鼠标设备";i.Msg.CocoRobo_HID_release_mouse_bluetooth_MESSAGE0="鼠标 释放按键";i.Msg.CocoRobo_HID_release_mouse_bluetooth_TOOLTIP="鼠标设备";i.Msg.CocoRobo_HID_mouse_pointer_bluetooth_MESSAGE0="鼠标 指针移动 x%2 y%1";i.Msg.CocoRobo_HID_mouse_pointer_bluetooth_TOOLTIP="鼠标指针坐标x,y轴的相对位移,范围-1023 ~ 1023";i.Msg.CocoRobo_HID_keyboard_group_bluetooth_MESSAGE0="键盘 按键%1 组合按键%2";i.Msg.CocoRobo_HID_keyboard_group_bluetooth_TOOLTIP="如果想使用多个按键组合指令,可以用“|”或运算";i.Msg.CocoRobo_HID_keyboard_part_bluetooth_MESSAGE0="键盘 组合按键%1";i.Msg.CocoRobo_HID_keyboard_part_bluetooth_TOOLTIP="如果想使用多个按键组合指令,可以用“|”或运算";i.Msg.CocoRobo_HID_keyboard_part_bluetooth_HELPURL="";i.Msg.CocoRobo_init_wifi_MESSAGE0="连接 Wi-Fi 名称 %1 密码 %2";i.Msg.CocoRobo_init_wifi_TOOLTIP="让教科板接入Wi-Fi环境";i.Msg.CocoRobo_dis_WiFi_MESSAGE0="断开 Wi-Fi 连接";i.Msg.CocoRobo_dis_WiFi_TOOLTIP="";i.Msg.CocoRobo_ENABLE_APWIFI_HELPURL="https://CocoRobo.readthedocs.io/zh/master/tutorials/basics/network/network_basics.html#ap";i.Msg.CocoRobo_ENABLE_APWIFI_TOOLTIP=`密码可以为空,或者8位以上的字母或数字。
- AP模式仅用于教科板之间的相互通信,不可以作为热点,令其它设备上网。`;i.Msg.CocoRobo_ENABLE_APWIFI_MESSAGE0="开启 AP模式 名称 %1 密码 %2 信道 %3";i.Msg.CocoRobo_disable_APWiFi_MESSAGE0="关闭 AP模式";i.Msg.CocoRobo_disable_APWiFi_TOOLTIP="";i.Msg.CocoRobo_ntptime_settime_MESSAGE0="同步网络时间";i.Msg.CocoRobo_ntptime_settime_TOOLTIP="NTP时间同步是一种时间同步网络技术";i.Msg.CocoRobo_ntptime_timezone_E1="东1区";i.Msg.CocoRobo_ntptime_timezone_E2="东2区";i.Msg.CocoRobo_ntptime_timezone_E3="东3区";i.Msg.CocoRobo_ntptime_timezone_E4="东4区";i.Msg.CocoRobo_ntptime_timezone_E5="东5区";i.Msg.CocoRobo_ntptime_timezone_E6="东6区";i.Msg.CocoRobo_ntptime_timezone_E7="东7区";i.Msg.CocoRobo_ntptime_timezone_E8="东8区";i.Msg.CocoRobo_ntptime_timezone_E9="东9区";i.Msg.CocoRobo_ntptime_timezone_E10="东10区";i.Msg.CocoRobo_ntptime_timezone_E11="东11区";i.Msg.CocoRobo_ntptime_timezone_E12="东12区";i.Msg.CocoRobo_ntptime_timezone_0="中时区";i.Msg.CocoRobo_ntptime_timezone_W1="西1区";i.Msg.CocoRobo_ntptime_timezone_W2="西2区";i.Msg.CocoRobo_ntptime_timezone_W3="西3区";i.Msg.CocoRobo_ntptime_timezone_W4="西4区";i.Msg.CocoRobo_ntptime_timezone_W5="西5区";i.Msg.CocoRobo_ntptime_timezone_W6="西6区";i.Msg.CocoRobo_ntptime_timezone_W7="西7区";i.Msg.CocoRobo_ntptime_timezone_W8="西8区";i.Msg.CocoRobo_ntptime_timezone_W9="西9区";i.Msg.CocoRobo_ntptime_timezone_W10="西10区";i.Msg.CocoRobo_ntptime_timezone_W11="西11区";i.Msg.CocoRobo_ntptime_timezone_W12="西12区";i.Msg.FILE_TO_LIST_HELPURL="";i.Msg.FILE_TO_LIST_TOOLTIP="读出指定路径的文本文件内容(仅限utf-8格式),并转为列表形式,以分隔符分隔。";i.Msg.FILE_TO_LIST_MESSAGE0="读取文本文件 %1 为列表 ,以 %2 分隔";i.Msg.FILE_TO_BIN_HELPURL="";i.Msg.FILE_TO_BIN_TOOLTIP="以二进制格式读出指定路径的文件内容。";i.Msg.FILE_TO_BIN_MESSAGE0="读取文件 %1 的二进制内容";i.Msg.CocoRobo_INIT_FILE_HELPURL="";i.Msg.CocoRobo_INIT_FILE_TOOLTIP="初始化一个文本文件,如果文件不存在则创建文件,如果文件存在则清空内容。";i.Msg.CocoRobo_INIT_FILE_MESSAGE0="初始化文本文件 %1";i.Msg.CocoRobo_WRITE_FILE_HELPURL="";i.Msg.CocoRobo_WRITE_FILE_TOOLTIP="向指定路径的文本文件写入内容,如果文件不存在则创建文件。";i.Msg.CocoRobo_WRITE_FILE_MESSAGE0="向文本文件 %1 写入内容 %2 ,以 %3 分隔";i.Msg.CocoRobo_SDCARD_INIT_HELPURL="https://CocoRobo.readthedocs.io/zh/master/library/cocorobo/sdcard.html#sdcard.SDCard";i.Msg.CocoRobo_SDCARD_INIT_TOOLTIP=`sck: P13
- mosi: P15
- miso: P14
- sdcard: P16
- 须确保 SPI 总线的引脚与 micro SD 卡物理连接正确,并预先使用 FAT 或 FAT32 文件系统格式化 micro SD 卡。`;i.Msg.CocoRobo_SDCARD_INIT_MESSAGE0="初始化 SD 卡";i.Msg.CocoRobo_SDCARD_MOUNT_HELPURL="https://CocoRobo.readthedocs.io/zh/master/library/cocorobo/sdcard.html#sdcard.SDCard";i.Msg.CocoRobo_SDCARD_MOUNT_TOOLTIP="挂载 SD 卡到指定路径。";i.Msg.CocoRobo_SDCARD_MOUNT_MESSAGE0="挂载 SD 卡到路径 %1";i.Msg.CocoRobo_ENTER="回车";i.Msg.CocoRobo_COMMA="逗号";i.Msg.CocoRobo_SEMICOLON="分号";i.Msg.CocoRobo_SPACE="空格";i.Msg.CocoRobo_wifi_clock_MESSAGE0="Wi-Fi 模拟时钟 x %1 y %2 半径 %3";i.Msg.CocoRobo_wifi_clock_TOOLTIP="需连接 Wi-Fi 使用";i.Msg.CocoRobo_def_clock_MESSAGE0="初始化时钟%1 x %2 y %3 半径 %4";i.Msg.CocoRobo_def_clock_TOOLTIP="";i.Msg.CocoRobo_settime_clock_MESSAGE0="时钟%1 读取时间";i.Msg.CocoRobo_settime_clock_TOOLTIP="";i.Msg.CocoRobo_draw_clear_clock_MESSAGE0="%1 时钟 %2";i.Msg.CocoRobo_draw_clear_clock_TOOLTIP="";i.Msg.CocoRobo_tinywebio_start_MESSAGE0="启动 TinyWebIO 服务 %1";i.Msg.CocoRobo_tinywebio_start_TOOLTIP="启动该服务需连接Wi-Fi,TinyWebIO服务为App Inventor应用提供远程控制接口的教科板工具包";i.Msg.CocoRobo_tinywebio_client_setup_HELPURL="";i.Msg.CocoRobo_tinywebio_client_setup_TOOLTIP=`向服务器发布的数据项(逗号分隔)
- buttona/b 按键状态
- touchpadp/y/t/h/o/n 触摸按键值
- light 光线值
- sound 声音值
- accelerometer 三轴加速度值
- id 教科板标识
- time 时间戳
- pind<n> 数字IO引脚
- pina<n> 模拟IO引脚
- ----------
- 从服务器读取的数据项(逗号分隔)
- rgb0/1/2 RGB灯珠
- oled OLCD显示屏
- music 音乐
- servo<n> 舵机
- pind<n> 数字IO引脚
- pina<n> 模拟IO引脚`;i.Msg.CocoRobo_tinywebio_client_setup_MESSAGE0="设置 TinyWebIO 客户端参数 %1 TinyWebDB服务器地址 %2 向服务器发布的数据项 %3 从服务器读取的数据项 %4 存取服务器的时间间隔(ms) %5";i.Msg.CocoRobo_tinywebio_client_action_HELPURL="";i.Msg.CocoRobo_tinywebio_client_action_TOOLTIP="";i.Msg.CocoRobo_tinywebio_client_action_MESSAGE0="%1 TinyWebIO 客户端";i.Msg.CocoRobo_tinywebio_client_action_start="启动";i.Msg.CocoRobo_tinywebio_client_action_stop="停止";i.Msg.CocoRobo_CUSTOM_CODE_HELPURL="";i.Msg.CocoRobo_CUSTOM_CODE_TOOLTIP="";i.Msg.CocoRobo_CUSTOM_CODE_MESSAGE0="%1 自定义代码 %2 %3";i.Msg.CocoRobo_CUSTOM_TYPE_IMPORT="置顶";i.Msg.CocoRobo_CUSTOM_TYPE_NORMAL="普通";i.Msg.CocoRobo_servo_angle0_MESSAGE0="设置舵机 %1 角度为 %2";i.Msg.CocoRobo_servo_angle_MESSAGE0="设置舵机 %1 角度为 %2 脉宽从 %3 到 %4 最大角度 %5";i.Msg.CocoRobo_servo_angle_TOOLTIP="电源线Vcc(红色)连接扩展板电源口V,地线GND(棕色)连接扩展板地线口G,控制信号线(橙色)连接所选的扩展板引脚";i.Msg.CocoRobo_dh11_hum_tem_HELPURL="https://CocoRobo.readthedocs.io/zh/latest/classic/dht11.html?highlight=DHT";i.Msg.CocoRobo_dh11_hum_tem_MESSAGE0="DHT11 %1 %2";i.Msg.CocoRobo_dh11_hum_tem_TOOLTIP="DHT11上的 + 连接扩展板的电源口 V ,- 连接扩展板的地线口 G ,out 连接扩展板的引脚 0(即选引脚)";i.Msg.CocoRobo_DH22_HUM_TEM_MESSAGE0="DHT22 %1 %2";i.Msg.CocoRobo_DH22_HUM_TEM_TOOLTIP="";i.Msg.CocoRobo_DH22_HUM_TEM_HELPURL="https://CocoRobo.readthedocs.io/zh/latest/classic/dht11.html?highlight=DHT";i.Msg.CocoRobo_music_note_MESSAGE0="音符 %1 %2 : %3";i.Msg.CocoRobo_music_note_TOOLTIP="音符,如C4:4";i.Msg.CocoRobo_return_list_MESSAGE0="定义列表 %1 = %2";i.Msg.CocoRobo_return_list_TOOLTIP="定义一个列表";i.Msg.CocoRobo_display_Show_MESSAGE0="LCD 显示生效";i.Msg.CocoRobo_display_Show_TOOLTIP="";i.Msg.CocoRobo_display_DispChar_MESSAGE0="显示文本 x %1 y %2 内容 %3 模式 %4";i.Msg.CocoRobo_display_DispChar_TOOLTIP="OLCD分辨率128x64";i.Msg.CocoRobo_display_DispChar_HELPURL="https://CocoRobo.readthedocs.io/zh/master/library/cocorobo/CocoRobo.html?highlight=lcd#lcd.DispChar";i.Msg.CocoRobo_display_DispChar_5lines_MESSAGE0="LCD 第%1 行显示 %2 模式 %3";i.Msg.CocoRobo_display_DispChar_5lines_TOOLTIP="OLCD分辨率128x64";i.Msg.CocoRobo_line1="1";i.Msg.CocoRobo_line2="2";i.Msg.CocoRobo_line3="3";i.Msg.CocoRobo_line4="4";i.Msg.CocoRobo_line5="5";i.Msg.CocoRobo_CLEAR_DISPCHAR_5LINES_MESSAGE0="LCD 清除第 %1 行";i.Msg.CocoRobo_CLEAR_DISPCHAR_5LINES_TOOLTIP="OLCD分辨率128x64";i.Msg.CocoRobo_CLEAR_DISPCHAR_5LINES_HELPURL="";i.Msg.CocoRobo_display_fill_O="初始化";i.Msg.CocoRobo_display_fill_0="清空";i.Msg.CocoRobo_display_fill_1="全亮";i.Msg.CocoRobo_display_invert_0="黑底";i.Msg.CocoRobo_display_invert_1="白底";i.Msg.CocoRobo_display_show="生效";i.Msg.CocoRobo_display_fill_MESSAGE0="LCD 显示初始化";i.Msg.GLCDD="获取LCD显示器 %1";i.Msg.CocoRobo_display_fill_TOOLTIP="";i.Msg.CocoRobo_display_pixel_0="暗";i.Msg.CocoRobo_display_pixel_1="亮";i.Msg.CocoRobo_display_pixel_MESSAGE0="描点 x %1 y %2 为 %3";i.Msg.CocoRobo_display_pixel_TOOLTIP="";i.Msg.CocoRobo_display_hline_0="擦除";i.Msg.CocoRobo_display_hline_1="绘制";i.Msg.CocoRobo_display_hline_MESSAGE0="%1 水平线%2 x%3 y%4 长度%5";i.Msg.CocoRobo_display_hline_TOOLTIP="";i.Msg.CocoRobo_ProgressBar_MESSAGE0="进度条%1 x%2 y%3 宽%4 高%5 进度%6";i.Msg.CocoRobo_ProgressBar_TOOLTIP="";i.Msg.CocoRobo_stripBar_MESSAGE0="柱状条%1 x%2 y%3 宽%4 高%5 进度%6";i.Msg.CocoRobo_stripBar_TOOLTIP="";i.Msg.CocoRobo_QR_CODE_HELPURL="https://CocoRobo.readthedocs.io/zh/master/library/cocorobo/gui.html#gui.UI.qr_code";i.Msg.CocoRobo_QR_CODE_TOOLTIP="";i.Msg.CocoRobo_QR_CODE_MESSAGE0="在坐标 x %1 y %2 绘制二维码 %3 尺寸 %4";i.Msg.CocoRobo_DISPLAY_MODE_0="擦除";i.Msg.CocoRobo_DISPLAY_MODE_1="绘制";i.Msg.CocoRobo_DISPLAY_HOLLOW="空心";i.Msg.CocoRobo_DISPLAY_SOLID="实心";i.Msg.CocoRobo_DISPLAY_HVLINE_MESSAGE0="%1 %2 线 %3 x %4 y %5 长度 %6";i.Msg.CocoRobo_DISPLAY_HVLINE_TOOLTIP="";i.Msg.CocoRobo_DISPLAY_SHAPE_RECT_MESSAGE0="%1 %2 矩形 %3 x %4 y %5 宽 %6 高 %7";i.Msg.CocoRobo_DISPLAY_SHAPE_RECT_TOOLTIP="";i.Msg.CocoRobo_DISPLAY_SHAPE_CIRCLE_MESSAGE0="%1 %2 圆 %3 x %4 y %5 半径 %6";i.Msg.CocoRobo_DISPLAY_SHAPE_CIRCLE_TOOLTIP="";i.Msg.CocoRobo_DISPLAY_SHAPE_TRIANGLE_MESSAGE0="%1 %2 三角 %3 x1 %4 y1 %5 x2 %6 y2 %7 x3 %8 y3 %9";i.Msg.CocoRobo_DISPLAY_SHAPE_TRIANGLE_TOOLTIP="";i.Msg.CocoRobo_RGB_0="0 #";i.Msg.CocoRobo_RGB_1="1 #";i.Msg.CocoRobo_RGB_2="2 #";i.Msg.CocoRobo_RGB_ALL="所有";i.Msg.CocoRobo_SET_RGB_LIST_COLOR_MESSAGE0="设置 %1 RGB 灯颜色为 %2";i.Msg.CocoRobo_SET_RGB_LIST_COLOR_TOOLTIP="原生亮度的 1/30 能较好显示色差";i.Msg.CocoRobo_SET_RGB_LIST_NUMBER_MESSAGE0="设置 %1 RGB 灯颜色为 R %2 G %3 B %4";i.Msg.CocoRobo_SET_RGB_LIST_NUMBER_TOOLTIP="原生亮度的 1/30 能较好显示色差";i.Msg.CocoRobo_OFF_RGB_LIST_MESSAGE0="关闭 %1 RGB 灯";i.Msg.CocoRobo_OFF_RGB_LIST_TOOLTIP="";i.Msg.CocoRobo_MUSIC_PLAY_MESSAGE0="播放音乐 %1 引脚 %2";i.Msg.CocoRobo_MUSIC_PLAY_TOOLTIP="播放内置的音乐";i.Msg.CocoRobo_MUSIC_PLAY_UNTIL_END_MESSAGE0="播放音乐 %1 直到完成 , 引脚 %2";i.Msg.CocoRobo_MUSIC_PLAY_UNTIL_END_TOOLTIP="播放内置的音乐";i.Msg.CocoRobo_MUSIC_GE_CHANG_ZU_GUO="歌唱祖国";i.Msg.CocoRobo_MUSIC_DONG_FANG_HONG="东方红";i.Msg.CocoRobo_MUSIC_CAI_YUN_ZHUI_YUE="彩云追月";i.Msg.CocoRobo_MUSIC_ZOU_JIN_XIN_SHI_DAI="走进新时代";i.Msg.CocoRobo_MUSIC_MO_LI_HUA="茉莉花";i.Msg.CocoRobo_MUSIC_YI_MENG_SHAN_XIAO_DIAO="沂蒙山小调";i.Msg.CocoRobo_display_vline_MESSAGE0="%1 垂直线%2 x%3 y%4 长度%5";i.Msg.CocoRobo_display_vline_TOOLTIP="";i.Msg.CocoRobo_display_line_MESSAGE0="%1 线%2 x1 %3 y1 %4 到 x2 %5 y2 %6";i.Msg.CocoRobo_display_line_TOOLTIP="";i.Msg.CocoRobo_display_rect_MESSAGE0="%1 边框%2 x %3 y %4 宽 %5 高 %6";i.Msg.CocoRobo_display_rect_TOOLTIP="";i.Msg.CocoRobo_display_RoundRect_MESSAGE0="%1 弧角边框%2 x %3 y %4 宽 %5 高 %6 半径%7";i.Msg.CocoRobo_display_RoundRect_TOOLTIP="";i.Msg.CocoRobo_display_fill_rect_MESSAGE0="%1 矩形%2 x %3 y %4 宽 %5 高 %6 ";i.Msg.CocoRobo_display_fill_rect_TOOLTIP="";i.Msg.CocoRobo_display_fill_circle_MESSAGE0="%1 实心圆%2 x %3 y %4 半径 %5";i.Msg.CocoRobo_display_fill_circle_TOOLTIP="";i.Msg.CocoRobo_display_circle_MESSAGE0="%1 空心圆%2 x %3 y %4 半径 %5";i.Msg.CocoRobo_display_circle_TOOLTIP="";i.Msg.CocoRobo_display_triangle_MESSAGE0="%1 空心三角%2 x%3 y%4 x2%5 y2%6 x3%7 y3%8";i.Msg.CocoRobo_display_triangle_TOOLTIP="";i.Msg.CocoRobo_display_fill_triangle_MESSAGE0="%1 实心三角%2 x%3 y%4 x2%5 y2%6 x3%7 y3%8";i.Msg.CocoRobo_display_fill_triangle_TOOLTIP="";i.Msg.CocoRobo_display_Bitmap_MESSAGE0="%1 图像 x%2 y%3 宽%4 高%5 16进制图像数据 %6";i.Msg.CocoRobo_display_Bitmap_TOOLTIP="将16进制图像数据显示在OLCD屏的指定位置";i.Msg.CocoRobo_GET_PBM_DATA_MESSAGE0="获取内置图像 %1 模式%2";i.Msg.CocoRobo_GET_PBM_DATA_TOOLTIP="支持*.pbm 或 *.bmp 格式的单色图像文件,获取指定路径的图像文件数据,返回一个元组对象。";i.Msg.CocoRobo_GET_PBM_DATA_HELPURL="https://CocoRobo.readthedocs.io/zh/master/library/cocorobo/gui.html#image";i.Msg.CocoRobo_GET_PBM_DATA_CUSTOM_MESSAGE0="获取自定义图像 %1 模式%2";i.Msg.CocoRobo_DISPLAY_PBM_DATA_MESSAGE0="在坐标 x %1 y %2 显示图像 %3";i.Msg.CocoRobo_DISPLAY_PBM_DATA_TOOLTIP="支持*.pbm 或 *.bmp格式的单色图像文件";i.Msg.CocoRobo_DISPLAY_PBM_DATA_HELPURL="https://CocoRobo.readthedocs.io/zh/master/library/cocorobo/gui.html#image";i.Msg.CocoRobo_BITMAP_FROM_FILE_MESSAGE0="在坐标 x %1 y %2 显示图像 %5 宽 %3 高 %4";i.Msg.CocoRobo_BITMAP_FROM_FILE_TOOLTIP="";i.Msg.CocoRobo_BITMAP_FROM_FILE_HELPURL="";i.Msg.CocoRobo_horizontal="水平";i.Msg.CocoRobo_vertical="垂直";i.Msg.CocoRobo_display_FrameBuffer_MESSAGE0="构建帧 列表 %1 长 %2 宽 %3 扫描模式 %4";i.Msg.CocoRobo_display_FrameBuffer_TOOLTIP="用图像取模后数据的列表 ,创建128x64的帧缓存区,以储存图片帧";i.Msg.CocoRobo_FONT_DIGIFACE_11="仿数码管 11像素";i.Msg.CocoRobo_FONT_DIGIFACE_16="仿数码管 16像素";i.Msg.CocoRobo_FONT_DIGIFACE_21="仿数码管 21像素";i.Msg.CocoRobo_FONT_DIGIFACE_30="仿数码管 30像素";i.Msg.CocoRobo_FONT_DIGIFACE_44="仿数码管 44像素";i.Msg.CocoRobo_FONT_DIGIFACE_IT_30="仿数码管 斜体 30像素";i.Msg.CocoRobo_FONT_DIGIFACE_IT_42="仿数码管 斜体 42像素";i.Msg.CocoRobo_FONT_DVSM_12="DejaVu Sans Mono 12像素";i.Msg.CocoRobo_FONT_DVSM_16="DejaVu Sans Mono 16像素";i.Msg.CocoRobo_FONT_DVSM_21="DejaVu Sans Mono 21像素";i.Msg.CocoRobo_FONT_DVSMB_12="DejaVu Sans Mono 黑体 12像素";i.Msg.CocoRobo_FONT_DVSMB_16="DejaVu Sans Mono 黑体 16像素";i.Msg.CocoRobo_FONT_DVSMB_21="DejaVu Sans Mono 黑体 21像素";i.Msg.CocoRobo_FONT_WRAP="自动换行";i.Msg.CocoRobo_FONT_NO_WRAP="不换行";i.Msg.CocoRobo_FACE_1="心形";i.Msg.CocoRobo_FACE_2="心形(小)";i.Msg.CocoRobo_FACE_3="高兴";i.Msg.CocoRobo_FACE_4="笑脸";i.Msg.CocoRobo_FACE_5="伤心";i.Msg.CocoRobo_FACE_6="困惑";i.Msg.CocoRobo_FACE_7="生气";i.Msg.CocoRobo_FACE_8="睡着";i.Msg.CocoRobo_FACE_9="惊讶";i.Msg.CocoRobo_FACE_10="愚蠢";i.Msg.CocoRobo_FACE_11="极妙";i.Msg.CocoRobo_FACE_12="无聊";i.Msg.CocoRobo_FACE_ROCK="石头";i.Msg.CocoRobo_FACE_PAPER="布";i.Msg.CocoRobo_FACE_SCISSORS="剪刀";i.Msg.CocoRobo_FACE_ROCK_S="石头(小)";i.Msg.CocoRobo_FACE_PAPER_S="布(小)";i.Msg.CocoRobo_FACE_SCISSORS_S="剪刀(小)";i.Msg.CocoRobo_DISPLAY_FONT_MESSAGE0="在坐标 x %1 y %2 显示 %3 以 %4 字体 %5";i.Msg.CocoRobo_DISPLAY_FONT_TOOLTIP="";i.Msg.CocoRobo_DISPLAY_FONT_HELPURL="";i.Msg.CocoRobo_front="正向";i.Msg.CocoRobo_reverse="反转";i.Msg.CocoRobo_display_blit_MESSAGE0="显示帧 坐标x %1 y %2";i.Msg.CocoRobo_display_blit_TOOLTIP="";i.Msg.CocoRobo_front_reverse_MESSAGE0="像素点bit %1";i.Msg.CocoRobo_front_reverse_TOOLTIP="用于显示之前";i.Msg.CocoRobo_images_append_MESSAGE0="动图显示 帧数%1 周期%2 长%3 宽%4";i.Msg.CocoRobo_images_append_TOOLTIP="上传至教科板的pbm图片需命名为IMAGE.数字,后缀为pbm。如:IMAGE.1.pbm。帧数为7则数字为1至7";i.Msg.CocoRobo_button_is_pressed_MESSAGE0="按键%1 被按下";i.Msg.CocoRobo_button_is_pressed_TOOLTIP="";i.Msg.CocoRobo_button_both_pressed_MESSAGE0="AB按键都按下";i.Msg.CocoRobo_button_both_pressed_TOOLTIP="";i.Msg.CocoRobo_touchPad_value_MESSAGE0="按键%1 被触摸";i.Msg.CocoRobo_touchPad_value_TOOLTIP="";i.Msg.CocoRobo_touchPad_value_num_MESSAGE0="按键%1 触摸值";i.Msg.CocoRobo_touchPad_value_num_TOOLTIP="";i.Msg.CocoRobo_read_digital_MESSAGE0="读取引脚%1 数字值";i.Msg.CocoRobo_read_digital_TOOLTIP="";i.Msg.CocoRobo_read_DS18B20_MESSAGE0="DS18B20 防水温度传感器 引脚 %1";i.Msg.CocoRobo_read_DS18B20_TOOLTIP="";i.Msg.CocoRobo_read_DS18B20_HELPURL="http://docs.micropython.org/en/latest/esp32/quickref.html?highlight=onewire#onewire-driver";i.Msg.CocoRobo_set_digital_MESSAGE0="设置引脚 %2 数字值为 %1";i.Msg.CocoRobo_set_digital_TOOLTIP="";i.Msg.CocoRobo_read_analog_MESSAGE0="读取引脚 %1 模拟值";i.Msg.CocoRobo_read_analog_TOOLTIP="";i.Msg.CocoRobo_set_analog_MESSAGE0="设置引脚 %2 模拟值(PWM)为 %1";i.Msg.CocoRobo_set_analog_TOOLTIP="模拟输出是通过IO引脚输出脉宽调制信号,输出指定的电压值,简称PWM。";i.Msg.CocoRobo_set_RGB_MESSAGE0="设置 %1 号 RGB 灯颜色为 R %2 G %3 B %4";i.Msg.CocoRobo_set_RGB_TOOLTIP="原生亮度的 1/30 能较好显示色差";i.Msg.CocoRobo_set_RGB_color_MESSAGE0="设置 %1 号 RGB 灯颜色为 %2";i.Msg.CocoRobo_set_RGB_color_TOOLTIP="原生亮度的 1/30 能较好显示色差";i.Msg.CocoRobo_set_RGB_all_MESSAGE0="设置所有 RGB 灯颜色为 R %1 G %2 B %3";i.Msg.CocoRobo_set_RGB_all_TOOLTIP="原生亮度的 1/30 能较好显示色差";i.Msg.CocoRobo_set_RGB_color_all_MESSAGE0="设置所有 RGB 灯颜色为 %1";i.Msg.CocoRobo_set_RGB_color_all_TOOLTIP="原生亮度的 1/30 能较好显示色差";i.Msg.CocoRobo_fresh_RGB_MESSAGE0="RGB 灯设置生效";i.Msg.CocoRobo_fresh_RGB_TOOLTIP="";i.Msg.CocoRobo_off_RGB_MESSAGE0="关闭 RGB 灯";i.Msg.CocoRobo_off_RGB_TOOLTIP="";i.Msg.CocoRobo_buzz_state_MESSAGE0="停止播放音乐";i.Msg.CocoRobo_buzz_state_TOOLTIP="";i.Msg.CocoRobo_buzz_freq_MESSAGE0="播放连续音调 %1 引脚 %2";i.Msg.CocoRobo_buzz_freq_TOOLTIP="";i.Msg.CocoRobo_buzz_tone_MESSAGE0="播放音调 %1";i.Msg.CocoRobo_buzz_tone_TOOLTIP="";i.Msg.CocoRobo_MUSIC_TONE_TEMPO_HELPURL="";i.Msg.CocoRobo_MUSIC_TONE_TEMPO_TOOLTIP="默认是教科板的P6引脚";i.Msg.CocoRobo_MUSIC_TONE_TEMPO_MESSAGE0="播放音符 %1 引脚 %2";i.Msg.CocoRobo_MUSIC_TONE_HELPURL="";i.Msg.CocoRobo_MUSIC_TONE_TOOLTIP="";i.Msg.CocoRobo_MUSIC_TONE_MESSAGE0="音调 %1";i.Msg.CocoRobo_MUSIC_MUSICAL_NOTE_HELPURL="";i.Msg.CocoRobo_MUSIC_MUSICAL_NOTE_TOOLTIP="";i.Msg.CocoRobo_MUSIC_MUSICAL_NOTE_MESSAGE0="音符 %1 节拍 %2";i.Msg.CocoRobo_MUSIC_TICK_HELPURL="";i.Msg.CocoRobo_MUSIC_TICK_TOOLTIP="";i.Msg.CocoRobo_MUSIC_TICK_MESSAGE0="节拍 %1";i.Msg.CocoRobo_4_LINES_HELPURL="";i.Msg.CocoRobo_4_LINES_TOOLTIP="";i.Msg.CocoRobo_4_LINES_MESSAGE0="%1";i.Msg.NUMBER_1="1";i.Msg.NUMBER_1_2="1/2";i.Msg.NUMBER_1_4="1/4";i.Msg.NUMBER_2="2";i.Msg.NUMBER_4="4";i.Msg.CocoRobo_read_sound_MESSAGE0="声音值";i.Msg.CocoRobo_read_sound_TOOLTIP="";i.Msg.CocoRobo_read_light_MESSAGE0="光线值";i.Msg.CocoRobo_read_light_TOOLTIP="";i.Msg.CocoRobo_accelerometer_get_MESSAGE0="%1 轴加速度";i.Msg.CocoRobo_accelerometer_get_TOOLTIP="";i.Msg.CocoRobo_accelerometer_get_z_MESSAGE0="z轴加速度";i.Msg.CocoRobo_accelerometer_get_z_TOOLTIP="";i.Msg.CocoRobo_accelerometer_get_y_MESSAGE0="y轴加速度";i.Msg.CocoRobo_accelerometer_get_y_TOOLTIP="";i.Msg.CocoRobo_accelerometer_get_x_MESSAGE0="x轴加速度";i.Msg.CocoRobo_accelerometer_get_x_TOOLTIP="";i.Msg.CocoRobo_ACCELEROMETER_RANGE_2G="±2g";i.Msg.CocoRobo_ACCELEROMETER_RANGE_4G="±4g";i.Msg.CocoRobo_ACCELEROMETER_RANGE_8G="±8g";i.Msg.CocoRobo_ACCELEROMETER_RANGE_16G="±16g";i.Msg.CocoRobo_ACCELEROMETER_RES_10_BIT="10bits";i.Msg.CocoRobo_ACCELEROMETER_RES_12_BIT="12bits";i.Msg.CocoRobo_ACCELEROMETER_RES_14_BIT="14bits";i.Msg.CocoRobo_ACCELEROMETER_SET_RANGE_TOOLTIP="设置加速度范围,默认为 ±2g。";i.Msg.CocoRobo_ACCELEROMETER_SET_RANGE_MESSAGE0="设置加速度范围为 %1";i.Msg.CocoRobo_ACCELEROMETER_SET_RESOLUSTION_TOOLTIP="设置加速度分辨率,默认为 10bits。";i.Msg.CocoRobo_ACCELEROMETER_SET_RESOLUSTION_MESSAGE0="设置加速度分辨率为 %1";i.Msg.CocoRobo_ACCELEROMETER_SET_OFFSET_TOOLTIP=`校准加速度计的3个轴(x,y,z)的加速值偏差。
- 一般情况下无需校准,只有遇到加速度偏差较大时才要校准。
- x , y , z 为调整偏差值,可修正范围为 ±1g。
- 注意:校准数据断电后不会保存。`;i.Msg.CocoRobo_ACCELEROMETER_SET_OFFSET_MESSAGE0="校准加速度值 %1 X轴偏差 %2 Y轴偏差 %3 Z轴偏差 %4";i.Msg.CocoRobo_COMPASS_GET_AXIS_TOOLTIP="仅适用于教科板2.0及以上版本";i.Msg.CocoRobo_COMPASS_GET_AXIS_MESSAGE0="%1 轴 磁力";i.Msg.CocoRobo_COMPASS_GET_ANGLE_TOOLTIP="仅适用于教科板2.0及以上版本";i.Msg.CocoRobo_COMPASS_GET_ANGLE_MESSAGE0="指南针方向";i.Msg.CocoRobo_TILT_ANGLE_HELPURL="";i.Msg.CocoRobo_TILT_ANGLE_TOOLTIP="";i.Msg.CocoRobo_TILT_ANGLE_MESSAGE0="%1 轴倾斜角";i.Msg.CocoRobo_random_choice_MESSAGE0="返回随机项%1";i.Msg.CocoRobo_random_choice_TOOLTIP="以String格式,返回列表或字符串中的随机项";i.Msg.MACHINE_TIME_PULSE_US_HELPURL="https://CocoRobo.readthedocs.io/zh/master/library/micropython/machine/machine.html?highlight=machine.time_pulse_us#machine.time_pulse_us";i.Msg.MACHINE_TIME_PULSE_US_MESSAGE0="%1 外部 %2 电平持续时间(微秒)";i.Msg.MACHINE_TIME_PULSE_US_TOOLTIP="";i.Msg.CocoRobo_i2c_init_MESSAGE0="初始化I2C 波特率%1";i.Msg.CocoRobo_i2c_init_TOOLTIP="SCL引脚19,SDA引脚20,与内部的OLCD和加速度传感器共享I2C总线";i.Msg.CocoRobo_dev_i2c_init_MESSAGE0="初始化I2C SCL %2 SDA %3 波特率 %1";i.Msg.CocoRobo_dev_i2c_init_TOOLTIP="";i.Msg.CocoRobo_dev_i2c_init_HELPURL="https://CocoRobo.readthedocs.io/zh/master/library/micropython/machine/machine.I2C.html#machine.I2C";i.Msg.CocoRobo_i2c_read_write_MESSAGE0="I2C 地址 %1 写入 %2";i.Msg.CocoRobo_i2c_read_write_TOOLTIP=`地址:Number
- 写入:Number、String`;i.Msg.CocoRobo_i2c_readfrom_MESSAGE0="I2C 地址 %1 读取bytes数量 %2";i.Msg.CocoRobo_i2c_readfrom_TOOLTIP=`地址:Number
- 返回:读取数据的 bytes 对象的字符串`;i.Msg.CocoRobo_print_MESSAGE0="调试输出 %1";i.Msg.CocoRobo_print_TOOLTIP="通过串口调试,输出字符串";i.Msg.CocoRobo_PRINT_TO_CHART_TOOLTIP="";i.Msg.CocoRobo_PRINT_TO_CHART_EMPTY_TITLE="打印数据到图表";i.Msg.CocoRobo_PRINT_TO_CHART_INPUT_WITH="打印数据到图表";i.Msg.CocoRobo_PRINT_TO_CHART_ITEM_TITLE="数据";i.Msg.CocoRobo_PRINT_TO_CHART_ITEM_TOOLTIP="";i.Msg.CocoRobo_PRINT_TO_CHART_CONTAINER_TITLE_ADD="数据内容";i.Msg.CocoRobo_PRINT_TO_CHART_CONTAINER_TOOLTIP="";i.Msg.CocoRobo_INIT_CHART_TOOLTIP="";i.Msg.CocoRobo_INIT_CHART_EMPTY_TITLE="初始化图表列标题";i.Msg.CocoRobo_INIT_CHART_INPUT_WITH="初始化图表列标题";i.Msg.CocoRobo_INIT_CHART_ITEM_TITLE="标题";i.Msg.CocoRobo_INIT_CHART_ITEM_TOOLTIP="";i.Msg.CocoRobo_INIT_CHART_CONTAINER_TITLE_ADD="数据列标题";i.Msg.CocoRobo_INIT_CHART_CONTAINER_TOOLTIP="";i.Msg.MICROBIT_ACCELEROMETER_GET_X_MESSAGE0="加速度计 X 轴";i.Msg.MICROBIT_ACCELEROMETER_GET_X_TOOLTIP="获取加速度传感器 X 轴参数。";i.Msg.MICROBIT_ACCELEROMETER_GET_X_HELPURL="https://microbit-micropython.readthedocs.io/en/latest/accelerometer.html#microbit.accelerometer.get_x";i.Msg.MICROBIT_ACCELEROMETER_GET_Y_MESSAGE0="加速度计 Y 轴";i.Msg.MICROBIT_ACCELEROMETER_GET_Y_TOOLTIP="获取加速度传感器 Y 轴参数。";i.Msg.MICROBIT_ACCELEROMETER_GET_Y_HELPURL="https://microbit-micropython.readthedocs.io/en/latest/accelerometer.html#microbit.accelerometer.get_y";i.Msg.MICROBIT_ACCELEROMETER_GET_Z_MESSAGE0="加速度计 Z 轴";i.Msg.MICROBIT_ACCELEROMETER_GET_Z_TOOLTIP="获取加速度传感器 Z 轴参数。";i.Msg.MICROBIT_ACCELEROMETER_GET_Z_HELPURL="https://microbit-micropython.readthedocs.io/en/latest/accelerometer.html#microbit.accelerometer.get_z";i.Msg.MICROBIT_ACCELEROMETER_WAS_GESTURE_MESSAGE0="发生过手势 %1";i.Msg.MICROBIT_ACCELEROMETER_WAS_GESTURE_TOOLTIP="通过返回 “真” 或者 “假” 提示自从上次检查后是否发生过指定的手势。";i.Msg.MICROBIT_ACCELEROMETER_WAS_GESTURE_HELPURL="https://microbit-micropython.readthedocs.io/en/latest/accelerometer.html#microbit.accelerometer.was_gesture";i.Msg.MICROBIT_ACCELEROMETER_IS_GESTURE_MESSAGE0="发生手势 %1";i.Msg.MICROBIT_ACCELEROMETER_IS_GESTURE_TOOLTIP="通过返回 “真” 或者 “假” 表示自从现在发生指定的手势。";i.Msg.MICROBIT_ACCELEROMETER_IS_GESTURE_HELPURL="https://microbit-micropython.readthedocs.io/en/latest/accelerometer.html#microbit.accelerometer.is_gesture";i.Msg.MICROBIT_ACCELEROMETER_GET_GESTURES_MESSAGE0="获取手势";i.Msg.MICROBIT_ACCELEROMETER_GET_GESTURES_TOOLTIP="返回发生过的手势,同时清除以前的手势。";i.Msg.MICROBIT_ACCELEROMETER_GET_GESTURES_HELPURL="https://microbit-micropython.readthedocs.io/en/latest/accelerometer.html#microbit.accelerometer.get_gestures";i.Msg.MICROBIT_ACCELEROMETER_CURRENT_GESTURE_MESSAGE0="当前手势";i.Msg.MICROBIT_ACCELEROMETER_CURRENT_GESTURE_TOOLTIP="返回当前手势名称。";i.Msg.MICROBIT_ACCELEROMETER_CURRENT_GESTURE_HELPURL="https://microbit-micropython.readthedocs.io/en/latest/accelerometer.html#microbit.accelerometer.current_gesture";i.Msg.MICROBIT_BUTTON_IS_PRESSED_MESSAGE0="按键 %1 已经按下";i.Msg.MICROBIT_BUTTON_IS_PRESSED_TOOLTIP="如果指定按键按下返回 “真”,否则返回 “假”。";i.Msg.MICROBIT_BUTTON_IS_PRESSED_HELPURL="https://microbit-micropython.readthedocs.io/en/latest/button.html#Button.is_pressed";i.Msg.MICROBIT_BUTTON_WAS_PRESSED_MESSAGE0="按键 %1 曾经按下";i.Msg.MICROBIT_BUTTON_WAS_PRESSED_TOOLTIP="如果按键曾经按下过返回 “真”,否则返回 “假”。";i.Msg.MICROBIT_BUTTON_WAS_PRESSED_HELPURL="https://microbit-micropython.readthedocs.io/en/latest/button.html#Button.was_pressed";i.Msg.MICROBIT_BUTTON_GET_PRESSES_MESSAGE0="按键 %1 按下过的次数";i.Msg.MICROBIT_BUTTON_GET_PRESSES_TOOLTIP="返回按键按下的总次数,然后清除计数。";i.Msg.MICROBIT_BUTTON_GET_PRESSES_HELPURL="https://microbit-micropython.readthedocs.io/en/latest/button.html#Button.get_presses";i.Msg.MICROBIT_COMPASS_CALIBRATE_HELPURL="https://microbit-micropython.readthedocs.io/en/latest/compass.html#microbit.compass.calibrate";i.Msg.MICROBIT_COMPASS_CALIBRATE_MESSAGE0="校正指南针";i.Msg.MICROBIT_COMPASS_CALIBRATE_TOOLTIP="开始校正指南针,提高精度。";i.Msg.MICROBIT_COMPASS_IS_CALIBRATED_MESSAGE0="指南针已经校正";i.Msg.MICROBIT_COMPASS_IS_CALIBRATED_TOOLTIP="如果指南针已经校正返回 “真”,否则返回 “假”。";i.Msg.MICROBIT_COMPASS_IS_CALIBRATED_HELPURL="https://microbit-micropython.readthedocs.io/en/latest/compass.html#microbit.compass.is_calibrated";i.Msg.MICROBIT_COMPASS_HEADING_MESSAGE0="指南针方向";i.Msg.MICROBIT_COMPASS_HEADING_TOOLTIP="返回指南针的数值,0 - 360 度,顺时针方向,正北方是 0。";i.Msg.MICROBIT_COMPASS_HEADING_HELPURL="https://microbit-micropython.readthedocs.io/en/latest/compass.html#microbit.compass.heading";i.Msg.MICROBIT_COMPASS_GET_FIELD_STRENGTH_MESSAGE0="指南针磁场强度";i.Msg.MICROBIT_COMPASS_GET_FIELD_STRENGTH_TOOLTIP="返回设备周围磁场的强度。";i.Msg.MICROBIT_COMPASS_GET_FIELD_STRENGTH_HELPURL="https://microbit-micropython.readthedocs.io/en/latest/compass.html#microbit.compass.get_field_strength";i.Msg.MICROBIT_COMPASS_X_MESSAGE0="磁力 X轴";i.Msg.MICROBIT_COMPASS_X_TOOLTIP="返回X轴方向的磁力数值。";i.Msg.MICROBIT_COMPASS_X_HELPURL="https://microbit-micropython.readthedocs.io/en/latest/compass.html#microbit.compass.get_x";i.Msg.MICROBIT_COMPASS_Y_MESSAGE0="磁力 Y轴";i.Msg.MICROBIT_COMPASS_Y_TOOLTIP="返回Y轴方向的磁力数值。";i.Msg.MICROBIT_COMPASS_Y_HELPURL="https://microbit-micropython.readthedocs.io/en/latest/compass.html#microbit.compass.get_y";i.Msg.MICROBIT_COMPASS_Z_MESSAGE0="磁力 Z轴";i.Msg.MICROBIT_COMPASS_Z_TOOLTIP="返回Z轴方向的磁力数值。";i.Msg.MICROBIT_COMPASS_Z_HELPURL="https://microbit-micropython.readthedocs.io/en/latest/compass.html#microbit.compass.get_z";i.Msg.MICROBIT_DISPLAY_GET_PIXEL_MESSAGE0="获取第 %1 列 %2 行 位置的亮度";i.Msg.MICROBIT_DISPLAY_GET_PIXEL_TOOLTIP="获取第 X 列和 Y 行位置 LED 的亮度。 0 (不亮), 9 (最亮)。";i.Msg.MICROBIT_DISPLAY_GET_PIXEL_HELPURL="https://microbit-micropython.readthedocs.io/en/latest/display.html#microbit.display.get_pixel";i.Msg.MICROBIT_DISPLAY_SET_PIXEL_MESSAGE0="设第 %1 列 %2 行 LED 的亮度到 %3";i.Msg.MICROBIT_DISPLAY_SET_PIXEL_TOOLTIP="设置第 X 列 Y 行处 LED 的亮度。0 (不亮),9 (最亮)。";i.Msg.MICROBIT_DISPLAY_SET_PIXEL_HELPURL="https://microbit-micropython.readthedocs.io/en/latest/display.html#microbit.display.set_pixel";i.Msg.MICROBIT_DISPLAY_CLEAR_HELPURL="https://microbit-micropython.readthedocs.io/en/latest/display.html#microbit.display.clear";i.Msg.MICROBIT_DISPLAY_CLEAR_MESSAGE0="清除显示内容";i.Msg.MICROBIT_DISPLAY_CLEAR_TOOLTIP="清除全部显示的内容 - 设置所有 LED 亮度为 0 (不亮)。";i.Msg.MICROBIT_DISPLAY_SHOW_IMAGE_MESSAGE0="显示图像/文本 %1";i.Msg.MICROBIT_DISPLAY_SHOW_IMAGE_TOOLTIP="显示图像或文本消息。";i.Msg.MICROBIT_DISPLAY_SHOW_IMAGE_HELPURL="https://microbit-micropython.readthedocs.io/en/latest/display.html#microbit.display.show";i.Msg.MICROBIT_DISPLAY_SHOW_IMAGE_WITH_BRI_MESSAGE0="以亮度 ( %1 / %2 ) 显示图像 %3";i.Msg.MICROBIT_DISPLAY_SHOW_IMAGE_WITH_BRI_TOOLTIP="以指定亮度显示图像。";i.Msg.MICROBIT_DISPLAY_SHOW_ANIMATION_MESSAGE0="动画显示图像 %1 延时 %2 毫秒。%3 等待 %4 %5 循环 %6 %7 清除 %8";i.Msg.MICROBIT_DISPLAY_SHOW_ANIMATION_TOOLTIP="动画方式显示图像列表,每两个图像之间延时一段时间。还可以设置等待模式、循环模式以及完成后清除屏幕。";i.Msg.MICROBIT_DISPLAY_SHOW_ANIMATION_HELPURL="https://microbit-micropython.readthedocs.io/en/latest/display.html#microbit.display.show";i.Msg.MICROBIT_DISPLAY_SCROLL_MESSAGE0="滚动消息 %1";i.Msg.MICROBIT_DISPLAY_SCROLL_TOOLTIP="滚动方式显示文字。";i.Msg.MICROBIT_DISPLAY_SCROLL_HELPURL="https://microbit-micropython.readthedocs.io/en/latest/display.html#microbit.display.scroll";i.Msg.MICROBIT_DISPLAY_SCROLL_ANIMATION_MESSAGE0="滚动消息 %1 延时 %2 毫秒。%3 等待 %4 %5 循环 %6 %7 等宽字体 %8";i.Msg.MICROBIT_DISPLAY_SCROLL_ANIMATION_TOOLTIP="滚动方式显示文字。还可以设置等待模式、循环模式以及字体等宽。";i.Msg.MICROBIT_DISPLAY_SCROLL_ANIMATION_HELPURL="https://microbit-micropython.readthedocs.io/en/latest/display.html#microbit.display.scroll";i.Msg.MICROBIT_DISPLAY_ON_HELPURL="https://microbit-micropython.readthedocs.io/en/latest/display.html#microbit.display.on";i.Msg.MICROBIT_DISPLAY_ON_MESSAGE0="打开屏幕";i.Msg.MICROBIT_DISPLAY_ON_TOOLTIP="打开屏幕显示。";i.Msg.MICROBIT_DISPLAY_OFF_HELPURL="https://microbit-micropython.readthedocs.io/en/latest/display.html#microbit.display.off";i.Msg.MICROBIT_DISPLAY_OFF_MESSAGE0="关闭屏幕";i.Msg.MICROBIT_DISPLAY_OFF_TOOLTIP="关闭屏幕显示。";i.Msg.MICROBIT_DISPLAY_IS_ON_MESSAGE0="显示已经打开";i.Msg.MICROBIT_DISPLAY_IS_ON_TOOLTIP="屏幕已经打开就返回 “真”,否则返回 “假”";i.Msg.MICROBIT_DISPLAY_IS_ON_HELPURL="https://microbit-micropython.readthedocs.io/en/latest/display.html#microbit.display.is_on";i.Msg.MICROBIT_IMAGE_BUILTINS_MESSAGE0="内置图像 %1";i.Msg.MICROBIT_IMAGE_BUILTINS_TOOLTIP="选择一个内置的图像。";i.Msg.MICROBIT_IMAGE_BUILTINS_HELPURL="https://microbit-micropython.readthedocs.io/en/latest/image.html#attributes";i.Msg.MICROBIT_IMAGE_COPY_MESSAGE0="复制图像 %1";i.Msg.MICROBIT_IMAGE_COPY_TOOLTIP="创建参考图像副本。";i.Msg.MICROBIT_IMAGE_COPY_HELPURL="https://microbit-micropython.readthedocs.io/en/latest/image.html#microbit.Image.copy";i.Msg.MICROBIT_IMAGE_INVERT_MESSAGE0="反显图像 %1";i.Msg.MICROBIT_IMAGE_INVERT_TOOLTIP="反显图像(负片效果)。";i.Msg.MICROBIT_IMAGE_INVERT_HELPURL="https://microbit-micropython.readthedocs.io/en/latest/image.html#microbit.Image.invert";i.Msg.MICROBIT_IMAGE_CREATE_MESSAGE0="创建图像 %1 %2 %3 %4 %5 %6 %7 %8 %9 %10 %11 %12 %13 %14 %15 %16 %17 %18 %19 %20 %21 %22 %23 %24 %25 %26 %27 %28 %29 %30";i.Msg.MICROBIT_IMAGE_CREATE_TOOLTIP="创建新图像。";i.Msg.MICROBIT_IMAGE_CREATE_HELPURL="https://microbit-micropython.readthedocs.io/en/latest/image.html#microbit.Image";i.Msg.MICROBIT_IMAGE_CREATE1_MESSAGE0="创建图像 %1 第一行%2第二行%3第三行%4第四行%5第五行%6";i.Msg.MICROBIT_IMAGE_CREATE1_TOOLTIP="创建新图像。";i.Msg.MICROBIT_IMAGE_CREATE1_HELPURL="";i.Msg.MICROBIT_IMAGE_SHIFT_MESSAGE0="平移图像 %1 %2 %3 位";i.Msg.MICROBIT_IMAGE_SHIFT_TOOLTIP="向特定方向移动图像,并返回移动后的结果。";i.Msg.MICROBIT_IMAGE_SHIFT_HELPURL="https://microbit-micropython.readthedocs.io/en/latest/image.html#microbit.Image.shift_left";i.Msg.MICROBIT_IMAGE_SHIFT_LEFT="左移";i.Msg.MICROBIT_IMAGE_SHIFT_RIGHT="右移";i.Msg.MICROBIT_IMAGE_SHIFT_UP="上移";i.Msg.MICROBIT_IMAGE_SHIFT_DOWN="下移";i.Msg.MICROBIT_MICROBIT_PANIC_MESSAGE0="错误状态码 %1";i.Msg.MICROBIT_MICROBIT_PANIC_TOOLTIP="进入错误模式,提示程序存在错误。需要重新启动。用一个数字表示状态码。";i.Msg.MICROBIT_MICROBIT_PANIC_HELPURL="https://microbit-micropython.readthedocs.io/en/latest/microbit.html#microbit.panic";i.Msg.MICROBIT_MICROBIT_RESET_HELPURL="https://microbit-micropython.readthedocs.io/en/latest/microbit.html#microbit.reset";i.Msg.MICROBIT_MICROBIT_RESET_MESSAGE0="复位 micro:bit";i.Msg.MICROBIT_MICROBIT_RESET_TOOLTIP="复位 micro:bit,重新运行";i.Msg.MICROBIT_MICROBIT_SLEEP_MESSAGE0="等待 %1 %2";i.Msg.CocoRobo_MS="毫秒";i.Msg.CocoRobo_US="微秒";i.Msg.CocoRobo_TIME_DIFFERENCE_HELPURL="";i.Msg.CocoRobo_TIME_DIFFERENCE_MESSAGE0="返回运行时间差 开始时间 %1 结束时间 %2";i.Msg.CocoRobo_TIME_DIFFERENCE_TOOLTIP="测量连续调用ticks_ms()、ticks_us()间的周期";i.Msg.CocoRobo_TYPE_HELPURL="";i.Msg.CocoRobo_TYPE_MESSAGE0="值 %1 的类型";i.Msg.CocoRobo_TYPE_TOOLTIP="返回当前值的类型";i.Msg.CocoRobo_TYPE_IS_HELPURL="";i.Msg.CocoRobo_TYPE_IS_MESSAGE0="值 %1 的类型为 %2";i.Msg.CocoRobo_TYPE_IS_TOOLTIP="设置当前值的类型为%2,并返回结果";i.Msg.CocoRobo_EVAL_HELPURL="";i.Msg.CocoRobo_EVAL_MESSAGE0="计算表达式 %1 的结果";i.Msg.CocoRobo_EVAL_TOOLTIP="计算字符串表达式,并返回结果";i.Msg.CocoRobo_RETURN_HELPURL="";i.Msg.CocoRobo_RETURN_MESSAGE0="返回 %1";i.Msg.CocoRobo_RETURN_TOOLTIP="返回一个值";i.Msg.CocoRobo_BLUEBIT_AMBIENTLIGHT_HELPURL="";i.Msg.CocoRobo_BLUEBIT_AMBIENTLIGHT_MESSAGE0="I2C数字光线";i.Msg.CocoRobo_BLUEBIT_AMBIENTLIGHT_TOOLTIP="";i.Msg.CocoRobo_WIFI_ALL_CONFIG_HELPURL="";i.Msg.CocoRobo_WIFI_ALL_CONFIG_MESSAGE0="WI-FI配置信息";i.Msg.CocoRobo_WIFI_ALL_CONFIG_TOOLTIP="以元组形式返回所有wifi配置信息";i.Msg.CocoRobo_WIFI_ISCONNECTED_HELPURL="";i.Msg.CocoRobo_WIFI_ISCONNECTED_MESSAGE0="已连接到 WI-FI";i.Msg.CocoRobo_WIFI_ISCONNECTED_TOOLTIP="";i.Msg.CocoRobo_INIT_ASSISTANT_WIFI_HELPURL="";i.Msg.CocoRobo_INIT_ASSISTANT_WIFI_MESSAGE0="Wi-Fi连接 语音助手 Wi-Fi 名称 %1 密码 %2";i.Msg.CocoRobo_INIT_ASSISTANT_WIFI_TOOLTIP="教科板通过串口把WIF传给语音助手";i.Msg.CocoRobo_INIT_ASSISTANT_PROFILE_HELPURL="";i.Msg.CocoRobo_INIT_ASSISTANT_PROFILE_TOOLTIP="需要先在文件系统将文件上传到板。";i.Msg.CocoRobo_INIT_ASSISTANT_PROFILE_MESSAGE0="读取 语音助手 文本文件 %1";i.Msg.CocoRobo_BLUEBIT_SEG_DISPLAY_HELPURL="";i.Msg.CocoRobo_BLUEBIT_SEG_DISPLAY_MESSAGE0="数码管显示 %1";i.Msg.CocoRobo_BLUEBIT_SEG_DISPLAY_TOOLTIP="-999~9999";i.Msg.CocoRobo_BLUEBIT_SEG_CLEAR_HELPURL="";i.Msg.CocoRobo_BLUEBIT_SEG_CLEAR_MESSAGE0="清空数码管";i.Msg.CocoRobo_BLUEBIT_SEG_CLEAR_TOOLTIP="";i.Msg.CocoRobo_MACHINE_RESET_HELPURL="";i.Msg.CocoRobo_MACHINE_RESET_MESSAGE0="复位";i.Msg.CocoRobo_MACHINE_RESET_TOOLTIP="与按下外部 RESET按键效果一样";i.Msg.CocoRobo_BLUEBIT_GET_COLOR_HELPURL="";i.Msg.CocoRobo_BLUEBIT_GET_COLOR_MESSAGE0="I2C RGB 颜色 %1";i.Msg.CocoRobo_BLUEBIT_GET_COLOR_TOOLTIP="";i.Msg.CocoRobo_BLUEBIT_GET_ALL_COLOR_HELPURL="";i.Msg.CocoRobo_BLUEBIT_GET_ALL_COLOR_MESSAGE0="I2C RGB 颜色";i.Msg.CocoRobo_BLUEBIT_GET_ALL_COLOR_TOOLTIP="以列表形式返回";i.Msg.CocoRobo_BLUEBIT_GET_COLOR_HSV_HELPURL="";i.Msg.CocoRobo_BLUEBIT_GET_COLOR_HSV_MESSAGE0="I2C HSV 颜色 %1";i.Msg.CocoRobo_BLUEBIT_GET_COLOR_HSV_TOOLTIP="色调(H),饱和度(S),明度(V)";i.Msg.CocoRobo_BLUEBIT_GET_ALL_COLOR_HSV_HELPURL="";i.Msg.CocoRobo_BLUEBIT_GET_ALL_COLOR_HSV_MESSAGE0="I2C HSV 颜色";i.Msg.CocoRobo_BLUEBIT_GET_ALL_COLOR_HSV_TOOLTIP="色调(H),饱和度(S),明度(V)";i.Msg.CocoRobo_BLUEBIT_GET_FORCE_MEASURE_HELPURL="";i.Msg.CocoRobo_BLUEBIT_GET_FORCE_MEASURE_MESSAGE0="I2C力传感器 拨码 %1";i.Msg.CocoRobo_BLUEBIT_GET_FORCE_MEASURE_TOOLTIP="I2C地址与编码开关的需要对应";i.Msg.CocoRobo_BLUEBIT_GET_ELECTRICITY_MEASURE_HELPURL="";i.Msg.CocoRobo_BLUEBIT_GET_ELECTRICITY_MEASURE_MESSAGE0="I2C电流传感器 拨码 %1";i.Msg.CocoRobo_BLUEBIT_GET_ELECTRICITY_MEASURE_TOOLTIP="I2C地址与编码开关的需要对应";i.Msg.CocoRobo_BLUEBIT_GET_VOLTAGE_MEASURE_HELPURL="";i.Msg.CocoRobo_BLUEBIT_GET_VOLTAGE_MEASURE_MESSAGE0="I2C电压传感器 拨码 %1";i.Msg.CocoRobo_BLUEBIT_GET_VOLTAGE_MEASURE_TOOLTIP="I2C地址与编码开关的需要对应";i.Msg.CocoRobo_BLUEBIT_GET_MAGNETIC_MEASURE_HELPURL="";i.Msg.CocoRobo_BLUEBIT_GET_MAGNETIC_MEASURE_MESSAGE0="I2C磁场传感器 拨码 %1";i.Msg.CocoRobo_BLUEBIT_GET_MAGNETIC_MEASURE_TOOLTIP="I2C地址与编码开关的需要对应";i.Msg.CocoRobo_BLUEBIT_GET_PH_MEASURE_HELPURL="";i.Msg.CocoRobo_BLUEBIT_GET_PH_MEASURE_MESSAGE0="I2C PH传感器 拨码 %1";i.Msg.CocoRobo_BLUEBIT_GET_PH_MEASURE_TOOLTIP="I2C地址与编码开关的需要对应";i.Msg.CocoRobo_BLUEBIT_GET_TDS_MEASURE_HELPURL="";i.Msg.CocoRobo_BLUEBIT_GET_TDS_MEASURE_MESSAGE0="I2C电导率传感器 拨码 %1";i.Msg.CocoRobo_BLUEBIT_GET_TDS_MEASURE_TOOLTIP="I2C地址与编码开关的需要对应";i.Msg.CocoRobo_BLUEBIT_GET_PRESSURE_MEASURE_HELPURL="";i.Msg.CocoRobo_BLUEBIT_GET_PRESSURE_MEASURE_MESSAGE0="I2C气压传感器 拨码 %1";i.Msg.CocoRobo_BLUEBIT_GET_PRESSURE_MEASURE_TOOLTIP="I2C地址与编码开关的需要对应";i.Msg.CocoRobo_BLUEBIT_GET_PHOTOGATE_TIMER_MEASURE_HELPURL="";i.Msg.CocoRobo_BLUEBIT_GET_PHOTOGATE_TIMER_MEASURE_MESSAGE0="I2C光电门传感器 拨码 %1";i.Msg.CocoRobo_BLUEBIT_GET_PHOTOGATE_TIMER_MEASURE_TOOLTIP="I2C地址与编码开关的需要对应";i.Msg.CocoRobo_BLUEBIT_GET_MOTORPEED_HELPURL="";i.Msg.CocoRobo_BLUEBIT_GET_MOTORPEED_MESSAGE0="扩展板 电机速度 %1";i.Msg.CocoRobo_BLUEBIT_GET_MOTORPEED_TOOLTIP="";i.Msg.CocoRobo_M1M2_LED_OFF_HELPURL="";i.Msg.CocoRobo_M1M2_LED_OFF_MESSAGE0="扩展板 关灯 %1";i.Msg.CocoRobo_M1M2_LED_OFF_TOOLTIP="";i.Msg.CocoRobo_M1M2_LED_ON_HELPURL="";i.Msg.CocoRobo_M1M2_LED_ON_MESSAGE0="扩展板 设灯 %1 亮度 %2";i.Msg.CocoRobo_M1M2_LED_ON_TOOLTIP="";i.Msg.CocoRobo_MUSIC_PIN_P6="默认";i.Msg.CocoRobo_MUSIC_PIN_P6_HELPURL="";i.Msg.CocoRobo_MUSIC_PIN_P6_MESSAGE0="%1";i.Msg.CocoRobo_MUSIC_PIN_P6_TOOLTIP="";i.Msg.MICROBIT_MICROBIT_SLEEP_TOOLTIP=`在进行下一个命令前,等待设定的时间。
- 1秒(s) = 1,000毫秒(ms)
- 1秒(s) = 1,000,000微秒(μs)
- 毫秒,符号ms(millisecond)
- 微秒,符号μs(microsecond)`;i.Msg.MICROBIT_MICROBIT_SLEEP_HELPURL="https://microbit-micropython.readthedocs.io/en/latest/microbit.html#microbit.sleep";i.Msg.MICROBIT_MICROBIT_RUNNING_TIME_MESSAGE0="运行时间";i.Msg.MICROBIT_MICROBIT_RUNNING_TIME_TOOLTIP="获取开机或复位后的运行时间(毫秒)。";i.Msg.MICROBIT_MICROBIT_RUNNING_TIME_HELPURL="https://microbit-micropython.readthedocs.io/en/latest/microbit.html#microbit.running_time";i.Msg.MICROBIT_MICROBIT_TEMPERATURE_MESSAGE0="温度";i.Msg.MICROBIT_MICROBIT_TEMPERATURE_TOOLTIP="获取 micro:bit 的温度(℃)。";i.Msg.MICROBIT_MICROBIT_TEMPERATURE_HELPURL="https://microbit-micropython.readthedocs.io/en/latest/microbit.html#microbit.temperature";i.Msg.MICROBIT_MUSIC_PLAY_BUILT_IN_MESSAGE0="播放音乐 %1 等待 %2 循环 %3 引脚 %4";i.Msg.MICROBIT_MUSIC_PLAY_BUILT_IN_TOOLTIP="播放内置的音乐,可以设置等待模式和循环播放。";i.Msg.MICROBIT_MUSIC_PLAY_BUILT_IN_HELPURL="https://microbit-micropython.readthedocs.io/en/latest/music.html#built-in-melodies";i.Msg.MICROBIT_MUSIC_PITCH_MESSAGE0="播放音调 %1 %2 延时 %3 毫秒 引脚 %4";i.Msg.MICROBIT_MUSIC_PITCH_TOOLTIP="在设定的时间长度里播放音调。";i.Msg.MICROBIT_MUSIC_PITCH_HELPURL="https://microbit-micropython.readthedocs.io/en/latest/music.html#music.pitch";i.Msg.MICROBIT_MUSIC_PLAY_LIST_OF_NOTES_MESSAGE0="引脚 %5 播放音符列表 %1 等待 %2 %3 循环 %4";i.Msg.MICROBIT_MUSIC_PLAY_LIST_OF_NOTES_TOOLTIP="播放音符列表,如C4:4、G4:8等,音符为字符串形式。默认是教科板的P6引脚";i.Msg.MICROBIT_MUSIC_PLAY_LIST_OF_NOTES_HELPURL="https://CocoRobo.readthedocs.io/zh/latest/tutorials/basics/buzz.html";i.Msg.MICROBIT_MUSIC_RESET_HELPURL="https://microbit-micropython.readthedocs.io/en/latest/music.html#music.reset";i.Msg.MICROBIT_MUSIC_RESET_MESSAGE0="恢复音乐设置";i.Msg.MICROBIT_MUSIC_RESET_TOOLTIP="将所有音乐设置 (当前节拍, 音阶和周期) 恢复成默认值。";i.Msg.MICROBIT_MUSIC_STOP_HELPURL="https://microbit-micropython.readthedocs.io/en/latest/music.html#music.stop";i.Msg.MICROBIT_MUSIC_STOP_MESSAGE0="停止播放音乐 引脚 %1";i.Msg.MICROBIT_MUSIC_STOP_TOOLTIP="默认是教科板的P6引脚";i.Msg.MICROBIT_MUSIC_SET_TEMPO_MESSAGE0="设置每一拍等同 %1 分音符,每分钟节拍数 %2";i.Msg.MICROBIT_MUSIC_SET_TEMPO_TOOLTIP="设置回放速度 (节拍)。一定数量的滴答代表一拍,每拍每分钟播放次数 (BPM 每分钟节拍)。";i.Msg.MICROBIT_MUSIC_SET_TEMPO_HELPURL="https://microbit-micropython.readthedocs.io/en/latest/music.html#music.set_tempo";i.Msg.MICROBIT_MUSIC_SET_TEMPO_SPEED_MESSAGE0="设置播放速度为 %1 倍";i.Msg.MICROBIT_MUSIC_SET_TEMPO_SPEED_TOOLTIP="4分音符为1拍,每分钟节拍数默认120,为1倍的播放速度";i.Msg.MICROBIT_MUSIC_SET_TEMPO_SPEED_HELPURL="https://microbit-micropython.readthedocs.io/en/latest/music.html#music.set_tempo";i.Msg.MICROBIT_MUSIC_GET_TEMPO_MESSAGE0="获取当前节拍";i.Msg.MICROBIT_MUSIC_GET_TEMPO_TOOLTIP="获取当前节拍: 每节拍滴答数, 每分钟节拍 (BPM)。";i.Msg.MICROBIT_MUSIC_GET_TEMPO_HELPURL="https://microbit-micropython.readthedocs.io/en/latest/music.html#music.get_tempo";i.Msg.MICROBIT_NEOPIXEL_INITIALISE_MESSAGE0="使用 引脚 %1 控制, neopixel 彩灯数 %2 ";i.Msg.MICROBIT_NEOPIXEL_INITIALISE_TOOLTIP="控制 neopixels 彩灯。需要设定 neopixels 彩灯数量和控制脚。";i.Msg.MICROBIT_NEOPIXEL_INITIALISE_HELPURL="https://microbit-micropython.readthedocs.io/en/latest/neopixel.html#neopixel.NeoPixel";i.Msg.MICROBIT_NEOPIXEL_CLEAR_MESSAGE0="清除 neopixels 彩灯 %1";i.Msg.MICROBIT_NEOPIXEL_CLEAR_TOOLTIP="清除所有 neopixels 彩灯";i.Msg.MICROBIT_NEOPIXEL_CLEAR_HELPURL="https://microbit-micropython.readthedocs.io/en/latest/neopixel.html#neopixel.NeoPixel.clear";i.Msg.MICROBIT_NEOPIXEL_SHOW_MESSAGE0="显示 neopixels 彩灯 %1";i.Msg.MICROBIT_NEOPIXEL_SHOW_TOOLTIP="显示 / 更新全部 neopixels 彩灯。";i.Msg.MICROBIT_NEOPIXEL_SHOW_HELPURL="https://microbit-micropython.readthedocs.io/en/latest/neopixel.html#neopixel.NeoPixel.show";i.Msg.MICROBIT_NEOPIXEL_SET_MESSAGE0="neopixels 彩灯控制 %1 设置位置 %2 红色 %3 绿色 %4 蓝色 %5";i.Msg.MICROBIT_NEOPIXEL_SET_TOOLTIP="更新指定的 neopixel 彩灯的红、绿、蓝 (RGB) 颜色";i.Msg.MICROBIT_NEOPIXEL_SET_HELPURL="https://microbit-micropython.readthedocs.io/en/latest/neopixel.html#using-neopixels";i.Msg.MICROBIT_PIN_TOUCHED_MESSAGE0="引脚 %1 被触摸";i.Msg.MICROBIT_PIN_TOUCHED_TOOLTIP="如果引脚被触摸将返回 “真”。";i.Msg.MICROBIT_PIN_TOUCHED_HELPURL="https://microbit-micropython.readthedocs.io/en/latest/pin.html#microbit.MicroBitTouchPin.is_touched";i.Msg.MICROBIT_PIN_WAS_PRESSED_MESSAGE0="引脚 %1 曾经被触摸";i.Msg.MICROBIT_PIN_WAS_PRESSED_TOOLTIP="如果引脚曾经被触摸将返回 “真”。";i.Msg.MICROBIT_PIN_WAS_PRESSED_HELPURL="https://microbit-micropython.readthedocs.io/en/latest/pin.html#microbit.MicroBitTouchPin.was_pressed";i.Msg.MICROBIT_PIN_GET_PRESSES_MESSAGE0="引脚 %1 被触摸的次数";i.Msg.MICROBIT_PIN_GET_PRESSES_TOOLTIP="返回被触摸的次数,然后清零。";i.Msg.MICROBIT_PIN_GET_PRESSES_HELPURL="https://microbit-micropython.readthedocs.io/en/latest/pin.html#microbit.MicroBitTouchPin.get_presses";i.Msg.MICROBIT_PIN_READ_ANALOG_MESSAGE0="读取引脚 %1 模拟电压";i.Msg.MICROBIT_PIN_READ_ANALOG_TOOLTIP="读取引脚的模拟输入电压。";i.Msg.MICROBIT_PIN_READ_ANALOG_HELPURL="https://microbit-micropython.readthedocs.io/en/latest/pin.html#microbit.MicroBitAnalogDigitalPin.read_analog";i.Msg.MICROBIT_PIN_WRITE_ANALOG_MESSAGE0="设置模拟量 %1 到引脚 %2";i.Msg.MICROBIT_PIN_WRITE_ANALOG_TOOLTIP="写入模拟参数到指定引脚上。";i.Msg.MICROBIT_PIN_WRITE_ANALOG_HELPURL="https://microbit-micropython.readthedocs.io/en/latest/pin.html#microbit.MicroBitAnalogDigitalPin.write_analog";i.Msg.MICROBIT_PIN_READ_DIGITAL_MESSAGE0="读取引脚 %1 的数字输入";i.Msg.MICROBIT_PIN_READ_DIGITAL_TOOLTIP="读取引脚的数字输入 (真 或 假)。";i.Msg.MICROBIT_PIN_READ_DIGITAL_HELPURL="https://microbit-micropython.readthedocs.io/en/latest/pin.html#microbit.MicroBitDigitalPin.read_digital";i.Msg.MICROBIT_PIN_WRITE_DIGITAL_MESSAGE0="设置数字输出 %1 到引脚 %2";i.Msg.MICROBIT_PIN_WRITE_DIGITAL_TOOLTIP="写入数字量 (真 或 假) 到指定引脚。";i.Msg.MICROBIT_PIN_WRITE_DIGITAL_HELPURL="https://microbit-micropython.readthedocs.io/en/latest/pin.html#microbit.MicroBitDigitalPin.write_digital";i.Msg.MICROBIT_RADIO_ON_HELPURL="https://microbit-micropython.readthedocs.io/en/latest/radio.html#radio.on";i.Msg.MICROBIT_RADIO_ON_MESSAGE0="打开无线广播";i.Msg.MICROBIT_RADIO_ON_TOOLTIP="打开无线广播。需要明确声明调用,因为它会消耗更多功率和占用更多内存。";i.Msg.MICROBIT_RADIO_OFF_HELPURL="https://microbit-micropython.readthedocs.io/en/latest/radio.html#radio.off";i.Msg.MICROBIT_RADIO_OFF_MESSAGE0="关闭无线广播";i.Msg.MICROBIT_RADIO_OFF_TOOLTIP="关闭无线广播,节省功耗和内存。";i.Msg.MICROBIT_RADIO_CONFIG_MESSAGE0="配置无线广播消息长度 %1 %2 最大队列数量 %3 %4 信道 %5 %6 广播功率 %7 %8 地址 %9 %10 组 %11 %12 数据速率 %13";i.Msg.MICROBIT_RADIO_CONFIG_TOOLTIP=`配置无线广播。
- 长度指单个消息的最大长度;
- 队列指可以存放在消息队列中消息的数量;
- 信道指无线广播使用的无线频率;
- 功率指发射广播信号的强度;
- 地址:32位值;
- 组:8位值(0-255);
- 数据速率指数据传输的速度。`;i.Msg.MICROBIT_RADIO_CONFIG_HELPURL="https://microbit-micropython.readthedocs.io/en/latest/radio.html#radio.config";i.Msg.MICROBIT_RADIO_RESET_HELPURL="https://microbit-micropython.readthedocs.io/en/latest/radio.html#radio.reset";i.Msg.MICROBIT_RADIO_RESET_MESSAGE0="复位无线广播";i.Msg.MICROBIT_RADIO_RESET_TOOLTIP="恢复无线广播到默认设置。";i.Msg.MICROBIT_RADIO_SEND_STRING_MESSAGE0="发送消息 %1";i.Msg.MICROBIT_RADIO_SEND_STRING_TOOLTIP="广播文字消息。";i.Msg.MICROBIT_RADIO_SEND_STRING_HELPURL="https://microbit-micropython.readthedocs.io/en/latest/radio.html#radio.send";i.Msg.MICROBIT_RADIO_SEND_BYTES_MESSAGE0="发送字节 %1";i.Msg.MICROBIT_RADIO_SEND_BYTES_TOOLTIP="广播字节。";i.Msg.MICROBIT_RADIO_SEND_BYTES_HELPURL="https://microbit-micropython.readthedocs.io/en/latest/radio.html#radio.send";i.Msg.MICROBIT_RADIO_RECEIVE_MESSAGE0="接收消息";i.Msg.MICROBIT_RADIO_RECEIVE_TOOLTIP="接收消息。";i.Msg.MICROBIT_RADIO_RECEIVE_HELPURL="https://microbit-micropython.readthedocs.io/en/latest/radio.html#radio.receive";i.Msg.MICROBIT_RADIO_RECEIVE_BYTES_MESSAGE0="接收字节";i.Msg.MICROBIT_RADIO_RECEIVE_BYTES_TOOLTIP="接收字节。";i.Msg.MICROBIT_RADIO_RECEIVE_BYTES_HELPURL="https://microbit-micropython.readthedocs.io/en/latest/radio.html#radio.receive";i.Msg.MICROBIT_SPEECH_SAY_MESSAGE0="说 %1";i.Msg.MICROBIT_SPEECH_SAY_TOOLTIP="尝试说英语";i.Msg.MICROBIT_SPEECH_SAY_HELPURL="https://microbit-micropython.readthedocs.io/en/latest/speech.html#speech.say";i.Msg.MICROBIT_SPEECH_PRONOUNCE_MESSAGE0="读 %1";i.Msg.MICROBIT_SPEECH_PRONOUNCE_TOOLTIP="精确发音。";i.Msg.MICROBIT_SPEECH_PRONOUNCE_HELPURL="https://microbit-micropython.readthedocs.io/en/latest/speech.html#phonemes";i.Msg.MICROBIT_SPEECH_SING_MESSAGE0="唱 %1";i.Msg.MICROBIT_SPEECH_SING_TOOLTIP="象机器人一样唱歌。";i.Msg.MICROBIT_SPEECH_SING_HELPURL="https://microbit-micropython.readthedocs.io/en/latest/speech.html#singing";i.Msg.MICROBIT_GESTURE_SHAKE="摇晃";i.Msg.MICROBIT_GESTURE_UP="上";i.Msg.MICROBIT_GESTURE_DOWN="下";i.Msg.MICROBIT_GESTURE_LEFT="左";i.Msg.MICROBIT_GESTURE_RIGHT="右";i.Msg.MICROBIT_GESTURE_FACE_UP="朝上";i.Msg.MICROBIT_GESTURE_FACE_DOWN="朝下";i.Msg.MICROBIT_GESTURE_FREEFAIL="自由下落";i.Msg.MICROBIT_IMAGE_HEART="心形";i.Msg.MICROBIT_IMAGE_HEART_SMALL="心(小)";i.Msg.MICROBIT_IMAGE_HAPPY="高兴";i.Msg.MICROBIT_IMAGE_SMILE="笑脸";i.Msg.MICROBIT_IMAGE_SAD="伤心";i.Msg.MICROBIT_IMAGE_CONFUSED="困惑";i.Msg.MICROBIT_IMAGE_ANGRY="生气";i.Msg.MICROBIT_IMAGE_ASLEEP="睡着";i.Msg.MICROBIT_IMAGE_SUPRISED="惊讶";i.Msg.MICROBIT_IMAGE_SILLY="愚蠢";i.Msg.MICROBIT_IMAGE_FABULOUS="极妙";i.Msg.MICROBIT_IMAGE_MEH="无聊";i.Msg.MICROBIT_IMAGE_YES="是";i.Msg.MICROBIT_IMAGE_NO="否";i.Msg.MICROBIT_IMAGE_CLOCK12="12点";i.Msg.MICROBIT_IMAGE_CLOCK11="11点";i.Msg.MICROBIT_IMAGE_CLOCK10="10点";i.Msg.MICROBIT_IMAGE_CLOCK9="9点";i.Msg.MICROBIT_IMAGE_CLOCK8="8点";i.Msg.MICROBIT_IMAGE_CLOCK7="7点";i.Msg.MICROBIT_IMAGE_CLOCK6="6点";i.Msg.MICROBIT_IMAGE_CLOCK5="5点";i.Msg.MICROBIT_IMAGE_CLOCK4="4点";i.Msg.MICROBIT_IMAGE_CLOCK3="3点";i.Msg.MICROBIT_IMAGE_CLOCK2="2点";i.Msg.MICROBIT_IMAGE_CLOCK1="1点";i.Msg.MICROBIT_IMAGE_ARROW_N="箭头-北";i.Msg.MICROBIT_IMAGE_ARROW_NE="箭头-东北";i.Msg.MICROBIT_IMAGE_ARROW_E="箭头-东";i.Msg.MICROBIT_IMAGE_ARROW_SE="箭头-东南";i.Msg.MICROBIT_IMAGE_ARROW_S="箭头-南";i.Msg.MICROBIT_IMAGE_ARROW_SW="箭头-西南";i.Msg.MICROBIT_IMAGE_ARROW_W="箭头-西";i.Msg.MICROBIT_IMAGE_ARROW_NW="箭头-西北";i.Msg.MICROBIT_IMAGE_TRIANGLE="三角形";i.Msg.MICROBIT_IMAGE_TRIANGLE_LEFT="左三角形";i.Msg.MICROBIT_IMAGE_CHESSBOARD="棋盘";i.Msg.MICROBIT_IMAGE_DIAMOND="菱形";i.Msg.MICROBIT_IMAGE_DIAMOND_SMALL="菱形(小)";i.Msg.MICROBIT_IMAGE_SQUARE="方形";i.Msg.MICROBIT_IMAGE_SQUARE_SMALL="方形(小)";i.Msg.MICROBIT_IMAGE_RABBIT="兔子";i.Msg.MICROBIT_IMAGE_COW="牛";i.Msg.MICROBIT_IMAGE_MUSIC_CROTCHET="四分音符";i.Msg.MICROBIT_IMAGE_MUSIC_QUAVER="八分音符";i.Msg.MICROBIT_IMAGE_MUSIC_QUAVERS="颤音";i.Msg.MICROBIT_IMAGE_PITCHFORK="叉子";i.Msg.MICROBIT_IMAGE_XMAS="圣诞树";i.Msg.MICROBIT_IMAGE_PACMAN="吃豆人";i.Msg.MICROBIT_IMAGE_TARGET="目标";i.Msg.MICROBIT_IMAGE_TSHIRT="T恤衫";i.Msg.MICROBIT_IMAGE_ROLLERSKATE="轮滑";i.Msg.MICROBIT_IMAGE_DUCK="鸭子";i.Msg.MICROBIT_IMAGE_HOUSE="房子";i.Msg.MICROBIT_IMAGE_TORTOISE="乌龟";i.Msg.MICROBIT_IMAGE_BUTTERFLY="蝴蝶";i.Msg.MICROBIT_IMAGE_STICKFIGURE="线条画";i.Msg.MICROBIT_IMAGE_GHOST="幽灵";i.Msg.MICROBIT_IMAGE_SWORD="宝剑";i.Msg.MICROBIT_IMAGE_GIRAFFE="长颈鹿";i.Msg.MICROBIT_IMAGE_SKULL="头";i.Msg.MICROBIT_IMAGE_UMBRELLA="伞";i.Msg.MICROBIT_IMAGE_SNAKE="蛇";i.Msg.MICROBIT_IMAGE_ALL_CLOCKS="所有时钟";i.Msg.MICROBIT_IMAGE_ALL_ARROWS="所有箭头";i.Msg.MICROBIT_PIN_SET_SERVO_HELPURL="http://wiki.labplus.cn/index.php?title=%E8%88%B5%E6%9C%BA";i.Msg.MICROBIT_PIN_SET_SERVO_TOOLTIP="设置舵机角度,范围为 0 ~ 180度";i.Msg.MICROBIT_PIN_SET_SERVO_MESSAGE0="设置舵机 引脚 %1 角度为 %2";i.Msg.MICROBIT_PIN_SET_MODE_HELPURL="";i.Msg.MICROBIT_PIN_SET_MODE_TOOLTIP="引脚模式有三种:悬空、上拉、下拉";i.Msg.MICROBIT_PIN_SET_MODE_MESSAGE0="设置引脚 %1 模式为 %2";i.Msg.MICROBIT_PIN_MODE_NO="悬空";i.Msg.MICROBIT_PIN_MODE_UP="上拉";i.Msg.MICROBIT_PIN_MODE_DOWN="下拉";i.Msg.MICROBIT_UART_INIT_MESSAGE0="初始化串口波特率为 %3 TX为 %1 RX为 %2";i.Msg.MICROBIT_UART_INIT_TOOLTIP="";i.Msg.MICROBIT_UART_INIT_HELPURL="https://microbit-micropython.readthedocs.io/en/latest/uart.html";i.Msg.MICROBIT_UART_ANY_MSG_RECEIVED_HELPURL="https://microbit-micropython.readthedocs.io/en/latest/uart.html";i.Msg.MICROBIT_UART_ANY_MSG_RECEIVED_TOOLTIP="";i.Msg.MICROBIT_UART_ANY_MSG_RECEIVED_MESSAGE0="串口接收到数据";i.Msg.MICROBIT_UART_READ_MSG_HELPURL="https://microbit-micropython.readthedocs.io/en/latest/uart.html";i.Msg.MICROBIT_UART_READ_MSG_TOOLTIP="";i.Msg.MICROBIT_UART_READ_MSG_MESSAGE0="读取串口 %1 字节";i.Msg.MICROBIT_UART_READ_MSG_TO_HELPURL="https://microbit-micropython.readthedocs.io/en/latest/uart.html";i.Msg.MICROBIT_UART_READ_MSG_TO_TOOLTIP="";i.Msg.MICROBIT_UART_READ_MSG_TO_MESSAGE0="读取串口 %1 字节存至 %2";i.Msg.MICROBIT_UART_WRITE_MSG_HELPURL="https://microbit-micropython.readthedocs.io/en/latest/uart.html";i.Msg.MICROBIT_UART_WRITE_MSG_TOOLTIP="";i.Msg.MICROBIT_UART_WRITE_MSG_MESSAGE0="串口发送数据 %1";i.Msg.MICROBIT_ALL_BYTES="全部";i.Msg.MICROBIT_ALINE_BYTES="一行";i.Msg.LABPLUS_BUTTON_IS_PRESSED_MESSAGE0="引脚 %1 被触发";i.Msg.LABPLUS_BUTTON_IS_PRESSED_TOOLTIP="如果指定按键按下返回 “真”,否则返回 “假”。";i.Msg.LABPLUS_BUTTON_IS_PRESSED_HELPURL="https://microbit-micropython.readthedocs.io/en/latest/button.html#Button.is_pressed";i.Msg.LABPLUS_BUTTON_WAS_PRESSED_MESSAGE0="引脚 %1 曾经被触发";i.Msg.LABPLUS_BUTTON_WAS_PRESSED_TOOLTIP="如果按键曾经按下过返回 “真”,否则返回 “假”。";i.Msg.LABPLUS_BUTTON_WAS_PRESSED_HELPURL="https://microbit-micropython.readthedocs.io/en/latest/button.html#Button.was_pressed";i.Msg.LABPLUS_BUTTON_GET_PRESSES_MESSAGE0="引脚 %1 被触发过的次数";i.Msg.LABPLUS_BUTTON_GET_PRESSES_TOOLTIP="返回按键按下的总次数,然后清除计数。";i.Msg.LABPLUS_BUTTON_GET_PRESSES_HELPURL="https://microbit-micropython.readthedocs.io/en/latest/button.html#Button.get_presses";i.Msg.LABPLUS_LED_MESSAGE0="设置LED灯 引脚 %2 输出 %1";i.Msg.LABPLUS_LED_TOOLTIP="";i.Msg.LABPLUS_LED_HELPURL="http://wiki.labplus.cn/index.php?title=LED";i.Msg.LABPLUS_INFRARED_IS_TRIGGERED_MESSAGE0="红外探测 引脚 %1 被触发";i.Msg.LABPLUS_INFRARED_IS_TRIGGERED_TOOLTIP="";i.Msg.LABPLUS_INFRARED_IS_TRIGGERED_HELPURL="http://wiki.labplus.cn/index.php?title=%E7%BA%A2%E5%A4%96%E6%8E%A2%E6%B5%8B";i.Msg.LABPLUS_HEAT_SENSITIVE_DETECTOR_MESSAGE0="热敏传感器 引脚 %1 的值";i.Msg.LABPLUS_HEAT_SENSITIVE_DETECTOR_TOOLTIP="";i.Msg.LABPLUS_HEAT_SENSITIVE_DETECTOR_HELPURL="http://wiki.labplus.cn/index.php?title=%E7%83%AD%E6%95%8F%E7%94%B5%E9%98%BB";i.Msg.LABPLUS_I2C_LIGHT_SENSOR_MESSAGE0="I2C数字光线传感器的值(lux)";i.Msg.LABPLUS_I2C_LIGHT_SENSOR_TOOLTIP="";i.Msg.LABPLUS_I2C_LIGHT_SENSOR_HELPURL="http://wiki.labplus.cn/index.php?title=%E6%95%B0%E5%AD%97%E5%85%89%E7%BA%BF";i.Msg.LABPLUS_WATER_LEVEL_DETECTOR_MESSAGE0="水位传感器 引脚 %1 的值";i.Msg.LABPLUS_WATER_LEVEL_DETECTOR_TOOLTIP="";i.Msg.LABPLUS_WATER_LEVEL_DETECTOR_HELPURL="http://wiki.labplus.cn/index.php?title=%E6%B0%B4%E4%BD%8D";i.Msg.LABPLUS_SMOKE_DETECTOR_IS_TRIGGERED_MESSAGE0="烟雾探测器 引脚 %1 被触发";i.Msg.LABPLUS_SMOKE_DETECTOR_IS_TRIGGERED_TOOLTIP="";i.Msg.LABPLUS_SMOKE_DETECTOR_IS_TRIGGERED_HELPURL="http://wiki.labplus.cn/index.php?title=%E7%83%9F%E9%9B%BE";i.Msg.LABPLUS_BUZZER_FOR_HELPURL="http://wiki.labplus.cn/index.php?title=%E8%9C%82%E9%B8%A3%E5%99%A8";i.Msg.LABPLUS_BUZZER_FOR_TOOLTIP="";i.Msg.LABPLUS_BUZZER_FOR_MESSAGE0="以频率 %1 激活蜂鸣器 引脚0 %2 毫秒";i.Msg.LABPLUS_BUZZER_ON_HELPURL="http://wiki.labplus.cn/index.php?title=%E8%9C%82%E9%B8%A3%E5%99%A8";i.Msg.LABPLUS_BUZZER_ON_TOOLTIP="";i.Msg.LABPLUS_BUZZER_ON_MESSAGE0="以频率 %1 激活蜂鸣器 引脚0";i.Msg.LABPLUS_BUZZER_OFF_HELPURL="http://wiki.labplus.cn/index.php?title=%E8%9C%82%E9%B8%A3%E5%99%A8";i.Msg.LABPLUS_BUZZER_OFF_TOOLTIP="";i.Msg.LABPLUS_BUZZER_OFF_MESSAGE0="关闭蜂鸣器 引脚0";i.Msg.LABPLUS_TM_HM_SENSOR_MESSAGE0="I2C温湿度传感器的 %1 值";i.Msg.LABPLUS_TM_HM_SENSOR_TOOLTIP="";i.Msg.LABPLUS_TM_HM_SENSOR_HELPURL="http://wiki.labplus.cn/index.php?title=%E6%B8%A9%E6%B9%BF%E5%BA%A6";i.Msg.LABPLUS_TM_HM_SENSOR_TM="温度";i.Msg.LABPLUS_TM_HM_SENSOR_HM="湿度";i.Msg.LABPLUS_SET_SERVO_HELPURL="http://wiki.labplus.cn/index.php?title=%E8%88%B5%E6%9C%BA";i.Msg.LABPLUS_SET_SERVO_TOOLTIP="";i.Msg.LABPLUS_SET_SERVO_MESSAGE0="设置舵机 引脚 %1 角度为 %2";i.Msg.LABPLUS_FINGERPRINT_SENSOR_MESSAGE0="指纹传感器 引脚 %1 验证通过";i.Msg.LABPLUS_FINGERPRINT_SENSOR_TOOLTIP="";i.Msg.LABPLUS_FINGERPRINT_SENSOR_HELPURL="http://wiki.labplus.cn/index.php?title=%E6%8C%87%E7%BA%B9";i.Msg.LABPLUS_SET_MOTOR_HELPURL="";i.Msg.LABPLUS_SET_MOTOR_TOOLTIP="";i.Msg.LABPLUS_SET_MOTOR_MESSAGE0="设置电机 %1 方向 %2 速度 %3";i.Msg.LABPLUS_SET_MOTOR_CLOCKWISE="正转";i.Msg.LABPLUS_SET_MOTOR_ANTI_CLOCKWISE="反转";i.Msg.LABPLUS_STOP_MOTOR_HELPURL="";i.Msg.LABPLUS_STOP_MOTOR_TOOLTIP="";i.Msg.LABPLUS_STOP_MOTOR_MESSAGE0="停止电机";i.Msg.LABPLUS_GET_RFID_ID_MESSAGE0="射频卡 引脚 %1 验证通过";i.Msg.LABPLUS_GET_RFID_ID_TOOLTIP="";i.Msg.LABPLUS_GET_RFID_ID_HELPURL="http://wiki.labplus.cn/index.php?title=RFID";i.Msg.LABPLUS_GET_RFID_VALUE_MESSAGE0="电子钱包 引脚 %1 余额";i.Msg.LABPLUS_GET_RFID_VALUE_TOOLTIP="";i.Msg.LABPLUS_GET_RFID_VALUE_HELPURL="";i.Msg.LABPLUS_SET_RFID_VALUE_MESSAGE0="设置电子钱包 引脚 %1 余额 %2 %3";i.Msg.LABPLUS_SET_RFID_VALUE_TOOLTIP="";i.Msg.LABPLUS_SET_RFID_VALUE_HELPURL="";i.Msg.LABPLUS_SET_RFID_ADD="增加";i.Msg.LABPLUS_SET_RFID_MINUS="减少";i.Msg.LABPLUS_SOUND_IS_TRIGGERED_MESSAGE0="声音传感器 引脚 %1 被触发";i.Msg.LABPLUS_SOUND_IS_TRIGGERED_TOOLTIP="";i.Msg.LABPLUS_SOUND_IS_TRIGGERED_HELPURL="http://wiki.labplus.cn/index.php?title=%E9%BA%A6%E5%85%8B%E9%A3%8E";i.Msg.LABPLUS_USB_SWITCH_HELPURL="";i.Msg.LABPLUS_USB_SWITCH_TOOLTIP="";i.Msg.LABPLUS_USB_SWITCH_MESSAGE0="%1 USB开关 引脚 %2";i.Msg.LABPLUS_USB_SWITCH_ON="打开";i.Msg.LABPLUS_USB_SWITCH_OFF="关闭";i.Msg.LABPLUS_VOICE_RECORD_HELPURL="";i.Msg.LABPLUS_VOICE_RECORD_TOOLTIP="";i.Msg.LABPLUS_VOICE_RECORD_MESSAGE0="%1 语音录放器 引脚 %2";i.Msg.LABPLUS_VOICE_RECORD_ON="打开";i.Msg.LABPLUS_VOICE_RECORD_OFF="关闭";i.Msg.LABPLUS_RGB_INITIALISE_MESSAGE0="使用 引脚 %1 控制,RGB 彩灯数 %2 ";i.Msg.LABPLUS_RGB_INITIALISE_TOOLTIP="控制 RGB 彩灯。需要设定 neopixels 彩灯数量和控制脚。";i.Msg.LABPLUS_RGB_INITIALISE_HELPURL="https://microbit-micropython.readthedocs.io/en/latest/neopixel.html#neopixel.NeoPixel";i.Msg.LABPLUS_RGB_CLEAR_MESSAGE0="清除 RGB 彩灯 %1";i.Msg.LABPLUS_RGB_CLEAR_TOOLTIP="清除所有 RGB 彩灯";i.Msg.LABPLUS_RGB_CLEAR_HELPURL="https://microbit-micropython.readthedocs.io/en/latest/neopixel.html#neopixel.NeoPixel.clear";i.Msg.LABPLUS_RGB_SHOW_MESSAGE0="显示 RGB 彩灯 %1";i.Msg.LABPLUS_RGB_SHOW_TOOLTIP="显示 / 更新全部 RGB 彩灯。";i.Msg.LABPLUS_RGB_SHOW_HELPURL="https://microbit-micropython.readthedocs.io/en/latest/neopixel.html#neopixel.NeoPixel.show";i.Msg.LABPLUS_RGB_SET_MESSAGE0="RGB 彩灯控制 %1 设置位置 %2 红色 %3 绿色 %4 蓝色 %5";i.Msg.LABPLUS_RGB_SET_TOOLTIP="更新指定的 RGB 彩灯的红、绿、蓝 (RGB) 颜色";i.Msg.LABPLUS_RGB_SET_HELPURL="https://microbit-micropython.readthedocs.io/en/latest/neopixel.html#using-neopixels";i.Msg.LABPLUS_COMPITITION_INIT_EXTENDED_PINS_MESSAGE0="设置扩展端口 IO %1 为 %2";i.Msg.LABPLUS_COMPITITION_INIT_EXTENDED_PINS_TOOLTIP="0表示输出引脚,1表示输入引脚";i.Msg.LABPLUS_COMPITITION_INIT_EXTENDED_PINS_HELPURL="http://wiki.labplus.cn/index.php?title=%E7%AB%AF%E5%8F%A3%E6%89%A9%E5%B1%95";i.Msg.LABPLUS_COMPITITION_INIT_EXTENDED_PINS_INPUT="输入";i.Msg.LABPLUS_COMPITITION_INIT_EXTENDED_PINS_OUTPUT="输出";i.Msg.LABPLUS_READ_EXTENDED_PIN_HELPURL="http://wiki.labplus.cn/index.php?title=%E7%AB%AF%E5%8F%A3%E6%89%A9%E5%B1%95";i.Msg.LABPLUS_READ_EXTENDED_PIN_TOOLTIP="";i.Msg.LABPLUS_READ_EXTENDED_PIN_MESSAGE0="读取扩展端口值 IO %1";i.Msg.LABPLUS_WRITE_EXTENDED_PIN_HELPURL="http://wiki.labplus.cn/index.php?title=%E7%AB%AF%E5%8F%A3%E6%89%A9%E5%B1%95";i.Msg.LABPLUS_WRITE_EXTENDED_PIN_TOOLTIP="";i.Msg.LABPLUS_WRITE_EXTENDED_PIN_MESSAGE0="设置扩展端口 IO %1 值为 %2";i.Msg.LABPLUS_I2C_ULTRASONIC_HELPURL="http://wiki.labplus.cn/index.php?title=%E8%B6%85%E5%A3%B0%E6%B3%A2";i.Msg.LABPLUS_I2C_ULTRASONIC_TOOLTIP="";i.Msg.LABPLUS_I2C_ULTRASONIC_MESSAGE0="I2C超声波传感器的值";i.Msg.MICROBIT_SET_MUSIC_PIN_HELPURL="";i.Msg.MICROBIT_SET_MUSIC_PIN_TOOLTIP="";i.Msg.MICROBIT_SET_MUSIC_PIN_MESSAGE0="设置默认蜂鸣器引脚为 %1";i.Msg.LABPLUS_HUMAN_DETECTOR_IS_TRIGGERED_HELPURL="http://wiki.labplus.cn/index.php?title=%E4%BA%BA%E4%BD%93%E6%84%9F%E5%BA%94";i.Msg.LABPLUS_HUMAN_DETECTOR_IS_TRIGGERED_TOOLTIP="";i.Msg.LABPLUS_HUMAN_DETECTOR_IS_TRIGGERED_MESSAGE0="人体感应 引脚 %1 被触发";i.Msg.LABPLUS_MAGNETIC_SWITCH_IS_TRIGGERED_HELPURL="http://wiki.labplus.cn/index.php?title=%E9%97%A8%E7%A3%81%E5%BC%80%E5%85%B3";i.Msg.LABPLUS_MAGNETIC_SWITCH_IS_TRIGGERED_TOOLTIP="";i.Msg.LABPLUS_MAGNETIC_SWITCH_IS_TRIGGERED_MESSAGE0="门磁开关 引脚 %1 被触发";i.Msg.LABPLUS_SOUND_LEVEL_SENSOR_HELPURL="";i.Msg.LABPLUS_SOUND_LEVEL_SENSOR_TOOLTIP="";i.Msg.LABPLUS_SOUND_LEVEL_SENSOR_MESSAGE0="声音传感器 引脚 %1 的值";i.Msg.LABPLUS_SMOKE_SENSOR_HELPURL="http://wiki.labplus.cn/index.php?title=%E7%83%9F%E9%9B%BE";i.Msg.LABPLUS_SMOKE_SENSOR_TOOLTIP="";i.Msg.LABPLUS_SMOKE_SENSOR_MESSAGE0="烟雾传感器 引脚 %1 的值";i.Msg.LABPLUS_SOIL_MOISTURE_SENSOR_HELPURL="http://wiki.labplus.cn/index.php?title=%E5%9C%9F%E5%A3%A4%E6%B9%BF%E5%BA%A6";i.Msg.LABPLUS_SOIL_MOISTURE_SENSOR_TOOLTIP="";i.Msg.LABPLUS_SOIL_MOISTURE_SENSOR_MESSAGE0="土壤湿度传感器 引脚 %1 的值";i.Msg.LABPLUS_FAN_SWITCH_HELPURL="http://wiki.labplus.cn/index.php?title=%E6%8E%92%E9%A3%8E%E6%89%87";i.Msg.LABPLUS_FAN_SWITCH_TOOLTIP="";i.Msg.LABPLUS_FAN_SWITCH_MESSAGE0="%1 风扇 引脚 %2";i.Msg.LABPLUS_VOICE_RECORD_ON_HELPURL="http://wiki.labplus.cn/index.php?title=%E8%AF%AD%E9%9F%B3%E5%BD%95%E6%94%BE";i.Msg.LABPLUS_VOICE_RECORD_ON_TOOLTIP="";i.Msg.LABPLUS_VOICE_RECORD_ON_MESSAGE0="打开录放器 %1 引脚 %2";i.Msg.LABPLUS_VOICE_RECORD_PLAY="播放";i.Msg.LABPLUS_VOICE_RECORD_REC="录音";i.Msg.LABPLUS_VOICE_RECORD_OFF_HELPURL="http://wiki.labplus.cn/index.php?title=%E8%AF%AD%E9%9F%B3%E5%BD%95%E6%94%BE";i.Msg.LABPLUS_VOICE_RECORD_OFF_TOOLTIP="";i.Msg.LABPLUS_VOICE_RECORD_OFF_MESSAGE0="关闭录放器 引脚 %1";i.Msg.LABPLUS_MOTOR_ON_HELPURL="http://wiki.labplus.cn/index.php?title=%E7%94%B5%E6%9C%BA%E9%A9%B1%E5%8A%A8";i.Msg.LABPLUS_MOTOR_ON_TOOLTIP="";i.Msg.LABPLUS_MOTOR_ON_MESSAGE0="打开直流电机 %1 速度 %2 引脚 %3";i.Msg.LABPLUS_MOTOR_ON_CLOCKWISE="正转";i.Msg.LABPLUS_MOTOR_ON_ANTICLOCKWISE="反转";i.Msg.LABPLUS_MOTOR_OFF_HELPURL="http://wiki.labplus.cn/index.php?title=%E7%94%B5%E6%9C%BA%E9%A9%B1%E5%8A%A8";i.Msg.LABPLUS_MOTOR_OFF_TOOLTIP="";i.Msg.LABPLUS_MOTOR_OFF_MESSAGE0="停止直流电机 引脚 %1";i.Msg.LABPLUS_READ_COLOR_FROM_I2C_HELPURL="http://wiki.labplus.cn/index.php?title=%E9%A2%9C%E8%89%B2";i.Msg.LABPLUS_READ_COLOR_FROM_I2C_TOOLTIP="";i.Msg.LABPLUS_READ_COLOR_FROM_I2C_MESSAGE0="I2C颜色传感器读取并储存颜色";i.Msg.LABPLUS_RGB_COLOR_HELPURL="http://wiki.labplus.cn/index.php?title=RGB_LED";i.Msg.LABPLUS_RGB_COLOR_TOOLTIP="读取已储存的颜色";i.Msg.LABPLUS_RGB_COLOR_MESSAGE0="RGB颜色 %1";i.Msg.LABPLUS_SET_I2C_DIGITS_HELPURL="http://wiki.labplus.cn/index.php?title=%E6%95%B0%E7%A0%81%E7%AE%A1";i.Msg.LABPLUS_SET_I2C_DIGITS_TOOLTIP="";i.Msg.LABPLUS_SET_I2C_DIGITS_MESSAGE0="设置I2C数码管的值为 %1";i.Msg.LABPLUS_TURN_OFF_I2C_DIGITS_HELPURL="http://wiki.labplus.cn/index.php?title=%E6%95%B0%E7%A0%81%E7%AE%A1";i.Msg.LABPLUS_TURN_OFF_I2C_DIGITS_TOOLTIP="";i.Msg.LABPLUS_TURN_OFF_I2C_DIGITS_MESSAGE0="关闭I2C数码管";i.Msg.LABPLUS_UART_SET_MIDI_MELODIC_HELPURL="http://wiki.labplus.cn/index.php?title=%E7%94%B5%E5%AD%90%E7%90%B4";i.Msg.LABPLUS_UART_SET_MIDI_MELODIC_TOOLTIP="";i.Msg.LABPLUS_UART_SET_MIDI_MELODIC_MESSAGE0="设置MIDI模块音调为 %1";i.Msg.LABPLUS_UART_PLAY_MIDI_NOTE_HELPURL="http://wiki.labplus.cn/index.php?title=%E7%94%B5%E5%AD%90%E7%90%B4";i.Msg.LABPLUS_UART_PLAY_MIDI_NOTE_TOOLTIP="";i.Msg.LABPLUS_UART_PLAY_MIDI_NOTE_MESSAGE0="MIDI模块 %2 音符 %1";i.Msg.LABPLUS_UART_PLAY_MIDI_NOTE_Do="Do";i.Msg.LABPLUS_UART_PLAY_MIDI_NOTE_Re="Re";i.Msg.LABPLUS_UART_PLAY_MIDI_NOTE_Mi="Mi";i.Msg.LABPLUS_UART_PLAY_MIDI_NOTE_Fa="Fa";i.Msg.LABPLUS_UART_PLAY_MIDI_NOTE_Sol="Sol";i.Msg.LABPLUS_UART_PLAY_MIDI_NOTE_La="La";i.Msg.LABPLUS_UART_PLAY_MIDI_NOTE_Si="Si";i.Msg.LABPLUS_UART_PLAY_MIDI_NOTE="播放";i.Msg.LABPLUS_UART_OFF_MIDI_NOTE="停止";i.Msg.LABPLUS_UART_OFF_MIDI_NOTE_HELPURL="http://wiki.labplus.cn/index.php?title=%E7%94%B5%E5%AD%90%E7%90%B4";i.Msg.LABPLUS_UART_OFF_MIDI_NOTE_TOOLTIP="";i.Msg.LABPLUS_UART_OFF_MIDI_NOTE_MESSAGE0="MIDI模块停止播放音符 %1";i.Msg.LABPLUS_UART_INIT_MIDI_HELPURL="http://wiki.labplus.cn/index.php?title=%E7%94%B5%E5%AD%90%E7%90%B4";i.Msg.LABPLUS_UART_INIT_MIDI_TOOLTIP="";i.Msg.LABPLUS_UART_INIT_MIDI_MESSAGE0="初始化MIDI模块 %1";i.Msg.LABPLUS_LINE_FOLLOWER_IS_TRIGGERED_HELPURL="http://wiki.labplus.cn/index.php?title=%E5%BE%AA%E8%BF%B9";i.Msg.LABPLUS_LINE_FOLLOWER_IS_TRIGGERED_TOOLTIP="";i.Msg.LABPLUS_LINE_FOLLOWER_IS_TRIGGERED_MESSAGE0="循迹传感器 引脚 %1 检测为黑";i.Msg.LABPLUS_TEMPERATURE_SENSOR_HELPURL="http://wiki.labplus.cn/index.php?title=LM35%E6%B8%A9%E5%BA%A6";i.Msg.LABPLUS_TEMPERATURE_SENSOR_TOOLTIP="";i.Msg.LABPLUS_TEMPERATURE_SENSOR_MESSAGE0="LM35温度传感器 引脚 %1 的值";i.Msg.LABPLUS_ROTATE_DIMMER_HELPURL="http://wiki.labplus.cn/index.php?title=%E6%97%8B%E9%92%AE%E7%94%B5%E4%BD%8D%E5%99%A8";i.Msg.LABPLUS_ROTATE_DIMMER_TOOLTIP="";i.Msg.LABPLUS_ROTATE_DIMMER_MESSAGE0="旋转电位器 引脚 %1 的值";i.Msg.LABPLUS_SHAKE_DETECTOR_IS_TRIGGERED_HELPURL="http://wiki.labplus.cn/index.php?title=%E9%9C%87%E5%8A%A8";i.Msg.LABPLUS_SHAKE_DETECTOR_IS_TRIGGERED_TOOLTIP="";i.Msg.LABPLUS_SHAKE_DETECTOR_IS_TRIGGERED_MESSAGE0="震动传感器 引脚 %1 被触发";i.Msg.LABPLUS_LASER_SWITCH_HELPURL="http://wiki.labplus.cn/index.php?title=%E6%BF%80%E5%85%89%E5%8F%91%E5%B0%84";i.Msg.LABPLUS_LASER_SWITCH_TOOLTIP="";i.Msg.LABPLUS_LASER_SWITCH_MESSAGE0="%1 激光开关 引脚 %2";i.Msg.LABPLUS_4BUTTON_HELPURL="http://wiki.labplus.cn/index.php?title=%E5%9B%9B%E6%8C%89%E9%94%AE";i.Msg.LABPLUS_4BUTTON_TOOLTIP="";i.Msg.LABPLUS_4BUTTON_MESSAGE0="四向按键模块 引脚 %1 按键 %2 被按下";i.Msg.BLUE="A";i.Msg.GREEN="B";i.Msg.RED="C";i.Msg.YELLOW="D";i.Msg.LABPLUS_JOYSTICK_HELPURL="";i.Msg.LABPLUS_JOYSTICK_TOOLTIP="";i.Msg.LABPLUS_JOYSTICK_MESSAGE0="摇杆 引脚A0 %1 引脚A1 %2 %3 轴的值";i.Msg.LABPLUS_UART_MP3_PLAY_HELPURL="http://wiki.labplus.cn/index.php?title=%E9%9F%B3%E4%B9%90%E6%92%AD%E6%94%BE";i.Msg.LABPLUS_UART_MP3_PLAY_TOOLTIP="";i.Msg.LABPLUS_UART_MP3_PLAY_MESSAGE0="MP3模块(UART)播放第 %1 首音乐";i.Msg.LABPLUS_UART_MP3_SET_VOLUME_HELPURL="http://wiki.labplus.cn/index.php?title=%E9%9F%B3%E4%B9%90%E6%92%AD%E6%94%BE";i.Msg.LABPLUS_UART_MP3_SET_VOLUME_TOOLTIP="";i.Msg.LABPLUS_UART_MP3_SET_VOLUME_MESSAGE0="设置MP3模块(UART)音量为 %1";i.Msg.LABPLUS_UART_MP3_SET_STATUS_HELPURL="http://wiki.labplus.cn/index.php?title=%E9%9F%B3%E4%B9%90%E6%92%AD%E6%94%BE";i.Msg.LABPLUS_UART_MP3_SET_STATUS_TOOLTIP="";i.Msg.LABPLUS_UART_MP3_SET_STATUS_MESSAGE0="设置MP3模块(UART)状态为 %1";i.Msg.PAUSE="暂停";i.Msg.STOP="停止";i.Msg.PLAY="继续播放";i.Msg.PLAYNEXT="下一首";i.Msg.PLAYPREV="上一首";i.Msg.LABPLUS_UART_INIT_HELPURL="http://wiki.labplus.cn/index.php?title=Bluebit";i.Msg.LABPLUS_UART_INIT_TOOLTIP="";i.Msg.LABPLUS_UART_INIT_MESSAGE0="初始化串口波特率为 %3 TX为 %1 RX为 %2";i.Msg.LABPLUS_VOICE_RECORD_ON1_HELPURL="http://wiki.labplus.cn/index.php?title=%E8%AF%AD%E9%9F%B3%E5%BD%95%E6%94%BE";i.Msg.LABPLUS_VOICE_RECORD_ON1_TOOLTIP="";i.Msg.LABPLUS_VOICE_RECORD_ON1_MESSAGE0="打开录放器 %1 %2 引脚REC %3 引脚PLAY %4";i.Msg.LABPLUS_VOICE_RECORD_OFF1_HELPURL="http://wiki.labplus.cn/index.php?title=%E8%AF%AD%E9%9F%B3%E5%BD%95%E6%94%BE";i.Msg.LABPLUS_VOICE_RECORD_OFF1_TOOLTIP="";i.Msg.LABPLUS_VOICE_RECORD_OFF1_MESSAGE0="关闭录放器 %1 引脚REC %2 引脚PLAY %3";i.Msg.LABPLUS_MOTOR_ON1_HELPURL="http://wiki.labplus.cn/index.php?title=%E7%94%B5%E6%9C%BA%E9%A9%B1%E5%8A%A8";i.Msg.LABPLUS_MOTOR_ON1_TOOLTIP="";i.Msg.LABPLUS_MOTOR_ON1_MESSAGE0="打开直流电机 %1 速度 %2 引脚AIN1 %3 引脚AIN2 %4";i.Msg.LABPLUS_MOTOR_OFF1_HELPURL="http://wiki.labplus.cn/index.php?title=%E7%94%B5%E6%9C%BA%E9%A9%B1%E5%8A%A8";i.Msg.LABPLUS_MOTOR_OFF1_TOOLTIP="";i.Msg.LABPLUS_MOTOR_OFF1_MESSAGE0="停止直流电机 %1 引脚AIN1 %2 引脚AIN2 %3";i.Msg.LABPLUS_SET_I2C_LCD1602_CURSOR_HELPURL="http://wiki.labplus.cn/index.php?title=1602_LCD";i.Msg.LABPLUS_SET_I2C_LCD1602_CURSOR_TOOLTIP="";i.Msg.LABPLUS_SET_I2C_LCD1602_CURSOR_MESSAGE0="设置LCD游标位置%1 X %2 Y %3";i.Msg.LABPLUS_SET_I2C_LCD1602_PRINT_HELPURL="http://wiki.labplus.cn/index.php?title=1602_LCD";i.Msg.LABPLUS_SET_I2C_LCD1602_PRINT_TOOLTIP="";i.Msg.LABPLUS_SET_I2C_LCD1602_PRINT_MESSAGE0="设置LCD显示 %1";i.Msg.LABPLUS_SET_I2C_LCD1602_SCROLL_HELPURL="http://wiki.labplus.cn/index.php?title=1602_LCD";i.Msg.LABPLUS_SET_I2C_LCD1602_SCROLL_TOOLTIP="配合循环次数使用";i.Msg.LABPLUS_SET_I2C_LCD1602_SCROLL_MESSAGE0="%1滚动LCD显示内容";i.Msg.LABPLUS_SET_I2C_LCD1602_SCROLL_ALEFT="向左";i.Msg.LABPLUS_SET_I2C_LCD1602_SCROLL_RIGHTWARD="向右";i.Msg.LABPLUS_SET_I2C_LCD1602_CLEAR_HELPURL="http://wiki.labplus.cn/index.php?title=1602_LCD";i.Msg.LABPLUS_SET_I2C_LCD1602_CLEAR_TOOLTIP="";i.Msg.LABPLUS_SET_I2C_LCD1602_CLEAR_MESSAGE0="清除LCD显示内容";i.Msg.LABPLUS_UART_ANY_MSG_RECEIVED_HELPURL="http://wiki.labplus.cn/index.php?title=Bluebit";i.Msg.LABPLUS_UART_ANY_MSG_RECEIVED_TOOLTIP="";i.Msg.LABPLUS_UART_ANY_MSG_RECEIVED_MESSAGE0="%1 接收到数据";i.Msg.BLUEBIT_UART="串口";i.Msg.BLUEBIT_INFRARED_SIGNAL="红外信号";i.Msg.BLUEBIT_BLUEBOOTH="蓝牙";i.Msg.LABPLUS_UART_READ_MSG_HELPURL="http://wiki.labplus.cn/index.php?title=Bluebit";i.Msg.LABPLUS_UART_READ_MSG_TOOLTIP="";i.Msg.LABPLUS_UART_READ_MSG_MESSAGE0="读取 %1 数据";i.Msg.LABPLUS_UART_WRITE_MSG_HELPURL="http://wiki.labplus.cn/index.php?title=Bluebit";i.Msg.LABPLUS_UART_WRITE_MSG_TOOLTIP="";i.Msg.LABPLUS_UART_WRITE_MSG_MESSAGE0="%1 发送数据 %2";i.Msg.LABPLUS_SET_I2C_LED_MATRIX_HELPURL="http://wiki.labplus.cn/index.php?title=%E7%82%B9%E9%98%B5";i.Msg.LABPLUS_SET_I2C_LED_MATRIX_TOOLTIP="";i.Msg.LABPLUS_SET_I2C_LED_MATRIX_MESSAGE0="设置点阵 %1 第一行显示%2 第二行显示%3 第三行显示%4 第四行显示%5 第五行显示%6 第六行显示%7 第七行显示%8 第八行显示%9 ";i.Msg.LABPLUS_SET_I2C_LED_MATRIX_MESSAGE2="设置点阵 %1 %2 %3 %4 %5 %6 %7 %8 %9 %10 %11 %12 %13 %14 %15 %16 %17 %18 %19 %20 %21 %22 %23 %24 %25 %26 %27 %28 %29 %30 %31 %32 %33 %34 %35 %36 %37 %38 %39 %40 %41 %42 %43 %44 %45 %46 %47 %48 %49 %50 %51 %52 %53 %54 %55 %56 %57 %58 %59 %60 %61 %62 %63 %64 %65 %66 %67 %68 %69 %70 %71 %72";i.Msg.LABPLUS_SET_I2C_LED_MATRIX_CLEAR_HELPURL="http://wiki.labplus.cn/index.php?title=%E7%82%B9%E9%98%B5";i.Msg.LABPLUS_SET_I2C_LED_MATRIX_CLEAR_TOOLTIP="";i.Msg.LABPLUS_SET_I2C_LED_MATRIX_CLEAR_MESSAGE0="清空点阵";i.Msg.LABPLUS_UART_SET_OLCD_HELPURL="http://wiki.labplus.cn/index.php?title=LCD";i.Msg.LABPLUS_UART_SET_OLCD_TOOLTIP="";i.Msg.LABPLUS_UART_SET_OLCD_MESSAGE0="设置OLCD屏 %1 X %2 Y %3 显示文本 %4 字体为 %5";i.Msg.LABPLUS_UART_SET_OLCD_CLEAR_HELPURL="http://wiki.labplus.cn/index.php?title=LCD";i.Msg.LABPLUS_UART_SET_OLCD_CLEAR_TOOLTIP="";i.Msg.LABPLUS_UART_SET_OLCD_CLEAR_MESSAGE0="在OLCD屏上擦除矩阵 %1 X1 %2 Y1 %3 X2 %4 Y2 %5";i.Msg.LABPLUS_UART_SET_OLCD_CLEAR_ALL_MESSAGE0="清空OLCD屏";i.Msg.LABPLUS_UART_SET_OLCD_CLEAR_ALL_HELPURL="http://wiki.labplus.cn/index.php?title=LCD";i.Msg.LABPLUS_UART_SET_OLCD_CLEAR_ALL_TOOLTIP="";i.Msg.LABPLUS_LIGHT_SENSOR_HELPURL="http://wiki.labplus.cn/index.php?title=%E6%A8%A1%E6%8B%9F%E5%85%89%E7%BA%BF";i.Msg.LABPLUS_LIGHT_SENSOR_TOOLTIP="";i.Msg.LABPLUS_LIGHT_SENSOR_MESSAGE0="模拟光线传感器 引脚 %1 的值";i.Msg.LABPLUS_BUTTON_MODULE_IS_PRESSED_HELPURL="https://microbit-micropython.readthedocs.io/en/latest/i2c.html";i.Msg.LABPLUS_BUTTON_MODULE_IS_PRESSED_TOOLTIP="";i.Msg.LABPLUS_BUTTON_MODULE_IS_PRESSED_MESSAGE0="按键模块 引脚 %1 被按下";i.Msg.MICROBIT_EXT2_SET_SERVO_HELPURL="http://wiki.labplus.cn/index.php?title=Extend:bit%E2%85%A1";i.Msg.MICROBIT_EXT2_SET_SERVO_TOOLTIP="";i.Msg.MICROBIT_EXT2_SET_SERVO_MESSAGE0="设置舵机 %1 的角度为 %2";i.Msg.MICROBIT_EXT2_SET_MOTOR_HELPURL="http://wiki.labplus.cn/index.php?title=Extend:bit%E2%85%A1";i.Msg.MICROBIT_EXT2_SET_MOTOR_TOOLTIP="";i.Msg.MICROBIT_EXT2_SET_MOTOR_MESSAGE0="设置马达 %1 方向 %2 速度 %3";i.Msg.MICROBIT_EXT2_STOP_MOTOR_HELPURL="http://wiki.labplus.cn/index.php?title=Extend:bit%E2%85%A1";i.Msg.MICROBIT_EXT2_STOP_MOTOR_TOOLTIP="";i.Msg.MICROBIT_EXT2_STOP_MOTOR_MESSAGE0="停止马达 %1";i.Msg.MICROBIT_EXT2_SOUND_VALUE_MESSAGE0="声音传感器的值";i.Msg.MICROBIT_EXT2_SOUND_VALUE_HELPURL="http://wiki.labplus.cn/index.php?title=Extend:bit%E2%85%A1";i.Msg.MICROBIT_EXT2_SOUND_VALUE_TOOLTIP="";i.Msg.MICROBIT_EXT2_LIGHT_VALUE_MESSAGE0="光线传感器的值";i.Msg.MICROBIT_EXT2_LIGHT_VALUE_HELPURL="http://wiki.labplus.cn/index.php?title=Extend:bit%E2%85%A1";i.Msg.MICROBIT_EXT2_LIGHT_VALUE_TOOLTIP="";i.Msg.MICROBIT_INIT_I2C_HELPURL="https://microbit-micropython.readthedocs.io/en/latest/i2c.html";i.Msg.MICROBIT_INIT_I2C_TOOLTIP="";i.Msg.MICROBIT_INIT_I2C_MESSAGE0="初始化I2C 频率 %1 引脚SDA %2 引脚SCL %3";i.Msg.MICROBIT_I2C_READ_HELPURL="https://microbit-micropython.readthedocs.io/en/latest/i2c.html";i.Msg.MICROBIT_I2C_READ_TOOLTIP="";i.Msg.MICROBIT_I2C_READ_MESSAGE0="I2C读取从地址 %1 读取 %2 字节";i.Msg.MICROBIT_I2C_WRITE_HELPURL="https://microbit-micropython.readthedocs.io/en/latest/i2c.html";i.Msg.MICROBIT_I2C_WRITE_TOOLTIP="";i.Msg.MICROBIT_I2C_WRITE_MESSAGE0="I2C写入 %2 到地址 %1";i.Msg.MICROBIT_CONVERT_BYTEARRAY_HELPURL="https://microbit-micropython.readthedocs.io/en/latest/i2c.html";i.Msg.MICROBIT_CONVERT_BYTEARRAY_TOOLTIP="";i.Msg.MICROBIT_CONVERT_BYTEARRAY_MESSAGE0="转bytearray %1";i.Msg.BOTBIT_MOTOR_ON_HELPURL="";i.Msg.BOTBIT_MOTOR_ON_TOOLTIP="范围:-2000~2000";i.Msg.BOTBIT_MOTOR_ON_MESSAGE0="设置机器人 %1 右轮速度为 %2 左轮速度为 %3";i.Msg.BOTBIT_MOTOR_LEFT="左";i.Msg.BOTBIT_MOTOR_RIGHT="右";i.Msg.BOTBIT_SERVO_UP="上方";i.Msg.BOTBIT_SERVO_DOWN="下方";i.Msg.BOTBIT_MOTOR_FORWARD="前进";i.Msg.BOTBIT_MOTOR_BACKWARD="后退";i.Msg.BOTBIT_HOLDBALL_HELPURL="";i.Msg.BOTBIT_HOLDBALL_TOOLTIP="";i.Msg.BOTBIT_HOLDBALL_MESSAGE0="双臂抱起";i.Msg.BOTBIT_STEERING_ENGINEL_HELPURL="";i.Msg.BOTBIT_STEERING_ENGINEL_TOOLTIP="角度范围为-45°~45°";i.Msg.BOTBIT_STEERING_ENGINEL_MESSAGE0="获取 %1臂 速度";i.Msg.BOTBIT_STEERING_ENGINET_MESSAGE0="获取 %1臂 倾斜角";i.Msg.X="X:";i.Msg.Y="Y:";i.Msg.W="宽:";i.Msg.H="高:";i.Msg.BOTBIT_SERVO_Y="Y轴舵机";i.Msg.BOTBIT_SERVO_X="X轴舵机";i.Msg.BOTBIT_SERVO_Z="Z轴舵机";i.Msg.BOTBIT_STEERING_ENGINE_LEG_HELPURL="";i.Msg.BOTBIT_STEERING_ENGINE_LEG_TOOLTIP="角度范围为-45°~45°";i.Msg.BOTBIT_STEERING_ENGINE_LEG_MESSAGE0="设置 %1腿 %2舵机的角度为 %3";i.Msg.BOTBIT_UPDATEPOSITION_HELPURL="";i.Msg.BOTBIT_UPDATEPOSITION_TOOLTIP="";i.Msg.BOTBIT_UPDATEPOSITION_MESSAGE0="刷新舵机角度";i.Msg.BOTBIT_ULTRASONIC_HELPURL="";i.Msg.BOTBIT_ULTRASONIC_TOOLTIP="";i.Msg.BOTBIT_ULTRASONIC_MESSAGE0="超声波传感器的值";i.Msg.BOTBIT_WALKING_HELPURL="";i.Msg.BOTBIT_WALKING_TOOLTIP="周期越短, 速度越快, 推荐1000~2000";i.Msg.BOTBIT_WALKING_MESSAGE0="舞步(walking) 步数%2 周期%3 方向%1 ";i.Msg.BOTBIT_WALKING_FORWARD="前";i.Msg.BOTBIT_WALKING_BACK="后";i.Msg.BOTBIT_MOONWALKER_HELPURL="";i.Msg.BOTBIT_MOONWALKER_TOOLTIP="推荐周期1000~2000, 幅度10~50";i.Msg.BOTBIT_MOONWALKER_MESSAGE0="舞步(moonwalker) 步数%2 周期%3 幅度%4 方向%1 ";i.Msg.BOTBIT_MOONWALKER_L="左";i.Msg.BOTBIT_MOONWALKER_R="右";i.Msg.BOTBIT_CRUSAITO_HELPURL="";i.Msg.BOTBIT_CRUSAITO_TOOLTIP="推荐步数2~10, 幅度10~50";i.Msg.BOTBIT_CRUSAITO_MESSAGE0="舞步(crusaito) 步数%2 周期%3 幅度%4 方向%1";i.Msg.BOTBIT_CRUSAITO_CW="逆时针";i.Msg.BOTBIT_CRUSAITO_ANTICW="顺时针";i.Msg.BOTBIT_FLAPPING_HELPURL="";i.Msg.BOTBIT_FLAPPING_TOOLTIP="推荐步数5~15, 幅度10~30, 周期1000~2000";i.Msg.BOTBIT_FLAPPING_MESSAGE0="舞步(flapping) 步数%2 周期%3 幅度%4 方向%1";i.Msg.BOTBIT_FLAPPING_FORWARD="前";i.Msg.BOTBIT_FLAPPING_BACK="后";i.Msg.BOTBIT_HOME_HELPURL="";i.Msg.BOTBIT_HOME_TOOLTIP="";i.Msg.BOTBIT_HOME_MESSAGE0="机器人舞步初始化";i.Msg.LABPLUS_UART_SET_MIDI_VOL_HELPURL="http://wiki.labplus.cn/index.php?title=MIDI(%E7%94%B5%E5%AD%90%E7%90%B4)";i.Msg.LABPLUS_UART_SET_MIDI_VOL_TOOLTIP="";i.Msg.LABPLUS_UART_SET_MIDI_VOL_MESSAGE0="设置MIDI模块音量为 %1";i.Msg.labplus_mapping_MESSAGE0="映射%1 从%2 , %3到%4 , %5";i.Msg.labplus_mapping_TOOLTIP="将0~100中的10映射到0~200中并返回映射值";i.Msg.labplus_mapping_HELPURL="";i.Msg.JOINT_MIDI_PIANO="平台钢琴";i.Msg.JOINT_MIDI_BRIGHTACOUSTICPIANO="亮音钢琴";i.Msg.JOINT_MIDI_ELECTRICGRANDPIANO="电钢琴";i.Msg.JOINT_MIDI_HARPSICHORD="大键琴";i.Msg.JOINT_MIDI_Celesta="钢片琴";i.Msg.JOINT_MIDI_Glockenspiel="钟琴";i.Msg.JOINT_MIDI_Musicalbox="音乐盒";i.Msg.JOINT_MIDI_Marimba="马林巴琴";i.Msg.JOINT_MIDI_Xylophone="木琴";i.Msg.JOINT_MIDI_TubularBell="管钟";i.Msg.JOINT_MIDI_Dulcimer="洋琴";i.Msg.JOINT_Vibraphone="颤音琴";i.Msg.JOINT_MIDI_ORGAN="音栓风琴";i.Msg.JOINT_Acoustic_Guitar="木吉他";i.Msg.JOINT_Electric_Guitar="电吉他";i.Msg.JOINT_Acoustic_Bass="民谣贝斯";i.Msg.JOINT_String_Ensemble="弦乐合奏";i.Msg.JOINT_Violin="小提琴";i.Msg.JOINT_Trumpet="小号";i.Msg.JOINT_Sax="萨克斯";i.Msg.JOINT_Steel_Drums="钢鼓";i.Msg.JOINT_Lead="合成音主旋律";i.Msg.JOINT_Pad="合成音衬底";i.Msg.LABPLUS_PLAY_BUZZER_NOTE_HELPURL="http://wiki.labplus.cn/index.php?title=%E8%9C%82%E9%B8%A3%E5%99%A8";i.Msg.LABPLUS_PLAY_BUZZER_NOTE_TOOLTIP="";i.Msg.LABPLUS_PLAY_BUZZER_NOTE_MESSAGE0="播放音调 %1";i.Msg.Carbit_init_MESSAGE0="CarBit初始化";i.Msg.Carbit_init_TOOLTIP="";i.Msg.Carbit_init_HELPURL="http://wiki.labplus.cn/index.php?title=Car:bit";i.Msg.Carbit_setLeftMotor_MESSAGE0="B2电机速度 %1";i.Msg.Carbit_setLeftMotor_TOOLTIP="范围:-100~100";i.Msg.Carbit_setLeftMotor_HELPURL="http://wiki.labplus.cn/index.php?title=Car:bit";i.Msg.Carbit_setRightMotor_MESSAGE0="B1电机速度 %1";i.Msg.Carbit_setRightMotor_TOOLTIP="范围:-100~100";i.Msg.Carbit_setRightMotor_HELPURL="http://wiki.labplus.cn/index.php?title=Car:bit";i.Msg.Carbit_analog_light_HELPURL="http://wiki.labplus.cn/index.php?title=Car:bit";i.Msg.Carbit_analog_light_TOOLTIP="Q3对应Pin1,Q4对应Pin2";i.Msg.Carbit_analog_light_MESSAGE0="%1 模拟光线的值";i.Msg.Carbit_Speed_U10_HELPURL="http://wiki.labplus.cn/index.php?title=Car:bit";i.Msg.Carbit_Speed_U10_TOOLTIP="对应U10";i.Msg.Carbit_Speed_U10_MESSAGE0="左轮速度";i.Msg.Carbit_Speed_U11_HELPURL="http://wiki.labplus.cn/index.php?title=Car:bit";i.Msg.Carbit_Speed_U11_TOOLTIP="对应U11";i.Msg.Carbit_Speed_U11_MESSAGE0="右轮速度";i.Msg.Carbit_Distance_HELPURL="http://wiki.labplus.cn/index.php?title=Car:bit";i.Msg.Carbit_Distance_TOOLTIP="";i.Msg.Carbit_Distance_MESSAGE0="超声波的值";i.Msg.Carbit_tracking_HELPURL="http://wiki.labplus.cn/index.php?title=Car:bit";i.Msg.Carbit_tracking_TOOLTIP="";i.Msg.Carbit_tracking_MESSAGE0="循迹参数 %1 直行速度 %2 最大限速 %3 转弯延时 %5 转弯速度系数 %4 ";i.Msg.XUNFEI_SPEECH_TTS_HELPURL="";i.Msg.XUNFEI_SPEECH_TTS_TOOLTIP="合成音频文件格式只能是 *.pcm";i.Msg.XUNFEI_SPEECH_TTS_MESSAGE0="[讯飞语音] 合成音频 %1 APPID %2 APISecret %3 APIKey %4 文字内容 %5 转存为音频文件 %6";i.Msg.XUNFEI_SPEECH_IAT_HELPURL="";i.Msg.XUNFEI_SPEECH_IAT_TOOLTIP="可识别的音频格式有 *.pcm 与 *.wav";i.Msg.XUNFEI_SPEECH_IAT_MESSAGE0="[讯飞语音] 识别音频 %1 APPID %2 APISecret %3 APIKey %4 待识别音频文件 %5";i.Msg.XUNFEI_SPEECH_IAT_RESULT_HELPURL="";i.Msg.XUNFEI_SPEECH_IAT_RESULT_TOOLTIP="";i.Msg.XUNFEI_SPEECH_IAT_RESULT_MESSAGE0="[讯飞语音] 识别结果";i.Msg.CocoRobo_ZKAI_LCD_INIT_HELPURL="https://maixpy.sipeed.com/zh/libs/machine_vision/lcd.html#lcdinittype1-freq15000000-colorlcdblack";i.Msg.CocoRobo_ZKAI_LCD_INIT_MESSAGE0="LCD 屏幕初始化";i.Msg.CocoRobo_ZKAI_LCD_INIT_TOOLTIP="初始化 LCD 屏幕显示";i.Msg.CocoRobo_ZKAI_LCD_ROTATION_HELPURL="https://maixpy.sipeed.com/zh/libs/machine_vision/lcd.html#lcddirectiondir";i.Msg.CocoRobo_ZKAI_LCD_ROTATION_MESSAGE0="LCD 屏幕方向%1";i.Msg.CocoRobo_ZKAI_LCD_ROTATION_TOOLTIP="设置 LCD 屏幕方向,取值范围 [0,3], 从0到3依次顺时针旋转";i.Msg.CocoRobo_ZKAI_SENSOR_RESET_HELPURL="https://maixpy.sipeed.com/zh/libs/machine_vision/sensor.html#%E5%8D%95%E7%9B%AE%E6%91%84%E5%83%8F%E5%A4%B4%E9%87%8D%E7%BD%AE%E5%87%BD%E6%95%B0";i.Msg.CocoRobo_ZKAI_SENSOR_RESET_MESSAGE0="摄像头 初始化";i.Msg.CocoRobo_ZKAI_SENSOR_RESET_TOOLTIP="初始化单目摄像头";i.Msg.CocoRobo_ZKAI_SENSOR_ENABLE_HELPURL="https://maixpy.sipeed.com/zh/libs/machine_vision/sensor.html#%E8%8E%B7%E5%8F%96%E5%9B%BE%E5%83%8F";i.Msg.CocoRobo_ZKAI_SENSOR_ENABLE_MESSAGE0="摄像头%1";i.Msg.CocoRobo_ZKAI_SENSOR_ENABLE_TOOLTIP="获取图像";i.Msg.CocoRobo_ZKAI_LCD_WIDTHANDHEIGHT_HELPURL="https://maixpy.sipeed.com/zh/libs/machine_vision/lcd.html#lcdwidth";i.Msg.CocoRobo_ZKAI_LCD_WIDTHANDHEIGHT_MESSAGE0="LCD 获取%1";i.Msg.CocoRobo_ZKAI_LCD_WIDTHANDHEIGHT_TOOLTIP="返回 LCD 的宽度(水平分辨率);高度(垂直分辨率)";i.Msg.CocoRobo_ZKAI_LCD_MI_HELPURL="https://maixpy.sipeed.com/zh/libs/machine_vision/lcd.html#lcddirectiondir";i.Msg.CocoRobo_ZKAI_LCD_MI_MESSAGE0="LCD 设置镜像";i.Msg.CocoRobo_ZKAI_LCD_MI_TOOLTIP="设置是否镜像";i.Msg.CocoRobo_ZKAI_LCD_TEXT_HELPURL="https://maixpy.sipeed.com/zh/libs/machine_vision/lcd.html#%E4%BE%8B%E7%A8%8B-1%EF%BC%9A-%E6%98%BE%E7%A4%BA%E8%8B%B1%E6%96%87";i.Msg.CocoRobo_ZKAI_LCD_TEXT_MESSAGE0="显示文本 x %1 y %2 内容 %3";i.Msg.CocoRobo_ZKAI_LCD_TEXT_TOOLTIP="仅支持字母和数字";i.Msg.CocoRobo_ZKAI_SENSOR_OffOn_HELPURL="https://maixpy.sipeed.com/zh/libs/machine_vision/sensor.html#%E5%85%B3%E9%97%AD%E6%91%84%E5%83%8F%E5%A4%B4";i.Msg.CocoRobo_ZKAI_SENSOR_OffOn_MESSAGE0="摄像头%1";i.Msg.CocoRobo_ZKAI_SENSOR_OffOn_TOOLTIP="1 表示开启摄像头 0 表示关闭摄像头";i.Msg.CocoRobo_ZKAI_SENSOR_SKIP_HELPURL="https://maixpy.sipeed.com/zh/libs/machine_vision/sensor.html#%E8%B7%B3%E5%B8%A7";i.Msg.CocoRobo_ZKAI_SENSOR_SKIP_MESSAGE0="摄像头 跳过帧数%1 毫秒%2内的图像 ";i.Msg.CocoRobo_ZKAI_SENSOR_SKIP_TOOLTIP="摄像头跳过指定帧数或者跳过指定时间内的图像";i.Msg.CocoRobo_ZKAI_SENSOR_RETURN_HELPURL="https://maixpy.sipeed.com/zh/libs/machine_vision/sensor.html#%E5%88%86%E8%BE%A8%E7%8E%87%E5%AE%BD%E5%BA%A6";i.Msg.CocoRobo_ZKAI_SENSOR_RETURN_MESSAGE0="摄像头 获取%1";i.Msg.CocoRobo_ZKAI_SENSOR_RETURN_TOOLTIP="(ZKAI)摄像头返回参数(宽高,获取帧缓冲,获取ID)";i.Msg.CocoRobo_ZKAI_SENSOR_SETS_HELPURL="https://maixpy.sipeed.com/zh/libs/machine_vision/sensor.html#%E8%AE%BE%E7%BD%AE%E5%AF%B9%E6%AF%94%E5%BA%A6";i.Msg.CocoRobo_ZKAI_SENSOR_SETS_MESSAGE0="摄像头 设置%1 为%2";i.Msg.CocoRobo_ZKAI_SENSOR_SETS_TOOLTIP="设置摄像头对比度,亮度,饱和度范围为[-2,+2]";i.Msg.CocoRobo_ZKAI_SENSOR_AUTO_GAIN_HELPURL="https://maixpy.sipeed.com/zh/libs/machine_vision/sensor.html#%E8%AE%BE%E7%BD%AE%E8%87%AA%E5%8A%A8%E5%A2%9E%E7%9B%8A";i.Msg.CocoRobo_ZKAI_SENSOR_AUTO_GAIN_MESSAGE0="摄像头 自动增益%1";i.Msg.CocoRobo_ZKAI_SENSOR_AUTO_GAIN_TOOLTIP="1开启摄像头自动增益 0关闭摄像头自动增益";i.Msg.CocoRobo_ZKAI_SENSOR_ACQUIRE_AUTO_GAIN_HELPURL="https://maixpy.sipeed.com/zh/libs/machine_vision/sensor.html#%E8%8E%B7%E5%8F%96%E5%A2%9E%E7%9B%8A%E5%80%BC";i.Msg.CocoRobo_ZKAI_SENSOR_ACQUIRE_AUTO_GAIN_MESSAGE0="摄像头 获取增益值";i.Msg.CocoRobo_ZKAI_SENSOR_ACQUIRE_AUTO_GAIN_TOOLTIP="获取摄像头增益值";i.Msg.CocoRobo_ZKAI_SENSOR_LEVEL_MI_HELPURL="https://maixpy.sipeed.com/zh/libs/machine_vision/sensor.html#%E8%AE%BE%E7%BD%AE%E6%B0%B4%E5%B9%B3%E9%95%9C%E5%83%8F";i.Msg.CocoRobo_ZKAI_SENSOR_LEVEL_MI_MESSAGE0="摄像头 水平镜像%1";i.Msg.CocoRobo_ZKAI_SENSOR_LEVEL_MI_TOOLTIP="1 表示开启水平镜像 0 表示关闭水平镜像";i.Msg.CocoRobo_ZKAI_IMAGE_LAB_HELPURL="https://maixpy.sipeed.com/zh/libs/machine_vision/image.html#%E4%BE%8B%E7%A8%8B-1%EF%BC%9A-%E6%89%BE%E7%BB%BF%E8%89%B2";i.Msg.CocoRobo_ZKAI_IMAGE_LAB_MESSAGE0="寻找颜色 LAB值%1";i.Msg.CocoRobo_ZKAI_IMAGE_LAB_TOOLTIP="image寻找颜色";i.Msg.CocoRobo_ZKAI_TRACE_COLOR_HELPURL="https://CocoRobo.readthedocs.io/zh/doc_CocoRobobox/CocoRobo_classroom_kit/lib/CocoRobo_classroom_kit.html#CocoRobo_classroom_kit.image.find_blobs";i.Msg.CocoRobo_ZKAI_TRACE_COLOR_MESSAGE0="追踪色块 LAB颜色%1 边界框小于%2 像素小于%3 过滤";i.Msg.CocoRobo_ZKAI_TRACE_COLOR_TOOLTIP="追踪色块";i.Msg.CocoRobo_ZKAI_TRACE_CILOR_DISPLAYTEN_HELPURL="";i.Msg.CocoRobo_ZKAI_TRACE_CILOR_DISPLAYTEN_MESSAGE0="追踪颜色 显示%1";i.Msg.CocoRobo_ZKAI_TRACE_CILOR_DISPLAYTEN_TOOLTIP="";i.Msg.CocoRobo_ZKAI_BLOB_ALL_HELPURL="https://CocoRobo.readthedocs.io/zh/doc_CocoRobobox/CocoRobo_classroom_kit/lib/CocoRobo_classroom_kit.html#blob";i.Msg.CocoRobo_ZKAI_BLOB_ALL_MESSAGE0="%1获取识别后色块的 所有参数";i.Msg.CocoRobo_ZKAI_BLOB_ALL_TOOLTIP="返回blob 类 -- 色块对象";i.Msg.CocoRobo_ZKAI_BLOB_X_HELPURL="https://CocoRobo.readthedocs.io/zh/doc_CocoRobobox/CocoRobo_classroom_kit/lib/CocoRobo_classroom_kit.html#blob";i.Msg.CocoRobo_ZKAI_BLOB_X_MESSAGE0="%1获取识别后色块的 x坐标";i.Msg.CocoRobo_ZKAI_BLOB_X_TOOLTIP="返回blob 类 -- 色块对象";i.Msg.CocoRobo_ZKAI_BLOB_Y_HELPURL="https://CocoRobo.readthedocs.io/zh/doc_CocoRobobox/CocoRobo_classroom_kit/lib/CocoRobo_classroom_kit.html#blob";i.Msg.CocoRobo_ZKAI_BLOB_Y_MESSAGE0="%1获取识别后色块的 y坐标";i.Msg.CocoRobo_ZKAI_BLOB_Y_TOOLTIP="返回blob 类 -- 色块对象";i.Msg.CocoRobo_ZKAI_BLOB_W_HELPURL="https://CocoRobo.readthedocs.io/zh/doc_CocoRobobox/CocoRobo_classroom_kit/lib/CocoRobo_classroom_kit.html#blob";i.Msg.CocoRobo_ZKAI_BLOB_W_MESSAGE0="%1获取识别后色块的 宽度";i.Msg.CocoRobo_ZKAI_BLOB_W_TOOLTIP="返回blob 类 -- 色块对象";i.Msg.CocoRobo_ZKAI_BLOB_H_HELPURL="https://CocoRobo.readthedocs.io/zh/doc_CocoRobobox/CocoRobo_classroom_kit/lib/CocoRobo_classroom_kit.html#blob";i.Msg.CocoRobo_ZKAI_BLOB_H_MESSAGE0="%1获取识别后色块的 高度";i.Msg.CocoRobo_ZKAI_BLOB_H_TOOLTIP="返回blob 类 -- 色块对象";i.Msg.CocoRobo_ZKAI_BLOB_NUMBER_HELPURL="https://CocoRobo.readthedocs.io/zh/doc_CocoRobobox/CocoRobo_classroom_kit/lib/CocoRobo_classroom_kit.html#blob";i.Msg.CocoRobo_ZKAI_BLOB_NUMBER_MESSAGE0="%1获取识别后色块的 数量";i.Msg.CocoRobo_ZKAI_BLOB_NUMBER_TOOLTIP="返回blob 类 -- 色块对象";i.Msg.CocoRobo_ZKAI_BLOB_CENTER_X_HELPURL="https://CocoRobo.readthedocs.io/zh/doc_CocoRobobox/CocoRobo_classroom_kit/lib/CocoRobo_classroom_kit.html#blob";i.Msg.CocoRobo_ZKAI_BLOB_CENTER_X_MESSAGE0="%1获取识别后色块的 中心x坐标";i.Msg.CocoRobo_ZKAI_BLOB_CENTER_X_TOOLTIP="返回blob 类 -- 色块对象";i.Msg.CocoRobo_ZKAI_BLOB_CENTER_Y_HELPURL="https://CocoRobo.readthedocs.io/zh/doc_CocoRobobox/CocoRobo_classroom_kit/lib/CocoRobo_classroom_kit.html#blob";i.Msg.CocoRobo_ZKAI_BLOB_CENTER_Y_MESSAGE0="%1获取识别后色块的 中心y坐标";i.Msg.CocoRobo_ZKAI_BLOB_CENTER_Y_TOOLTIP="返回blob 类 -- 色块对象";i.Msg.CocoRobo_ZKAI_BLOB_ORTHOGON_HELPURL="https://CocoRobo.readthedocs.io/zh/doc_CocoRobobox/CocoRobo_classroom_kit/lib/CocoRobo_classroom_kit.html#blob";i.Msg.CocoRobo_ZKAI_BLOB_ORTHOGON_MESSAGE0="%1获取识别后色块的 矩形";i.Msg.CocoRobo_ZKAI_BLOB_ORTHOGON_TOOLTIP="返回blob 类 -- 色块对象";i.Msg.CocoRobo_ZKAI2_FACE_TRACKING_HELPURL="https://CocoRobo.readthedocs.io/zh/doc_CocoRobobox/CocoRobo_classroom_kit/lib/CocoRobo_classroom_kit.html#CocoRobo_classroom_kit.model.select_model";i.Msg.CocoRobo_ZKAI2_FACE_TRACKING_MESSAGE0="选择训练模型 人脸";i.Msg.CocoRobo_ZKAI2_FACE_TRACKING_TOOLTIP="可以识别并且追踪人脸,显示人脸大小等";i.Msg.CocoRobo_ZKAI2_PHOTOGRAPH_TRACKING_HELPURL="https://CocoRobo.readthedocs.io/zh/doc_CocoRobobox/CocoRobo_classroom_kit/lib/CocoRobo_classroom_kit.html#CocoRobo_classroom_kit.model.select_model";i.Msg.CocoRobo_ZKAI2_PHOTOGRAPH_TRACKING_MESSAGE0="调用摄像头进行 人脸检测";i.Msg.CocoRobo_ZKAI2_PHOTOGRAPH_TRACKING_TOOLTIP="可以识别并且追踪人脸,显示人脸大小等";i.Msg.CocoRobo_ZKAI2_RESULT_FACE_HELPURL="https://CocoRobo.readthedocs.io/zh/doc_CocoRobobox/CocoRobo_classroom_kit/lib/CocoRobo_classroom_kit.html#CocoRobo_classroom_kit.model.select_model";i.Msg.CocoRobo_ZKAI2_RESULT_FACE_MESSAGE0="获取识别后人脸的 所有参数";i.Msg.CocoRobo_ZKAI2_RESULT_FACE_TOOLTIP="获取识别后人脸的 所有参数";i.Msg.CocoRobo_ZKAI2_RESULT_FACE_X_HELPURL="https://CocoRobo.readthedocs.io/zh/doc_CocoRobobox/CocoRobo_classroom_kit/lib/CocoRobo_classroom_kit.html#CocoRobo_classroom_kit.model.select_model";i.Msg.CocoRobo_ZKAI2_RESULT_FACE_X_MESSAGE0="获取识别后人脸的 x坐标";i.Msg.CocoRobo_ZKAI2_RESULT_FACE_X_TOOLTIP="获取识别后人脸的 x坐标";i.Msg.CocoRobo_ZKAI2_RESULT_FACE_Y_HELPURL="https://CocoRobo.readthedocs.io/zh/doc_CocoRobobox/CocoRobo_classroom_kit/lib/CocoRobo_classroom_kit.html#CocoRobo_classroom_kit.model.select_model";i.Msg.CocoRobo_ZKAI2_RESULT_FACE_Y_MESSAGE0="获取识别后人脸的 y坐标";i.Msg.CocoRobo_ZKAI2_RESULT_FACE_Y_TOOLTIP="获取识别后人脸的 y坐标";i.Msg.CocoRobo_ZKAI2_RESULT_FACE_W_HELPURL="https://CocoRobo.readthedocs.io/zh/doc_CocoRobobox/CocoRobo_classroom_kit/lib/CocoRobo_classroom_kit.html#CocoRobo_classroom_kit.model.select_model";i.Msg.CocoRobo_ZKAI2_RESULT_FACE_W_MESSAGE0="获取识别后人脸的 宽度";i.Msg.CocoRobo_ZKAI2_RESULT_FACE_W_TOOLTIP="获取识别后人脸的 宽度";i.Msg.CocoRobo_ZKAI2_RESULT_FACE_H_HELPURL="https://CocoRobo.readthedocs.io/zh/doc_CocoRobobox/CocoRobo_classroom_kit/lib/CocoRobo_classroom_kit.html#CocoRobo_classroom_kit.model.select_model";i.Msg.CocoRobo_ZKAI2_RESULT_FACE_H_MESSAGE0="获取识别后人脸的 高度";i.Msg.CocoRobo_ZKAI2_RESULT_FACE_H_TOOLTIP="获取识别后人脸的 高度";i.Msg.CocoRobo_ZKAI2_RESULT_FACE_VALUE_HELPURL="https://CocoRobo.readthedocs.io/zh/doc_CocoRobobox/CocoRobo_classroom_kit/lib/CocoRobo_classroom_kit.html#CocoRobo_classroom_kit.model.select_model";i.Msg.CocoRobo_ZKAI2_RESULT_FACE_VALUE_MESSAGE0="获取识别后人脸的 置信度";i.Msg.CocoRobo_ZKAI2_RESULT_FACE_VALUE_TOOLTIP="获取识别后人脸的 置信度";i.Msg.CocoRobo_ZKAI2_RESULT_FACE_OBJNUM_HELPURL="https://CocoRobo.readthedocs.io/zh/doc_CocoRobobox/CocoRobo_classroom_kit/lib/CocoRobo_classroom_kit.html#CocoRobo_classroom_kit.model.select_model";i.Msg.CocoRobo_ZKAI2_RESULT_FACE_OBJNUM_MESSAGE0="获取识别后人脸的 数量";i.Msg.CocoRobo_ZKAI2_RESULT_FACE_OBJNUM_TOOLTIP="获取识别后人脸的 数量";i.Msg.CocoRobo_ZKAI_LCD_DISPLAY_HELPURL="https://maixpy.sipeed.com/zh/libs/machine_vision/lcd.html#lcddisplayimage-roiauto";i.Msg.CocoRobo_ZKAI_LCD_DISPLAY_MESSAGE0="LCD 显示生效";i.Msg.CocoRobo_ZKAI_LCD_DISPLAY_TOOLTIP="可以在液晶屏上显示一张 image";i.Msg.CocoRobo_ZKAI_SENSOR_IMAGES_HELPURL="https://maixpy.sipeed.com/zh/libs/machine_vision/sensor.html#%E8%8E%B7%E5%8F%96%E5%9B%BE%E5%83%8F";i.Msg.CocoRobo_ZKAI_SENSOR_IMAGES_MESSAGE0="摄像头 获取图像";i.Msg.CocoRobo_ZKAI_SENSOR_IMAGES_TOOLTIP="控制摄像头捕捉图像";i.Msg.CocoRobo_ZKAI2_20class_TRACKING_HELPURL="https://CocoRobo.readthedocs.io/zh/doc_CocoRobobox/CocoRobo_classroom_kit/lib/CocoRobo_classroom_kit.html#CocoRobo_classroom_kit.model.select_model";i.Msg.CocoRobo_ZKAI2_20class_TRACKING_MESSAGE0="选择训练模型 20类";i.Msg.CocoRobo_ZKAI2_20class_TRACKING_TOOLTIP="可以识别20个类型,分别是0-19为飞机,自行车,鸟,船,瓶子,公交车,汽车,猫,椅子,奶牛,餐桌,狗,屋子,摩托车,人,盆栽,羊,沙发,火车,电视";i.Msg.CocoRobo_ZKAI2_PHOTOGRAPH_20TRACKING_HELPURL="https://CocoRobo.readthedocs.io/zh/doc_CocoRobobox/CocoRobo_classroom_kit/lib/CocoRobo_classroom_kit.html#CocoRobo_classroom_kit.model.select_model";i.Msg.CocoRobo_ZKAI2_PHOTOGRAPH_20TRACKING_MESSAGE0="调用摄像头进行 20类识别";i.Msg.CocoRobo_ZKAI2_PHOTOGRAPH_20TRACKING_TOOLTIP="调用摄像头进行 20类识别";i.Msg.CocoRobo_ZKAI2_RESULT_20CLASS_HELPURL="https://CocoRobo.readthedocs.io/zh/doc_CocoRobobox/CocoRobo_classroom_kit/lib/CocoRobo_classroom_kit.html#CocoRobo_classroom_kit.model.select_model";i.Msg.CocoRobo_ZKAI2_RESULT_20CLASS_MESSAGE0="获取识别后20类的 所有参数";i.Msg.CocoRobo_ZKAI2_RESULT_20CLASS_TOOLTIP="获取识别后20类的 所有参数";i.Msg.CocoRobo_ZKAI2_RESULT_20CLASS_X_HELPURL="https://CocoRobo.readthedocs.io/zh/doc_CocoRobobox/CocoRobo_classroom_kit/lib/CocoRobo_classroom_kit.html#CocoRobo_classroom_kit.model.select_model";i.Msg.CocoRobo_ZKAI2_RESULT_20CLASS_X_MESSAGE0="获取识别后20类的 x坐标";i.Msg.CocoRobo_ZKAI2_RESULT_20CLASS_X_TOOLTIP="获取识别后20类的 x坐标";i.Msg.CocoRobo_ZKAI2_RESULT_20CLASS_Y_HELPURL="https://CocoRobo.readthedocs.io/zh/doc_CocoRobobox/CocoRobo_classroom_kit/lib/CocoRobo_classroom_kit.html#CocoRobo_classroom_kit.model.select_model";i.Msg.CocoRobo_ZKAI2_RESULT_20CLASS_Y_MESSAGE0="获取识别后20类的 y坐标";i.Msg.CocoRobo_ZKAI2_RESULT_20CLASS_Y_TOOLTIP="获取识别后20类的 y坐标";i.Msg.CocoRobo_ZKAI2_RESULT_20CLASS_W_HELPURL="https://CocoRobo.readthedocs.io/zh/doc_CocoRobobox/CocoRobo_classroom_kit/lib/CocoRobo_classroom_kit.html#CocoRobo_classroom_kit.model.select_model";i.Msg.CocoRobo_ZKAI2_RESULT_20CLASS_W_MESSAGE0="获取识别后20类的 宽度";i.Msg.CocoRobo_ZKAI2_RESULT_20CLASS_W_TOOLTIP="获取识别后20类的 宽度";i.Msg.CocoRobo_ZKAI2_RESULT_20CLASS_H_HELPURL="https://CocoRobo.readthedocs.io/zh/doc_CocoRobobox/CocoRobo_classroom_kit/lib/CocoRobo_classroom_kit.html#CocoRobo_classroom_kit.model.select_model";i.Msg.CocoRobo_ZKAI2_RESULT_20CLASS_H_MESSAGE0="获取识别后20类的 高度";i.Msg.CocoRobo_ZKAI2_RESULT_20CLASS_H_TOOLTIP="获取识别后20类的 高度";i.Msg.CocoRobo_ZKAI2_RESULT_20CLASS_VALUE_HELPURL="https://CocoRobo.readthedocs.io/zh/doc_CocoRobobox/CocoRobo_classroom_kit/lib/CocoRobo_classroom_kit.html#CocoRobo_classroom_kit.model.select_model";i.Msg.CocoRobo_ZKAI2_RESULT_20CLASS_VALUE_MESSAGE0="获取识别后20类的 置信度";i.Msg.CocoRobo_ZKAI2_RESULT_20CLASS_VALUE_TOOLTIP="获取识别后20类的 置信度";i.Msg.CocoRobo_ZKAI2_RESULT_20CLASS_OBJNUM_HELPURL="https://CocoRobo.readthedocs.io/zh/doc_CocoRobobox/CocoRobo_classroom_kit/lib/CocoRobo_classroom_kit.html#CocoRobo_classroom_kit.model.select_model";i.Msg.CocoRobo_ZKAI2_RESULT_20CLASS_OBJNUM_MESSAGE0="获取识别后20类的 数量";i.Msg.CocoRobo_ZKAI2_RESULT_20CLASS_OBJNUM_TOOLTIP="获取识别后20类的 数量";i.Msg.CocoRobo_ZKAI2_RESULT_20CLASS_CLASSID_HELPURL="https://CocoRobo.readthedocs.io/zh/doc_CocoRobobox/CocoRobo_classroom_kit/lib/CocoRobo_classroom_kit.html#CocoRobo_classroom_kit.model.select_model";i.Msg.CocoRobo_ZKAI2_RESULT_20CLASS_CLASSID_MESSAGE0="获取识别后20类的 类型";i.Msg.CocoRobo_ZKAI2_RESULT_20CLASS_CLASSID_TOOLTIP="获取识别后20类的 类型可以放入获取识别的参数,可以识别20个类型,分别是0-19为飞机,自行车,鸟,船,瓶子,公交车,汽车,猫,椅子,奶牛,餐桌,狗,屋子,摩托车,人,盆栽,羊,沙发,火车,电视";i.Msg.CocoRobo_ZKAI2_RESULT_20CLASS_INDEX_HELPURL="https://CocoRobo.readthedocs.io/zh/doc_CocoRobobox/CocoRobo_classroom_kit/lib/CocoRobo_classroom_kit.html#CocoRobo_classroom_kit.model.select_model";i.Msg.CocoRobo_ZKAI2_RESULT_20CLASS_INDEX_MESSAGE0="获取识别后20类的 类型数量";i.Msg.CocoRobo_ZKAI2_RESULT_20CLASS_INDEX_TOOLTIP="获取识别后20类的 类型数量";i.Msg.CocoRobo_ZKAI2_NUMBER_DISCERN_HELPURL="https://CocoRobo.readthedocs.io/zh/doc_CocoRobobox/CocoRobo_classroom_kit/lib/CocoRobo_classroom_kit.html#CocoRobo_classroom_kit.model.select_model";i.Msg.CocoRobo_ZKAI2_NUMBER_DISCERN_MESSAGE0="选择训练模型 手写数字";i.Msg.CocoRobo_ZKAI2_NUMBER_DISCERN_TOOLTIP="选择训练模型 手写数字识别";i.Msg.CocoRobo_ZKAI2_RESULT_NUMBER_DISCERN_HELPURL="https://CocoRobo.readthedocs.io/zh/doc_CocoRobobox/CocoRobo_classroom_kit/lib/CocoRobo_classroom_kit.html#CocoRobo_classroom_kit.model.select_model";i.Msg.CocoRobo_ZKAI2_RESULT_NUMBER_DISCERN_MESSAGE0="调用摄像头进行 手写数字识别";i.Msg.CocoRobo_ZKAI2_RESULT_NUMBER_DISCERN_TOOLTIP="调用摄像头进行 手写数字识别";i.Msg.CocoRobo_ZKAI2_NUMBER_DETECT_ALL_HELPURL="https://CocoRobo.readthedocs.io/zh/doc_CocoRobobox/CocoRobo_classroom_kit/lib/CocoRobo_classroom_kit.html#id2";i.Msg.CocoRobo_ZKAI2_NUMBER_DETECT_ALL_MESSAGE0="获取识别后手写数字的 所有参数";i.Msg.CocoRobo_ZKAI2_NUMBER_DETECT_ALL_TOOLTIP="手写数字识别参数";i.Msg.CocoRobo_ZKAI2_NUMBER_DETECT_NUMBER_HELPURL="https://CocoRobo.readthedocs.io/zh/doc_CocoRobobox/CocoRobo_classroom_kit/lib/CocoRobo_classroom_kit.html#id2";i.Msg.CocoRobo_ZKAI2_NUMBER_DETECT_NUMBER_MESSAGE0="获取识别后手写数字的 数字";i.Msg.CocoRobo_ZKAI2_NUMBER_DETECT_NUMBER_TOOLTIP="手写数字识别 数字";i.Msg.CocoRobo_ZKAI2_NUMBER_DETECT_ADIENCE_HELPURL="https://CocoRobo.readthedocs.io/zh/doc_CocoRobobox/CocoRobo_classroom_kit/lib/CocoRobo_classroom_kit.html#id2";i.Msg.CocoRobo_ZKAI2_NUMBER_DETECT_ADIENCE_MESSAGE0="获取识别后手写数字的 置信度";i.Msg.CocoRobo_ZKAI2_NUMBER_DETECT_ADIENCE_TOOLTIP="手写数字 识别数字 置信度";i.Msg.CocoRobo_ZKAI_IMAGE_FACEDETECT_HELPURL="https://maixpy.sipeed.com/zh/libs/Maix/kpu.html#%E8%BF%90%E8%A1%8Cyolo2%E7%BD%91%E7%BB%9C";i.Msg.CocoRobo_ZKAI_IMAGE_FACEDETECT_MESSAGE0="人脸检测";i.Msg.CocoRobo_ZKAI_IMAGE_FACEDETECT_TOOLTIP="";i.Msg.CocoRobo_ZKAI_IMAGE_FACEDETECT_RETURN_HELPURL="https://maixpy.sipeed.com/zh/libs/Maix/kpu.html#%E8%BF%90%E8%A1%8Cyolo2%E7%BD%91%E7%BB%9C";i.Msg.CocoRobo_ZKAI_IMAGE_FACEDETECT_RETURN_MESSAGE0="获取 识别%1";i.Msg.CocoRobo_ZKAI_IMAGE_FACEDETECT_RETURN_TOOLTIP="人脸检测的x和y是LCD屏幕的坐标位置;width和height是人脸检测出的宽度和高度;classid是识别出的类别;objnum是人脸检测出的个数";i.Msg.CocoRobo_ZKAI_IMAGE_FACEDETECT_ALL_RETURN_HELPURL="https://maixpy.sipeed.com/zh/libs/Maix/kpu.html#%E8%BF%90%E8%A1%8Cyolo2%E7%BD%91%E7%BB%9C";i.Msg.CocoRobo_ZKAI_IMAGE_FACEDETECT_ALL_RETURN_MESSAGE0="获取 识别 所有参数";i.Msg.CocoRobo_ZKAI_IMAGE_FACEDETECT_ALL_RETURN_TOOLTIP="人脸检测的x和y是LCD屏幕的坐标位置;width和height是人脸检测出的宽度和高度;classid是识别出的类别;objnum是人脸检测出的个数";i.Msg.CocoRobo_ZKAI_IMAGE_FACEDETECT2_HELPURL="https://maixpy.sipeed.com/zh/libs/Maix/kpu.html#%E8%BF%90%E8%A1%8Cyolo2%E7%BD%91%E7%BB%9C";i.Msg.CocoRobo_ZKAI_IMAGE_FACEDETECT2_MESSAGE0="人脸检测";i.Msg.CocoRobo_ZKAI_IMAGE_FACEDETECT2_TOOLTIP="可以放入获取识别的参数";i.Msg.CocoRobo_ZKAI_IMAGE_20CLASS_HELPURL="https://maixpy.sipeed.com/zh/libs/Maix/kpu.html#%E8%BF%90%E8%A1%8Cyolo2%E7%BD%91%E7%BB%9C";i.Msg.CocoRobo_ZKAI_IMAGE_20CLASS_TOOLTIP="可以放入获取识别的参数,可以识别20个类型,分别是飞机,自行车,鸟,船,瓶子,公交车,汽车,猫,椅子,奶牛, 餐桌,狗,屋子,摩托车,人,盆栽,羊,沙发,火车,电视";i.Msg.CocoRobo_ZKAI_LCD_SHOW_REC_HELPURL="https://maixpy.sipeed.com/zh/libs/machine_vision/image.html#imagedrawrectanglex-y-w-h-color-thickness1-fillfalse";i.Msg.CocoRobo_ZKAI_LCD_SHOW_REC_MESSAGE0="矩形%1 x%3 y%4 宽%5 高%6 颜色为 R%7 G%8 B%9 加粗%2";i.Msg.CocoRobo_ZKAI_LCD_SHOW_REC_TOOLTIP="在图像上绘制矩形";i.Msg.CocoRobo_ZKAI_LCD_SHOW_STRING_MESSAGE0="线条 x1%1 y1%2 到x2%3 y2%4 颜色为R%5 G%6 B%7 加粗%8";i.Msg.CocoRobo_ZKAI_LCD_SHOW_STRING_TOOLTIP="在图像上绘制线条";i.Msg.CocoRobo_ZKAI_LCD_SHOW_STRING_HELPURL="https://maixpy.sipeed.com/zh/libs/machine_vision/image.html#imagedrawlinex0-y0-x1-y1-color-thickness1";i.Msg.CocoRobo_ZKAI_LCD_CLEAR_ALL_MESSAGE0="LCD 显示清空";i.Msg.CocoRobo_ZKAI_LCD_CLEAR_ALL_TOOLTIP="将液晶屏清空为黑色或者指定的颜色";i.Msg.CocoRobo_ZKAI_LCD_CLEAR_ALL_HELPURL="https://maixpy.sipeed.com/zh/libs/machine_vision/lcd.html#lcdclear";i.Msg.CocoRobo_ZKAI_LCD_return_colour_MESSAGE0="LCD 返回 x%1 y%2 颜色";i.Msg.CocoRobo_ZKAI_LCD_return_colour_TOOLTIP="返回某个坐标点的颜色";i.Msg.CocoRobo_ZKAI_LCD_return_colour_HELPURL="https://maixpy.sipeed.com/zh/libs/machine_vision/image.html#imagegetpixelx-y-rgbtuple";i.Msg.CocoRobo_ZKAI_LCD_SHOW_CIRCLE_MESSAGE0="圆形%1 x%2 y%3 半径%4 颜色为 R%5 G%6 B%7 加粗%8";i.Msg.CocoRobo_ZKAI_LCD_SHOW_CIRCLE_TOOLTIP="在图像上绘制圆形";i.Msg.CocoRobo_ZKAI_LCD_SHOW_CIRCLE_HELPURL="https://maixpy.sipeed.com/zh/libs/machine_vision/image.html#imagedrawcirclex-y-radius-color-thickness1-fillfalse";i.Msg.CocoRobo_ZKAI_LCD_TEXT_MOST_HELPURL="https://maixpy.sipeed.com/zh/libs/machine_vision/lcd.html#%E4%BE%8B%E7%A8%8B-1%EF%BC%9A-%E6%98%BE%E7%A4%BA%E8%8B%B1%E6%96%87";i.Msg.CocoRobo_ZKAI_LCD_TEXT_MOST_MESSAGE0="显示文本 x %1 y %2 内容 %3 颜色为R%4 G%5 B%6 字号%7";i.Msg.CocoRobo_ZKAI_LCD_TEXT_MOST_TOOLTIP="仅支持字母和数字";i.Msg.CocoRobo_ZKAI_LCD_SHOW_TEN_STRING_MESSAGE0="十字线 x%1 y%2 颜色为R%3 G%4 B%5 尺寸%6 加粗%7";i.Msg.CocoRobo_ZKAI_LCD_SHOW_TEN_STRING_TOOLTIP="在图像上绘制十字线";i.Msg.CocoRobo_ZKAI_LCD_SHOW_TEN_STRING_HELPURL="https://maixpy.sipeed.com/zh/libs/machine_vision/image.html#imagedrawcrossx-y-color-size5-thickness1";i.Msg.CocoRobo_ZKAI_LCD_SHOW_ARROWS_MESSAGE0="箭头 x1%1 y1%2 到x2%3 y2%4 颜色为R%5 G%6 B%7 加粗%8";i.Msg.CocoRobo_ZKAI_LCD_SHOW_ARROWS_TOOLTIP="在图像上绘制一个箭头";i.Msg.CocoRobo_ZKAI_LCD_SHOW_ARROWS_HELPURL="https://maixpy.sipeed.com/zh/libs/machine_vision/image.html#imagedrawarrowx0-y0-x1-y1-color-thickness1";i.Msg.CocoRobo_ZKAI_LCD_SHOW_IMAGE_PIRCTURE_HELPURL="https://maixpy.sipeed.com/zh/libs/machine_vision/lcd.html#%E4%BE%8B%E7%A8%8B-2%EF%BC%9A-%E6%98%BE%E7%A4%BA%E5%9B%BE%E7%89%87";i.Msg.CocoRobo_ZKAI_LCD_SHOW_IMAGE_PIRCTURE_MESSAGE0="显示图像 路径%1";i.Msg.CocoRobo_ZKAI_LCD_SHOW_IMAGE_PIRCTURE_TOOLTIP="显示图像";i.Msg.CocoRobo_ZKAI_LCD_SHOW_IMAGE_HEAT_HELPURL="https://maixpy.sipeed.com/zh/libs/machine_vision/image.html#imagetorainbowcopyfalse";i.Msg.CocoRobo_ZKAI_LCD_SHOW_IMAGE_HEAT_MESSAGE0="LCD 显示热图颜色";i.Msg.CocoRobo_ZKAI_LCD_SHOW_IMAGE_HEAT_TOOLTIP="可以在液晶屏上显示一张 image的热图颜色";i.Msg.CocoRobo_ZKAI_LCD_SHOW_ECTYPE_HELPURL="https://maixpy.sipeed.com/zh/libs/machine_vision/image.html#imagesavepath-roi-quality50";i.Msg.CocoRobo_ZKAI_LCD_SHOW_ECTYPE_MESSAGE0="将图像的副本保存到SD卡 图像名%1 图像显示区域 x%2 y%3 宽%4 高%5";i.Msg.CocoRobo_ZKAI_LCD_SHOW_ECTYPE_TOOLTIP="将图像的副本保存到SD卡";i.Msg.CocoRobo_ZKAI_LCD_SHOW_ECTYPE_SHOW_HELPURL="https://maixpy.sipeed.com/zh/libs/machine_vision/image.html#imagecopyroi-copytofbfalse";i.Msg.CocoRobo_ZKAI_LCD_SHOW_ECTYPE_SHOW_MESSAGE0="创建一个图像对象的副本 复制图像区域 x%1 y%2 宽%3 高%4";i.Msg.CocoRobo_ZKAI_LCD_SHOW_ECTYPE_SHOW_TOOLTIP="创建一个图像对象的副本";i.Msg.CocoRobo_ZKAI_LCD_SHOW_IMAGE_HEAT_GRAYSCALE="灰度";i.Msg.CocoRobo_ZKAI_LCD_SHOW_IMAGE_HEAT_RAINBOW="彩虹";i.Msg.CocoRobo_ZKAI_LCD_SHOW_IMAGE_HEAT_NEGATE="数字反转";i.Msg.CocoRobo_ZKAI_LCD_SHOW_IMAGE_HEAT_INVERT="黑白翻转";i.Msg.CocoRobo_ZKAI_LCD_SHOW_IMAGE_DESCARTES_LINPOLAR="线性极";i.Msg.CocoRobo_ZKAI_LCD_SHOW_IMAGE_DESCARTES_LOGPOLAR="对数极";i.Msg.CocoRobo_ZKAI_SENSOR_PATTERN_GRAYSCALE="灰度";i.Msg.CocoRobo_ZKAI_SENSOR_PATTERN_COLOR="彩色";i.Msg.CocoRobo_ZKAI_SENSOR_ENABLE_START="开始抓取图像";i.Msg.CocoRobo_ZKAI_SENSOR_ENABLE_STOP="停止抓取图像";i.Msg.CocoRobo_ZKAI_SENSOR_LEVEL_MI_H="水平镜像";i.Msg.CocoRobo_ZKAI_SENSOR_LEVEL_MI_V="垂直翻转";i.Msg.CocoRobo_ZKAI_SENSOR_SETS_CONTRAST="对比度";i.Msg.CocoRobo_ZKAI_SENSOR_SETS_BRIGHTNESS="亮度";i.Msg.CocoRobo_ZKAI_SENSOR_SETS_SATURATION="饱和度";i.Msg.CocoRobo_ZKAI2_FACE_YOLO="人脸检测";i.Msg.CocoRobo_ZKAI2_CLASS_20_YOLO="20类识别";i.Msg.CocoRobo_ZKAI2_MNIST_NET="数字识别";i.Msg.CocoRobo_ZKAI2_PHOTOGRAPH_FACE_YOLO="人脸";i.Msg.CocoRobo_ZKAI2_PHOTOGRAPH_CLASS_20_YOLO="20类";i.Msg.CocoRobo_ZKAI_TRACE_COLOR_RECTANGLE="矩形";i.Msg.CocoRobo_ZKAI_TRACE_COLOR_CROSS="十字";i.Msg.CocoRobo_NAME_PYTHON_ENVIRONMENT_HELPURL="";i.Msg.CocoRobo_NAME_PYTHON_ENVIRONMENT_MESSAGE0="声明python 运行环境";i.Msg.CocoRobo_NAME_PYTHON_ENVIRONMENT_TOOLTIP="";i.Msg.CocoRobo_LARK_GET_ALL_COLOR_MESSAGE0="I2C获取颜色";i.Msg.CocoRobo_LARK_GET_ALL_COLOR_TOOLTIP="返回列表";i.Msg.CocoRobo_LARK_GET_COLOR_TOOLTIP="";i.Msg.CocoRobo_LARK_GET_COLOR_MESSAGE0="I2C获取 %1";i.Msg.CocoRobo_lARK_RED="红色";i.Msg.CocoRobo__LARK_GREEN="绿色";i.Msg.CocoRobo__LARK_BLUE="蓝色";i.Msg.CocoRobo_LARK_GET_ALL_COLOR_HSV_TOOLTIP="HSV(Hue, Saturation, Value)";i.Msg.CocoRobo_LARKT_GET_ALL_COLOR_HSV_MESSAGE0="I2C获取HSV";i.Msg.CocoRobo_LARK_GET_COLOR_HSV_TOOLTIP="HSV(Hue, Saturation, Value)";i.Msg.CocoRobo_LARK_GET_COLOR_HSV_MESSAGE0="i2C获取HSV %1";i.Msg.CocoRobo_LARK_GET_COLOR_STRING_TOOLTIP="";i.Msg.CocoRobo_LARK_GET_COLOR_STRING_MESSAGE0="I2C获取颜色";i.Msg.CocoRobo_LARK_DISCERN_COLOR_TOOLTIP="";i.Msg.CocoRobo_LARK_DISCERN_COLOR_MESSAGE0="获取 %1";i.Msg.CocoRobo_LARK_RED="红色";i.Msg.CocoRobo_LARK_GREEN="绿色";i.Msg.CocoRobo_LARK_BLUE="蓝色";i.Msg.CocoRobo_LARK_ORANGE="橙色";i.Msg.CocoRobo_LARK_YELLOW="黄色";i.Msg.CocoRobo_LARK_PURPLE="紫色";i.Msg.CocoRobo_LARK_CYAN="青色";i.Msg.CocoRobo_LARK_NONE="无色";i.Msg.CocoRobo_LARK_NULL="无法获取";i.Msg.CocoRobo_LARK_ULTRASONIC_TOOLTIP="";i.Msg.CocoRobo_LARK_ULTRASONIC_MESSAGE0="I2C超声波";i.Msg.CocoRobo_LARK_MOTOR_SET_I2C_TOOLTIP="";i.Msg.CocoRobo_LARK_MOTOR_SET_I2C_MESSAGE0="I2C设置 %1 速度 %2";i.Msg.CocoRobo_LARK_GET_LINE_ON_I2C_TOOLTIP="";i.Msg.CocoRobo_LARK_GET_LINE_ON_I2C_MESSAGE0="I2C获取 %1 巡线值";i.Msg.CocoRobo_LARK_GET_LINE_RIGHT_ON_I2C="右边";i.Msg.CocoRobo_LARK_GET_LINE_LEFT_ON_I2C="左边";i.Msg.CocoRobo_LARK_SEARCH_LINE_ON_I2C_TOOLTIP="";i.Msg.CocoRobo_LARK_SEARCH_LINE_ON_I2C_MESSAGE0="I2C循迹传感 %1 遇到黑线";i.Msg.CocoRobo_LARK_SEARCH_LEFT="左边";i.Msg.CocoRobo_LARK_SEARCH_RIGHT="右边";i.Msg.CocoRobo_LARK_SEARCH_BOTH="两边都";i.Msg.CocoRobo_LARK_SEARCH_NONE="两边都没有";i.Msg.CocoRobo_LARK__CAR_GET_ALL_COLOR_TOOLTIP="Returns as list";i.Msg.CocoRobo_LARK__CAR_GET_ALL_COLOR_MESSAGE0="千里马获取颜色";i.Msg.CocoRobo_LARK_CAR_GET_COLOR_TOOLTIP="";i.Msg.CocoRobo_LARK_CAR_GET_COLOR_MESSAGE0="千里马获取 %1";i.Msg.CocoRobo_lARK_CAR_RED="红色";i.Msg.CocoRobo__LARK_CAR_GREEN="绿色";i.Msg.CocoRobo__LARK_CAR_BLUE="蓝色";i.Msg.CocoRobo_LARK_CAR_GET_ALL_COLOR_HSV_TOOLTIP="HSV(Hue, Saturation, Value)";i.Msg.CocoRobo_LARKT_CAR_GET_ALL_COLOR_HSV_MESSAGE0="千里马获取HSV";i.Msg.CocoRobo_LARK_CAR_GET_COLOR_HSV_TOOLTIP="HSV(Hue, Saturation, Value)";i.Msg.CocoRobo_LARK_CAR_GET_COLOR_HSV_MESSAGE0="千里马获取HSV %1";i.Msg.CocoRobo_LARK_CAR_GET_COLOR_STRING_TOOLTIP="";i.Msg.CocoRobo_LARK_CAR_GET_COLOR_STRING_MESSAGE0="千里马识别颜色";i.Msg.CocoRobo_LARK_CAR_DISCERN_COLOR_TOOLTIP="";i.Msg.CocoRobo_LARK_CAR_DISCERN_COLOR_MESSAGE0="千里马获取颜色 %1";i.Msg.CocoRobo_LARK_CAR_RED="红色";i.Msg.CocoRobo_LARK_CAR_GREEN="绿色";i.Msg.CocoRobo_LARK_CAR_BLUE="蓝色";i.Msg.CocoRobo_LARK_CAR_ORANGE="橙色";i.Msg.CocoRobo_LARK_CAR_YELLOW="黄色";i.Msg.CocoRobo_LARK_CAR_PURPLE="紫色";i.Msg.CocoRobo_LARK_CAR_CYAN="青色";i.Msg.CocoRobo_LARK_CAR_NONE="无识别";i.Msg.CocoRobo_LARK_CAR_NULL="识别错误";i.Msg.CocoRobo_LARK_CAR_ULTRASONIC_TOOLTIP="";i.Msg.CocoRobo_LARK_CAR_ULTRASONIC_MESSAGE0="千里马获取超声波";i.Msg.CocoRobo_LARK_CAR_GET_LINE_ON_I2C_TOOLTIP="";i.Msg.CocoRobo_LARK_CAR_GET_LINE_ON_I2C_MESSAGE0="千里马获取 %1 循迹数值";i.Msg.CocoRobo_LARK_CAR_GET_LINE_RIGHT_ON_I2C="右边";i.Msg.CocoRobo_LARK_CAR_GET_LINE_LEFT_ON_I2C="左边";i.Msg.CocoRobo_LARK_CAR_SEARCH_LINE_ON_I2C_TOOLTIP="";i.Msg.CocoRobo_LARK_CAR_SEARCH_LINE_ON_I2C_MESSAGE0="千里马循迹传感器 %1 碰到黑线";i.Msg.CocoRobo_LARK_CAR_SEARCH_LEFT="左边";i.Msg.CocoRobo_LARK_CAR_SEARCH_RIGHT="右边";i.Msg.CocoRobo_LARK_CAR_SEARCH_BOTH="两边";i.Msg.CocoRobo_LARK_CAR_SEARCH_NONE="两边都没有";i.Msg.CocoRobo_LARK_MOTOR_SET_I2C_TOOLTIP="";i.Msg.CocoRobo_LARK_MOTOR_SET_I2C_MESSAGE0="千里马 %1 速度 %2";i.Msg.CocoRobo_LARK_CAR_MOTION_LEFT="左转";i.Msg.CocoRobo_LARK_CAR_MOTION_RIGHT="右转";i.Msg.CocoRobo_LARK_CAR_MOTION_FORWARD="前进";i.Msg.CocoRobo_LARK_CAR_MOTION_BACKWARD="后退";i.Msg.CocoRobo_LARK_CAR_MOTION_STOP="停止";i.Msg.Math_Degrad_RAD_TOOLTIP="返回转换角度为弧度的结果";i.Msg.Math_Degrad_DEG_TOOLTIP="返回转换弧度为角度的结果";i.Msg.Text_Split_String_By_Delimiter_TOOLTIP="将字符串使用分隔符进行拆分并生成列表";i.Msg.Text_List_TOOLTIP="初始化列表[0,0,0]";i.Msg.Text_Dict_TOOLTIP="初始化字典";i.Msg.Text_Tuple_TOOLTIP="初始化元组";i.Msg.Text_Set_TOOLTIP="初始化集合";i.Msg.Iot_System_Run_TOOLTIP="运行指定路径的程序文件";i.Msg.Esp32_Main_Controller_Io_From_Digital_Pin_TOOLTIP="返回%1获取特定引脚的数字信号数值";i.Msg.Esp32_Main_Controller_Io_Set_Digital_Pin_TOOLTIP="%1设置特定引脚为指定电平";i.Msg.Esp32_Main_Controller_Io_Set_Analog_Pin_TOOLTIP="IoT模块设置引脚,并控制%1的模拟输出";i.Msg.Ai_Main_Controller_Io_Set_Analog_Pin_TOOLTIP="A.I.模块设置引脚,并控制%1的模拟输出";i.Msg.Esp32_Main_Controller_Io_From_Analog_Pin_TOOLTIP="IoT模块获取特定引脚的模拟信号数值";i.Msg.Esp32_Main_Controller_Io_High_Low_TOOLTIP="返回%1";i.Msg.esp32_main_controller_io_analog_pin_1_TOOLTIP="返回A.I. 模块引脚 #%1";i.Msg.esp32_main_controller_io_analog_pin_2_TOOLTIP="返回IoT 模块引脚 #%1";i.Msg.Iot_System_Create_TOOLTIP="创建指定名字的文本文件";i.Msg.Iot_System_Write_TOOLTIP="创建指定名字的文本文件,并写入内容,以%1为分隔符";i.Msg.Iot_System_Input_TOOLTIP="读取指定名字的文本文件为列表,并以%1为分隔符";i.Msg.Esp32_Get_Current_Date_TOOLTIP="获取本地时间的%1";i.Msg.Esp32_Main_Controller_Time_Timer_Init_TOOLTIP="%1初始化计时器";i.Msg.Esp32_Main_Controller_Time_Timer_Get_Current_TOOLTIP="%1获取计时器已过时间";i.Msg.Esp32_Main_Controller_Time_Timer_Clear_TOOLTIP="%1清除计时器";i.Msg.Esp32_Main_Controller_Time_Period_Timer_TOOLTIP="%1启用周期重复计时器,并隔一定的时间运行指定的条件";i.Msg.Esp32_Main_Controller_Time_Period_Timer_Clear_TOOLTIP="%1清除周期重复计时器";i.Msg.serial_Comm_Print_TOOLTIP="串口打印";i.Msg.Serial_Write_Data_TOOLTIP="使用%1通过串口发送数据至其他设备";i.Msg.Serial_Read_Data_Setup_TOOLTIP="使用%1通过串口获取其他设备发送的数据初始化";i.Msg.Serial_Read_Data_all_TOOLTIP="获取串口的数据并存储到serial_data中";i.Msg.Serial_Read_Data_TOOLTIP="从serial_data获取接收到串口数据中的某一位数据";i.Msg.Serial_Send_Data_To_Microbit_TOOLTIP="在%1模块上发送数据至Microbit";i.Msg.Trd_Party_Sensor_Hcsr04_TOOLTIP="%1初始化超声波传感器";i.Msg.Trd_Party_Sensor_Hcsr04_Read_TOOLTIP="读取来自特定超声波传感器的距离检测数值,并返回";i.Msg.Esp32_Main_Controller_Led_Strip_Setup_TOOLTIP="%1初始化LED灯带";i.Msg.Esp32_Main_Controller_Led_strip_set_bright_TOOLTIP="设置LED灯带亮度";i.Msg.Iot_Led_Matrix_Color_Picker_TOOLTIP="将十六进制颜色码转换成RGB颜色值,并返回";i.Msg.Led_Strip_Color_Rgb_TOOLTIP="返回RGB颜色值";i.Msg.Esp32_Main_Controller_Led_Strip_Set_TOOLTIP="%1点亮LED灯带";i.Msg.Led_Strip_Show_Above_TOOLTIP="%1使灯带显示以上效果";i.Msg.Esp32_Main_Controller_Button_Read_Pressed_TOOLTIP="当按钮%1按下时";i.Msg.Esp32_Main_Controller_Button_Read_Released_TOOLTIP="当按钮%1松开时";i.Msg.Esp32_Main_Controller_Button_Read_Value_TOOLTIP="读取按钮%1的电平状态";i.Msg.Esp32_Main_Controller_Touch_Read_Touched_TOOLTIP="当触摸区域%1被触摸时";i.Msg.Esp32_Main_Controller_Touch_Read_Untouched_TOOLTIP="当触摸区域%1未被触摸时";i.Msg.Esp32_Main_Controller_Touch_Read_Value_TOOLTIP="获取触摸区域%1的电容变化数值";i.Msg.Esp32_Main_Controller_Set_Led_Turnon_TOOLTIP="设置点亮指定的LED灯";i.Msg.Esp32_Main_Controller_Set_Led_Turnoff_TOOLTIP="设置关闭指定的LED灯";i.Msg.Esp32_Main_Controller_Set_Led_Drawpixel_On_TOOLTIP="点亮指定的LED灯";i.Msg.Esp32_Main_Controller_Set_Led_Drawpixel_Off_TOOLTIP="熄灭指定的LED灯";i.Msg.Esp32_Main_Controller_Set_Buzzer_TOOLTIP="蜂鸣器设置音调频率";i.Msg.Esp32_Main_Controller_Turn_Off_Buzzer_TOOLTIP="关闭蜂鸣器";i.Msg.Esp32_Main_Controller_Get_Environmental_Value_TOOLTIP="获取%1数值(获取数值时间要大于1秒)";i.Msg.Esp32_Main_Controller_Motion_When_Shaking_STATEMENT_TOOLTIP="当模块%1摇晃状态时,执行操作";i.Msg.Esp32_Main_Controller_Motion_When_Tilting_STATEMENT_TOOLTIP="当模块%1倾斜时,执行操作";i.Msg.Esp32_Main_Controller_Motion_Acceleration_TOOLTIP="获取%1轴的加速度";i.Msg.Esp32_Main_Controller_Motion_Rotation_Measurement_TOOLTIP="获取%1轴的旋转测量值";i.Msg.Esp32_Main_Controller_Motion_Tilt_Angle_TOOLTIP="获取%1轴的倾斜角度";i.Msg.Esp32_Main_Controller_Get_Light_TOOLTIP="获取光线值";i.Msg.Esp32_Main_Controller_Wifi_Connect_Internet_TOOLTIP="连接WiFi网络";i.Msg.Esp32_Main_Controller_Get_Wifi_Connection_Status_TOOLTIP="获取WiFi连接状态";i.Msg.Esp32_Main_Controller_Wifi_Get_Info_TOOLTIP="获取WiFi配置信息%1";i.Msg.Esp32_Main_Controller_Wifi_Ntptime_TOOLTIP="同步网络时间";i.Msg.Esp32_Main_Controller_Wifi_Disconnect_TOOLTIP="断开WiFi连接";i.Msg.Esp32_Main_Controller_Wifi_Enable_Hotspot_Mode_TOOLTIP="创建WiFi热点";i.Msg.Esp32_Main_Controller_Wifi_Acquiring_Equipment_TOOLTIP="获取当前已连接的设备列表";i.Msg.Esp32_Main_Controller_Get_Wifi_Devices_Number_TOOLTIP="获取当前已连接的设备数量";i.Msg.Esp32_Main_Controller_Wifi_Close_TOOLTIP="关闭WiFi热点";i.Msg.Esp32_Network_Http_Get_TOOLTIP="发送http get请求";i.Msg.Esp32_Network_Http_Post_TOOLTIP="发送http post请求";i.Msg.CocoRobo_get_TOOLTIP="获取HTTP响应内容的%1";i.Msg.Esp32_Network_Http_Get_Data_From_Local_Server_TOOLTIP="获取从本地HTTP服务器请求得到的数据,数据类型为%1";i.Msg.Esp32_Network_Http_Server_Setup_TOOLTIP="HTTP服务器初始化";i.Msg.Esp32_Network_Http_Server_Route_TOOLTIP="当指定路径被请求时,设定请求属性为%1请求,并执行操作";i.Msg.Esp32_Network_Http_Server_Route_Respond_TOOLTIP="HTTP服务器设置响应内容,并设置返回数据类型为%1";i.Msg.Esp32_Network_Http_Server_Get_Data_TOOLTIP="HTTP服务器获取从客户端收到的数据,类型为%1";i.Msg.Esp32_Web_Ws_Setup_Send_TOOLTIP="实时通信发送端初始化";i.Msg.Esp32_Web_Ws_Send_TOOLTIP="透过实时通信发送消息";i.Msg.Esp32_Web_Ws_Setup_Receive_TOOLTIP="实时通信接收端初始化";i.Msg.Esp32_Web_Ws_Receive_Statement_TOOLTIP="当实时通信收到消息时,运行操作";i.Msg.Esp32_Web_Ws_Receive_Get_Data_TOOLTIP="获取从实时通信接收到的消息,类型为%1";i.Msg.Iot_Service_Cococloud_TOOLTIP="发送数据至CocoCloud指定事件";i.Msg.Iot_Service_Cococloud_Read_TOOLTIP="获取CocoCloud指定事件中的数据";i.Msg.Iot_Service_Cococloud_Read_Data_TOOLTIP="获取CocoCloud事件中指定属性的数据";i.Msg.Esp32_Main_Controller_Ifttt_Send_Data_TOOLTIP="发送数据到IFTTT Webhooks事件";i.Msg.Esp32_Main_Controller_Ifttt_Touched_TOOLTIP="触发指定的IFTTT事件";i.Msg.Iot_Service_Thingspeak_TOOLTIP="发送数据至指定ThingSpeak频道";i.Msg.Iot_Service_Thingspeak_Read_TOOLTIP="查找ThingSpeak指定频道的数据";i.Msg.Iot_Service_Thingspeak_Read_Total_TOOLTIP="获取ThingSpeak频道中的数据总量";i.Msg.Iot_Service_Thingspeak_Read_Specific_TOOLTIP="获取ThingSpeak频道中指定数据的指定Field的数值";i.Msg.Iot_System_Restart_TOOLTIP="重启系统";i.Msg.Iot_System_Get_TOOLTIP="获取模块内剩余空间";i.Msg.Iot_System_Mac_TOOLTIP="获取模块的MAC地址";i.Msg.Iot_System_Get_Cocorobo_Id_TOOLTIP="获取IoT设备ID";i.Msg.iot_system_get_cocorobo_firmware_version_TOOLTIP="获取IoT当前固件版本号";i.Msg.iot_system_delete_TOOLTIP="删除指定名字的文件";i.Msg.ai_system_get_cocorobo_firmware_version_TOOLTIP="获取AI当前固件版本号";i.Msg.ai_System_Get_TOOLTIP="获取内存内剩余空间";i.Msg.ai_System_sd_Get_TOOLTIP="获取SD卡内剩余空间";i.Msg.ai_system_thread_TOOLTIP="启用多线程,执行相关操作";i.Msg.Iot_Lcd_Screeninit_TOOLTIP="LCD屏幕初始化";i.Msg.Iot_Lcd_Screen_TOOLTIP="将LCD屏幕填充颜色为%1";i.Msg.Iot_Lcd_Fill_Screen_With_Rgb_TOOLTIP="将LCD屏幕填充指定颜色";i.Msg.Iot_Lcd_Set_Color_TOOLTIP="将十六进制颜色码转换成RGB颜色值,并返回";i.Msg.Iot_Lcd_Rgb_Value_Input_TOOLTIP="返回指定rgb值";i.Msg.Iot_Lcd_Drawpixel_TOOLTIP="屏幕绘制点";i.Msg.Iot_Lcd_Linecarvas_TOOLTIP="屏幕绘制直线";i.Msg.Iot_Lcd_Ractanglecarvas_TOOLTIP="屏幕绘制%1矩形";i.Msg.Iot_Lcd_Textcarvas_TOOLTIP="屏幕绘制文本";i.Msg.Iot_Lcd_Draw_ZedGraph_TOOLTIP="屏幕绘制%1统计图";i.Msg.iot_lcd_clear_screen_TOOLTIP="清除屏幕";i.Msg.Iot_Led_Matrix_Setup_TOOLTIP="IoT模块初始化LED灯屏";i.Msg.Iot_Led_Matrix_Set_Bright_TOOLTIP="设置灯屏亮度";i.Msg.Iot_Led_Matrix_xy_TOOLTIP="设置行列";i.Msg.Iot_Led_Matrix_wh_TOOLTIP="设置宽高";i.Msg.Iot_Led_Matrix_Rgb_Value_Input_TOOLTIP="返回指定rgb值";i.Msg.Iot_Led_Matrix_Draw_Pixel_TOOLTIP="IoT模块LED灯屏绘制点";i.Msg.Iot_Led_Matrix_Draw_Rectangle_TOOLTIP="IoT模块LED灯屏绘制矩形";i.Msg.Iot_Led_Matrix_Show_Above_TOOLTIP="IoT模块LED灯屏显示生效";i.Msg.Esp32_Motor_Setup_TOOLTIP="IoT模块电机驱动初始化";i.Msg.Esp32_Motor_Run_TOOLTIP="IoT模块设置指定电机以指定速度进行指定方向的转动";i.Msg.Esp32_Main_Controller_Servo_Setup_TOOLTIP="IoT模块舵机初始化";i.Msg.Esp32_Main_Controller_Servo_Set_TOOLTIP="IoT模块设置位于指定引脚的舵机转动至指定角度";i.Msg.x_iot_read_gamepad_button_pressed_TOOLTIP="当游戏手柄上的按键%1按下时";i.Msg.x_iot_read_gamepad_button_released_TOOLTIP="当游戏手柄上的按键%1松开时";i.Msg.x_iot_read_gamepad_button_xr_TOOLTIP="获取游戏手柄上按键%1的电平值";i.Msg.x_iot_read_gamepad_joystick_check_TOOLTIP="当游戏手柄上的摇杆%1";i.Msg.x_iot_read_gamepad_joystick_TOOLTIP="获取游戏手柄上摇杆%1的模拟数值";i.Msg.esp32_nbiot_setup_TOOLTIP="在%1模块上NB-IoT模块通信初始化";i.Msg.esp32_nbiot_get_power_status_TOOLTIP="获取NB-IoT模块启用状态";i.Msg.esp32_nbiot_get_network_status_TOOLTIP="获取NB-IoT模块网络连接状态";i.Msg.esp32_nbiot_get_network_ip_TOOLTIP="获取NB-IoT模块网络IP地址";i.Msg.iot_service_nbiot_cococloud_TOOLTIP="NB-IoT模块发送数据至CocoCloud";i.Msg.esp32_nbiot_onenet_init_TOOLTIP="NB-IoT模块连接OneNET";i.Msg.esp32_nbiot_onenet_connection_status_TOOLTIP="NB-IoT模块获取OneNET连接状态";i.Msg.iot_service_nbiot_onenet_TOOLTIP="NB-IoT模块发送数据至OneNET";i.Msg.esp32_nbiot_onenet_read_value_TOOLTIP="获取NB-IoT模块从OneNET发送的指令";i.Msg.iot_service_nbiot_onenet_read_TOOLTIP="当NB-IoT模块从OneNET收到消息时,运行操作";i.Msg.esp32_ble_setup_sender_TOOLTIP="BLE(低功耗蓝牙)发送端初始化";i.Msg.esp32_ble_send_data_TOOLTIP="BLE发送指定的数据";i.Msg.esp32_ble_setup_receiver_TOOLTIP="BLE(低功耗蓝牙)接收端初始化";i.Msg.esp32_ble_get_data_TOOLTIP="返回BLE接收的数据";i.Msg.esp32_ble_sender_connected_TOOLTIP="发送端已经被连接";i.Msg.esp32_ble_receiver_connected_TOOLTIP="接收端已经被连接";i.Msg.ai_k210_button_read_pressed_TOOLTIP="当按钮%1按下时";i.Msg.ai_k210_button_read_released_TOOLTIP="当按钮%1松开时";i.Msg.ai_k210_led_light_up_TOOLTIP="设置%1点亮";i.Msg.ai_basic_light_up_led_analog_TOOLTIP="设置%1的灯光亮度";i.Msg.ai_k210_led_light_off_TOOLTIP="设置%1熄灭";i.Msg.ai_system_restart_TOOLTIP="重启系统";i.Msg.ai_system_off_TOOLTIP="关机";i.Msg.ai_system_refresh_TOOLTIP="刷新文件目录";i.Msg.ai_system_run_TOOLTIP="运行指定路径的Python程序";i.Msg.ai_mphone_init_TOOLTIP="麦克风初始化";i.Msg.mphone_audio_spectrum_init_TOOLTIP="开始读取音频频谱";i.Msg.ai_mphone_read_sound_sensitivity_TOOLTIP="获取麦克风采集的音频频谱";i.Msg.ai_mphone_Record_audio_init_TOOLTIP="麦克风录制音频初始化";i.Msg.ai_mphone_Record_audio_start_TOOLTIP="开始录制音频并保存";i.Msg.ai_audio_stop_recording_TOOLTIP="停止录制音频";i.Msg.ai_img_save_TOOLTIP="将画布保存至本地,并设置图像压缩质量";i.Msg.ai_lcd_invert_color_TOOLTIP="将画布进行颜色反转";i.Msg.ai_lcd_resizecanvas_TOOLTIP="将画布调整至指定的尺寸";i.Msg.ai_lcd_color_scheme_TOOLTIP="将画布转换为%1";i.Msg.ai_lcd_img_cut_TOOLTIP="将画布进行指定的裁剪处理";i.Msg.ai_vision_color_analyze_TOOLTIP="获取画布中指定区域的颜色分析结果";i.Msg.ai_vision_find_blobs_TOOLTIP="从画布中寻找指定的颜色色块";i.Msg.ai_vision_get_threshold_default_TOOLTIP="设置获取用于颜色追踪的默认颜色为%1";i.Msg.ai_vision_get_blobs_TOOLTIP="获取追踪指定颜色的识别结果";i.Msg.ai_vision_get_statistics_TOOLTIP="获取对画布进行颜色信道信息分析的结果";i.Msg.ai_vision_get_histogram_TOOLTIP="获取从画布中进行标准化直方图运算的结果";i.Msg.ai_vision_get_histogram_percentile_TOOLTIP="从直方图计算结果获取直方图频道的CDF计算值";i.Msg.ai_vision_get_histogram_percentile_detail_TOOLTIP="从直方图计算结果获取的百分比值中的%1";i.Msg.ai_vision_lab_rgb_conversion_TOOLTIP="运行颜色制式转换 %1";i.Msg.ai_vision_rgb_grayscale_conversion_TOOLTIP="运行颜色制式转换 %1";i.Msg.ai_vision_find_qrcode_TOOLTIP="获取画布中QR码的检测结果";i.Msg.ai_vision_qrcode_get_info_TOOLTIP="从变量中获取检测QR码的%1";i.Msg.ai_vision_find_apriltag_TOOLTIP="获取画布中AprilTag的检测结果";i.Msg.ai_vision_apriltag_get_info_TOOLTIP="从变量中获取检测AprilTag的%1";i.Msg.ai_vision_find_datamatrices_TOOLTIP="获取画布中数据矩阵的检测结果";i.Msg.ai_vision_datamatrices_get_info_TOOLTIP="从变量中获取检测数据矩阵的%1";i.Msg.ai_vision_find_barcodes_TOOLTIP="获取画布中条形码的检测结果";i.Msg.ai_vision_barcodes_get_info_TOOLTIP="从变量中获取检测条形码的%1";i.Msg.ai_vision_find_circles_TOOLTIP="从画布中寻找圆形";i.Msg.ai_vision_get_circles_TOOLTIP="获取寻找圆形的结果";i.Msg.ai_vision_find_rects_TOOLTIP="从画布中寻找矩形";i.Msg.ai_vision_get_rects_TOOLTIP="获取寻找矩形的结果";i.Msg.ai_vision_find_lines_TOOLTIP="从画布中寻找直线";i.Msg.ai_vision_get_lines_TOOLTIP="获取寻找直线的结果";i.Msg.ai_video_set_TOOLTIP="播放视频要求:视频文件格式——AVI,视频编码格式——MJPG,音频编码格式——PCM";i.Msg.ai_video_status_TOOLTIP="获取视频播放的状态";i.Msg.ai_video_stop_play_TOOLTIP="结束视频文件播放";i.Msg.speech_recognition_new_setup_TOOLTIP="语音识别初始化";i.Msg.speech_recognition_new_recording_sample_start_TOOLTIP="开始录制语音片段";i.Msg.speech_recognition_new_start_recognition_TOOLTIP="开始进行语音识别";i.Msg.speech_recognition_new_recognition_get_result_TOOLTIP="语音识别的结果为指定片段";i.Msg.speech_recognition_new_recognition_get_any_result_TOOLTIP="当语音识别获得任意结果的时候,执行下列操作";i.Msg.speech_recognition_phonetic_to_pinyin_setup_TOOLTIP="语音转拼音初始化";i.Msg.ai_speech_recognition_phonetic_to_pinyin_get_result_TOOLTIP="获取语音转拼音的结果";i.Msg.ai_speech_recognition_phonetic_to_pinyin_set_param_TOOLTIP="设置语音拼音识别参数";i.Msg.speech_recognition_phonetic_to_pinyin_start_recognition_TOOLTIP="开始语音拼音识别";i.Msg.speech_recognition_phonetic_to_pinyin_stop_recognition_TOOLTIP="终止语音拼音识别";i.Msg.speech_recognition_phonetic_to_pinyin_pause_recognition_TOOLTIP="暂停语音拼音识别";i.Msg.ai_model_allinit_TOOLTIP="初始化%1";i.Msg.ai_model_allload_TOOLTIP="加载%1";i.Msg.ai_model_index_mnist_TOOLTIP="获取手写数字检测模型的检测结果";i.Msg.ai_model_get_TOOLTIP="从变量中获取检测到的待测物体的%1";i.Msg.ai_model_look_TOOLTIP="检测到待测物体";i.Msg.ai_model_look_attribute_TOOLTIP="待测物体属性";i.Msg.ai_model_xy_TOOLTIP="从变量中获取检测到的人脸的%1";i.Msg.ai_model_human_xy_TOOLTIP="从变量中获取检测到的人体的%1";i.Msg.ai_model_face_TOOLTIP="检测到人脸";i.Msg.ai_model_face_attribute_TOOLTIP="人脸属性";i.Msg.ai_model_customized_init_setup_definition_TOOLTIP="在自定义模型的程序运行前,进行内存的释放";i.Msg.ai_model_customized_init_setup_TOOLTIP="初始化自定义模型";i.Msg.ai_model_customized_load_setup_TOOLTIP="加载自定义模型";i.Msg.ai_model_customized_if_got_TOOLTIP="识别到了自定义模型的对象";i.Msg.ai_model_customized_attribute_TOOLTIP="自定义模型对象属性";i.Msg.ai_model_customized_get_result_TOOLTIP="从变量中获取识别到自定义模型结果的%1";i.Msg.ai_model_face_setup_TOOLTIP="自定义人脸识别初始化";i.Msg.ai_model_face_init_TOOLTIP="自定义初始化人脸识别模型";i.Msg.ai_face_detection_model_TOOLTIP="初始化人脸检测模型";i.Msg.ai_face_point_detection_model_TOOLTIP="初始化人脸5点关键点检测模型";i.Msg.ai_face_Vitter_eigenvalue_model_TOOLTIP="初始化人脸196维特征值模型";i.Msg.ai_model_face_load_point_detection_model_TOOLTIP="加载人脸5点关键点检测模型,并进行一定的设置";i.Msg.ai_model_Calculation_of_196_eigenvalues_TOOLTIP="计算运行人脸特征模型后的196维特征值";i.Msg.ai_model_class_TOOLTIP="自定义初始化物体识别模型";i.Msg.ai_model_getface_TOOLTIP="识别到了人脸模型的对象";i.Msg.ai_model_getclass_TOOLTIP="识别到了物体模型的对象";i.Msg.ai_model_face_start_recognition_TOOLTIP="加载人脸检测模型,并设置图像源";i.Msg.ai_model_face_model_load_finish_TOOLTIP="人脸检测模型加载完成";i.Msg.ai_model_face_gather_TOOLTIP="采集新的人脸数据并保存人脸数据";i.Msg.ai_model_face_data_load_TOOLTIP="加载已保存的人脸数据";i.Msg.ai_model_face_model_list_TOOLTIP="人脸检测属性";i.Msg.ai_model_face_gather_num_judge_TOOLTIP="人脸采集完成";i.Msg.ai_model_face_recognition_TOOLTIP="采集或者加载完成人脸数据并进行人脸识别";i.Msg.ai_model_face_recognition_get_result_TOOLTIP="人脸识别获得任意结果";i.Msg.ai_model_show_face_TOOLTIP="处理图像并显示";i.Msg.ai_model_class_setup_TOOLTIP="自定义物体识别初始化";i.Msg.ai_class_model_TOOLTIP="初始化自定义物体特征提取模型";i.Msg.ai_class_model_cluster_TOOLTIP="初始化自定义物体聚类参数";i.Msg.ai_model_class_start_load_TOOLTIP="设置图像源并对图像进行处理";i.Msg.ai_model_class_gather_TOOLTIP="开始采集物体";i.Msg.ai_model_class_data_load_TOOLTIP="加载物体数据";i.Msg.ai_model_class_gather_load_finish_TOOLTIP="采集或者加载完成物体数据";i.Msg.ai_model_class_cluster_train_TOOLTIP="开始进行物体特征提取,然后加以聚类训练";i.Msg.ai_model_class_recognition_TOOLTIP="开始进行物体识别";i.Msg.k210_wifi_enable_disable_TOOLTIP="设定Wi-Fi为%1";i.Msg.k210_wifi_scan_TOOLTIP="开始扫描附近Wi-Fi热点";i.Msg.k210_wifi_scan_get_TOOLTIP="获取Wi-Fi扫描的结果为列表形式";i.Msg.k210_wifi_connect_hotspot_TOOLTIP="连接指定的Wi-Fi网络";i.Msg.k210_wifi_get_connection_status_TOOLTIP="获取Wi-Fi连接的状态";i.Msg.k210_wifi_get_config_TOOLTIP="获取Wi-Fi连接的设备指定信息";i.Msg.ai_lcd_screeninit_TOOLTIP="LCD屏幕初始化";i.Msg.ai_lcd_rotation_TOOLTIP="将LCD屏幕方向旋转指定的角度";i.Msg.ai_lcd_filp_TOOLTIP="是否将LCD屏幕进行镜面翻转";i.Msg.ai_lcd_screen_TOOLTIP="将LCD屏幕填充颜色为%1";i.Msg.ai_lcd_fill_screen_with_rgb_TOOLTIP="将LCD屏幕填充颜色为指定rgb值";i.Msg.ai_lcd_clear_TOOLTIP="清除屏幕";i.Msg.ai_lcd_rgb_value_input_TOOLTIP="返回指定的rgb值";i.Msg.ai_lcd_XY_TOOLTIP="返回指定的x和y";i.Msg.ai_lcd_WH_TOOLTIP="返回指定的宽与高";i.Msg.ai_lcd_createnonecarvas_TOOLTIP="创建指定尺寸的空白画布";i.Msg.ai_lcd_fillcanvas_TOOLTIP="将画布铺满指定的颜色";i.Msg.ai_lcd_createcarvas_TOOLTIP="创建图像画布";i.Msg.ai_lcd_showcarvas_set_cord_TOOLTIP="设置画布的起始点坐标";i.Msg.ai_lcd_textcarvas_TOOLTIP="在画布上绘制文本";i.Msg.ai_lcd_characterscarvas_TOOLTIP="在画布上绘制汉字字符";i.Msg.ai_lcd_linecarvas_TOOLTIP="在画布上绘制直线";i.Msg.ai_lcd_ractanglecarvas_TOOLTIP="在画布上绘制%1矩形";i.Msg.ai_lcd_drawcirclecarvas_TOOLTIP="在画布上绘制%1圆形";i.Msg.ai_lcd_draw_cross_sign_TOOLTIP="在画布上绘制十字标";i.Msg.ai_lcd_draw_arrow_sign_TOOLTIP="在画布上绘制箭头";i.Msg.ai_lcd_draw_image_on_canvas_TOOLTIP="在画布上绘制图片";i.Msg.ai_lcd_draw_sensor_image_on_canvas_TOOLTIP="在画布上绘制相机捕捉的图像";i.Msg.ai_lcd_showcarvas_set_display_TOOLTIP="显示画布";i.Msg.ai_lcd_clearcanvas_TOOLTIP="清除画布中的所有内容";i.Msg.ai_lcd_qrcode_TOOLTIP="在画布上绘制二维码";i.Msg.ai_led_matrix_setup_TOOLTIP="A.I.模块初始化LED灯屏";i.Msg.ai_led_matrix_set_bright_TOOLTIP="设置灯屏亮度";i.Msg.ai_led_matrix_xy_TOOLTIP="设置行列";i.Msg.ai_led_matrix_wh_TOOLTIP="设置宽高";i.Msg.ai_led_matrix_rgb_value_input_TOOLTIP="返回指定rgb值";i.Msg.ai_led_matrix_draw_pixel_TOOLTIP="A.I.模块LED灯屏绘制点";i.Msg.ai_led_matrix_draw_rectangle_TOOLTIP="A.I.模块LED灯屏绘制矩形";i.Msg.ai_led_matrix_show_above_TOOLTIP="显示图案";i.Msg.ai_led_matrix_clear_screen_TOOLTIP="清除灯屏";i.Msg.ai_audio_init_speaker_TOOLTIP="喇叭初始化";i.Msg.ai_audio_play_song_speaker_TOOLTIP="播放音频文件(单个循环)";i.Msg.ai_audio_play_song_speaker_list_loop_TOOLTIP="播放音频文件(顺序播放)";i.Msg.ai_audio_play_music_file_list_random_TOOLTIP="播放音频文件(随机播放)";i.Msg.ai_audio_play_state_speaker_TOOLTIP="获取音频文件播放状态";i.Msg.ai_audio_play_finish_speaker_TOOLTIP="结束音频文件播放";i.Msg.ai_audio_set_speaker_TOOLTIP="设置音频文件播放音量";i.Msg.ai_audio_files_list_TOOLTIP="获取当前路径的音频文件列表";i.Msg.ai_camera_init_TOOLTIP="相机初始化";i.Msg.ai_camera_fit_to_screen_size_TOOLTIP="设置相机捕捉画面的尺寸";i.Msg.ai_camera_windows_TOOLTIP="调整相机捕捉的图像尺寸";i.Msg.ai_camera_snapshot_TOOLTIP="获取相机捕捉的图像";i.Msg.ai_camera_lens_corr_TOOLTIP="纠正广角镜头画面";i.Msg.ai_camera_image_property_change_TOOLTIP="设置摄像头图像%1的状态";i.Msg.ai_camera_bcs_operation_TOOLTIP="设置摄像头图像的%1";i.Msg.ai_video_record_setup_TOOLTIP="开始录制视频并保存";i.Msg.ai_video_get_TOOLTIP="对画布进行录制";i.Msg.ai_video_stop_TOOLTIP="停止录制视频";i.Msg.ai_motor_setup_TOOLTIP="A.I.模块电机驱动初始化";i.Msg.ai_motor_run_TOOLTIP="A.I.模块设置指定电机以指定速度进行指定方向的转动";i.Msg.extension_servo_setup_on_ai_TOOLTIP="模块舵机初始化";i.Msg.extension_servo_write_on_ai_TOOLTIP="模块设置位于指定引脚的舵机转动至指定角度";i.Msg.x_ai_read_gamepad_button_pressed_TOOLTIP="当游戏手柄上的按键%1按下时";i.Msg.x_ai_read_gamepad_button_released_TOOLTIP="当游戏手柄上的按键%1松开时";i.Msg.x_ai_read_gamepad_button_xr_TOOLTIP="获取游戏手柄上按键%1的电平值";i.Msg.x_ai_read_gamepad_joystick_check_TOOLTIP="当游戏手柄上的摇杆%1";i.Msg.x_ai_read_gamepad_joystick_TOOLTIP="获取游戏手柄上摇杆%1的模拟数值";i.Msg.CocoRobo_try_except_TOOLTIP="检测try语句块中的错误,从而让except语句捕获异常信息并处理";i.Msg.CocoRobo_try_except_finally_TOOLTIP="检测try语句块中的错误,从而让except语句捕获异常信息并处理,并且无论异常是否产生都要执行finally语句";i.Msg.Pedometer_Init_TOOLTIP="初始化计步器";i.Msg.Pedometer_Run_TOOLTIP="运行计步器";i.Msg.Pedometer_Get_TOOLTIP="获取计数";i.Msg.ai_vision_canvas_area_tuple_TOOLTIP="创建区域元组";i.Msg.ai_vision_lane_tracking_setup_TOOLTIP="道路循线识别初始化";i.Msg.ai_vision_from_canvas_TOOLTIP="运行道路循线识别";i.Msg.ai_vision_lane_tracking_run_get_TOOLTIP="获取道路循线识别的结果";i.Msg.MLX90614_SETUP_TOOLTIP="%1 MLX90614传感器初始化";i.Msg.MLX90614_READ_AMBIENT_TOOLTIP="从 MLX90614 获取当前环境温度";i.Msg.MLX90614_READ_OBJECT_TOOLTIP="从 MLX90614 获取目标物体温度";i.Msg.DHT_SETUP_TOOLTIP="%1 DHT传感器初始化";i.Msg.PM25_SETUP_TOOLTIP="%1 PM2.5传感器初始化";i.Msg.PM25_REDD_DATA_TOOLTIP="获取PM2.5数值";i.Msg.RTC_setup_TOOLTIP="RTC模块初始化";i.Msg.RTC_setDateTime_TOOLTIP="设置日期时间周数";i.Msg.RTC_GETDATE_TOOLTIP="获取当前日期%1";i.Msg.RTC_GETTIME_TOOLTIP="获取当前时间%1";i.Msg.RTC_getWeek_TOOLTIP="获取当前周数";i.Msg.RTC_SETDATE_TOOLTIP="设置当前日期%1为特定值";i.Msg.RTC_SETTIME_TOOLTIP="设置当前时间%1为特定值";i.Msg.RTC_setWeek_TOOLTIP="设置当前周数为特定值";i.Msg.RTC_getDateTime_TOOLTIP="获取日期时间周数";i.Msg.robot_dog_movement_action_TOOLTIP="语音操控机器狗";i.Msg.robot_dog_phonetic_to_pinyin_get_result_TOOLTIP="获取语音识别的结果";i.Msg.robot_dog_setup_TOOLTIP="机器狗初始化";i.Msg.robot_dog_action_TOOLTIP="机器狗执行%1指令";i.Msg.robot_dog_servo_movement_TOOLTIP="设置特定腿特定关节舵机转动至特定的角度";i.Msg.robot_dog_servo_speed_TOOLTIP="设置特定速度为%1";i.Msg.robot_dog_servo_movement_location_TOOLTIP="设置特定腿足尖特定方向的位置为特定值";i.Msg.robot_dog_open_gyroscope_TOOLTIP="%1陀螺仪";i.Msg.robot_dog_open_performance_mode_TOOLTIP="%1机器狗表演模式";i.Msg.robot_dog_open_calibration_mode_TOOLTIP="%1机器狗标定模式";i.Msg.robot_dog_get_power_TOOLTIP="获取机器狗当前的电量";i.Msg.robot_dog_servo_movement_distance_TOOLTIP="设置机器狗执行%1方向平移运动步长为特定值";i.Msg.robot_dog_servo_movement_rotate_TOOLTIP="设置机器狗执行%1方向旋转运动转动速度为特定值";i.Msg.robot_dog_servo_movement_standing_still_TOOLTIP="设置机器狗以特定的抬腿高度以固定频率执行原地踏步";i.Msg.robot_dog_servo_movement_distance_cycle_TOOLTIP="设置机器狗执行%1方向平移运动步长为特定值持续特定秒";i.Msg.robot_dog_servo_movement_rotate_cycle_TOOLTIP="设置机器狗执行%1方向旋转运动转动速度为特定值持续特定秒";i.Msg.robot_dog_servo_movement_standing_still_cycle_TOOLTIP="设置机器狗以特定的抬腿高度以固定频率执行原地踏步持续特定秒";i.Msg.robot_dog_servo_movement_distance_still_TOOLTIP="设置机器狗%1方向平移特定毫米";i.Msg.robot_dog_servo_movement_distance_still_cycle_TOOLTIP="设置机器狗以特定周期向%1方向往复平移";i.Msg.robot_dog_servo_movement_rotate_still_TOOLTIP="设置机器狗绕%1轴旋转特定值";i.Msg.robot_dog_servo_movement_rotate_still_cycle_TOOLTIP="设置机器狗以特定周期绕%1轴往复转动";i.Msg.robot_dog_servo_movement_distance_still_cycle_stop_TOOLTIP="停止机器狗向%1方向周期往复平移";i.Msg.robot_dog_servo_movement_rotate_still_cycle_stop_TOOLTIP="停止机器狗绕%1轴周期往复转动";i.Msg.robot_dog_get_servo_angle_TOOLTIP="获取特定腿特定关节舵机的角度";i.Msg.robot_dog_get_rotate_angle_TOOLTIP="获取陀螺仪%1轴的角度";i.Msg.Take_off_TOOLTIP="设置指定编号无人机的起飞高度为指定厘米";i.Msg.uav_fly_mode_TOOLTIP="设置指定编号无人机切换指定飞行模式";i.Msg.xy_speed_TOOLTIP="设置指定编号无人机的水平速度为指定值";i.Msg.z_speed_TOOLTIP="设置指定编号无人机的垂直速度为指定值";i.Msg.follow_line_TOOLTIP="设置指定编号无人机向指定方向巡线飞行";i.Msg.mobile_distance_TOOLTIP="设置指定编号无人机向指定方向飞行指定距离";i.Msg.move_search_dot_TOOLTIP="并寻找黑色小块";i.Msg.move_search_tag_TOOLTIP="并寻找指定标签";i.Msg.move_search_blob_TOOLTIP="并寻找指定色块";i.Msg.go_to_TOOLTIP="设置指定编号无人机直达指定标签";i.Msg.go_to_tag_TOOLTIP="并设置指定高度";i.Msg.uav_rotation_TOOLTIP="设置指定编号无人机旋转指定角度";i.Msg.uav_fly_height_TOOLTIP="设置指定编号无人机的高度";i.Msg.filp_ctrl_TOOLTIP="设置指定编号无人机向指定方向旋转指定的圈数";i.Msg.led_ctrl_TOOLTIP="设置指定编号无人机的灯光颜色";i.Msg.off_led_ctrl_TOOLTIP="设置指定编号无人机关闭灯光";i.Msg.uav_detection_TOOLTIP="设置指定编号无人机检测指定物体";i.Msg.mangne_ctrl_TOOLTIP="设置指定编号无人机操作电磁铁";i.Msg.servo_ctrl_TOOLTIP="设置指定编号无人机的舵机角度为指定值";i.Msg.role_ctrl_TOOLTIP="设置指定编号无人机的命令为指定命令";i.Msg.lock_dir_TOOLTIP="设置指定编号无人机管理机头方向";i.Msg.shoot_crtl_TOOLTIP="设置指定编号无人机发射激光";i.Msg.switch_crtl_TOOLTIP="设置指定编号无人机的状态为打开或关闭";i.Msg.ai_crtl_TOOLTIP="设置指定编号无人机AI切换到指定模式";i.Msg.ai_learing_TOOLTIP="设置指定编号无人机学习的ID为指定值";i.Msg.ai_forget_TOOLTIP="设置指定编号无人机忘记所有学习的数据";i.Msg.ai_set_name_TOOLTIP="设置指定编号无人机指定ID的名字为指定值";i.Msg.ai_save_img_TOOLTIP="设置指定编号无人机拍照或截图的照片保存到SD卡上";i.Msg.fly_ctrl_TOOLTIP="设置指定编号无人机的状态";i.Msg.uav_detection_if_TOOLTIP="指定编号无人机检测到指定物体";i.Msg.uav_detection_if_line_TOOLTIP="指定编号无人机检测到指定方向有线";i.Msg.uav_get_distance_of_obstacles_TOOLTIP="获取指定编号无人机指定方向的障碍物距离";i.Msg.uav_get_value_TOOLTIP="获取指定编号无人机的指定值";i.Msg.uav_get_AI_value_TOOLTIP="获取指定编号无人机的AI识别结果";i.Msg.uav_get_electronic_balance_value_TOOLTIP="获取指定编号无人机的电子秤读数";i.Msg.uav_get_shooting_value_TOOLTIP="获取指定编号无人机的射击数据";i.Msg.uav_get_msg_value_TOOLTIP="获取指定编号无人机的消息数据";i.Msg.esp32_expand_io_from_digital_pin_TOOLTIP="获取引脚 #%1的数字信号数值";i.Msg.esp32_expand_io_set_digital_pin_TOOLTIP="设置引脚 #%1为指定电平";i.Msg.esp32_expand_io_set_analog_pin_TOOLTIP="设置引脚 #%1 PWM输出指定的值";i.Msg.iot_service_KUJU_setup_TOOLTIP="通过账号和密码连接KUJU";i.Msg.iot_service_KUJU_controll_TOOLTIP="发送数据至KUJU控制智能插座";i.Msg.iot_service_KUJU_get_temperature_humidity_data_TOOLTIP="获取温度传感器的特定数值";i.Msg.iot_service_KUJU_get_motion_data_TOOLTIP="获取移动感应器的特定数值";i.Msg.iot_service_KUJU_get_sensor_data_TOOLTIP="获取特定传感器的特定数值";i.Msg.wifiServices_WeTech_setup_TOOLTIP="连接WeTech下特定账户的特定网关";i.Msg.wifiServices_WeTech_controll_derail_TOOLTIP="发送数据至WeTech控制特定的三路灯面制开关的开与关";i.Msg.wifiServices_WeTech_controll_derail_second_way_TOOLTIP="发送数据至WeTech控制特定的二路灯面制开关的开与关";i.Msg.wifiServices_WeTech_controll_derail_curtain_sensor_TOOLTIP="发送数据至WeTech控制特定的Curtain Sensor (for projector Screen)的状态";i.Msg.wifiServices_WeTech_controll_derail_air_conditioning_mode_TOOLTIP="发送数据至WeTech控制特定冷气IR的模式";i.Msg.wifiServices_WeTech_controll_derail_wind_speed_mode_TOOLTIP="发送数据至WeTech控制特定冷气IR的风速";i.Msg.wifiServices_WeTech_controll_derail_temp_TOOLTIP="发送数据至WeTech控制特定冷气IR的温度";i.Msg.wifiServices_WeTech_controll_derail_all_mode_TOOLTIP="发送数据至WeTech控制特定冷气IR";i.Msg.wifiServices_WeTech_controll_derail_IR_TOOLTIP="发送数据至WeTech控制特定TV IR (for TV and Projector)";i.Msg.wifiServices_WeTech_controll_derail_get_power_meter_TOOLTIP="获取Power Meter的值";i.Msg.wifiServices_WeTech_controll_derail_get_sensor_number_TOOLTIP="获取%1的值";i.Msg.iot_service_tuya_TOOLTIP="通过Access ID和Access Secret连接涂鸦";i.Msg.iot_service_tuya_setToken_TOOLTIP="当连接涂鸦获取到访问令牌的时候,执行下列操作";i.Msg.iot_service_tuya_controll_light_belt_TOOLTIP="控制智能灯带为某一特定状态";i.Msg.iot_service_tuya_controll_light_belt_color_value_TOOLTIP="控制智能灯带颜色为特定值";i.Msg.TURTLE_CREATE_NE_TURTLE_TLTLE_TOOLTIP="创建一个新的海龟";i.Msg.TURTLE_MAKE_TURTLE_MOVE_FORWARD_TOOLTIP="让海龟往前走指定的值";i.Msg.TURTLE_MAKE_TURTLE_MOVE_BACKWARD_TOOLTIP="让海龟往后走指定的值";i.Msg.TURTLE_MAKE_TURN_LEFT_TOOLTIP="让海龟向左转指定的角度";i.Msg.TURTLE_MAKE_TURN_RIGHT_TOOLTIP="让海龟向右转指定的角度";i.Msg.TURTLE_MAKE_TURRLE_COLOR_TOOLTIP="设置海龟画笔的颜色";i.Msg.TURTLE_MAKE_TURRLE_PEN_TOOLTIP="让海龟画笔%1";i.Msg.TURTLE_MAKE_TURTLE_GOTO_LOCATION_X_TOOLTIP="让海龟去指定的位置";i.Msg.TURTLE_MAKE_TURTLE_SET_POSITION_TOOLTIP="设置海龟画笔的位置";i.Msg.TURTLE_MAKE_SET_HEADING_TOOLTIP="让海龟旋转至指定的角度";i.Msg.TURTLE_RESET_TOOLTIP="重置画笔位置";i.Msg.TURTLE_CLEAR_TOOLTIP="清除所有内容";i.Msg.ADD_COMMENT="添加注释";i.Msg.ARD_ANALOGREAD="读取模拟接口#";i.Msg.ARD_ANALOGREAD_TIP="返回0到1024中的一个值";i.Msg.ARD_ANALOGWRITE="设置模拟接口#";i.Msg.ARD_ANALOGWRITE_TIP="将0到255之间的一个模拟值写入到特定的脉宽调制端口";i.Msg.ARD_BUILTIN_LED="设置内置LED灯";i.Msg.ARD_BUILTIN_LED_TIP="设置Arduino版上的内置LED灯状态为开或者关";i.Msg.ARD_COMPONENT_WARN1="A %1 configuration block with the same %2 name must be added to use this block!";i.Msg.ARD_DEFINE="Define";i.Msg.ARD_DIGITALREAD="读取数字接口#";i.Msg.ARD_DIGITALREAD_TIP="从一端口读取数字值:高电平或低电平";i.Msg.ARD_DIGITALWRITE="设置数字接口#";i.Msg.ARD_DIGITALWRITE_TIP="将数字值高电平或低电平写入特定端口";i.Msg.ARD_FUN_RUN_LOOP="CocoBlockly不断执行:";i.Msg.ARD_FUN_RUN_SETUP="CocoBlockly先执行:";i.Msg.ARD_FUN_RUN_TIP="定义Arduino setup() 和 loop() 函数。";i.Msg.ARD_HIGH="高";i.Msg.ARD_HIGHLOW_TIP="Set a pin state logic High or Low.";i.Msg.ARD_LOW="低";i.Msg.ARD_MAP="映射";i.Msg.ARD_MAP_TIP="Re-maps a number from [0-1024] to another.";i.Msg.ARD_MAP_VAL="值从[0-";i.Msg.ARD_NOTONE_PIN="No tone";i.Msg.ARD_NOTONE_PIN_TIP="Stop generating a tone on a pin";i.Msg.ARD_PIN_WARN1="Pin %1 is needed for %2 as pin %3. Already used as %4.";i.Msg.ARD_PULSEON="脉冲从接口#";i.Msg.ARD_PULSEREAD="读取";i.Msg.ARD_PULSETIMEOUT="超时时间:";i.Msg.ARD_PULSETIMEOUT_MS="";i.Msg.ARD_PULSETIMEOUT_TIP="测量所选接口上脉冲的持续时间,如果其在超时时间内";i.Msg.ARD_PULSE_TIP="测量所选接口上脉冲的持续时间";i.Msg.ARD_PWMWRITE="设置PWM接口#";i.Msg.ARD_SERIAL_AVAILABLE="可用";i.Msg.ARD_SERIAL_BPS="比特/秒";i.Msg.ARD_SERIAL_PRINT="串口打印";i.Msg.ARD_SERIAL_PRINT_NEWLINE="添加新行";i.Msg.ARD_SERIAL_PRINT_TIP="将数据以可读的ASCII文本形式打印到控制台或串行端口";i.Msg.ARD_SERIAL_PRINT_WARN="Serial相关的初始化积木需要被添加";i.Msg.ARD_SERIAL_READ="读取";i.Msg.ARD_SERIAL_SETUP="设置";i.Msg.ARD_SERIAL_SETUP_TIP="选择特定的串行外设的速度";i.Msg.ARD_SERIAL_SPEED="速度为";i.Msg.ARD_SERIAL_WRITE="写出";i.Msg.ARD_SERVO_READ="读取舵机信息,设置接口为PIN#";i.Msg.ARD_SERVO_READ_TIP="读取舵机的角度";i.Msg.ARD_SERVO_SETUP="舵机初始化";i.Msg.ARD_SERVO_WRITE="定义舵机接口为";i.Msg.ARD_SERVO_WRITE_DEG_180="度 (0~180)";i.Msg.ARD_SERVO_WRITE_TIP="设置舵机转动一定的角度";i.Msg.ARD_SERVO_WRITE_TO="设置其转动角度为";i.Msg.ARD_SPI_SETUP="设置";i.Msg.ARD_SPI_SETUP_CONF="配置";i.Msg.ARD_SPI_SETUP_DIVIDE="时钟分频";i.Msg.ARD_SPI_SETUP_LSBFIRST="LSBFIRST";i.Msg.ARD_SPI_SETUP_MODE="SPI模式(空 - 边界)";i.Msg.ARD_SPI_SETUP_MODE0="0 (Low - Falling)";i.Msg.ARD_SPI_SETUP_MODE1="1 (Low - Rising)";i.Msg.ARD_SPI_SETUP_MODE2="2 (High - Falling)";i.Msg.ARD_SPI_SETUP_MODE3="3 (High - Rising)";i.Msg.ARD_SPI_SETUP_MSBFIRST="MSBFIRST";i.Msg.ARD_SPI_SETUP_SHIFT="数据传输";i.Msg.ARD_SPI_SETUP_TIP="配置SPI外设";i.Msg.ARD_SPI_TRANSRETURN_TIP="Send a SPI message to an specified slave device and get data back.";i.Msg.ARD_SPI_TRANS_NONE="none";i.Msg.ARD_SPI_TRANS_SLAVE="来控制接口";i.Msg.ARD_SPI_TRANS_TIP="Send a SPI message to an specified slave device.";i.Msg.ARD_SPI_TRANS_VAL="转换";i.Msg.ARD_SPI_TRANS_WARN1="A setup block for %1 must be added to the workspace to use this block!";i.Msg.ARD_SPI_TRANS_WARN2="Old pin value %1 is no longer available.";i.Msg.ARD_STEPPER_COMPONENT="stepper";i.Msg.ARD_STEPPER_DEFAULT_NAME="MyStepper";i.Msg.ARD_STEPPER_MOTOR="步进电机";i.Msg.ARD_STEPPER_PIN1="接口1#':";i.Msg.ARD_STEPPER_PIN2="接口2#':";i.Msg.ARD_STEPPER_REVOLVS="每转有多少步:";i.Msg.ARD_STEPPER_SETUP="设置步进电机名为:";i.Msg.ARD_STEPPER_SETUP_TIP="配置步进电机接口排列和其他设置";i.Msg.ARD_STEPPER_SPEED="设置转速(转/分)为";i.Msg.ARD_STEPPER_STEP="移动步进电机";i.Msg.ARD_STEPPER_STEPS="步";i.Msg.ARD_STEPPER_STEP_TIP="将步进电机转动一定数量的步数";i.Msg.ARD_TIME_CHRONO_CHECK="当秒表停至";i.Msg.ARD_TIME_CHRONO_CHECK1="毫秒时";i.Msg.ARD_TIME_CHRONO_ELAPSED="秒表已过去的时间";i.Msg.ARD_TIME_CHRONO_RESET="重置秒表";i.Msg.ARD_TIME_CHRONO_SETUP="秒表初始化";i.Msg.ARD_TIME_DELAY="等待";i.Msg.ARD_TIME_DELAY_MICROS="微秒";i.Msg.ARD_TIME_DELAY_MICRO_TIP="等待一定的时间(以微秒为单位)";i.Msg.ARD_TIME_DELAY_TIP="等待一定的时间(以毫秒为单位)";i.Msg.ARD_TIME_DELAY_seconds_TIP="等待一定的时间(以秒为单位)";i.Msg.ARD_TIME_DELAY_seconds="秒";i.Msg.ARD_TIME_DO="执行";i.Msg.ARD_TIME_DO_MS="执行";i.Msg.ARD_TIME_EVERY="每隔";i.Msg.ARD_TIME_EVERY_MS="每隔";i.Msg.ARD_TIME_INF="永久等待(结束程序)";i.Msg.ARD_TIME_INF_TIP="无限期等待,即停止程序";i.Msg.ARD_TIME_MICROS="当前已过时间(微秒)";i.Msg.ARD_TIME_MICROS_TIP="返回自Arduino版开始执行当前程序以来的微秒数,必须以长整数型储存";i.Msg.ARD_TIME_MILLIS="当前已过时间(毫秒)";i.Msg.ARD_TIME_MILLIS_TIP="返回自Arduino版开始执行当前程序以来的毫秒数,必须以长整数型储存";i.Msg.ARD_TIME_MS="毫秒";i.Msg.ARD_TIME_SECOND="秒";i.Msg.ARD_TIME_SECOND_MS="毫秒";i.Msg.ARD_TONE_FREQ="frequency";i.Msg.ARD_TONE_PIN="Tone PIN#";i.Msg.ARD_TONE_PIN_TIP="Generate audio tones on a pin";i.Msg.ARD_TYPE_ARRAY="Array";i.Msg.ARD_TYPE_BOOL="Boolean";i.Msg.ARD_TYPE_CHAR="Character";i.Msg.ARD_TYPE_CHILDBLOCKMISSING="ChildBlockMissing";i.Msg.ARD_TYPE_DECIMAL="Decimal";i.Msg.ARD_TYPE_LONG="Large Number";i.Msg.ARD_TYPE_NULL="Null";i.Msg.ARD_TYPE_NUMBER="Number";i.Msg.ARD_TYPE_SHORT="Short Number";i.Msg.ARD_TYPE_TEXT="Text";i.Msg.ARD_TYPE_UNDEF="Undefined";i.Msg.ARD_VAR_AS="为";i.Msg.ARD_VAR_AS_TIP="Sets a value to a specific type";i.Msg.ARD_WRITE_TO="为";i.Msg.AUTH="请授权这个应用程序以保存您的作品并共享。";i.Msg.BASIC_AS="as";i.Msg.BASIC_BLACK_OUT="Black out";i.Msg.BASIC_BRTN="Brightness";i.Msg.BASIC_BUZZER_PLAY="Buzzer plays ";i.Msg.BASIC_BUZZER_SETUP="Buzzer Setup";i.Msg.BASIC_COUNTER_SETTING="按钮为";i.Msg.BASIC_COUNTER_SETUP="设置一个计数器 ";i.Msg.BASIC_FOR="for";i.Msg.BASIC_FROM="from";i.Msg.BASIC_HZ="Hz";i.Msg.BASIC_IF_SWITCH="If switch ";i.Msg.BASIC_IS=" is ";i.Msg.BASIC_LIGHT_PIN="Light Pin#";i.Msg.BASIC_LIGHT_WARNING="亮度值必须在0到255之间";i.Msg.BASIC_MUTE="Mute";i.Msg.BASIC_NOLCD="关闭在接口%1上的灯光";i.Msg.BASIC_NOTONE="关闭在接口%1上的音调";i.Msg.BASIC_NOTONE_TIP="关闭所选接口上的音调输出";i.Msg.BASIC_PIN_NUM="Pin#";i.Msg.BASIC_READBUTTON="读取在接口%1上开关的状态";i.Msg.BASIC_READCOUNTER="读取计数器的数值 计数按钮为%1";i.Msg.BASIC_READKNOB="读取在接口%1上旋钮的数值";i.Msg.BASIC_SET="Set";i.Msg.BASIC_SETANALOGLED="设置在接口%1上的灯光亮度为%2";i.Msg.BASIC_SETDIGITALLED="打开在接口%1上的灯光";i.Msg.BASIC_SETTONE="设置在接口%1上的音调频率为%2";i.Msg.BASIC_SET_PIN="Set Pin#";i.Msg.BASIC_TO="to";i.Msg.BASIC_TONE_TIP="设置接口上的音调频率为31到65535中某个特定频率";i.Msg.BASIC_TONE_WARNING="频率值必须在31到65535之间";i.Msg.BLUE="蓝";i.Msg.BLUETOOTH_INTERACTION_SET_CONTENT="设定串口波特率为:";i.Msg.BLUETOOTH_INTERACTION_TITLE="蓝牙模块进入 AT 配置模式";i.Msg.BLUETOOTH_INTERCOMMS_DATA="data";i.Msg.BLUETOOTH_INTERCOMMS_RECEIVEMSG="接收数据";i.Msg.BLUETOOTH_INTERCOMMS_RECEIVEMSG_ISSUCCESS="接收数据成功";i.Msg.BLUETOOTH_INTERCOMMS_RECEIVE_GET_LINE2="获取第";i.Msg.BLUETOOTH_INTERCOMMS_RECEIVE_GET_LINE2_2="位的数据";i.Msg.BLUETOOTH_INTERCOMMS_RECEIVE_GET_LINE3="位的数据,并设置类型为";i.Msg.BLUETOOTH_INTERCOMMS_RECEIVE_GET_LINE4="";i.Msg.BLUETOOTH_INTERCOMMS_RECEIVE_LINE3="长度为";i.Msg.BLUETOOTH_INTERCOMMS_SENDMSG="发送数据";i.Msg.BLUETOOTH_INTERCOMMS_SETUP="蓝牙对蓝牙通信";i.Msg.BLUETOOTH_INTERCOMMS_SETUP1="对蓝牙通信";i.Msg.BLUETOOTH_INTERCOMMS_SETUP2="初始化";i.Msg.BLUETOOTH_LIST_RECEIVED="已接收到的列表";i.Msg.BLUETOOTH_LIST_RECEIVED1="中第";i.Msg.BLUETOOTH_LIST_RECEIVED2="位的值";i.Msg.BLUETOOTH_NUMBER_RECEIVED="已接收到的数字";i.Msg.BLUETOOTH_PAIRING_BIND_ADDR="绑定从属装置地址:";i.Msg.BLUETOOTH_PAIRING_MASTER="蓝牙配对: 主机装置设定";i.Msg.BLUETOOTH_PAIRING_SETTING_BAUDRATE="设置波特率:";i.Msg.BLUETOOTH_PAIRING_SETTING_TIMEOUT="设置延时:";i.Msg.BLUETOOTH_PAIRING_SLAVE="蓝牙配对: 从属装置设定";i.Msg.BLUETOOTH_SETUP="当蓝牙接收到";i.Msg.BLUETOOTH_SETUP_DATA_SET="设置";i.Msg.BLUETOOTH_SETUP_DO="并且做";i.Msg.BLUETOOTH_SETUP_LIST_SETTING="长度为";i.Msg.BLUETOOTH_SETUP_OPT1="一串文字";i.Msg.BLUETOOTH_SETUP_OPT2="一个数字";i.Msg.BLUETOOTH_SETUP_OPT3="一个列表";i.Msg.BLUETOOTH_SETUP_SET="设置波特率";i.Msg.BLUETOOTH_SETUP_TO="为接收到的信息";i.Msg.BLUETOOTH_TEXT_RECEIVED="已接收到的字符串";i.Msg.BLYNK_AUTH="认证密匙: ";i.Msg.BLYNK_CONNECT="当Blynk连接成功";i.Msg.BLYNK_CREATE_WITH_CONTAINER_TITLE_ADD="Data";i.Msg.BLYNK_CREATE_WITH_ITEM_TITLE="item";i.Msg.BLYNK_DATA="data";i.Msg.BLYNK_GET_DATANAME="从";i.Msg.BLYNK_GET_DATANAME1="获得";i.Msg.BLYNK_GET_DATANAME2="数据";i.Msg.BLYNK_GET_INDEX="第";i.Msg.BLYNK_GET_INDEX1="位的数据";i.Msg.BLYNK_GET_OF="获得数据";i.Msg.BLYNK_GET_OF1="获得";i.Msg.BLYNK_GET_OF2="的数据";i.Msg.BLYNK_GPS_ALTITUDE="高度(海拔)";i.Msg.BLYNK_GPS_LATITUDE="纬度";i.Msg.BLYNK_GPS_LONGITUDE="经度";i.Msg.BLYNK_GPS_SPEED="速度";i.Msg.BLYNK_LOG="BLYNK_LOG";i.Msg.BLYNK_PW="WiFi密码: ";i.Msg.BLYNK_READ="当Blynk请求";i.Msg.BLYNK_READ1="数据";i.Msg.BLYNK_SELECT="选择";i.Msg.BLYNK_SETUP="BLYNK初始化";i.Msg.BLYNK_SSID="WiFi名称: ";i.Msg.BLYNK_TIME_DO="执行";i.Msg.BLYNK_TIME_SECOND="秒";i.Msg.BLYNK_TIME_SETTING="设置计时器: 每隔";i.Msg.BLYNK_VIRTUALWRITE="發送數據到";i.Msg.BLYNK_VIRTUALWRITE_DATA="Data:";i.Msg.BLYNK_WIFI="连接WiFi网络";i.Msg.BLYNK_WRITE="从";i.Msg.BLYNK_WRITE1="获取数据";i.Msg.BLYNK_WRITE_VARIABLE="存到";i.Msg.BLYNK_WRITE_VARLENGTH="长度";i.Msg.CHANGE_VALUE_TITLE="更改值:";i.Msg.CHAT="通过在此框输入与您的合作者沟通!";i.Msg.CLEAN_UP="整理块";i.Msg.CLOUDDATA_CREATE_WITH_CONTAINER_TITLE_ADD="key[]";i.Msg.CLOUDDATA_CREATE_WITH_INPUT_WITH="添加";i.Msg.CLOUDDATA_CREATE_WITH_ITEM_TITLE="value";i.Msg.CLOUDDATA_GENERATOR_DATA="生成数据";i.Msg.CLOUDDATA_PARSE_JSON="的数据从";i.Msg.CLOUDDATA_PARSE_KEY="解析得到名为";i.Msg.CLOUDDATA_PARSE_PRETTYPRINT_DISPLAY="获得生成的数据";i.Msg.CLOUDDATA_PARSE_SETUP_INIT="数据解析初始化为";i.Msg.CLOUDDATA_PARSE_SETUP_PAYLOAD="解析内容";i.Msg.CLOUDDATA_PARSE_TYPE="类型为";i.Msg.CO2SENSOR_GET_CO2="获取二氧化碳浓度数值(单位:ppm)";i.Msg.CO2SENSOR_GET_TVOC="获取 TVOC(挥发性有机物)数值";i.Msg.CO2SENSOR_SETUP="CCS811 空气质量传感器初始化";i.Msg.CO2SENSOR_SETUP_SCL="SCL 引脚接在:";i.Msg.CO2SENSOR_SETUP_SDA="SDA 引脚接在:";i.Msg.COCOCLOUD_CREATE_WITH_CONTAINER_TITLE_ADD="LIST";i.Msg.COCOCLOUD_CREATE_WITH_ITEM_TITLE="Event";i.Msg.COCOCLOUD_GET="向项目";i.Msg.COCOCLOUD_GET1=" 获取数据";i.Msg.COCOCLOUD_GETPAYLOAD="从项目获取到的数据";i.Msg.COCOCLOUD_POST="发送到项目";i.Msg.COCOCLOUD_POST_DATA="数据";i.Msg.COCOCLOUD_TIME_DAY="日";i.Msg.COCOCLOUD_TIME_GETDATE="获取";i.Msg.COCOCLOUD_TIME_GETTIME="获取";i.Msg.COCOCLOUD_TIME_HOUR="时";i.Msg.COCOCLOUD_TIME_MINUTE="分";i.Msg.COCOCLOUD_TIME_MONTH="月份";i.Msg.COCOCLOUD_TIME_SECOND="秒";i.Msg.COCOCLOUD_TIME_SETUP="世界时间";i.Msg.COCOCLOUD_TIME_YEAR="年份";i.Msg.COCOCLOUD_TITLE="Web服务 CocoCloud";i.Msg.COLLAPSE_ALL="折叠块";i.Msg.COLLAPSE_BLOCK="折叠块";i.Msg.COLOR="颜色";i.Msg.COLORANALYZER_SETUP="颜色分析设置";i.Msg.COLOUR_BLEND_COLOUR1="颜色1";i.Msg.COLOUR_BLEND_COLOUR2="颜色2";i.Msg.COLOUR_BLEND_HELPURL="http://meyerweb.com/eric/tools/color-blend/";i.Msg.COLOUR_BLEND_RATIO="比例";i.Msg.COLOUR_BLEND_TITLE="混合";i.Msg.COLOUR_BLEND_TOOLTIP="用一个给定的比率(0.0-1.0)混合两种颜色。";i.Msg.COLOUR_PICKER_HELPURL="https://zh.wikipedia.org/wiki/颜色";i.Msg.COLOUR_PICKER_TOOLTIP="从调色板中选择一种颜色。";i.Msg.COLOUR_RANDOM_HELPURL="http://randomcolour.com";i.Msg.COLOUR_RANDOM_TITLE="随机颜色";i.Msg.COLOUR_RANDOM_TOOLTIP="随机选择一种颜色。";i.Msg.COLOUR_RGB_BLUE="蓝色";i.Msg.COLOUR_RGB_GREEN="绿色";i.Msg.COLOUR_RGB_HELPURL="http://www.december.com/html/spec/colorper.html";i.Msg.COLOUR_RGB_RED="红色";i.Msg.COLOUR_RGB_TITLE="颜色";i.Msg.COLOUR_RGB_TOOLTIP="通过指定红色、绿色和蓝色的量创建一种颜色。所有的值必须介于0和100之间。";i.Msg.CONTROLS_FLOW_STATEMENTS_HELPURL="https://github.com/google/blockly/wiki/Loops#loop-termination-blocks";i.Msg.CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK="中断循环";i.Msg.CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE="继续下一次循环";i.Msg.CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK="中断包含它的循环。";i.Msg.CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE="跳过这个循环的剩余部分,并继续下一次迭代。";i.Msg.CONTROLS_FLOW_STATEMENTS_WARNING="警告:此块仅可用于在一个循环内。";i.Msg.CONTROLS_FOREACH_HELPURL="https://github.com/google/blockly/wiki/Loops#for-each";i.Msg.CONTROLS_FOREACH_TITLE="在列表 %2 中以 %1 遍历每个项目";i.Msg.CONTROLS_FOREACH_TOOLTIP='遍历每个列表中的项目,将变量"%1"设定到该项中,然后执行某些语句。';i.Msg.CONTROLS_FOR_HELPURL="https://github.com/google/blockly/wiki/Loops#count-with";i.Msg.CONTROLS_FOR_TITLE="使用 %1 从范围 %2 到 %3 每隔 %4";i.Msg.CONTROLS_FOR_TOOLTIP='从起始数到结尾数中取出变量"%1"的值,按指定的时间间隔,执行指定的块。';i.Msg.CONTROLS_IF_ELSEIF_TOOLTIP="在if语句块中增加一个条件。";i.Msg.CONTROLS_IF_ELSE_TOOLTIP="添加一个最终的,包括所有情况的节到if块中。";i.Msg.CONTROLS_IF_HELPURL="https://github.com/google/blockly/wiki/IfElse";i.Msg.CONTROLS_IF_IF_TOOLTIP='增加、删除或重新排列各节来重新配置"if"块。';i.Msg.CONTROLS_IF_MSG_ELSE="否则";i.Msg.CONTROLS_IF_MSG_ELSEIF="否则如果";i.Msg.CONTROLS_IF_MSG_IF="如果";i.Msg.CONTROLS_IF_TOOLTIP_1="如果值为真,执行一些语句。";i.Msg.CONTROLS_IF_TOOLTIP_2="如果值为真,则执行语句的第一块。否则,则执行语句的第二块。";i.Msg.CONTROLS_IF_TOOLTIP_3="如果第一个值为真,则执行语句的第一个块。否则,如果第二个值为真,则执行语句的第二块。";i.Msg.CONTROLS_IF_TOOLTIP_4="如果第一个值为真,则执行语句的第一块。否则,如果第二个值为真,则执行语句的第二块。如果没有值为真,则执行语句的最后一块。";i.Msg.CONTROLS_REPEAT_HELPURL="https://zh.wikipedia.org/wiki/For循环";i.Msg.CONTROLS_REPEAT_INPUT_DO="执行";i.Msg.CONTROLS_REPEAT_TITLE="重复 %1 次";i.Msg.CONTROLS_REPEAT_TOOLTIP="多次执行一些语句。";i.Msg.CONTROLS_WHILEUNTIL_HELPURL="https://github.com/google/blockly/wiki/Loops#repeat";i.Msg.CONTROLS_WHILEUNTIL_OPERATOR_UNTIL="重复直到";i.Msg.CONTROLS_WHILEUNTIL_OPERATOR_WHILE="重复当";i.Msg.CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL="只要值为假,执行一些语句。";i.Msg.CONTROLS_WHILEUNTIL_TOOLTIP_WHILE="只要值为真,执行一些语句。";i.Msg.DELETE_ALL_BLOCKS="删除所有%1块吗?";i.Msg.DELETE_BLOCK="删除块";i.Msg.DELETE_X_BLOCKS="删除 %1 块";i.Msg.DISABLE_BLOCK="禁用块";i.Msg.DUPLICATE_BLOCK="复制";i.Msg.ENABLE_BLOCK="启用块";i.Msg.ENCODER_GETROTATIONSPEED="读取码盘数值";i.Msg.ENCODER_SETUP="码盘初始化";i.Msg.ENCODER_SETUP_1="设定中断引脚";i.Msg.ENV_AS="as";i.Msg.ENV_BLUE_PIN="蓝 从接口";i.Msg.ENV_BUZZER_ALARM="Buzzer Alarm";i.Msg.ENV_CRITICAL_VAL="When the critical value of";i.Msg.ENV_DO="Do";i.Msg.ENV_GREEN_PIN="绿 从接口";i.Msg.ENV_REACHES="reaches";i.Msg.ENV_RED_PIN="红 从接口";i.Msg.ENV_SENSOR_HUMID="读取湿度的数值从接口 ";i.Msg.ENV_SENSOR_HUMIDITY="湿度";i.Msg.ENV_SENSOR_LIGHT=" 读取光照的数值从接口 ";i.Msg.ENV_SENSOR_MIC=" 读取声音的数值从接口 ";i.Msg.ENV_SENSOR_READ="读取数值从";i.Msg.ENV_SENSOR_READTEMP="读取温度的数值从接口 ";i.Msg.ENV_SENSOR_SET_RGB="设置RGB灯光";i.Msg.ENV_SENSOR_SOUND="声音";i.Msg.ENV_SENSOR_TEMPUNIT="设置单位为";i.Msg.ENV_SENSOR_UNITC="摄氏度";i.Msg.ENV_SENSOR_UNITF="华氏度";i.Msg.ENV_SET="Set";i.Msg.ENV_SETRGB_B="蓝 从接口";i.Msg.ENV_SETRGB_G="绿 从接口";i.Msg.ENV_SETRGB_R="红 从接口 ";i.Msg.ENV_SETUP="环境感应设置";i.Msg.ENV_SET_TEMP="Set temperature as ";i.Msg.ENV_SET_TEMP_UNIT="Set unit as ";i.Msg.EXPAND_ALL="展开块";i.Msg.EXPAND_BLOCK="展开块";i.Msg.EXPORTPNG="导出PNG快照";i.Msg.EXPORTXML="导出XML文件";i.Msg.EXTERNAL_INPUTS="外部输入";i.Msg.Friday="周五";i.Msg.GPS_LATITUDE="获取纬度";i.Msg.GPS_LONGITUDE="获取经度";i.Msg.GPS_SETUP="GPS 初始化";i.Msg.GREEN="绿";i.Msg.HELP="帮助";i.Msg.HID_KEYBOARD_PRESS="设置键盘: 按下";i.Msg.HID_KEYBOARD_RELEASE="设置键盘: 释放";i.Msg.HID_KEYBOARD_RELEASEALL="设置键盘: 释放全部";i.Msg.HID_MOUSE_CLICK="设置鼠标: 点击";i.Msg.HID_MOUSE_CLICK_LEFT="左键";i.Msg.HID_MOUSE_CLICK_RIGHT="右键";i.Msg.HID_MOUSE_MOVE="设置鼠标: 向";i.Msg.HID_MOUSE_MOVE_DISTANCE="px";i.Msg.HID_MOUSE_MOVE_FOR="移动";i.Msg.HID_MOUSE_PRESS="设置鼠标: 按下";i.Msg.HID_MOUSE_RELEASE="设置鼠标: 松开";i.Msg.HID_SETUP="HID初始化";i.Msg.INFRAREDRAY_RECVAL="接收值";i.Msg.INFRAREDRAY_SETUP="红外线接收器设置";i.Msg.INLINE_INPUTS="单行输入";i.Msg.ISCOLOR="是否颜色";i.Msg.JSONOBJECT_CREATE="JSON Object";i.Msg.JSONTOOL_ARRAY_SIZE="列表大小";i.Msg.JSONTOOL_GENERATOR="JSON构造器 ";i.Msg.JSONTOOL_GENERATOR_ARRAY_VALUE="JSON列表加入: value";i.Msg.JSONTOOL_GENERATOR_JSONOBJECT="Object";i.Msg.JSONTOOL_GENERATOR_KEY="JSON对象加入:Key ";i.Msg.JSONTOOL_GENERATOR_MAIN_JSONNAME="JSONVar";i.Msg.JSONTOOL_GENERATOR_MAIN_TITLE="生成JSON";i.Msg.JSONTOOL_GENERATOR_MAIN_TITLE_NAME="命名为";i.Msg.JSONTOOL_GENERATOR_NESTED_TITLE="嵌套JSON";i.Msg.JSONTOOL_GENERATOR_NESTED_TITLE_NAME="命名为";i.Msg.JSONTOOL_GENERATOR_SETUP="JSON构造器初始化";i.Msg.JSONTOOL_GENERATOR_VALUE="Value";i.Msg.JSONTOOL_OBJECT_SIZE="对象大小";i.Msg.JSONTOOL_PARSE_ARRAY="(JSON列表)";i.Msg.JSONTOOL_PARSE_BY="获取";i.Msg.JSONTOOL_PARSE_EACH="从JSON对象";i.Msg.JSONTOOL_PARSE_INDEX="下标为";i.Msg.JSONTOOL_PARSE_ISSUCCESS="是否成功解析";i.Msg.JSONTOOL_PARSE_ISSUCCESS_NAME="对于JSON对象";i.Msg.JSONTOOL_PARSE_JSONOBJECT="Object";i.Msg.JSONTOOL_PARSE_KEY="(JSON对象)key";i.Msg.JSONTOOL_PARSE_KEYVALUE="从JSON Object %1 获得key %2 的值";i.Msg.JSONTOOL_PARSE_NEST="内嵌";i.Msg.JSONTOOL_PARSE_PRETTYPRINT="打印 JSON ";i.Msg.JSONTOOL_PARSE_PRETTYPRINT_DISPLAY="规范化数据";i.Msg.JSONTOOL_PARSE_PRETTYPRINT_WAY="按规范方式";i.Msg.JSONTOOL_PARSE_RESPONSE="数据内容";i.Msg.JSONTOOL_PARSE_SETUP="JSON解析器初始化";i.Msg.JSONTOOL_PARSE_TOVAR="获取数据到";i.Msg.JSONTOOL_PARSE_VARTYPE="";i.Msg.LED_BACKCOLOR="背景";i.Msg.LED_BRIGHTNESS_WARNING="亮度应该在范围 0 - 255 之间";i.Msg.LED_BRTN="亮度";i.Msg.LED_CLEAR="清除";i.Msg.LED_COLOR="颜色";i.Msg.LED_COORDINATE="坐标";i.Msg.LED_DRAW="画";i.Msg.LED_FONT="字体";i.Msg.LCD_FONT="字体:";i.Msg.SUPER_LARGE="超大";i.Msg.LARGE="大";i.Msg.MIDDLE="中";i.Msg.SMALL="小";i.Msg.LED_FULL="实心";i.Msg.LED_HEIGHT="高";i.Msg.LED_LINE="线";i.Msg.LED_LINE_END="终点";i.Msg.LED_LINE_START="起点";i.Msg.LED_MULTICOM="H";i.Msg.LED_PANELHEIGHT="高(拼接个数)";i.Msg.LED_PANELWIDTH="宽(拼接个数)";i.Msg.LED_PATTERN="图形";i.Msg.LED_PIN="接口";i.Msg.LED_PIXEL="点";i.Msg.LED_POSITION="位置";i.Msg.LED_RECTANGLE="矩形";i.Msg.LED_SCROLL="滚动";i.Msg.LED_SCROLL_NO="否";i.Msg.LED_SCROLL_SPEED="速度";i.Msg.LED_SCROLL_YES="是";i.Msg.LED_SETUP="LED灯组设置";i.Msg.LED_SET_BRIGHTNESS="设置亮度为";i.Msg.LED_SET_ROTATION="将屏幕旋转至";i.Msg.LED_SET_ROTATION_DEGREE="度";i.Msg.LED_SHOW_ALL="显示图案";i.Msg.LED_SINGLE_SETUP="单个LED灯组设置";i.Msg.LED_SIZE="大小";i.Msg.LED_STRIP_LOCATION="位置";i.Msg.LED_STRIP_PIXEL="绘制像素";i.Msg.LED_STROKED="空心";i.Msg.LED_TEXT="文本";i.Msg.LED_WIDTH="宽";i.Msg.LED_WORD="单字";i.Msg.LIGHT_BRIGHTNESS="上的灯光亮度为:";i.Msg.LIGHT_PIN="设置";i.Msg.LIGHT_TURNOFF="关闭灯光输出在";i.Msg.LISTS_CREATE_EMPTY_HELPURL="https://github.com/google/blockly/wiki/Lists#create-empty-list";i.Msg.LISTS_CREATE_EMPTY_TITLE="创建空列表";i.Msg.LISTS_CREATE_EMPTY_TOOLTIP="返回一个列表,长度为 0,不包含任何数据记录";i.Msg.LISTS_CREATE_LIST_WITH="创建列表";i.Msg.LISTS_CREATE_WITH_CONTAINER_TITLE_ADD="列表";i.Msg.LISTS_CREATE_WITH_CONTAINER_TOOLTIP="增加、删除或重新排列各部分以此重新配置这个列表块。";i.Msg.LISTS_CREATE_WITH_HELPURL="https://github.com/google/blockly/wiki/Lists#create-list-with";i.Msg.LISTS_CREATE_WITH_ITEM_TOOLTIP="将一个项添加到列表中。";i.Msg.LISTS_CREATE_WITH_TOOLTIP="建立一个具有任意数量项目的列表。";i.Msg.LISTS_GETINDEX="从列表 %1 中获取第 %2 位的值";i.Msg.LISTS_GET_INDEX_FIRST="第一";i.Msg.LISTS_GET_INDEX_FROM_END="倒数第#";i.Msg.LISTS_GET_INDEX_FROM_START="#";i.Msg.LISTS_GET_INDEX_GET="获得";i.Msg.LISTS_GET_INDEX_GET_REMOVE="取出并移除";i.Msg.LISTS_GET_INDEX_LAST="最后";i.Msg.LISTS_GET_INDEX_RANDOM="随机";i.Msg.LISTS_GET_INDEX_REMOVE="移除";i.Msg.LISTS_GET_INDEX_TAIL="空白";i.Msg.LISTS_GET_INDEX_TOOLTIP_GET_FIRST="返回列表中的第一个项目。";i.Msg.LISTS_GET_INDEX_TOOLTIP_GET_FROM_END="返回在列表中的指定位置的项。#1是最后一项。";i.Msg.LISTS_GET_INDEX_TOOLTIP_GET_FROM_START="返回在列表中的指定位置的项。#1是第一个项目。";i.Msg.LISTS_GET_INDEX_TOOLTIP_GET_LAST="返回列表中的最后一项。";i.Msg.LISTS_GET_INDEX_TOOLTIP_GET_RANDOM="随机返回列表中的一个项目。";i.Msg.LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST="移除并返回列表中的第一个项目。";i.Msg.LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM_END="移除并返回列表中的指定位置的项。#1 是最后一项。";i.Msg.LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM_START="移除并返回列表中的指定位置的项。#1 是第一项。";i.Msg.LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST="移除并返回列表中的最后一个项目。";i.Msg.LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM="移除并返回列表中的一个随机项目中。";i.Msg.LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST="移除列表中的第一项";i.Msg.LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM_END="删除在列表中的指定位置的项。#1是最后一项。";i.Msg.LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM_START="移除在列表中的指定位置的项。#1 是第一项。";i.Msg.LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST="移除列表中的最后一项";i.Msg.LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM="删除列表中的一个随机的项。";i.Msg.LISTS_GET_SUBLIST_END_FROM_END="到倒数第#";i.Msg.LISTS_GET_SUBLIST_END_FROM_START="到#";i.Msg.LISTS_GET_SUBLIST_END_LAST="到最后";i.Msg.LISTS_GET_SUBLIST_HELPURL="https://github.com/google/blockly/wiki/Lists#getting-a-sublist";i.Msg.LISTS_GET_SUBLIST_START_FIRST="从头获得子列表";i.Msg.LISTS_GET_SUBLIST_START_FROM_END="从倒数#取得子列表";i.Msg.LISTS_GET_SUBLIST_START_FROM_START="从#取得子列表";i.Msg.LISTS_GET_SUBLIST_TAIL="空白";i.Msg.LISTS_GET_SUBLIST_TOOLTIP="复制列表中指定的部分。";i.Msg.LISTS_INDEX_OF_FIRST="找出第一个项出现";i.Msg.LISTS_INDEX_OF_HELPURL="https://github.com/google/blockly/wiki/Lists#getting-items-from-a-list";i.Msg.LISTS_INDEX_OF_LAST="找出最后一个项出现";i.Msg.LISTS_INDEX_OF_TOOLTIP="返回在列表中的第一/最后一个匹配项的索引值。如果找不到项目则返回0。";i.Msg.LISTS_INLIST="在列表中";i.Msg.LISTS_INT_CREATE_WITH_INPUT_WITH="建立数字列表使用";i.Msg.LISTS_ISEMPTY_HELPURL="https://github.com/google/blockly/wiki/Lists#is-empty";i.Msg.LISTS_ISEMPTY_TITLE="%1是空的";i.Msg.LISTS_ISEMPTY_TOOLTIP="如果改列表为空,则返回真。";i.Msg.LISTS_LENGTH_HELPURL="https://github.com/google/blockly/wiki/Lists#length-of";i.Msg.LISTS_LENGTH_TITLE="%1的长度";i.Msg.LISTS_LENGTH_TOOLTIP="返回列表的长度。";i.Msg.LISTS_REPEAT_HELPURL="https://github.com/google/blockly/wiki/Lists#create-list-with";i.Msg.LISTS_REPEAT_TITLE="建立列表使用项 %1 重复 %2 次";i.Msg.LISTS_REPEAT_TOOLTIP="建立包含指定重复次数的值的列表。";i.Msg.LISTS_SETINDEX="赋值 %1 中第 %2 位的值到 %3";i.Msg.LISTS_SET_INDEX_HELPURL="https://github.com/google/blockly/wiki/Lists#in-list--set";i.Msg.LISTS_SET_INDEX_INPUT_TO="为";i.Msg.LISTS_SET_INDEX_INSERT="插入在";i.Msg.LISTS_SET_INDEX_SET="设置";i.Msg.LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST="在列表的起始处添加该项。";i.Msg.LISTS_SET_INDEX_TOOLTIP_INSERT_FROM_END="插入在列表中的指定位置的项。#1是最后一项。";i.Msg.LISTS_SET_INDEX_TOOLTIP_INSERT_FROM_START="插入在列表中指定位置的项。#1是第一项。";i.Msg.LISTS_SET_INDEX_TOOLTIP_INSERT_LAST="将该项追加到列表的末尾。";i.Msg.LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM="在列表中随机插入项。";i.Msg.LISTS_SET_INDEX_TOOLTIP_SET_FIRST="设置列表中的第一个项目。";i.Msg.LISTS_SET_INDEX_TOOLTIP_SET_FROM_END="设置在列表中指定位置的项。#1是最后一项。";i.Msg.LISTS_SET_INDEX_TOOLTIP_SET_FROM_START="设置在列表中指定位置的项。#1是第一项。";i.Msg.LISTS_SET_INDEX_TOOLTIP_SET_LAST="设置列表中的最后一项。";i.Msg.LISTS_SET_INDEX_TOOLTIP_SET_RANDOM="设置列表中一个随机的项目。";i.Msg.LISTS_SORT_HELPURL="https://github.com/google/blockly/wiki/Lists#sorting-a-list";i.Msg.LISTS_SORT_ORDER_ASCENDING="升序";i.Msg.LISTS_SORT_ORDER_DESCENDING="降序";i.Msg.LISTS_SORT_TITLE="排序%1 %2 %3";i.Msg.LISTS_SORT_TOOLTIP="排序一个列表的拷贝。";i.Msg.LISTS_SORT_TYPE_IGNORECASE="按字母排序,忽略大小写";i.Msg.LISTS_SORT_TYPE_NUMERIC="按数字排序";i.Msg.LISTS_SORT_TYPE_TEXT="按字母排序";i.Msg.LISTS_SPLIT_HELPURL="https://github.com/google/blockly/wiki/Lists#splitting-strings-and-joining-lists";i.Msg.LISTS_SPLIT_LIST_FROM_TEXT="从文本制作列表";i.Msg.LISTS_SPLIT_TEXT_FROM_LIST="从列表拆出文本";i.Msg.LISTS_SPLIT_TOOLTIP_JOIN="加入文本列表至一个文本,由分隔符分隔。";i.Msg.LISTS_SPLIT_TOOLTIP_SPLIT="拆分文本到文本列表,按每个分隔符拆分。";i.Msg.LISTS_SPLIT_WITH_DELIMITER="用分隔符";i.Msg.LISTS_STRING_CREATE_WITH_INPUT_WITH="建立字符串列表使用";i.Msg.LISTS_THE_LENGTH_OF="%1的长度";i.Msg.LOGIC_BOOLEAN_FALSE="假";i.Msg.LOGIC_BOOLEAN_HELPURL="https://github.com/google/blockly/wiki/Logic#values";i.Msg.LOGIC_BOOLEAN_TOOLTIP="返回真或假。";i.Msg.LOGIC_BOOLEAN_TRUE="真";i.Msg.LOGIC_CASE="情况";i.Msg.LOGIC_COMPARE_HELPURL="https://zh.wikipedia.org/wiki/不等";i.Msg.LOGIC_COMPARE_TOOLTIP_EQ="如果两个输入结果相等,则返回真。";i.Msg.LOGIC_COMPARE_TOOLTIP_GT="如果第一个输入结果比第二个大,则返回真。";i.Msg.LOGIC_COMPARE_TOOLTIP_GTE="如果第一个输入结果大于或等于第二个输入结果,则返回真。";i.Msg.LOGIC_COMPARE_TOOLTIP_LT="如果第一个输入结果比第二个小,则返回真。";i.Msg.LOGIC_COMPARE_TOOLTIP_LTE="如果第一个输入结果小于或等于第二个输入结果,则返回真。";i.Msg.LOGIC_COMPARE_TOOLTIP_NEQ="如果两个输入结果不相等,则返回真。";i.Msg.LOGIC_DEFAULT="默认";i.Msg.LOGIC_DO="做";i.Msg.LOGIC_NEGATE_HELPURL="https://github.com/google/blockly/wiki/Logic#not";i.Msg.LOGIC_NEGATE_TITLE="非%1";i.Msg.LOGIC_NEGATE_TOOLTIP="如果输入结果为假,则返回真;如果输入结果为真,则返回假。";i.Msg.LOGIC_NULL="空";i.Msg.LOGIC_NULL_HELPURL="https://en.wikipedia.org/wiki/Nullable_type";i.Msg.LOGIC_NULL_TOOLTIP="返回空值。";i.Msg.LOGIC_OPERATION_AND="和";i.Msg.LOGIC_OPERATION_HELPURL="https://github.com/google/blockly/wiki/Logic#logical-operations";i.Msg.LOGIC_OPERATION_OR="或";i.Msg.LOGIC_OPERATION_TOOLTIP_AND="如果两个输入结果都为真,则返回真。";i.Msg.LOGIC_OPERATION_TOOLTIP_OR="如果至少有一个输入结果为真,则返回真。";i.Msg.LOGIC_SWITCH="切换";i.Msg.LOGIC_TERNARY_CONDITION="测试";i.Msg.LOGIC_TERNARY_HELPURL="https://zh.wikipedia.org/wiki/条件运算符";i.Msg.LOGIC_TERNARY_IF_FALSE="如果为假";i.Msg.LOGIC_TERNARY_IF_TRUE="如果为真";i.Msg.LOGIC_TERNARY_TOOLTIP='检查"test"中的条件。如果条件为真,则返回"if true"的值,否则,则返回"if false"的值。';i.Msg.MAINEASYMODE_TRANSFER_RECEIVE="从AI模块获取数据";i.Msg.MAINEASYMODE_TRANSFER_RECEIVE_GET="从";i.Msg.MAINEASYMODE_TRANSFER_RECEIVE_GET_LINE2="获取第";i.Msg.MAINEASYMODE_TRANSFER_RECEIVE_GET_LINE3="位的数据,并设置类型为";i.Msg.MAINEASYMODE_TRANSFER_RECEIVE_GET_LINE4="";i.Msg.MAINEASYMODE_TRANSFER_RECEIVE_LINE2="并存到 ";i.Msg.MAINEASYMODE_TRANSFER_RECEIVE_LINE3="长度为 ";i.Msg.MAINEASYMODE_TRANSFER_SEND="创建列表";i.Msg.MAINEASYMODE_TRANSFER_SEND_LINE2="发送数据到AI上";i.Msg.MAINEASYMODE_TRANSFER_SEND_VALUE="Data";i.Msg.MAINWIFI_RECEIVEMSG="接收数据到 ";i.Msg.MAINWIFI_RECEIVEMSG_ISSUCCESS="接收数据成功";i.Msg.MAINWIFI_RECEIVEMSG_LENGTH=",数据长度为 ";i.Msg.MAINWIFI_SENDMSG="发送数据";i.Msg.MAINWIFI_SENDMSG_LENGTH=",数据长度为";i.Msg.MAINWIFI_SETUP="无线数据传输初始化";i.Msg.MATH_ADDITION_SYMBOL="+";i.Msg.MATH_ARITHMETIC_HELPURL="https://zh.wikipedia.org/wiki/算术";i.Msg.MATH_ARITHMETIC_TOOLTIP_ADD="返回两个数字的和。";i.Msg.MATH_ARITHMETIC_TOOLTIP_DIVIDE="返回两个数字的商。";i.Msg.MATH_ARITHMETIC_TOOLTIP_MINUS="返回两个数字的区别。";i.Msg.MATH_ARITHMETIC_TOOLTIP_MULTIPLY="返回两个数字的乘积。";i.Msg.MATH_ARITHMETIC_TOOLTIP_POWER="返回第一个数的第二个数次幂。";i.Msg.MATH_CHANGE_HELPURL="https://zh.wikipedia.org/wiki/%E5%8A%A0%E6%B3%95";i.Msg.MATH_CHANGE_TITLE="将 %1 增加 %2";i.Msg.MATH_CHANGE_TOOLTIP='将一个数添加到变量"%1"。';i.Msg.MATH_CONSTANT_HELPURL="https://zh.wikipedia.org/wiki/数学常数";i.Msg.MATH_CONSTANT_TOOLTIP="返回一个常见常量:π (3.141......),e (2.718...)、φ (1.618...)、 sqrt(2) (1.414......)、sqrt(½) (0.707......)或 ∞(无穷大)。";i.Msg.MATH_CONSTRAIN_HELPURL="https://en.wikipedia.org/wiki/Clamping_%28graphics%29";i.Msg.MATH_CONSTRAIN_TITLE="限制数字 %1 介于 (低) %2 到 (高) %3";i.Msg.MATH_CONSTRAIN_TOOLTIP="限制数字介于两个指定的数字之间";i.Msg.MATH_DIVISION_SYMBOL="÷";i.Msg.MATH_IS_DIVISIBLE_BY="可被整除";i.Msg.MATH_IS_EVEN="是偶数";i.Msg.MATH_IS_NEGATIVE="为负";i.Msg.MATH_IS_ODD="是奇数";i.Msg.MATH_IS_POSITIVE="为正";i.Msg.MATH_IS_PRIME="是质数";i.Msg.MATH_IS_TOOLTIP="如果数字是偶数、奇数、非负整数、正数、负数或如果它可被某数字整除,则返回真或假。";i.Msg.MATH_IS_WHOLE="为整数";i.Msg.MATH_MODULO_HELPURL="https://zh.wikipedia.org/wiki/模除";i.Msg.MATH_MODULO_TITLE="取余数自 %1 ÷ %2";i.Msg.MATH_MODULO_TOOLTIP="返回这两个数字相除后的余数。";i.Msg.MATH_MULTIPLICATION_SYMBOL="×";i.Msg.MATH_NUMBER_HELPURL="https://zh.wikipedia.org/wiki/数";i.Msg.MATH_NUMBER_TOOLTIP="一个数字。";i.Msg.MATH_ONLIST_HELPURL="";i.Msg.MATH_ONLIST_OPERATOR_AVERAGE="列表中的平均数";i.Msg.MATH_ONLIST_OPERATOR_MAX="列表中的最大值";i.Msg.MATH_ONLIST_OPERATOR_MEDIAN="列表中位数";i.Msg.MATH_ONLIST_OPERATOR_MIN="列表中的最小值";i.Msg.MATH_ONLIST_OPERATOR_MODE="列表模式";i.Msg.MATH_ONLIST_OPERATOR_RANDOM="列表的随机项";i.Msg.MATH_ONLIST_OPERATOR_STD_DEV="列表中的标准差";i.Msg.MATH_ONLIST_OPERATOR_SUM="列表中的数的总和";i.Msg.MATH_ONLIST_TOOLTIP_AVERAGE="返回列表中的数值的平均值。";i.Msg.MATH_ONLIST_TOOLTIP_MAX="返回列表中最大数。";i.Msg.MATH_ONLIST_TOOLTIP_MEDIAN="返回列表中的中位数。";i.Msg.MATH_ONLIST_TOOLTIP_MIN="返回列表中最小数。";i.Msg.MATH_ONLIST_TOOLTIP_MODE="返回列表中的最常见的项的列表。";i.Msg.MATH_ONLIST_TOOLTIP_RANDOM="从列表中返回一个随机的元素。";i.Msg.MATH_ONLIST_TOOLTIP_STD_DEV="返回列表的标准偏差。";i.Msg.MATH_ONLIST_TOOLTIP_SUM="返回列表中的所有数字的和。";i.Msg.MATH_POWER_SYMBOL="^";i.Msg.MATH_RANDOM_FLOAT_HELPURL="https://zh.wikipedia.org/wiki/随机数生成器";i.Msg.MATH_RANDOM_FLOAT_TITLE_RANDOM="随机分数";i.Msg.MATH_RANDOM_FLOAT_TOOLTIP="返回介于(包含)0.0到1.0之间的随机数。";i.Msg.MATH_RANDOM_INT_HELPURL="https://zh.wikipedia.org/wiki/随机数生成器";i.Msg.MATH_RANDOM_INT_TITLE="从 %1 到 %2 之间的随机整数";i.Msg.MATH_RANDOM_INT_TOOLTIP="返回两个指定的范围(含)之间的随机整数。";i.Msg.MATH_ROUND_HELPURL="https://zh.wikipedia.org/wiki/数值修约";i.Msg.MATH_ROUND_OPERATOR_ROUND="四舍五入";i.Msg.MATH_ROUND_OPERATOR_ROUNDDOWN="向下舍入";i.Msg.MATH_ROUND_OPERATOR_ROUNDUP="向上舍入";i.Msg.MATH_ROUND_TOOLTIP="数字向上或向下舍入。";i.Msg.MATH_SINGLE_HELPURL="https://zh.wikipedia.org/wiki/平方根";i.Msg.MATH_SINGLE_OP_ABSOLUTE="绝对";i.Msg.MATH_SINGLE_OP_ROOT="平方根";i.Msg.MATH_SINGLE_TOOLTIP_ABS="返回一个数的绝对值。";i.Msg.MATH_SINGLE_TOOLTIP_EXP="返回数的e次幂。";i.Msg.MATH_SINGLE_TOOLTIP_LN="返回一个数的自然对数。";i.Msg.MATH_SINGLE_TOOLTIP_LOG10="返回数字的对数。";i.Msg.MATH_SINGLE_TOOLTIP_NEG="返回数的逻辑非。";i.Msg.MATH_SINGLE_TOOLTIP_POW10="返回数的10次幂。";i.Msg.MATH_SINGLE_TOOLTIP_ROOT="返回数的平方根。";i.Msg.MATH_SUBTRACTION_SYMBOL="-";i.Msg.MATH_TRIG_ACOS="acos";i.Msg.MATH_TRIG_ASIN="asin";i.Msg.MATH_TRIG_ATAN="atan";i.Msg.MATH_TRIG_COS="cos";i.Msg.MATH_TRIG_HELPURL="https://zh.wikipedia.org/wiki/三角函数";i.Msg.MATH_TRIG_SIN="sin";i.Msg.MATH_TRIG_TAN="tan";i.Msg.MATH_TRIG_TOOLTIP_ACOS="返回一个数的反余弦值。";i.Msg.MATH_TRIG_TOOLTIP_ASIN="返回一个数的反正弦值。";i.Msg.MATH_TRIG_TOOLTIP_ATAN="返回指定角度的反正切值。";i.Msg.MATH_TRIG_TOOLTIP_COS="返回指定角度的余弦值(非弧度)。";i.Msg.MATH_TRIG_TOOLTIP_SIN="返回指定角度的正弦值(非弧度)。";i.Msg.MATH_TRIG_TOOLTIP_TAN="返回指定角度的正切值(非弧度)。";i.Msg.MATH_KEEP_DECIMAL_HELPURL="";i.Msg.MATH_KEEP_DECIMAL_TOOLTIP="返回指定值保留小数点的结果";i.Msg.MATH_KEEP_DECIMAL_MESSAGE0="%1 保留 %2 位小数";i.Msg.MATH_DIVISION_CONSULT_TITLE="%1 ÷ %2 商的整数部分";i.Msg.MATH_DIVISION_CONSULT_TOOLTIP="返回两数商的整数部分";i.Msg.labplus_mapping_MESSAGE0="映射%1 从%2 , %3到%4 , %5";i.Msg.labplus_mapping_TOOLTIP="将0~100中的10映射到0~200中并返回映射值";i.Msg.labplus_mapping_HELPURL="";i.Msg.ME="我";i.Msg.MOTION_GETACC="获取";i.Msg.MOTION_GETACC1="方向的加速度";i.Msg.MOTION_GETRAWDATA="获得数据";i.Msg.MOTION_GETYPR="获取";i.Msg.MOTION_GETYPR1="的旋转度";i.Msg.MOTION_ONDIRECTION="正在向";i.Msg.MOTION_ONDIRECTION1="偏转";i.Msg.MOTION_ONDIRECTION_BACK="后";i.Msg.MOTION_ONDIRECTION_CLOCKWISE="顺时针";i.Msg.MOTION_ONDIRECTION_COUNTERCLOCKWISE="逆时针";i.Msg.MOTION_ONDIRECTION_FRONT="前";i.Msg.MOTION_ONDIRECTION_LEFT="左";i.Msg.MOTION_ONDIRECTION_RIGHT="右";i.Msg.MOTION_ONSHAKE="正在摇晃";i.Msg.MOTION_SETUP="运动初始化";i.Msg.MOTION_TRENDENCY="获得运动趋势";i.Msg.MOTOR_MOVE_DIRECTION1="顺时针";i.Msg.MOTOR_MOVE_DIRECTION2="逆时针";i.Msg.MOTOR_MOVE_MOTOR="驱动电机";i.Msg.MOTOR_MOVE_MSG="和";i.Msg.MOTOR_SETUP="电机驱动车设置";i.Msg.MOTOR_SPEED="速度";i.Msg.MOTOR_STOP="设置电机停止";i.Msg.MUSIC_BEAT="拍";i.Msg.MUSIC_DURATION="持续";i.Msg.MUSIC_INSTRUMENT="设定乐器";i.Msg.MUSIC_INSTRUMENT_ACCORION="手风琴";i.Msg.MUSIC_INSTRUMENT_BASS="贝斯";i.Msg.MUSIC_INSTRUMENT_CELLO="大提琴";i.Msg.MUSIC_INSTRUMENT_DRAWBARORGAN="爵士风琴";i.Msg.MUSIC_INSTRUMENT_DRUM="鼓";i.Msg.MUSIC_INSTRUMENT_EGUITAR="电吉他";i.Msg.MUSIC_INSTRUMENT_EPIANO="电子琴";i.Msg.MUSIC_INSTRUMENT_FLUTE="长笛";i.Msg.MUSIC_INSTRUMENT_GPIANO="经典钢琴";i.Msg.MUSIC_INSTRUMENT_GUITAR="吉他";i.Msg.MUSIC_INSTRUMENT_MUSICBOX="八音盒";i.Msg.MUSIC_INSTRUMENT_PICCOLO="短笛";i.Msg.MUSIC_INSTRUMENT_SAX="萨克斯";i.Msg.MUSIC_INSTRUMENT_SITAR="西塔琴";i.Msg.MUSIC_INSTRUMENT_TRUMPET="喇叭";i.Msg.MUSIC_INSTRUMENT_VIOLA="中提琴";i.Msg.MUSIC_INSTRUMENT_VIOLIN="小提琴";i.Msg.MUSIC_INSTRUMENT_WHISTLE="汽笛";i.Msg.MUSIC_INSTRUMENT_WOODBLOCK="木鱼";i.Msg.MUSIC_INSTRUMENT_XYLOPHONE="木琴";i.Msg.MUSIC_MP3_CURRENTVOLUME="获得当前音量";i.Msg.MUSIC_MP3_PLAYALL="播放列表";i.Msg.MUSIC_MP3_PLAYALL_NAME="播放模式";i.Msg.MUSIC_MP3_PLAYMODE_LISTREPEAT="列表循环";i.Msg.MUSIC_MP3_PLAYMODE_NORMAL="单次";i.Msg.MUSIC_MP3_PLAYMODE_REPEAT="单曲循环";i.Msg.MUSIC_MP3_PLAYONE="播放音乐文件";i.Msg.MUSIC_MP3_PLAYONE_NAME="音乐:";i.Msg.MUSIC_MP3_PLAYONE_NORMAL="单次";i.Msg.MUSIC_MP3_PLAYONE_REPEAT="循环";i.Msg.MUSIC_MP3_PLAYSETTING="播放器设置:";i.Msg.MUSIC_MP3_PLAYSETTING_NEXTSONG="下一曲";i.Msg.MUSIC_MP3_PLAYSETTING_PAUSE="暂停";i.Msg.MUSIC_MP3_PLAYSETTING_PLAYALL="播放所有乐曲";i.Msg.MUSIC_MP3_PLAYSETTING_PRESONG="上一曲";i.Msg.MUSIC_MP3_PLAYSETTING_RESUME="播放";i.Msg.MUSIC_MP3_PLAYSETTING_STOP="停止";i.Msg.MUSIC_MP3_PLAYSETTING_VOLDOWN="调小音量";i.Msg.MUSIC_MP3_PLAYSETTING_VOLUP="调大音量";i.Msg.MUSIC_MP3_PLAY_NORMAL="顺序播放";i.Msg.MUSIC_MP3_PLAY_REPEAT="列表循环";i.Msg.MUSIC_MP3_SETUP="MP3播放器初始化";i.Msg.MUSIC_MP3_SETUP_SETVOLUME="设置音量";i.Msg.MUSIC_MP3_SETUP_SETVOLUME_HIGH="高";i.Msg.MUSIC_MP3_SETUP_SETVOLUME_LOW="低";i.Msg.MUSIC_MP3_SETUP_SETVOLUME_MID="中";i.Msg.MUSIC_MP3_SETVOLUME="设置音量为";i.Msg.MUSIC_NOTE="音阶";i.Msg.MUSIC_PLAY_NOTE="播放";i.Msg.MUSIC_PLAY_NOTE_TOOLTIP="right click this block and check the help page to see the corresponding music note.";i.Msg.MUSIC_REST="音符间隔";i.Msg.MUSIC_VOLUME="设置音量";i.Msg.MUSIC_VOL_MAX="最大";i.Msg.MUSIC_VOL_MIN="最小";i.Msg.Monday="周一";i.Msg.Motion_Accelerate="加速度";i.Msg.Motion_Gyroscope="陀螺仪";i.Msg.NBIOT_ENABLE="启用NB-IoT 串口命令交互";i.Msg.NBIOT_HTTP_APIKEY="云端事件API密匙";i.Msg.NBIOT_HTTP_CLOUD_GET="NB-IoT CocoCloud: Receive Data";i.Msg.NBIOT_HTTP_CONTENTTYPE="Content Type";i.Msg.NBIOT_HTTP_DATA="数据名称";i.Msg.NBIOT_HTTP_IFTTT_APIKEY="IFTTT API Key";i.Msg.NBIOT_HTTP_IFTTT_EVENT="IFTTT项目名称";i.Msg.NBIOT_HTTP_IFTTT_TITLE="NB-IoT 连接IFTTT:发送数据";i.Msg.NBIOT_HTTP_THINGSPEAK_APIKEY="事件API密匙";i.Msg.NBIOT_HTTP_THINGSPEAK_TITLE="NB-IoT 连接Thingspeak:发送数据";i.Msg.NBIOT_HTTP_TITLE="NB-IoT 连接CocoCloud:发送数据";i.Msg.NBIOT_IS_POWERON="NB-IoT 模块启动成功";i.Msg.NBIOT_NETWORK_CONNECTED="网络连接成功";i.Msg.NBIOT_NETWORK_IP="获取 NB-IoT 模块 IP 地址";i.Msg.NBIOT_SETUP="NB-IoT 通信初始化";i.Msg.NEW_INSTANCE="New instance...";i.Msg.NEW_INSTANCE_TITLE="New instance name:";i.Msg.NEW_VARIABLE="新变量...";i.Msg.NEW_VARIABLE_TITLE="新变量的名称:";i.Msg.NRFMODULE_GET_RECEIVED_DATA="获取 nRF 模块收到的数据";i.Msg.NRFMODULE_RECEIVING_DATA_TEXT="nRF 模块开始接收数据";i.Msg.NRFMODULE_SEND_DATA_DATA_TEXT="数据内容:";i.Msg.NRFMODULE_SEND_DATA_TITLE="nRF 模块发送数据";i.Msg.NRFMODULE_SETUP_CE_TEXT="CE 引脚连接:";i.Msg.NRFMODULE_SETUP_CSN_TEXT="CSN 引脚连接:";i.Msg.NRFMODULE_SETUP_SET_ADDRESS="设定通信地址";i.Msg.NRFMODULE_SETUP_TITLE="nRF24L01 通信模块初始化";i.Msg.OLCD_CENTER_POS="圆心坐标";i.Msg.OLCD_SCALE="比例";i.Msg.OLCD_WT="文字换行";i.Msg.OLCD_BW="边框宽度";i.Msg.OLCD_SET_POS="设置坐标";i.Msg.OLCD_CIRCLE="圆形";i.Msg.OLCD_CLEAR="清除";i.Msg.OLCD_COLOR="颜色";i.Msg.OLCD_COORDINATE="起始点坐标";i.Msg.OLCD_DRAW="LCD 显示:画";i.Msg.OLCD_FALSE="否";i.Msg.OLCD_VLINE="垂直";i.Msg.OLCD_HLINE="水平";i.Msg.OLCD_LENGTHIS="长度是";i.Msg.OLCD_FULLCIRCLE="全圆";i.Msg.OLCD_CIRCLE="圆圈";i.Msg.OLCD_FULL="实心";i.Msg.OLCD_HEIGHT="高";i.Msg.OLCD_LINE="线";i.Msg.OLCD_SCREEN="屏幕";i.Msg.OLCD_LINE_END="到";i.Msg.OLCD_LINE_START="从";i.Msg.OLCD_POINT="点";i.Msg.OLCD_POSITION="位置";i.Msg.OLCD_RADIUS="设置半径为";i.Msg.OLCD_RECTANGLE="矩形";i.Msg.OLCD_SETROTATION="将屏幕旋转";i.Msg.OLCD_SETROTATION_DEGREE="度";i.Msg.OLCD_SETUP="OLCD屏幕设置";i.Msg.OLCD_SIZE="尺寸";i.Msg.OLCD_STROKED="空心";i.Msg.OLCD_TEXT="文本";i.Msg.OLCD_TEXTNEWLINE="换行";i.Msg.OLCD_TRIANGLE="三角形";i.Msg.OLCD_TRUE="是";i.Msg.OLCD_WIDTH="宽";i.Msg.ORDINAL_NUMBER_SUFFIX="空白";i.Msg.PROCEDURES_ALLOW_STATEMENTS="允许声明";i.Msg.PROCEDURES_BEFORE_PARAMS="与:";i.Msg.PROCEDURES_CALLNORETURN_HELPURL="https://zh.wikipedia.org/wiki/子程序";i.Msg.PROCEDURES_CALLNORETURN_TOOLTIP='运行用户定义的函数"%1"。';i.Msg.PROCEDURES_CALLRETURN_HELPURL="https://zh.wikipedia.org/wiki/子程序";i.Msg.PROCEDURES_CALLRETURN_TOOLTIP='运行用户定义的函数"%1",并使用它的输出值。';i.Msg.PROCEDURES_CALL_BEFORE_PARAMS="与:";i.Msg.PROCEDURES_CREATE_DO='创建"%1"';i.Msg.PROCEDURES_DEFNORETURN_COMMENT="描述该功能...";i.Msg.PROCEDURES_DEFNORETURN_DO="执行";i.Msg.PROCEDURES_DEFNORETURN_HELPURL="https://zh.wikipedia.org/wiki/子程序";i.Msg.PROCEDURES_DEFNORETURN_PROCEDURE="func1";i.Msg.PROCEDURES_DEFNORETURN_TITLE="定义";i.Msg.PROCEDURES_DEFNORETURN_TOOLTIP="创建一个不带输出值的函数。";i.Msg.PROCEDURES_DEFRETURN_HELPURL="https://zh.wikipedia.org/wiki/子程序";i.Msg.PROCEDURES_DEFRETURN_RETURN="返回";i.Msg.PROCEDURES_DEFRETURN_TOOLTIP="创建一个有输出值的函数。";i.Msg.PROCEDURES_DEF_DUPLICATE_WARNING="警告: 此函数具有重复参数。";i.Msg.PROCEDURES_HIGHLIGHT_DEF="突出显示函数定义";i.Msg.PROCEDURES_IFRETURN_HELPURL="http://c2.com/cgi/wiki?GuardClause";i.Msg.PROCEDURES_IFRETURN_TOOLTIP="如果值为真,则返回第二个值。";i.Msg.PROCEDURES_IFRETURN_WARNING="警告: 仅在定义函数内可使用此块。";i.Msg.PROCEDURES_MUTATORARG_TITLE="输入名称:";i.Msg.PROCEDURES_MUTATORARG_TOOLTIP="添加函数输入。";i.Msg.PROCEDURES_MUTATORCONTAINER_TITLE="输入";i.Msg.PROCEDURES_MUTATORCONTAINER_TOOLTIP="添加、删除或重新排此函数的输入。";i.Msg.PULSESENSOR_GETBPM="读取心率值";i.Msg.PULSESENSOR_HEARTBEAT_PRINT="在串口摄像头中打印心率原始数据";i.Msg.PULSESENSOR_HEARTBEAT_WHEN="当心率跳动时";i.Msg.PULSESENSOR_HEARTBEAT_WHENNO="当心率未跳动时";i.Msg.PULSESENSOR_SETUP="心率传感器设置";i.Msg.PULSESENSOR_SETUP_1="设置传感器的接口为";i.Msg.READ_B="读取蓝";i.Msg.READ_G="读取绿";i.Msg.READ_R="读取红";i.Msg.RED="红";i.Msg.REDO="重做";i.Msg.REMOVE_COMMENT="删除注释";i.Msg.RENAME_INSTANCE="Rename instance...";i.Msg.RENAME_INSTANCE_TITLE="Rename all '%1' instances to:";i.Msg.RENAME_VARIABLE="重命名变量...";i.Msg.RENAME_VARIABLE_TITLE='将所有"%1"变量重命名为:';i.Msg.REQUEST_DATA_CLOUD="云端数据";i.Msg.REQUEST_DATA_STRING="字符串";i.Msg.RFID_READID="读取卡片ID";i.Msg.RFID_SETUP="RFID初始化";i.Msg.ROBOT_SETMOVE_MOVEMENT="设置双足的动作";i.Msg.ROBOT_SETMOVE_MOVEMENT_BACKYARD="向后退";i.Msg.ROBOT_SETMOVE_MOVEMENT_GOINGUP="上下蹲";i.Msg.ROBOT_SETMOVE_MOVEMENT_KICKLEFT="左踢脚";i.Msg.ROBOT_SETMOVE_MOVEMENT_KICKRIGHT="右踢脚";i.Msg.ROBOT_SETMOVE_MOVEMENT_MOONWALKLEFT="往左月球漫步";i.Msg.ROBOT_SETMOVE_MOVEMENT_MOONWALKRIGHT="往右月球漫步";i.Msg.ROBOT_SETMOVE_MOVEMENT_RUN="向前跑";i.Msg.ROBOT_SETMOVE_MOVEMENT_SWING="摇摆舞";i.Msg.ROBOT_SETMOVE_MOVEMENT_TURNLEFT="原地左转";i.Msg.ROBOT_SETMOVE_MOVEMENT_TURNRIGHT="原地右转";i.Msg.ROBOT_SETMOVE_MOVEMENT_WALK="向前走";i.Msg.ROBOT_SETMOVE_TEMPO="在速度为";i.Msg.ROBOT_SETUP="双足行走机器人设置";i.Msg.ROBOT_SETUP_SETRLPIN="和左脚接口";i.Msg.ROBOT_SETUP_SETRRPIN="设置右脚接口";i.Msg.ROBOT_SETUP_SETYLPIN="和左膝接口";i.Msg.ROBOT_SETUP_SETYRPIN="设置右膝接口";i.Msg.RTC_DAY="日";i.Msg.RTC_GETDATE="获取当前日期";i.Msg.RTC_GETTIME="获取当前时间";i.Msg.RTC_GETWEEK="获取当前周几";i.Msg.RTC_setDATE="设置当前日期";i.Msg.RTC_setTIME="设置当前时间";i.Msg.RTC_setWEEK="设置当前为周";i.Msg.RTC_WEI="为";i.Msg.RTC_getDateTime="获取时间(年,月,日,星期,时,分,秒)";i.Msg.RTC_HOUR="时";i.Msg.RTC_MINUTE="分";i.Msg.RTC_MONTH="月";i.Msg.RTC_SECOND="秒";i.Msg.RTC_SETDATE="日期";i.Msg.RTC_SETDATETIME="设置日期时间周几";i.Msg.RTC_SETTIME="时钟";i.Msg.RTC_SETUP="RTC初始化设置";i.Msg.RTC_SETWEEK="周几";i.Msg.RTC_WEEK="周";i.Msg.RTC_YEAR="年";i.Msg.SONAR="超声波";i.Msg.SONAR_READ_DIST="读取距离从";i.Msg.SONAR_SETUP="设置";i.Msg.SONAR_SETUP_ECHOPIN="和 Echo";i.Msg.SONAR_SETUP_MAXDIST="设置最大距离";i.Msg.SONAR_SETUP_TRIGPIN="设置 Trig";i.Msg.Saturday="周六";i.Msg.Sunday="周日";i.Msg.DEEP_LEARING="深度学习机器";i.Msg.Emotion_recognition="情绪识别";i.Msg.Gesture_recognition="手势识别";i.Msg.Object_recognition="物体识别";i.Msg.guesswork_recognition="猜拳手势识别";i.Msg.Posture_recognition="姿态识别";i.Msg.Course_people="慧眼识人";i.Msg.Voice_recognition="语音识别";i.Msg.TEXT_APPEND_APPENDTEXT="追加文本";i.Msg.TEXT_APPEND_HELPURL="https://github.com/google/blockly/wiki/Text#text-modification";i.Msg.TEXT_APPEND_TO="在";i.Msg.TEXT_APPEND_TOOLTIP='将一些文本追加到变量"%1"。';i.Msg.TEXT_CHANGECASE_HELPURL="https://github.com/google/blockly/wiki/Text#adjusting-text-case";i.Msg.TEXT_CHANGECASE_OPERATOR_LOWERCASE="为小写";i.Msg.TEXT_CHANGECASE_OPERATOR_TITLECASE="为首字母大写";i.Msg.TEXT_CHANGECASE_OPERATOR_UPPERCASE="为大写";i.Msg.TEXT_CHANGECASE_TOOLTIP="使用不同的大小写复制这段文字。";i.Msg.TEXT_CHARAT_FIRST="获得第一个字符";i.Msg.TEXT_CHARAT_FROM_END="获得倒数第#个字符";i.Msg.TEXT_CHARAT_FROM_START="获得字符#";i.Msg.TEXT_CHARAT_HELPURL="https://github.com/google/blockly/wiki/Text#extracting-text";i.Msg.TEXT_CHARAT_INPUT_INTEXT="于文本中";i.Msg.TEXT_CHARAT_LAST="获得最后一个字符";i.Msg.TEXT_CHARAT_RANDOM="获取随机的字母";i.Msg.TEXT_CHARAT_TAIL="";i.Msg.TEXT_CHARAT_TOOLTIP="返回位于指定位置的字母。";i.Msg.TEXT_CREATE_JOIN_ITEM_TOOLTIP="将一个项添加到文本中。";i.Msg.TEXT_CREATE_JOIN_TITLE_JOIN="加入";i.Msg.TEXT_CREATE_JOIN_TOOLTIP="添加、移除或重新排列各节来重新配置这个文本块。";i.Msg.TEXT_GET_SUBSTRING_END_FROM_END="到倒数第#个字符";i.Msg.TEXT_GET_SUBSTRING_END_FROM_START="到字符#";i.Msg.TEXT_GET_SUBSTRING_END_LAST="到最后一个字符";i.Msg.TEXT_GET_SUBSTRING_HELPURL="https://github.com/google/blockly/wiki/Text#extracting-a-region-of-text";i.Msg.TEXT_GET_SUBSTRING_INPUT_IN_TEXT="自文本";i.Msg.TEXT_GET_SUBSTRING_START_FIRST="取得一段字符串自第一个字符";i.Msg.TEXT_GET_SUBSTRING_START_FROM_END="取得一段字符串自#到末尾";i.Msg.TEXT_GET_SUBSTRING_START_FROM_START="取得一段字符串自#";i.Msg.TEXT_GET_SUBSTRING_TAIL="";i.Msg.TEXT_GET_SUBSTRING_TOOLTIP="返回指定的部分文本。";i.Msg.TEXT_INDEXOF_HELPURL="https://github.com/google/blockly/wiki/Text#finding-text";i.Msg.TEXT_INDEXOF_INPUT_INTEXT="自文本";i.Msg.TEXT_INDEXOF_OPERATOR_FIRST="寻找第一个出现的文本";i.Msg.TEXT_INDEXOF_OPERATOR_LAST="寻找最后一个出现的文本";i.Msg.TEXT_INDEXOF_TAIL="空白";i.Msg.TEXT_INDEXOF_TOOLTIP="返回在第二个字符串中的第一/最后一个匹配项的索引值。如果未找到则返回 0。";i.Msg.TEXT_ISEMPTY_HELPURL="https://github.com/google/blockly/wiki/Text#checking-for-empty-text";i.Msg.TEXT_ISEMPTY_TITLE="%1是空的";i.Msg.TEXT_ISEMPTY_TOOLTIP="如果提供的文本为空,则返回真。";i.Msg.TEXT_JOIN_HELPURL="https://github.com/google/blockly/wiki/Text#text-creation";i.Msg.TEXT_JOIN_TITLE_CREATEWITH="建立字符串使用";i.Msg.TEXT_JOIN_TOOLTIP="通过串起任意数量的项以建立一段文字。";i.Msg.TEXT_LENGTH_HELPURL="https://github.com/google/blockly/wiki/Text#text-modification";i.Msg.TEXT_LENGTH_TITLE="%1的长度";i.Msg.TEXT_LENGTH_TOOLTIP="返回提供文本的字母数(包括空格)。";i.Msg.TEXT_PRINT_HELPURL="https://github.com/google/blockly/wiki/Text#printing-text";i.Msg.TEXT_PRINT_TITLE="串口打印%1";i.Msg.TEXT_PRINT_TOOLTIP="打印指定的文字、数字或其他值。";i.Msg.TEXT_PROMPT_HELPURL="https://github.com/google/blockly/wiki/Text#getting-input-from-the-user";i.Msg.TEXT_PROMPT_TOOLTIP_NUMBER="提示用户输入数字。";i.Msg.TEXT_PROMPT_TOOLTIP_TEXT="提示用户输入一些文本。";i.Msg.TEXT_PROMPT_TYPE_NUMBER="输入数字并显示提示消息";i.Msg.TEXT_PROMPT_TYPE_TEXT="输入数字并显示提示消息";i.Msg.TEXT_TEXT_HELPURL="https://zh.wikipedia.org/wiki/字符串";i.Msg.TEXT_TEXT_TOOLTIP="一个字母、单词或一行文本。";i.Msg.TEXT_TRIM_HELPURL="https://github.com/google/blockly/wiki/Text#trimming-removing-spaces";i.Msg.TEXT_TRIM_OPERATOR_BOTH="消除两侧空格";i.Msg.TEXT_TRIM_OPERATOR_LEFT="消除左侧空格";i.Msg.TEXT_TRIM_OPERATOR_RIGHT="消除右侧空格";i.Msg.TEXT_TRIM_TOOLTIP="复制这段文字的同时删除两端多余的空格。";i.Msg.THINGSPEAK_CREATE_WITH_CONTAINER_TITLE_ADD="Field";i.Msg.THINGSPEAK_CREATE_WITH_INPUT_WITH="FIELD";i.Msg.THINGSPEAK_CREATE_WITH_ITEM_TITLE="value";i.Msg.TODAY="今天";i.Msg.TOUCH_AT="触摸传感接口 ";i.Msg.TOUCH_CASE="按键";i.Msg.TOUCH_DEFAULT="默认";i.Msg.TOUCH_DO="执行";i.Msg.TOUCH_LOOSE="当松开时";i.Msg.TOUCH_SETUP="触摸感应设置";i.Msg.TOUCH_SWITCH="⌘ 当触碰传感接口";i.Msg.TOUCH_THEN_LOOSE_SWITCH="⌘ 当松开被触碰的接口";i.Msg.Thursday="周四";i.Msg.Tuesday="周二";i.Msg.UNDO="撤销";i.Msg.VARIABLES_DEFAULT_NAME="item";i.Msg.VARIABLES_GET_CREATE_SET='创建"设定%1"';i.Msg.VARIABLES_GET_HELPURL="https://github.com/google/blockly/wiki/Variables#get";i.Msg.VARIABLES_GET_TOOLTIP="返回此变量的值。";i.Msg.VARIABLES_SET="赋值 %1 为 %2";i.Msg.VARIABLES_SET_CREATE_GET='创建"%1"';i.Msg.VARIABLES_SET_HELPURL="https://github.com/google/blockly/wiki/Variables#set";i.Msg.VARIABLES_SET_TOOLTIP="设置此变量,以使它和输入值相等。";i.Msg.WATERTEMP_GET_TEMP="获取水温数值 (ºC)";i.Msg.WATERTEMP_SETUP_ATTACHED_PIN="数字引脚设定:";i.Msg.WATERTEMP_SETUP_BLOCKNAME="水温传感器";i.Msg.WATERTEMP_SETUP_SENSORTYPE="传感器型号:";i.Msg.WATERTEMP_SETUP_SETUP="初始化";i.Msg.WEBPAGE_BUTTONCTRL_SETPATH=" set path to:";i.Msg.WEBPAGE_BUTTONCTRL_TEXT_BOTTOM="设置底部按钮为:";i.Msg.WEBPAGE_BUTTONCTRL_TEXT_CENTER="设置中间按钮为:";i.Msg.WEBPAGE_BUTTONCTRL_TEXT_LEFT="设置左侧按钮为:";i.Msg.WEBPAGE_BUTTONCTRL_TEXT_RIGHT="设置右侧按钮为:";i.Msg.WEBPAGE_BUTTONCTRL_TEXT_TOP="设置顶部按钮为:";i.Msg.WEBPAGE_BUTTONCTRL_TITLE="网页控制面板: 按键控制器";i.Msg.WEBPAGE_BUTTON_NAME="按钮名称";i.Msg.WEBPAGE_BUTTON_ROUTER="设置请求路径为:";i.Msg.WEBPAGE_BUTTON_TITLE="网页控制面板: 按钮";i.Msg.WEBPAGE_COLORPICKER_PATH="设置请求路径为:";i.Msg.WEBPAGE_COLORPICKER_SUBTITLE="*注意: 传输的颜色数据为 RGB 颜色制式";i.Msg.WEBPAGE_COLORPICKER_TITLE="网页控制面板: 取色器控件";i.Msg.WEBPAGE_LABLE="标签名称";i.Msg.WEBPAGE_LABLE_TITLE="网页控制面板: 文本";i.Msg.WIFICLIENT_HTTP_GET_DATA="获取数据并存到";i.Msg.WIFICLIENT_HTTP_GET_URL="发送GET请求到";i.Msg.WIFICLIENT_HTTP_POST_DATA="数据";i.Msg.WIFICLIENT_HTTP_POST_TYPE="类型为";i.Msg.WIFICLIENT_HTTP_POST_URL="发送POST请求到";i.Msg.WIFICLIENT_HTTP_POST_VAR="创建列表";i.Msg.WIFICLIENT_HTTP_PUT_DATA="要发送内容";i.Msg.WIFICLIENT_HTTP_PUT_TYPE="类型为";i.Msg.WIFICLIENT_HTTP_PUT_URL="发送PUT请求到";i.Msg.WIFICLIENT_HTTP_RESPONSE="获得HTTP响应";i.Msg.WIFICLIENT_HTTP_SETUP="客戶端初始化";i.Msg.WIFICLIENT_RECEIVE_GET="从";i.Msg.WIFICLIENT_RECEIVE_GET_LINE2="获取第";i.Msg.WIFICLIENT_RECEIVE_GET_LINE3="位的数据,类型为";i.Msg.WIFIEASYMODE_COCOCLOUD_END="值";i.Msg.WIFIEASYMODE_COCOCLOUD_GETDATA="获取数据并将其存到";i.Msg.WIFIEASYMODE_COCOCLOUD_KEY="从";i.Msg.WIFIEASYMODE_COCOCLOUD_KEY1="获取云端项目中";i.Msg.WIFIEASYMODE_COCOCLOUD_KEY2="属性名为";i.Msg.WIFIEASYMODE_COCOCLOUD_SENDDATA="发送数据:";i.Msg.WIFIEASYMODE_COCOCLOUD_SETVAR="变量";i.Msg.WIFIEASYMODE_COCOCLOUD_SETVAR_FROM="";i.Msg.WIFIEASYMODE_COCOCLOUD_TYPE="的";i.Msg.WIFIEASYMODE_COCOClOUD_DATA_NAME="数据名:";i.Msg.WIFIEASYMODE_COCOClOUD_EVENT="Cloud Event API Key :";i.Msg.WIFIEASYMODE_IFTTT_EVENT="IFTTT项目名称:";i.Msg.WIFIEASYMODE_IFTTT_FETCH="获取数据";i.Msg.WIFIEASYMODE_IFTTT_KEY="IFTTT Key:";i.Msg.WIFIEASYMODE_IFTTT_POST="发送数据";i.Msg.WIFIEASYMODE_IFTTT_SENDDATA="发送数据:";i.Msg.WIFIEASYMODE_IFTTT_TYPE="Webhook类型:";i.Msg.WIFIEASYMODE_NETWORK_PW="密码:";i.Msg.WIFIEASYMODE_NETWORK_SSID="SSID:";i.Msg.WIFIEASYMODE_NETWORK_TITLE="连接Wi-Fi";i.Msg.WIFIEASYMODE_THINGSPEAK_APIKEY="Channel API Key:";i.Msg.WIFIEASYMODE_THINGSPEAK_SENDDATA="发送数据:";i.Msg.WIFIEASYMODE_TRANSFER_RECEIVE="从主控获取数据";i.Msg.WIFIEASYMODE_TRANSFER_RECEIVE_GET="从";i.Msg.WIFIEASYMODE_TRANSFER_RECEIVE_GET_LINE2="获取第";i.Msg.WIFIEASYMODE_TRANSFER_RECEIVE_GET_LINE3="位的数据,并设置类型为";i.Msg.WIFIEASYMODE_TRANSFER_RECEIVE_GET_LINE4="";i.Msg.WIFIEASYMODE_TRANSFER_RECEIVE_LINE2="并存到";i.Msg.WIFIEASYMODE_TRANSFER_RECEIVE_LINE3="长度为 ";i.Msg.WIFIEASYMODE_TRANSFER_SEND="创建列表";i.Msg.WIFIEASYMODE_TRANSFER_SEND_LINE2="发送数据到主控上";i.Msg.WIFIEASYMODE_TRANSFER_SEND_VALUE="Data";i.Msg.WIFINETWORK_AP_PW="密码:";i.Msg.WIFINETWORK_AP_SETUP="建立Wi-Fi热点";i.Msg.WIFINETWORK_AP_SSID="SSID:";i.Msg.WIFINETWORK_CONNECT="连接Wi-Fi";i.Msg.WIFINETWORK_CONNECT_PW="密码:";i.Msg.WIFINETWORK_CONNECT_SSID="SSID:";i.Msg.WIFINETWORK_GETGATEWAYIP="获取网关IP";i.Msg.WIFINETWORK_GETLOCALIP="获取本地IP";i.Msg.WIFINETWORK_GETMACADDR="获取MAC地址";i.Msg.WIFINETWORK_GETSTATIONNUM="获取连接设备数量";i.Msg.WIFINETWORK_ISCONNECTED="是否成功连接";i.Msg.WIFINETWORK_PW_WARN="密码设置应该超过8位";i.Msg.WIFISERVER_HANDLECLIENT="handleclient";i.Msg.WIFISERVER_LIST="创建列表";i.Msg.WIFISERVER_RECEIVE="服务器接收数据";i.Msg.WIFISERVER_RECEIVE_GET="从";i.Msg.WIFISERVER_RECEIVE_GET_INT="数字";i.Msg.WIFISERVER_RECEIVE_GET_LINE2="获取第";i.Msg.WIFISERVER_RECEIVE_GET_LINE3="位的值,类型为";i.Msg.WIFISERVER_RECEIVE_GET_STRING="字符串";i.Msg.WIFISERVER_RECEIVE_LENGTH="长度为";i.Msg.WIFISERVER_RECEIVE_TO="并存储到";i.Msg.WIFISERVER_SEND="服务器发送数据";i.Msg.WIFISERVER_SERVERSEND="服务器 推送 ";i.Msg.WIFISERVER_SERVERSEND_CODE="HTTP 状态码";i.Msg.WIFISERVER_SERVERSEND_CONTENT="内容";i.Msg.WIFISERVER_SERVERSEND_TYPE="类型";i.Msg.WIFISERVER_SETROOTPAGE="设置主页";i.Msg.WIFISERVER_SETROUTER="服务器路由";i.Msg.WIFISERVER_SETROUTER_ONNOTFOUND="设置服务器路由当不存在URL时, 处理";i.Msg.WIFISERVER_SETROUTER_SET="设置路径";i.Msg.WIFISERVER_SETROUTER_WITH="响应";i.Msg.WIFISERVER_SETUP="服务器初始化";i.Msg.WIFISERVER_WAIT_CONNECTION="等待连接";i.Msg.WIFIWEBSERVICES_IFTTT="Web服务 IFTTT";i.Msg.WIFIWEBSERVICES_IFTTT_SET_EVENT="Event";i.Msg.WIFIWEBSERVICES_IFTTT_SET_KEY="Api-Key ";i.Msg.WIFIWEBSERVICES_IFTTT_SET_KEY1="Key1";i.Msg.WIFIWEBSERVICES_IFTTT_SET_KEY2="Key2";i.Msg.WIFIWEBSERVICES_IFTTT_SET_KEY3="Key3";i.Msg.WIFIWEBSERVICES_IFTTT_SET_VALUE1="Value1";i.Msg.WIFIWEBSERVICES_IFTTT_SET_VALUE2="Value2";i.Msg.WIFIWEBSERVICES_IFTTT_SET_VALUE3="Value3";i.Msg.WIFIWEBSERVICES_THINKSPEAK="Web服务 Thinkspeak";i.Msg.WIFIWEBSERVICES_THINKSPEAK_SET_FIELD1="Field";i.Msg.WIFIWEBSERVICES_THINKSPEAK_SET_KEY="Api-key";i.Msg.WIFIWEBSERVICES_THINKSPEAK_SET_VALUE="Value";i.Msg.WIFI_RECEIVEMSG="接收数据至";i.Msg.WIFI_RECEIVEMSG_ISSUCCESS="接收数据成功";i.Msg.WIFI_RECEIVEMSG_LENGTH=", 数据长度 ";i.Msg.WIFI_SENDMSG="发送数据 ";i.Msg.WIFI_SENDMSG_LENGTH=", 数据长度 ";i.Msg.WIFI_SETUP="数据传输初始化";i.Msg.Wednesday="周三";i.Msg.PROCEDURES_DEFRETURN_TITLE=i.Msg.PROCEDURES_DEFNORETURN_TITLE;i.Msg.CONTROLS_IF_IF_TITLE_IF=i.Msg.CONTROLS_IF_MSG_IF;i.Msg.CONTROLS_WHILEUNTIL_INPUT_DO=i.Msg.CONTROLS_REPEAT_INPUT_DO;i.Msg.CONTROLS_IF_MSG_THEN=i.Msg.CONTROLS_REPEAT_INPUT_DO;i.Msg.CONTROLS_IF_ELSE_TITLE_ELSE=i.Msg.CONTROLS_IF_MSG_ELSE;i.Msg.PROCEDURES_DEFRETURN_PROCEDURE=i.Msg.PROCEDURES_DEFNORETURN_PROCEDURE;i.Msg.LISTS_GET_SUBLIST_INPUT_IN_LIST=i.Msg.LISTS_INLIST;i.Msg.LISTS_GET_INDEX_INPUT_IN_LIST=i.Msg.LISTS_INLIST;i.Msg.MATH_CHANGE_TITLE_ITEM=i.Msg.VARIABLES_DEFAULT_NAME;i.Msg.PROCEDURES_DEFRETURN_DO=i.Msg.PROCEDURES_DEFNORETURN_DO;i.Msg.CONTROLS_IF_ELSEIF_TITLE_ELSEIF=i.Msg.CONTROLS_IF_MSG_ELSEIF;i.Msg.LISTS_GET_INDEX_HELPURL=i.Msg.LISTS_INDEX_OF_HELPURL;i.Msg.CONTROLS_FOREACH_INPUT_DO=i.Msg.CONTROLS_REPEAT_INPUT_DO;i.Msg.LISTS_SET_INDEX_INPUT_IN_LIST=i.Msg.LISTS_INLIST;i.Msg.CONTROLS_FOR_INPUT_DO=i.Msg.CONTROLS_REPEAT_INPUT_DO;i.Msg.LISTS_CREATE_WITH_ITEM_TITLE=i.Msg.VARIABLES_DEFAULT_NAME;i.Msg.TEXT_APPEND_VARIABLE=i.Msg.VARIABLES_DEFAULT_NAME;i.Msg.TEXT_CREATE_JOIN_ITEM_TITLE_ITEM=i.Msg.VARIABLES_DEFAULT_NAME;i.Msg.LISTS_INDEX_OF_INPUT_IN_LIST=i.Msg.LISTS_INLIST;i.Msg.PROCEDURES_DEFRETURN_COMMENT=i.Msg.PROCEDURES_DEFNORETURN_COMMENT;i.Msg.ADD_COMMENT="添加注释";i.Msg.AIYBOARD_AIY_BOARD="AIY Board";i.Msg.AIYBOARD_BUTTON_FROM="from";i.Msg.AIYBOARD_BUTTON_WHEN="when button";i.Msg.AIYBOARD_FROM="from aiy.board";i.Msg.AIYBOARD_IMPORT="import";i.Msg.AIYBOARD_LED_STATE="get LED state of";i.Msg.AIYBOARD_LED_STATUS="get LED status of";i.Msg.CAMERA_CAMERA="camera";i.Msg.CAMERA_DO="Do";i.Msg.CAMERA_FPS="fps";i.Msg.CAMERA_FRAME_RATE="Frame Rete:";i.Msg.CAMERA_IMPORT="import piCamera";i.Msg.CAMERA_RESOLUTION="Resolution";i.Msg.CAMERA_SENSOR_MODE="Sensor Mode:";i.Msg.CAMERA_SET_BOUNDING="Set bounding box:";i.Msg.CAMERA_USE_AS="Use PiCamera as";i.Msg.CHANGE_VALUE_TITLE="更改值:";i.Msg.CLEAN_UP="整理块";i.Msg.COLLAPSE_ALL="折叠块";i.Msg.COLLAPSE_BLOCK="折叠块";i.Msg.COLOUR_BLEND_COLOUR1="颜色1";i.Msg.COLOUR_BLEND_COLOUR2="颜色2";i.Msg.COLOUR_BLEND_HELPURL="http://meyerweb.com/eric/tools/color-blend/";i.Msg.COLOUR_BLEND_RATIO="比例";i.Msg.COLOUR_BLEND_TITLE="混合";i.Msg.COLOUR_BLEND_TOOLTIP="用一个给定的比率(0.0-1.0)混合两种颜色。";i.Msg.COLOUR_PICKER_HELPURL="https://zh.wikipedia.org/wiki/颜色";i.Msg.COLOUR_PICKER_TOOLTIP="从调色板中选择一种颜色。";i.Msg.COLOUR_RANDOM_HELPURL="http://randomcolour.com";i.Msg.COLOUR_RANDOM_TITLE="随机颜色";i.Msg.COLOUR_RANDOM_TOOLTIP="随机选择一种颜色。";i.Msg.COLOUR_RGB_BLUE="蓝色";i.Msg.COLOUR_RGB_GREEN="绿色";i.Msg.COLOUR_RGB_HELPURL="http://www.december.com/html/spec/colorper.html";i.Msg.COLOUR_RGB_RED="红色";i.Msg.COLOUR_RGB_TITLE="颜色";i.Msg.COLOUR_RGB_TOOLTIP="通过指定红色、绿色和蓝色的量创建一种颜色。所有的值必须介于0和100之间。";i.Msg.CONTROLS_FLOW_STATEMENTS_HELPURL="https://github.com/google/blockly/wiki/Loops#loop-termination-blocks";i.Msg.CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK="中断循环";i.Msg.CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE="继续下一次循环";i.Msg.CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK="中断包含它的循环。";i.Msg.CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE="跳过这个循环的剩余部分,并继续下一次迭代。";i.Msg.CONTROLS_FLOW_STATEMENTS_WARNING="警告:此块仅可用于在一个循环内。";i.Msg.CONTROLS_FOREACH_HELPURL="https://github.com/google/blockly/wiki/Loops#for-each";i.Msg.CONTROLS_FOREACH_TITLE="在列表 %2 中以 %1 遍历每个项目";i.Msg.CONTROLS_FOREACH_TOOLTIP='遍历每个列表中的项目,将变量"%1"设定到该项中,然后执行某些语句。';i.Msg.CONTROLS_FOR_HELPURL="https://github.com/google/blockly/wiki/Loops#count-with";i.Msg.CONTROLS_FOR_TITLE="使用 %1 从范围 %2 到 %3 每隔 %4";i.Msg.CONTROLS_FOR_TOOLTIP='从起始数到结尾数中取出变量"%1"的值,按指定的时间间隔,执行指定的块。';i.Msg.CONTROLS_IF_ELSEIF_TOOLTIP="在if语句块中增加一个条件。";i.Msg.CONTROLS_IF_ELSE_TOOLTIP="添加一个最终的,包括所有情况的节到if块中。";i.Msg.CONTROLS_IF_HELPURL="https://github.com/google/blockly/wiki/IfElse";i.Msg.CONTROLS_IF_IF_TOOLTIP='增加、删除或重新排列各节来重新配置"if"块。';i.Msg.CONTROLS_IF_MSG_ELSE="否则";i.Msg.CONTROLS_IF_MSG_ELSEIF="否则如果";i.Msg.CONTROLS_IF_MSG_IF="如果";i.Msg.CONTROLS_IF_TOOLTIP_1="如果值为真,执行一些语句。";i.Msg.CONTROLS_IF_TOOLTIP_2="如果值为真,则执行第一块语句。否则,则执行第二块语句。";i.Msg.CONTROLS_IF_TOOLTIP_3="如果第一个值为真,则执行第一块的语句。否则,如果第二个值为真,则执行第二块的语句。";i.Msg.CONTROLS_IF_TOOLTIP_4="如果第一个值为真,则执行第一块对语句。否则,如果第二个值为真,则执行语句的第二块。如果没有值为真,则执行最后一块的语句。";i.Msg.CONTROLS_REPEAT_HELPURL="https://zh.wikipedia.org/wiki/For循环";i.Msg.CONTROLS_REPEAT_INPUT_DO="执行";i.Msg.CONTROLS_REPEAT_TITLE="重复 %1 次";i.Msg.CONTROLS_REPEAT_TOOLTIP="多次执行一些语句。";i.Msg.CONTROLS_WHILEUNTIL_HELPURL="https://github.com/google/blockly/wiki/Loops#repeat";i.Msg.CONTROLS_WHILEUNTIL_OPERATOR_UNTIL="重复直到";i.Msg.CONTROLS_WHILEUNTIL_OPERATOR_WHILE="重复当";i.Msg.CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL="只要值为假,执行一些语句。";i.Msg.CONTROLS_WHILEUNTIL_TOOLTIP_WHILE="只要值为真,执行一些语句。";i.Msg.DELETE_ALL_BLOCKS="删除所有%1块吗?";i.Msg.DELETE_BLOCK="删除块";i.Msg.DELETE_VARIABLE='删除"%1"变量';i.Msg.DELETE_VARIABLE_CONFIRMATION='删除"%2"变量的%1种用途么?';i.Msg.DELETE_X_BLOCKS="删除 %1 块";i.Msg.DICTS_CREATE_EMPTY_TITLE="empty dictionary";i.Msg.DICTS_CREATE_WITH_CONTAINER_TITLE_ADD="Create Dictionary";i.Msg.DICTS_CREATE_WITH_CONTAINER_TOOLTIP="";i.Msg.DICTS_CREATE_WITH_INPUT_WITH="create dict with";i.Msg.DICTS_CREATE_WITH_ITEM_KEY="key";i.Msg.DICTS_CREATE_WITH_ITEM_MAPPING=":";i.Msg.DICTS_CREATE_WITH_ITEM_TITLE="key/value";i.Msg.DICTS_CREATE_WITH_ITEM_TOOLTIP="";i.Msg.DICTS_CREATE_WITH_TOOLTIP="";i.Msg.DICT_GET="get key";i.Msg.DICT_GET_TO="of";i.Msg.DISABLE_BLOCK="禁用块";i.Msg.DUPLICATE_BLOCK="复制";i.Msg.ENABLE_BLOCK="启用块";i.Msg.EXPAND_ALL="展开块";i.Msg.EXPAND_BLOCK="展开块";i.Msg.EXTERNAL_INPUTS="外部输入";i.Msg.HELP="帮助";i.Msg.INLINE_INPUTS="单行输入";i.Msg.LISTS_APPEND="append item";i.Msg.LISTS_APPEND_HELPURL="http://google.com";i.Msg.LISTS_APPEND_TO="to list";i.Msg.LISTS_APPEND_TOOLTIP="Append an element to a list";i.Msg.LISTS_CREATE_EMPTY_HELPURL="https://github.com/google/blockly/wiki/Lists#create-empty-list";i.Msg.LISTS_CREATE_EMPTY_TITLE="创建空列表";i.Msg.LISTS_CREATE_EMPTY_TOOLTIP="返回一个列表,长度为 0,不包含任何数据记录";i.Msg.LISTS_CREATE_WITH_CONTAINER_TITLE_ADD="列表";i.Msg.LISTS_CREATE_WITH_CONTAINER_TOOLTIP="增加、删除或重新排列各部分以此重新配置这个列表块。";i.Msg.LISTS_CREATE_WITH_HELPURL="https://github.com/google/blockly/wiki/Lists#create-list-with";i.Msg.LISTS_CREATE_WITH_INPUT_WITH="使用这些值建立列表";i.Msg.LISTS_CREATE_WITH_ITEM_TOOLTIP="将一个项添加到列表中。";i.Msg.LISTS_CREATE_WITH_TOOLTIP="建立一个具有任意数量项目的列表。";i.Msg.LISTS_GET_INDEX_FIRST="第一";i.Msg.LISTS_GET_INDEX_FROM_END="倒数第#";i.Msg.LISTS_GET_INDEX_FROM_START="#";i.Msg.LISTS_GET_INDEX_GET="获得";i.Msg.LISTS_GET_INDEX_GET_REMOVE="取出并移除";i.Msg.LISTS_GET_INDEX_LAST="最后";i.Msg.LISTS_GET_INDEX_RANDOM="随机";i.Msg.LISTS_GET_INDEX_REMOVE="移除";i.Msg.LISTS_GET_INDEX_TAIL="空白";i.Msg.LISTS_GET_INDEX_TOOLTIP_GET_FIRST="返回列表中的第一个项目。";i.Msg.LISTS_GET_INDEX_TOOLTIP_GET_FROM="返回在列表中的指定位置的项。";i.Msg.LISTS_GET_INDEX_TOOLTIP_GET_LAST="返回列表中的最后一项。";i.Msg.LISTS_GET_INDEX_TOOLTIP_GET_RANDOM="随机返回列表中的一个项目。";i.Msg.LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST="移除并返回列表中的第一个项目。";i.Msg.LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM="移除并返回列表中的指定位置的项。";i.Msg.LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST="移除并返回列表中的最后一个项目。";i.Msg.LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM="移除并返回列表中的一个随机项目中。";i.Msg.LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST="移除列表中的第一项";i.Msg.LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM="移除在列表中的指定位置的项。";i.Msg.LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST="移除列表中的最后一项";i.Msg.LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM="删除列表中的一个随机的项。";i.Msg.LISTS_GET_SUBLIST_END_FROM_END="到倒数第#";i.Msg.LISTS_GET_SUBLIST_END_FROM_START="到#";i.Msg.LISTS_GET_SUBLIST_END_LAST="到最后";i.Msg.LISTS_GET_SUBLIST_HELPURL="https://github.com/google/blockly/wiki/Lists#getting-a-sublist";i.Msg.LISTS_GET_SUBLIST_START_FIRST="从头获得子列表";i.Msg.LISTS_GET_SUBLIST_START_FROM_END="从倒数#取得子列表";i.Msg.LISTS_GET_SUBLIST_START_FROM_START="从#取得子列表";i.Msg.LISTS_GET_SUBLIST_TAIL="空白";i.Msg.LISTS_GET_SUBLIST_TOOLTIP="复制列表中指定的部分。";i.Msg.LISTS_INDEX_FROM_END_TOOLTIP="%1是最后一项。";i.Msg.LISTS_INDEX_FROM_START_TOOLTIP="%1是第一个项目。";i.Msg.LISTS_INDEX_OF_FIRST="找出第一个项出现";i.Msg.LISTS_INDEX_OF_HELPURL="https://github.com/google/blockly/wiki/Lists#getting-items-from-a-list";i.Msg.LISTS_INDEX_OF_LAST="找出最后一个项出现";i.Msg.LISTS_INDEX_OF_TOOLTIP="返回在列表中的第一/最后一个匹配项的索引值。如果找不到项目则返回%1。";i.Msg.LISTS_INLIST="在列表中";i.Msg.LISTS_ISEMPTY_HELPURL="https://github.com/google/blockly/wiki/Lists#is-empty";i.Msg.LISTS_ISEMPTY_TITLE="%1是空的";i.Msg.LISTS_ISEMPTY_TOOLTIP="如果改列表为空,则返回真。";i.Msg.LISTS_LENGTH_HELPURL="https://github.com/google/blockly/wiki/Lists#length-of";i.Msg.LISTS_LENGTH_TITLE="%1的长度";i.Msg.LISTS_LENGTH_TOOLTIP="返回列表的长度。";i.Msg.LISTS_REPEAT_HELPURL="https://github.com/google/blockly/wiki/Lists#create-list-with";i.Msg.LISTS_REPEAT_TITLE="建立列表使用项 %1 重复 %2 次";i.Msg.LISTS_REPEAT_TOOLTIP="建立包含指定重复次数的值的列表。";i.Msg.LISTS_SET_INDEX_HELPURL="https://github.com/google/blockly/wiki/Lists#in-list--set";i.Msg.LISTS_SET_INDEX_INPUT_TO="为";i.Msg.LISTS_SET_INDEX_INSERT="插入在";i.Msg.LISTS_SET_INDEX_SET="设置";i.Msg.LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST="在列表的起始处添加该项。";i.Msg.LISTS_SET_INDEX_TOOLTIP_INSERT_FROM="插入在列表中指定位置的项。";i.Msg.LISTS_SET_INDEX_TOOLTIP_INSERT_LAST="将该项追加到列表的末尾。";i.Msg.LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM="在列表中随机插入项。";i.Msg.LISTS_SET_INDEX_TOOLTIP_SET_FIRST="设置列表中的第一个项目。";i.Msg.LISTS_SET_INDEX_TOOLTIP_SET_FROM="设置在列表中指定位置的项。";i.Msg.LISTS_SET_INDEX_TOOLTIP_SET_LAST="设置列表中的最后一项。";i.Msg.LISTS_SET_INDEX_TOOLTIP_SET_RANDOM="设置列表中一个随机的项目。";i.Msg.LISTS_SORT_HELPURL="https://github.com/google/blockly/wiki/Lists#sorting-a-list";i.Msg.LISTS_SORT_ORDER_ASCENDING="升序";i.Msg.LISTS_SORT_ORDER_DESCENDING="降序";i.Msg.LISTS_SORT_TITLE="排序%1 %2 %3";i.Msg.LISTS_SORT_TOOLTIP="排序一个列表的拷贝。";i.Msg.LISTS_SORT_TYPE_IGNORECASE="按字母排序,忽略大小写";i.Msg.LISTS_SORT_TYPE_NUMERIC="按数字排序";i.Msg.LISTS_SORT_TYPE_TEXT="按字母排序";i.Msg.LISTS_SPLIT_HELPURL="https://github.com/google/blockly/wiki/Lists#splitting-strings-and-joining-lists";i.Msg.LISTS_SPLIT_LIST_FROM_TEXT="从文本制作列表";i.Msg.LISTS_SPLIT_TEXT_FROM_LIST="从列表拆出文本";i.Msg.LISTS_SPLIT_TOOLTIP_JOIN="加入文本列表至一个文本,由分隔符分隔。";i.Msg.LISTS_SPLIT_TOOLTIP_SPLIT="拆分文本到文本列表,按每个分隔符拆分。";i.Msg.LISTS_SPLIT_WITH_DELIMITER="用分隔符";i.Msg.LOGGING_CONF="Logging Basic config";i.Msg.LOGGING_CONFIG="logging config";i.Msg.LOGGING_CONFIG_LEVEL="level =";i.Msg.LOGGING_IMPORT="import logging";i.Msg.LOGGING_INFO="Logging info";i.Msg.LOGGING_SETUP="Logging Setup";i.Msg.LOGIC_BOOLEAN_FALSE="假";i.Msg.LOGIC_BOOLEAN_HELPURL="https://github.com/google/blockly/wiki/Logic#values";i.Msg.LOGIC_BOOLEAN_TOOLTIP="返回真或假。";i.Msg.LOGIC_BOOLEAN_TRUE="真";i.Msg.LOGIC_COMPARE_HELPURL="https://zh.wikipedia.org/wiki/不等";i.Msg.LOGIC_COMPARE_TOOLTIP_EQ="如果两个输入结果相等,则返回真。";i.Msg.LOGIC_COMPARE_TOOLTIP_GT="如果第一个输入结果比第二个大,则返回真。";i.Msg.LOGIC_COMPARE_TOOLTIP_GTE="如果第一个输入结果大于或等于第二个输入结果,则返回真。";i.Msg.LOGIC_COMPARE_TOOLTIP_LT="如果第一个输入结果比第二个小,则返回真。";i.Msg.LOGIC_COMPARE_TOOLTIP_LTE="如果第一个输入结果小于或等于第二个输入结果,则返回真。";i.Msg.LOGIC_COMPARE_TOOLTIP_NEQ="如果两个输入结果不相等,则返回真。";i.Msg.LOGIC_NEGATE_HELPURL="https://github.com/google/blockly/wiki/Logic#not";i.Msg.LOGIC_NEGATE_TITLE="非%1";i.Msg.LOGIC_NEGATE_TOOLTIP="如果输入结果为假,则返回真;如果输入结果为真,则返回假。";i.Msg.LOGIC_NULL="空";i.Msg.LOGIC_NULL_HELPURL="https://en.wikipedia.org/wiki/Nullable_type";i.Msg.LOGIC_NULL_TOOLTIP="返回空值。";i.Msg.LOGIC_OPERATION_AND="和";i.Msg.LOGIC_OPERATION_HELPURL="https://github.com/google/blockly/wiki/Logic#logical-operations";i.Msg.LOGIC_OPERATION_OR="或";i.Msg.LOGIC_OPERATION_TOOLTIP_AND="如果两个输入结果都为真,则返回真。";i.Msg.LOGIC_OPERATION_TOOLTIP_OR="如果至少有一个输入结果为真,则返回真。";i.Msg.LOGIC_TERNARY_CONDITION="测试";i.Msg.LOGIC_TERNARY_HELPURL="https://zh.wikipedia.org/wiki/条件运算符";i.Msg.LOGIC_TERNARY_IF_FALSE="如果为假";i.Msg.LOGIC_TERNARY_IF_TRUE="如果为真";i.Msg.LOGIC_TERNARY_TOOLTIP='检查"test"中的条件。如果条件为真,则返回"if true"的值,否则,则返回"if false"的值。';i.Msg.LOOP_FOREACH_ITEM="for each item";i.Msg.LOOP_FOREACH_LIST="in list";i.Msg.MATH_ADDITION_SYMBOL="+";i.Msg.MATH_ARITHMETIC_HELPURL="https://zh.wikipedia.org/wiki/算术";i.Msg.MATH_ARITHMETIC_TOOLTIP_ADD="返回两个数字的和。";i.Msg.MATH_ARITHMETIC_TOOLTIP_DIVIDE="返回两个数字的商。";i.Msg.MATH_ARITHMETIC_TOOLTIP_MINUS="返回两个数字的区别。";i.Msg.MATH_ARITHMETIC_TOOLTIP_MULTIPLY="返回两个数字的乘积。";i.Msg.MATH_ARITHMETIC_TOOLTIP_POWER="返回第一个数的第二个数次幂。";i.Msg.MATH_CHANGE_HELPURL="https://zh.wikipedia.org/wiki/加法";i.Msg.MATH_CHANGE_TITLE="将 %1 增加 %2";i.Msg.MATH_CHANGE_TOOLTIP='将一个数添加到变量"%1"。';i.Msg.MATH_CONSTANT_HELPURL="https://zh.wikipedia.org/wiki/数学常数";i.Msg.MATH_CONSTANT_TOOLTIP="返回一个常见常量:π (3.141......),e (2.718...)、φ (1.618...)、 sqrt(2) (1.414......)、sqrt(½) (0.707......)或 ∞(无穷大)。";i.Msg.MATH_CONSTRAIN_HELPURL="https://en.wikipedia.org/wiki/Clamping_%28graphics%29";i.Msg.MATH_CONSTRAIN_TITLE="限制数字 %1 介于 (低) %2 到 (高) %3";i.Msg.MATH_CONSTRAIN_TOOLTIP="限制数字介于两个指定的数字之间";i.Msg.MATH_DIVISION_SYMBOL="÷";i.Msg.MATH_IS_DIVISIBLE_BY="可被整除";i.Msg.MATH_IS_EVEN="是偶数";i.Msg.MATH_IS_NEGATIVE="为负";i.Msg.MATH_IS_ODD="是奇数";i.Msg.MATH_IS_POSITIVE="为正";i.Msg.MATH_IS_PRIME="是质数";i.Msg.MATH_IS_TOOLTIP="如果数字是偶数、奇数、非负整数、正数、负数或如果它可被某数字整除,则返回真或假。";i.Msg.MATH_IS_WHOLE="为整数";i.Msg.MATH_MODULO_HELPURL="https://zh.wikipedia.org/wiki/模除";i.Msg.MATH_MODULO_TITLE="取余数自 %1 ÷ %2";i.Msg.MATH_MODULO_TOOLTIP="返回这两个数字相除后的余数。";i.Msg.MATH_MULTIPLICATION_SYMBOL="×";i.Msg.MATH_NUMBER_HELPURL="https://zh.wikipedia.org/wiki/数";i.Msg.MATH_NUMBER_TOOLTIP="一个数字。";i.Msg.MATH_ONLIST_HELPURL="";i.Msg.MATH_ONLIST_OPERATOR_AVERAGE="列表中的平均数";i.Msg.MATH_ONLIST_OPERATOR_MAX="列表中的最大值";i.Msg.MATH_ONLIST_OPERATOR_MEDIAN="列表中位数";i.Msg.MATH_ONLIST_OPERATOR_MIN="列表中的最小值";i.Msg.MATH_ONLIST_OPERATOR_MODE="列表模式";i.Msg.MATH_ONLIST_OPERATOR_RANDOM="列表的随机项";i.Msg.MATH_ONLIST_OPERATOR_STD_DEV="列表中的标准差";i.Msg.MATH_ONLIST_OPERATOR_SUM="列表中的数的总和";i.Msg.MATH_ONLIST_TOOLTIP_AVERAGE="返回列表中的数值的平均值。";i.Msg.MATH_ONLIST_TOOLTIP_MAX="返回列表中最大数。";i.Msg.MATH_ONLIST_TOOLTIP_MEDIAN="返回列表中的中位数。";i.Msg.MATH_ONLIST_TOOLTIP_MIN="返回列表中最小数。";i.Msg.MATH_ONLIST_TOOLTIP_MODE="返回列表中的最常见的项的列表。";i.Msg.MATH_ONLIST_TOOLTIP_RANDOM="从列表中返回一个随机的元素。";i.Msg.MATH_ONLIST_TOOLTIP_STD_DEV="返回列表的标准偏差。";i.Msg.MATH_ONLIST_TOOLTIP_SUM="返回列表中的所有数字的和。";i.Msg.MATH_POWER_SYMBOL="^";i.Msg.MATH_RANDOM_FLOAT_HELPURL="https://zh.wikipedia.org/wiki/随机数生成器";i.Msg.MATH_RANDOM_FLOAT_TITLE_RANDOM="随机分数";i.Msg.MATH_RANDOM_FLOAT_TOOLTIP="返回介于(包含)0.0到1.0之间的随机数。";i.Msg.MATH_RANDOM_INT_HELPURL="https://zh.wikipedia.org/wiki/随机数生成器";i.Msg.MATH_RANDOM_INT_TITLE="从 %1 到 %2 之间的随机整数";i.Msg.MATH_RANDOM_INT_TOOLTIP="返回两个指定的范围(含)之间的随机整数。";i.Msg.MATH_ROUND_HELPURL="https://zh.wikipedia.org/wiki/数值修约";i.Msg.MATH_ROUND_OPERATOR_ROUND="四舍五入";i.Msg.MATH_ROUND_OPERATOR_ROUNDDOWN="向下舍入";i.Msg.MATH_ROUND_OPERATOR_ROUNDUP="向上舍入";i.Msg.MATH_ROUND_TOOLTIP="数字向上或向下舍入。";i.Msg.MATH_SINGLE_HELPURL="https://zh.wikipedia.org/wiki/平方根";i.Msg.MATH_SINGLE_OP_ABSOLUTE="绝对";i.Msg.MATH_SINGLE_OP_ROOT="平方根";i.Msg.MATH_SINGLE_TOOLTIP_ABS="返回一个数的绝对值。";i.Msg.MATH_SINGLE_TOOLTIP_EXP="返回数的e次幂。";i.Msg.MATH_SINGLE_TOOLTIP_LN="返回一个数的自然对数。";i.Msg.MATH_SINGLE_TOOLTIP_LOG10="返回数字的对数。";i.Msg.MATH_SINGLE_TOOLTIP_NEG="返回数的逻辑非。";i.Msg.MATH_SINGLE_TOOLTIP_POW10="返回数的10次幂。";i.Msg.MATH_SINGLE_TOOLTIP_ROOT="返回数的平方根。";i.Msg.MATH_SUBTRACTION_SYMBOL="-";i.Msg.MATH_SUM="Sum";i.Msg.MATH_TRIG_ACOS="acos";i.Msg.MATH_TRIG_ASIN="asin";i.Msg.MATH_TRIG_ATAN="atan";i.Msg.MATH_TRIG_COS="cos";i.Msg.MATH_TRIG_HELPURL="https://zh.wikipedia.org/wiki/三角函数";i.Msg.MATH_TRIG_SIN="sin";i.Msg.MATH_TRIG_TAN="tan";i.Msg.MATH_TRIG_TOOLTIP_ACOS="返回一个数的反余弦值。";i.Msg.MATH_TRIG_TOOLTIP_ASIN="返回一个数的反正弦值。";i.Msg.MATH_TRIG_TOOLTIP_ATAN="返回指定角度的反正切值。";i.Msg.MATH_TRIG_TOOLTIP_COS="返回指定角度的余弦值(非弧度)。";i.Msg.MATH_TRIG_TOOLTIP_SIN="返回指定角度的正弦值(非弧度)。";i.Msg.MATH_TRIG_TOOLTIP_TAN="返回指定角度的正切值(非弧度)。";i.Msg.NEW_VARIABLE="创建变量...";i.Msg.NEW_VARIABLE_TITLE="新变量的名称:";i.Msg.ORDINAL_NUMBER_SUFFIX="空白";i.Msg.PLATFORM_IMPORT="import platform";i.Msg.PROCEDURES_ALLOW_STATEMENTS="允许声明";i.Msg.PROCEDURES_BEFORE_PARAMS="与:";i.Msg.PROCEDURES_CALLNORETURN_HELPURL="https://zh.wikipedia.org/wiki/子程序";i.Msg.PROCEDURES_CALLNORETURN_TOOLTIP='运行用户定义的函数"%1"。';i.Msg.PROCEDURES_CALLRETURN_HELPURL="https://zh.wikipedia.org/wiki/子程序";i.Msg.PROCEDURES_CALLRETURN_TOOLTIP='运行用户定义的函数"%1",并使用它的输出值。';i.Msg.PROCEDURES_CALL_BEFORE_PARAMS="与:";i.Msg.PROCEDURES_CREATE_DO='创建"%1"';i.Msg.PROCEDURES_DEFNORETURN_COMMENT="描述该功能...";i.Msg.PROCEDURES_DEFNORETURN_DO="执行";i.Msg.PROCEDURES_DEFNORETURN_HELPURL="https://zh.wikipedia.org/wiki/子程序";i.Msg.PROCEDURES_DEFNORETURN_PROCEDURE="做点什么";i.Msg.PROCEDURES_DEFNORETURN_TITLE="自定义函数";i.Msg.PROCEDURES_DEFNORETURN_TITLE_CALLBACK="回调函数";i.Msg.PROCEDURES_DEFNORETURN_TOOLTIP="创建一个不带输出值的函数。";i.Msg.PROCEDURES_DEFRETURN_HELPURL="https://zh.wikipedia.org/wiki/子程序";i.Msg.PROCEDURES_DEFRETURN_RETURN="返回";i.Msg.PROCEDURES_DEFRETURN_TOOLTIP="创建一个有输出值的函数。";i.Msg.PROCEDURES_DEF_DUPLICATE_WARNING="警告: 此函数具有重复参数。";i.Msg.PROCEDURES_HIGHLIGHT_DEF="突出显示函数定义";i.Msg.PROCEDURES_IFRETURN_HELPURL="http://c2.com/cgi/wiki?GuardClause";i.Msg.PROCEDURES_IFRETURN_TOOLTIP="如果值为真,则返回第二个值。";i.Msg.PROCEDURES_IFRETURN_WARNING="警告: 仅在定义函数内可使用此块。";i.Msg.PROCEDURES_MAINFUNCTION="Define Main function";i.Msg.PROCEDURES_MUTATORARG_TITLE="输入名称:";i.Msg.PROCEDURES_MUTATORARG_TOOLTIP="添加函数输入。";i.Msg.PROCEDURES_MUTATORCONTAINER_TITLE="输入";i.Msg.PROCEDURES_MUTATORCONTAINER_TOOLTIP="添加、删除或重新排此函数的输入。";i.Msg.REDO="重做";i.Msg.REMOVE_COMMENT="删除注释";i.Msg.RENAME_VARIABLE="重命名变量...";i.Msg.RENAME_VARIABLE_TITLE='将所有"%1"变量重命名为:';i.Msg.REQUEST_DATA="data";i.Msg.REQUEST_IMPORT="import requests";i.Msg.REQUEST_POST_DATATYPE="Request Post Data: JSON";i.Msg.REQUEST_SET_URL="Set URL:";i.Msg.SYSTEM_EXIT="Sys.exit";i.Msg.SYSTEM_IMPORT="import sys";i.Msg.TEXT_APPEND_APPENDTEXT="追加文本";i.Msg.TEXT_APPEND_HELPURL="https://github.com/google/blockly/wiki/Text#text-modification";i.Msg.TEXT_APPEND_TO="在";i.Msg.TEXT_APPEND_TOOLTIP='将一些文本追加到变量"%1"。';i.Msg.TEXT_CHANGECASE_HELPURL="https://github.com/google/blockly/wiki/Text#adjusting-text-case";i.Msg.TEXT_CHANGECASE_OPERATOR_LOWERCASE="为小写";i.Msg.TEXT_CHANGECASE_OPERATOR_TITLECASE="为首字母大写";i.Msg.TEXT_CHANGECASE_OPERATOR_UPPERCASE="为大写";i.Msg.TEXT_CHANGECASE_TOOLTIP="使用不同的大小写复制这段文字。";i.Msg.TEXT_CHARAT_FIRST="获得第一个字符";i.Msg.TEXT_CHARAT_FROM_END="获得倒数第#个字符";i.Msg.TEXT_CHARAT_FROM_START="获得字符#";i.Msg.TEXT_CHARAT_HELPURL="https://github.com/google/blockly/wiki/Text#extracting-text";i.Msg.TEXT_CHARAT_INPUT_INTEXT="于文本中";i.Msg.TEXT_CHARAT_LAST="获得最后一个字符";i.Msg.TEXT_CHARAT_RANDOM="获取随机的字母";i.Msg.TEXT_CHARAT_TAIL="空白";i.Msg.TEXT_CHARAT_TOOLTIP="返回位于指定位置的字母。";i.Msg.TEXT_CREATE_JOIN_ITEM_TOOLTIP="将一个项添加到文本中。";i.Msg.TEXT_CREATE_JOIN_TITLE_JOIN="加入";i.Msg.TEXT_CREATE_JOIN_TOOLTIP="添加、移除或重新排列各节来重新配置这个文本块。";i.Msg.TEXT_GET_SUBSTRING_END_FROM_END="到倒数第#个字符";i.Msg.TEXT_GET_SUBSTRING_END_FROM_START="到字符#";i.Msg.TEXT_GET_SUBSTRING_END_LAST="到最后一个字符";i.Msg.TEXT_GET_SUBSTRING_HELPURL="https://github.com/google/blockly/wiki/Text#extracting-a-region-of-text";i.Msg.TEXT_GET_SUBSTRING_INPUT_IN_TEXT="自文本";i.Msg.TEXT_GET_SUBSTRING_START_FIRST="取得一段字符串自第一个字符";i.Msg.TEXT_GET_SUBSTRING_START_FROM_END="取得一段字符串自倒数第#个字符";i.Msg.TEXT_GET_SUBSTRING_START_FROM_START="取得一段字符串自#";i.Msg.TEXT_GET_SUBSTRING_TAIL="空白";i.Msg.TEXT_GET_SUBSTRING_TOOLTIP="返回指定的部分文本。";i.Msg.TEXT_INDEXOF_HELPURL="https://github.com/google/blockly/wiki/Text#finding-text";i.Msg.TEXT_INDEXOF_INPUT_INTEXT="自文本";i.Msg.TEXT_INDEXOF_OPERATOR_FIRST="寻找第一个出现的文本";i.Msg.TEXT_INDEXOF_OPERATOR_LAST="寻找最后一个出现的文本";i.Msg.TEXT_INDEXOF_TAIL="空白";i.Msg.TEXT_INDEXOF_TOOLTIP="返回在第二个字符串中的第一/最后一个匹配项的索引值。如果未找到则返回%1。";i.Msg.TEXT_ISEMPTY_HELPURL="https://github.com/google/blockly/wiki/Text#checking-for-empty-text";i.Msg.TEXT_ISEMPTY_TITLE="%1是空的";i.Msg.TEXT_ISEMPTY_TOOLTIP="如果提供的文本为空,则返回真。";i.Msg.TEXT_JOIN_HELPURL="https://github.com/google/blockly/wiki/Text#text-creation";i.Msg.TEXT_JOIN_TITLE_CREATEWITH="建立字符串使用";i.Msg.TEXT_JOIN_TOOLTIP="通过串起任意数量的项以建立一段文字。";i.Msg.TEXT_LENGTH_HELPURL="https://github.com/google/blockly/wiki/Text#text-modification";i.Msg.TEXT_LENGTH_TITLE="%1的长度";i.Msg.TEXT_LENGTH_TOOLTIP="返回提供文本的字母数(包括空格)。";i.Msg.TEXT_LOWER="set lower case";i.Msg.TEXT_PRINT_HELPURL="https://github.com/google/blockly/wiki/Text#printing-text";i.Msg.TEXT_PRINT_TITLE="串口打印%1";i.Msg.TEXT_PRINT_TITLE_PRINT="print";i.Msg.TEXT_PRINT_TOOLTIP="打印指定的文字、数字或其他值。";i.Msg.TEXT_PROMPT_HELPURL="https://github.com/google/blockly/wiki/Text#getting-input-from-the-user";i.Msg.TEXT_PROMPT_TOOLTIP_NUMBER="提示用户输入数字。";i.Msg.TEXT_PROMPT_TOOLTIP_TEXT="提示用户输入一些文本。";i.Msg.TEXT_PROMPT_TYPE_NUMBER="输入数字并显示提示消息";i.Msg.TEXT_PROMPT_TYPE_TEXT="输入数字并显示提示消息";i.Msg.TEXT_TEXT_HELPURL="https://zh.wikipedia.org/wiki/字符串";i.Msg.TEXT_TEXT_TOOLTIP="一个字母、单词或一行文本。";i.Msg.TEXT_TRIM_HELPURL="https://github.com/google/blockly/wiki/Text#trimming-removing-spaces";i.Msg.TEXT_TRIM_OPERATOR_BOTH="消除两侧空格";i.Msg.TEXT_TRIM_OPERATOR_LEFT="消除左侧空格";i.Msg.TEXT_TRIM_OPERATOR_RIGHT="消除右侧空格";i.Msg.TEXT_TRIM_TOOLTIP="复制这段文字的同时删除两端多余的空格。";i.Msg.THREAD_IMPORT="import threading";i.Msg.THREAD_SET_TARGET="threading set target";i.Msg.THREAD_START="start";i.Msg.THREAD_THREADING="threading";i.Msg.TODAY="今天";i.Msg.TYPE_CHECK="type of";i.Msg.UNDO="撤销";i.Msg.VARIABLES_DEFAULT_NAME="项目";i.Msg.VARIABLES_GET_CREATE_SET='创建"设定%1"';i.Msg.VARIABLES_GET_HELPURL="https://github.com/google/blockly/wiki/Variables#get";i.Msg.VARIABLES_GET_SELF="get self";i.Msg.VARIABLES_GET_TOOLTIP="返回此变量的值。";i.Msg.VARIABLES_SET="赋值 %1 为 %2";i.Msg.VARIABLES_SET_CREATE_GET='创建"%1"';i.Msg.VARIABLES_SET_HELPURL="https://github.com/google/blockly/wiki/Variables#set";i.Msg.VARIABLES_SET_SELF="set self";i.Msg.VARIABLES_SET_SELF_TO="to";i.Msg.VARIABLES_SET_TAIL="=";i.Msg.VARIABLES_SET_TITLE="set";i.Msg.VARIABLES_SET_TOOLTIP="设置此变量,以使它和输入值相等。";i.Msg.VARIABLE_ALREADY_EXISTS='已存在名为"%1"的变量。';i.Msg.VISIONKIT_AIY_VISION_INFERENCE="AIY Vision Inference";i.Msg.VISIONKIT_ANNOTATOR="Annotator";i.Msg.VISIONKIT_ANNOTATOR_BOUNDING="Annotator Bounding Box";i.Msg.VISIONKIT_ANNOTATOR_FILL="fill=";i.Msg.VISIONKIT_ANNOTATOR_SETTING="set dimensions:";i.Msg.VISIONKIT_CAMERA_INFERENCE="Camera Inference as";i.Msg.VISIONKIT_CLOUDEVENT_API="Cloud Event API:";i.Msg.VISIONKIT_DO="Do";i.Msg.VISIONKIT_GETINFERENCE="Get Inference";i.Msg.VISIONKIT_GETMODEL_MODEL="model";i.Msg.VISIONKIT_GETMODEL_Of="of";i.Msg.VISIONKIT_IMPORT="from";i.Msg.VISIONKIT_IMPORT_ANNOTATOR="annotator import";i.Msg.VISIONKIT_IMPORT_INFERENCE="inference import";i.Msg.VISIONKIT_IMPORT_MODELS="models import";i.Msg.VISIONKIT_JOY_DETECT="Detect Joy Score and stored it to Core Cloud";i.Msg.VISIONKIT_MODEL="Model";i.Msg.VISIONKIT_RUN_INFERENCE="Run inference";i.Msg.VISIONKIT_SETUP="Google AIY Vision Kit Setup";i.Msg.VISIONKIT_USE_MODEL="Use model";i.Msg.VOICEKIT_ASSISTANT="Assistant";i.Msg.VOICEKIT_DEMO_1="Command Control Demo";i.Msg.VOICEKIT_DEMO_2="Via Google Assistant";i.Msg.VOICEKIT_EVENTTYPE_ASSISTANT="Assistant Event Type:";i.Msg.VOICEKIT_EVENTTYPE_IMPORT="import EventType";i.Msg.VOICEKIT_EVENT_ARGS="event args";i.Msg.VOICEKIT_EVENT_OF="of";i.Msg.VOICEKIT_EVENT_TYPE_OF="event type of";i.Msg.VOICEKIT_FROM="from";i.Msg.VOICEKIT_GET_CREDENTIAL="Get Assistant Credential";i.Msg.VOICEKIT_IMPORT_ASSISTANT="import Assistant";i.Msg.VOICEKIT_IMPORT_AUTH="import auth_helpers";i.Msg.VOICEKIT_IMPORT_TTS="import TTS";i.Msg.VOICEKIT_IMPORT_TTS_SAY="aiy.voice.tts.say";i.Msg.VOICEKIT_SETUP="Google AIY Voice Kit Setup";i.Msg.VOICEKIT_SET_CREDENTIAL="set credential for Assistant";i.Msg.VOICEKIT_SET_DO="do";i.Msg.VOICEKIT_SET_FROM="from";i.Msg.PROCEDURES_DEFRETURN_TITLE=i.Msg.PROCEDURES_DEFNORETURN_TITLE;i.Msg.CONTROLS_IF_IF_TITLE_IF=i.Msg.CONTROLS_IF_MSG_IF;i.Msg.CONTROLS_WHILEUNTIL_INPUT_DO=i.Msg.CONTROLS_REPEAT_INPUT_DO;i.Msg.CONTROLS_IF_MSG_THEN=i.Msg.CONTROLS_REPEAT_INPUT_DO;i.Msg.CONTROLS_IF_ELSE_TITLE_ELSE=i.Msg.CONTROLS_IF_MSG_ELSE;i.Msg.PROCEDURES_DEFRETURN_PROCEDURE=i.Msg.PROCEDURES_DEFNORETURN_PROCEDURE;i.Msg.LISTS_GET_SUBLIST_INPUT_IN_LIST=i.Msg.LISTS_INLIST;i.Msg.LISTS_GET_INDEX_INPUT_IN_LIST=i.Msg.LISTS_INLIST;i.Msg.MATH_CHANGE_TITLE_ITEM=i.Msg.VARIABLES_DEFAULT_NAME;i.Msg.VARIABLES_SET_ITEM=i.Msg.VARIABLES_DEFAULT_NAME;i.Msg.PROCEDURES_DEFRETURN_DO=i.Msg.PROCEDURES_DEFNORETURN_DO;i.Msg.CONTROLS_IF_ELSEIF_TITLE_ELSEIF=i.Msg.CONTROLS_IF_MSG_ELSEIF;i.Msg.LISTS_GET_INDEX_HELPURL=i.Msg.LISTS_INDEX_OF_HELPURL;i.Msg.CONTROLS_FOREACH_INPUT_DO=i.Msg.CONTROLS_REPEAT_INPUT_DO;i.Msg.LISTS_SET_INDEX_INPUT_IN_LIST=i.Msg.LISTS_INLIST;i.Msg.CONTROLS_FOR_INPUT_DO=i.Msg.CONTROLS_REPEAT_INPUT_DO;i.Msg.LISTS_CREATE_WITH_ITEM_TITLE=i.Msg.VARIABLES_DEFAULT_NAME;i.Msg.TEXT_APPEND_VARIABLE=i.Msg.VARIABLES_DEFAULT_NAME;i.Msg.TEXT_CREATE_JOIN_ITEM_TITLE_ITEM=i.Msg.VARIABLES_DEFAULT_NAME;i.Msg.LISTS_INDEX_OF_INPUT_IN_LIST=i.Msg.LISTS_INLIST;i.Msg.PROCEDURES_DEFRETURN_COMMENT=i.Msg.PROCEDURES_DEFNORETURN_COMMENT;i.Msg.CONTROL_FOREVER="重复执行";i.Msg.CONTROL_REPEAT="重复执行 %1 次";i.Msg.CONTROL_IF="如果 %1 那么";i.Msg.CONTROL_ELSE="否则";i.Msg.CONTROL_STOP="停止";i.Msg.CONTROL_STOP_ALL="全部脚本";i.Msg.CONTROL_STOP_THIS="这个脚本";i.Msg.CONTROL_STOP_OTHER="该角色的其他脚本";i.Msg.CONTROL_WAIT="等待 %1 秒";i.Msg.CONTROL_WAITUNTIL="在 %1 之前一直等待";i.Msg.CONTROL_REPEATUNTIL="重复执行直到 %1";i.Msg.CONTROL_WHILE="当 %1 重复执行";i.Msg.CONTROL_FOREACH="对于 %2 中的每个 %1";i.Msg.CONTROL_STARTASCLONE="当作为克隆体启动时";i.Msg.CONTROL_CREATECLONEOF="克隆 %1";i.Msg.CONTROL_CREATECLONEOF_MYSELF="自己";i.Msg.CONTROL_DELETETHISCLONE="删除此克隆体";i.Msg.CONTROL_COUNTER="计数器";i.Msg.CONTROL_INCRCOUNTER="计数器加一";i.Msg.CONTROL_CLEARCOUNTER="计数器归零";i.Msg.CONTROL_ALLATONCE="所有脚本";i.Msg.DATA_SETVARIABLETO="将 %1 设为 %2";i.Msg.DATA_CHANGEVARIABLEBY="将 %1 增加 %2";i.Msg.DATA_SHOWVARIABLE="显示变量 %1";i.Msg.DATA_HIDEVARIABLE="隐藏变量 %1";i.Msg.DATA_ADDTOLIST="将 %1 加入 %2";i.Msg.DATA_DELETEOFLIST="删除 %2 的第 %1 项";i.Msg.DATA_DELETEALLOFLIST="删除 %1 的全部项目";i.Msg.DATA_INSERTATLIST="在 %3 的第 %2 项插入 %1";i.Msg.DATA_REPLACEITEMOFLIST="将 %2 的第 %1 项替换为 %3";i.Msg.DATA_ITEMOFLIST="%2 的第 %1 项";i.Msg.DATA_ITEMNUMOFLIST="%2 中第一个 %1 的编号";i.Msg.DATA_LENGTHOFLIST="%1 的项目数";i.Msg.DATA_LISTCONTAINSITEM="%1 包含 %2 ?";i.Msg.DATA_SHOWLIST="显示列表 %1";i.Msg.DATA_HIDELIST="隐藏列表 %1";i.Msg.DATA_INDEX_ALL="全部";i.Msg.DATA_INDEX_LAST="末尾";i.Msg.DATA_INDEX_RANDOM="随机";i.Msg.EVENT_WHENFLAGCLICKED="当 %1 被点击";i.Msg.EVENT_WHENTHISSPRITECLICKED="当角色被点击";i.Msg.EVENT_WHENSTAGECLICKED="当舞台被点击";i.Msg.EVENT_WHENTOUCHINGOBJECT="当该角色碰到 %1";i.Msg.EVENT_WHENBROADCASTRECEIVED="当接收到 %1";i.Msg.EVENT_WHENBACKDROPSWITCHESTO="当背景换成 %1";i.Msg.EVENT_WHENGREATERTHAN="当 %1 > %2";i.Msg.EVENT_WHENGREATERTHAN_TIMER="计时器";i.Msg.EVENT_WHENGREATERTHAN_LOUDNESS="响度";i.Msg.EVENT_BROADCAST="广播 %1";i.Msg.EVENT_BROADCASTANDWAIT="广播 %1 并等待";i.Msg.EVENT_WHENKEYPRESSED="当按下 %1 键";i.Msg.EVENT_WHENKEYPRESSED_SPACE="空格";i.Msg.EVENT_WHENKEYPRESSED_LEFT="←";i.Msg.EVENT_WHENKEYPRESSED_RIGHT="→";i.Msg.EVENT_WHENKEYPRESSED_DOWN="↓";i.Msg.EVENT_WHENKEYPRESSED_UP="↑";i.Msg.EVENT_WHENKEYPRESSED_ANY="任意";i.Msg.LOOKS_SAYFORSECS="说 %1 %2 秒";i.Msg.LOOKS_SAY="说 %1";i.Msg.LOOKS_HELLO="你好!";i.Msg.LOOKS_THINKFORSECS="思考 %1 %2 秒";i.Msg.LOOKS_THINK="思考 %1";i.Msg.LOOKS_HMM="嗯……";i.Msg.LOOKS_SHOW="显示";i.Msg.LOOKS_HIDE="隐藏";i.Msg.LOOKS_HIDEALLSPRITES="隐藏所有角色";i.Msg.LOOKS_EFFECT_COLOR="颜色";i.Msg.LOOKS_EFFECT_FISHEYE="鱼眼";i.Msg.LOOKS_EFFECT_WHIRL="漩涡";i.Msg.LOOKS_EFFECT_PIXELATE="像素化";i.Msg.LOOKS_EFFECT_MOSAIC="马赛克";i.Msg.LOOKS_EFFECT_BRIGHTNESS="亮度";i.Msg.LOOKS_EFFECT_GHOST="虚像";i.Msg.LOOKS_CHANGEEFFECTBY="将 %1 特效增加 %2";i.Msg.LOOKS_SETEFFECTTO="将 %1 特效设定为 %2";i.Msg.LOOKS_CLEARGRAPHICEFFECTS="清除图形特效";i.Msg.LOOKS_CHANGESIZEBY="将大小增加 %1";i.Msg.LOOKS_SETSIZETO="将大小设为 %1";i.Msg.LOOKS_SIZE="大小";i.Msg.LOOKS_CHANGESTRETCHBY="伸缩%1";i.Msg.LOOKS_SETSTRETCHTO="设置伸缩为%1 %";i.Msg.LOOKS_SWITCHCOSTUMETO="换成 %1 造型";i.Msg.LOOKS_NEXTCOSTUME="下一个造型";i.Msg.LOOKS_SWITCHBACKDROPTO="换成 %1 背景";i.Msg.LOOKS_GOTOFRONTBACK="移到最 %1 ";i.Msg.LOOKS_GOTOFRONTBACK_FRONT="前面";i.Msg.LOOKS_GOTOFRONTBACK_BACK="后面";i.Msg.LOOKS_GOFORWARDBACKWARDLAYERS="%1 %2 层";i.Msg.LOOKS_GOFORWARDBACKWARDLAYERS_FORWARD="前移";i.Msg.LOOKS_GOFORWARDBACKWARDLAYERS_BACKWARD="后移";i.Msg.LOOKS_BACKDROPNUMBERNAME="背景 %1";i.Msg.LOOKS_COSTUMENUMBERNAME="造型 %1";i.Msg.LOOKS_NUMBERNAME_NUMBER="编号";i.Msg.LOOKS_NUMBERNAME_NAME="名称";i.Msg.LOOKS_SWITCHBACKDROPTOANDWAIT="换成 %1 背景并等待";i.Msg.LOOKS_NEXTBACKDROP_BLOCK="下一个背景";i.Msg.LOOKS_NEXTBACKDROP="下一个背景";i.Msg.LOOKS_PREVIOUSBACKDROP="上一个背景";i.Msg.LOOKS_RANDOMBACKDROP="随机背景";i.Msg.MOTION_MOVESTEPS="移动 %1 步";i.Msg.MOTION_TURNLEFT="左转 %1 %2 度";i.Msg.MOTION_TURNRIGHT="右转 %1 %2 度";i.Msg.MOTION_POINTINDIRECTION="面向 %1 方向";i.Msg.MOTION_POINTTOWARDS="面向 %1";i.Msg.MOTION_POINTTOWARDS_POINTER="鼠标指针";i.Msg.MOTION_GOTO="移到 %1";i.Msg.MOTION_GOTO_POINTER="鼠标指针";i.Msg.MOTION_GOTO_RANDOM="随机位置";i.Msg.MOTION_GOTOXY="移到 x: %1 y: %2";i.Msg.MOTION_GLIDESECSTOXY="在 %1 秒内滑行到 x: %2 y: %3";i.Msg.MOTION_GLIDETO="在 %1 秒内滑行到 %2";i.Msg.MOTION_GLIDETO_POINTER="鼠标指针";i.Msg.MOTION_GLIDETO_RANDOM="随机位置";i.Msg.MOTION_CHANGEXBY="将x坐标增加 %1";i.Msg.MOTION_SETX="将x坐标设为 %1";i.Msg.MOTION_CHANGEYBY="将y坐标增加 %1";i.Msg.MOTION_SETY="将y坐标设为 %1";i.Msg.MOTION_IFONEDGEBOUNCE="碰到边缘就反弹";i.Msg.MOTION_SETROTATIONSTYLE="将旋转方式设为 %1";i.Msg.MOTION_SETROTATIONSTYLE_LEFTRIGHT="左右翻转";i.Msg.MOTION_SETROTATIONSTYLE_DONTROTATE="不可旋转";i.Msg.MOTION_SETROTATIONSTYLE_ALLAROUND="任意旋转";i.Msg.MOTION_XPOSITION="x 坐标";i.Msg.MOTION_YPOSITION="y 坐标";i.Msg.MOTION_DIRECTION="方向";i.Msg.MOTION_SCROLLRIGHT="向右滚动 %1";i.Msg.MOTION_SCROLLUP="向上滚动 %1";i.Msg.MOTION_ALIGNSCENE="和场景 %1 对齐";i.Msg.MOTION_ALIGNSCENE_BOTTOMLEFT="左下角";i.Msg.MOTION_ALIGNSCENE_BOTTOMRIGHT="右下角";i.Msg.MOTION_ALIGNSCENE_MIDDLE="中间";i.Msg.MOTION_ALIGNSCENE_TOPLEFT="左上角";i.Msg.MOTION_ALIGNSCENE_TOPRIGHT="右上角";i.Msg.MOTION_XSCROLL="x滚动位置";i.Msg.MOTION_YSCROLL="y滚动位置";i.Msg.MOTION_STAGE_SELECTED="选中了舞台:不可使用运动类积木";i.Msg.OPERATORS_ADD="%1 + %2";i.Msg.OPERATORS_SUBTRACT="%1 - %2";i.Msg.OPERATORS_MULTIPLY="%1 * %2";i.Msg.OPERATORS_DIVIDE="%1 / %2";i.Msg.OPERATORS_RANDOM="在 %1 和 %2 中随机选一个数";i.Msg.OPERATORS_GT="%1 > %2";i.Msg.OPERATORS_LT="%1 < %2";i.Msg.OPERATORS_EQUALS="%1 = %2";i.Msg.OPERATORS_AND="%1 与 %2";i.Msg.OPERATORS_OR="%1 或 %2";i.Msg.OPERATORS_NOT="%1 不成立";i.Msg.OPERATORS_JOIN="连接 %1 和 %2";i.Msg.OPERATORS_JOIN_APPLE="苹果";i.Msg.OPERATORS_JOIN_BANANA="香蕉";i.Msg.OPERATORS_LETTEROF="%2 的第 %1 个字符";i.Msg.OPERATORS_LETTEROF_APPLE="果";i.Msg.OPERATORS_LENGTH="%1 的长度";i.Msg.OPERATORS_CONTAINS="%1 包含 %2 ?";i.Msg.OPERATORS_MOD="%1 除以 %2 的余数";i.Msg.OPERATORS_ROUND="将 %1 四舍五入";i.Msg.OPERATORS_MATHOP="%2 的 %1";i.Msg.OPERATORS_MATHOP_ABS="绝对值";i.Msg.OPERATORS_MATHOP_FLOOR="向下取整";i.Msg.OPERATORS_MATHOP_CEILING="向上取整";i.Msg.OPERATORS_MATHOP_SQRT="平方根";i.Msg.OPERATORS_MATHOP_SIN="sin";i.Msg.OPERATORS_MATHOP_COS="cos";i.Msg.OPERATORS_MATHOP_TAN="tan";i.Msg.OPERATORS_MATHOP_ASIN="asin";i.Msg.OPERATORS_MATHOP_ACOS="acos";i.Msg.OPERATORS_MATHOP_ATAN="atan";i.Msg.OPERATORS_MATHOP_LN="ln";i.Msg.OPERATORS_MATHOP_LOG="log";i.Msg.OPERATORS_MATHOP_EEXP="e ^";i.Msg.OPERATORS_MATHOP_10EXP="10 ^";i.Msg.PROCEDURES_DEFINITION="定义 %1";i.Msg.SENSING_TOUCHINGOBJECT="碰到 %1 ?";i.Msg.SENSING_TOUCHINGOBJECT_POINTER="鼠标指针";i.Msg.SENSING_TOUCHINGOBJECT_EDGE="舞台边缘";i.Msg.SENSING_TOUCHINGCOLOR="碰到颜色 %1 ?";i.Msg.SENSING_COLORISTOUCHINGCOLOR="颜色 %1 碰到 %2 ?";i.Msg.SENSING_DISTANCETO="到 %1 的距离";i.Msg.SENSING_DISTANCETO_POINTER="鼠标指针";i.Msg.SENSING_ASKANDWAIT="询问 %1 并等待";i.Msg.SENSING_ASK_TEXT="你叫什么名字?";i.Msg.SENSING_ANSWER="回答";i.Msg.SENSING_KEYPRESSED="按下 %1 键?";i.Msg.SENSING_MOUSEDOWN="按下鼠标?";i.Msg.SENSING_MOUSEX="鼠标的x坐标";i.Msg.SENSING_MOUSEY="鼠标的y坐标";i.Msg.SENSING_SETDRAGMODE="将拖动模式设为 %1";i.Msg.SENSING_SETDRAGMODE_DRAGGABLE="可拖动";i.Msg.SENSING_SETDRAGMODE_NOTDRAGGABLE="不可拖动";i.Msg.SENSING_LOUDNESS="响度";i.Msg.SENSING_LOUD="响声?";i.Msg.SENSING_TIMER="计时器";i.Msg.SENSING_RESETTIMER="计时器归零";i.Msg.SENSING_OF="%2 的 %1";i.Msg.SENSING_OF_XPOSITION="x 坐标";i.Msg.SENSING_OF_YPOSITION="y 坐标";i.Msg.SENSING_OF_DIRECTION="方向";i.Msg.SENSING_OF_COSTUMENUMBER="造型编号";i.Msg.SENSING_OF_COSTUMENAME="造型名称";i.Msg.SENSING_OF_SIZE="大小";i.Msg.SENSING_OF_VOLUME="音量";i.Msg.SENSING_OF_BACKDROPNUMBER="背景编号";i.Msg.SENSING_OF_BACKDROPNAME="背景名称";i.Msg.SENSING_OF_STAGE="舞台";i.Msg.SENSING_CURRENT="当前时间的 %1";i.Msg.SENSING_CURRENT_YEAR="年";i.Msg.SENSING_CURRENT_MONTH="月";i.Msg.SENSING_CURRENT_DATE="日";i.Msg.SENSING_CURRENT_DAYOFWEEK="星期";i.Msg.SENSING_CURRENT_HOUR="时";i.Msg.SENSING_CURRENT_MINUTE="分";i.Msg.SENSING_CURRENT_SECOND="秒";i.Msg.SENSING_DAYSSINCE2000="2000年至今的天数";i.Msg.SENSING_USERNAME="用户名";i.Msg.SENSING_USERID="用户id";i.Msg.SOUND_PLAY="播放声音 %1";i.Msg.SOUND_PLAYUNTILDONE="播放声音 %1 等待播完";i.Msg.SOUND_STOPALLSOUNDS="停止所有声音";i.Msg.SOUND_SETEFFECTO="将 %1 音效设为 %2";i.Msg.SOUND_CHANGEEFFECTBY="将 %1 音效增加 %2";i.Msg.SOUND_CLEAREFFECTS="清除音效";i.Msg.SOUND_EFFECTS_PITCH="音调";i.Msg.SOUND_EFFECTS_PAN="左右平衡";i.Msg.SOUND_CHANGEVOLUMEBY="将音量增加 %1";i.Msg.SOUND_SETVOLUMETO="将音量设为 %1%";i.Msg.SOUND_VOLUME="音量";i.Msg.SOUND_RECORD="录制…";i.Msg.CATEGORY_MOTION="运动";i.Msg.CATEGORY_LOOKS="外观";i.Msg.CATEGORY_SOUND="声音";i.Msg.CATEGORY_EVENTS="事件";i.Msg.CATEGORY_CONTROL="控制";i.Msg.CATEGORY_SENSING="侦测";i.Msg.CATEGORY_OPERATORS="运算";i.Msg.CATEGORY_VARIABLES="变量";i.Msg.CATEGORY_MYBLOCKS="自制积木";i.Msg.DUPLICATE="复制";i.Msg.DUPLICATE_PASTE="复制并粘贴";i.Msg.DELETE="删除";i.Msg.ADD_COMMENT="添加注释";i.Msg.REMOVE_COMMENT="删除注释";i.Msg.DELETE_BLOCK="删除";i.Msg.DELETE_X_BLOCKS="删除 %1 积木";i.Msg.DELETE_ALL_BLOCKS="删除全部 %1 积木?";i.Msg.CLEAN_UP="整理积木";i.Msg.HELP="帮助";i.Msg.UNDO="撤销";i.Msg.REDO="重做";i.Msg.EDIT_PROCEDURE="编辑";i.Msg.SHOW_PROCEDURE_DEFINITION="查看定义";i.Msg.WORKSPACE_COMMENT_DEFAULT_TEXT="说些什么……";i.Msg.COLOUR_HUE_LABEL="颜色";i.Msg.COLOUR_SATURATION_LABEL="饱和度";i.Msg.COLOUR_BRIGHTNESS_LABEL="亮度";i.Msg.CHANGE_VALUE_TITLE="更改变量:";i.Msg.RENAME_VARIABLE="修改变量名";i.Msg.RENAME_VARIABLE_TITLE="将所有的「%1」变量名改为:";i.Msg.RENAME_VARIABLE_MODAL_TITLE="修改变量名";i.Msg.NEW_VARIABLE="建立一个变量";i.Msg.NEW_VARIABLE_TITLE="新变量名:";i.Msg.VARIABLE_MODAL_TITLE="新建变量";i.Msg.VARIABLE_ALREADY_EXISTS="已经存在名为「%1」的变量。";i.Msg.VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE="已经存在一个名为「%1」的变量,其类型为「%2」。";i.Msg.DELETE_VARIABLE_CONFIRMATION="删除%1处「%2」变量吗?";i.Msg.CANNOT_DELETE_VARIABLE_PROCEDURE="无法删除变量「%1」,因为函数「%2」的定义中用到了它";i.Msg.DELETE_VARIABLE="删除变量「%1」";i.Msg.NEW_PROCEDURE="制作新的积木";i.Msg.PROCEDURE_ALREADY_EXISTS="已经存在名为「%1」的程序。";i.Msg.PROCEDURE_DEFAULT_NAME="积木名称";i.Msg.NEW_LIST="建立一个列表";i.Msg.NEW_LIST_TITLE="新的列表名:";i.Msg.LIST_MODAL_TITLE="新建列表";i.Msg.LIST_ALREADY_EXISTS="名为 「%1」 的列表已存在。";i.Msg.RENAME_LIST_TITLE="将所有的「%1」的列表名改为:";i.Msg.RENAME_LIST_MODAL_TITLE="修改列表名";i.Msg.DEFAULT_LIST_ITEM="东西";i.Msg.NEW_BROADCAST_MESSAGE="新消息";i.Msg.NEW_BROADCAST_MESSAGE_TITLE="新消息的名称:";i.Msg.BROADCAST_MODAL_TITLE="新消息";i.Msg.DEFAULT_BROADCAST_MESSAGE_NAME="消息1";i.Msg.GROVEZERO_MINIWHEEL_SET_POWER="%1 %2 小车底盘 左轮动力 %3 %,右轮动力 %4 %";i.Msg.GROVEZERO_MINIWHEEL_STOP="%1 %2 小车底盘 停止运动";i.Msg.GROVEZERO_MINIWHEEL_RUN_VELOCITY_AZIMUTH="%1 %2 小车底盘 以 %3 %4";i.Msg.GROVEZERO_MINIWHEEL_OPT1="慢速";i.Msg.GROVEZERO_MINIWHEEL_OPT2="中速";i.Msg.GROVEZERO_MINIWHEEL_OPT3="快速";i.Msg.GROVEZERO_MINIWHEEL_OPT4="前进";i.Msg.GROVEZERO_MINIWHEEL_OPT5="后退";i.Msg.GROVEZERO_MINIWHEEL_OPT6="左转";i.Msg.GROVEZERO_MINIWHEEL_OPT7="右转";i.Msg.GROVEZERO_MINIWHEEL_OPT8="顺时针转";i.Msg.GROVEZERO_MINIWHEEL_OPT9="逆时针转";i.Msg.GROVEZERO_MOTOR_STOP="%1 %2 %3 直流减速电机 停止转动";i.Msg.GROVEZERO_DC_MOTOR_TRUN_POWER="%1 %2 %3 直流减速电机 开始转动 动力 %4 %";i.Msg.GROVEZERO_SERVO_TURN_ANGLE="%1 %2 舵机 转到 %3 度";i.Msg.GROVEZERO_RGB_TO_COLOR="%1 %2 红 %3 绿 %4 蓝 %5";i.Msg.GROVEZERO_HSL_TO_COLOR="%1 %2 颜色 %3 饱和度 %4 亮度 %5";i.Msg.GROVEZERO_LED_MATRIX_XY_IS_ON="%1 %2 LED 矩阵 x:%3 y:%4 是否被点亮?";i.Msg.GROVEZERO_LED_MATRIX_SHOW_SHAPE="%1 %2 LED 矩阵 显示图案 %3";i.Msg.GROVEZERO_LED_MATRIX_SHOW_STRING="%1 %2 LED 矩阵 显示字符串 %3";i.Msg.GROVEZERO_LED_MATRIX_XY_SET_ON="%1 %2 LED 矩阵 点亮 x: %3 y: %4";i.Msg.GROVEZERO_LED_MATRIX_XY_SET_OFF="%1 %2 LED 矩阵 熄灭 x: %3 y: %4";i.Msg.GROVEZERO_LED_MATRIX_CLEAN="%1 %2 LED 矩阵 全部熄灭";i.Msg.GROVEZERO_RGB_LED_SHOW_STYLE_COLOR="%1 %2 可调彩灯 一直 %3 %4";i.Msg.GROVEZERO_RGB_LED_SHOW_STYLE="%1 %2 可调彩灯 %3 效果";i.Msg.GROVEZERO_RGB_LED_FADE_FROM_COLOR1_TO_COLOR2="%1 %2 可调彩灯 从 %3 渐变到 %4";i.Msg.GROVEZERO_RGB_LED_SET_BRIGHTNESS="%1 %2 可调彩灯 设置亮度为 %3 %";i.Msg.GROVEZERO_RGB_LED_LIGHT_OFF="%1 %2 可调彩灯 熄灭";i.Msg.GROVEZERO_RGB_LED_OPT1="亮";i.Msg.GROVEZERO_RGB_LED_OPT2="闪烁";i.Msg.GROVEZERO_RGB_LED_OPT3="呼吸";i.Msg.GROVEZERO_RGB_LED_OPT4="彩虹灯";i.Msg.GROVEZERO_RGB_LED_OPT5="随机色";i.Msg.GROVEZERO_RGB_MATRIX_SHOW_SHAPE="%1 %2 %3 RGB LED 矩阵 显示图案 %4";i.Msg.GROVEZERO_RGB_MATRIX_SHOW_STRING="%1 %2 %3 RGB LED 矩阵 显示字符串 %4 %5";i.Msg.GROVEZERO_RGB_MATRIX_SHOW_ANIMA="%1 %2 %3 RGB LED 矩阵 显示动画 %4";i.Msg.GROVEZERO_RGB_MATRIX_SHOW_HISTOGRAM="%1 %2 %3 RGB LED 矩阵 绘制柱状图 值为 %4";i.Msg.GROVEZERO_RGB_MATRIX_XY_SET_ON="%1 %2 %3 RGB LED 矩阵 点亮 x: %4 y: %5 %6";i.Msg.GROVEZERO_RGB_MATRIX_XY_SET_OFF="%1 %2 %3 RGB LED 矩阵 熄灭 x: %4 y: %5";i.Msg.GROVEZERO_RGB_MATRIX_XY_SET_ON_OFF="%1 %2 %3 RGB LED 矩阵 开关 x: %4 y: %5 %6";i.Msg.GROVEZERO_RGB_MATRIX_XY_IS_ON="%1 %2 %3 RGB LED 矩阵 x: %4 y: %5 被点亮";i.Msg.GROVEZERO_RGB_MATRIX_CLEAN="%1 %2 %3 RGB LED 矩阵 全部熄灭";i.Msg.GROVEZERO_RGB_MATRIX_XY_GET_COLOR="%1 %2 %3 RGB LED 矩阵 x: %4 y: %5 颜色值";i.Msg.GROVEZERO_RGB_MATRIX_ARGS_ANIMA_OPT1="波浪";i.Msg.GROVEZERO_RGB_MATRIX_ARGS_ANIMA_OPT2="顺时针画大方形";i.Msg.GROVEZERO_RGB_MATRIX_ARGS_ANIMA_OPT3="顺时针画小方形";i.Msg.GROVEZERO_RGB_MATRIX_ARGS_ANIMA_OPT4="逆时针画大方形";i.Msg.GROVEZERO_RGB_MATRIX_ARGS_ANIMA_OPT5="逆时针画小方形";i.Msg.GROVEZERO_RGB_MATRIX_ARGS_ANIMA_OPT6="变幻";i.Msg.GROVEZERO_RGB_MATRIX_ARGS_ANIMA_OPT7="火焰";i.Msg.GROVEZERO_RGB_MATRIX_ARGS_ANIMA_OPT8="行走";i.Msg.GROVEZERO_RGB_MATRIX_ARGS_ANIMA_OPT9="心碎";i.Msg.GROVEZERO_RGB_MATRIX_XY_SET_ON_OPT1="红";i.Msg.GROVEZERO_RGB_MATRIX_XY_SET_ON_OPT2="橙";i.Msg.GROVEZERO_RGB_MATRIX_XY_SET_ON_OPT3="黄";i.Msg.GROVEZERO_RGB_MATRIX_XY_SET_ON_OPT4="绿";i.Msg.GROVEZERO_RGB_MATRIX_XY_SET_ON_OPT5="青";i.Msg.GROVEZERO_RGB_MATRIX_XY_SET_ON_OPT6="蓝";i.Msg.GROVEZERO_RGB_MATRIX_XY_SET_ON_OPT7="紫";i.Msg.GROVEZERO_RGB_MATRIX_XY_SET_ON_OPT8="粉红";i.Msg.GROVEZERO_RGB_MATRIX_XY_SET_ON_OPT9="白";i.Msg.GROVEZERO_RGB_MATRIX_XY_SET_ON_OPT10="黑";i.Msg.GROVEZERO_FOUR_DIGIT_WHEN_COUNTDOWN_END="%1 %2 四位数码管 倒数结束";i.Msg.GROVEZERO_FOUR_DIGIT_SHOW_NUMBER="%1 %2 四位数码管 显示 %3";i.Msg.GROVEZERO_FOUR_DIGIT_START_COUNTDOWN="%1 %2 四位数码管 开始倒数 %3 秒";i.Msg.GROVEZERO_FOUR_DIGIT_OFF="%1 %2 四位数码管 熄灭";i.Msg.GROVEZERO_FOUR_DIGIT_SET_BRIGHTNESS="%1 %2 四位数码管 设置亮度 %3 %";i.Msg.GROVEZERO_BUZZER_PLAY_MELODY="%1 %2 蜂鸣器 播放旋律 %3 一次";i.Msg.GROVEZERO_BUZZER_PLAY_MELODY_OPT0="ba ding";i.Msg.GROVEZERO_BUZZER_PLAY_MELODY_OPT1="wawawawaa";i.Msg.GROVEZERO_BUZZER_PLAY_MELODY_OPT2="jump up";i.Msg.GROVEZERO_BUZZER_PLAY_MELODY_OPT3="jump down";i.Msg.GROVEZERO_BUZZER_PLAY_MELODY_OPT4="power up";i.Msg.GROVEZERO_BUZZER_PLAY_MELODY_OPT5="power down";i.Msg.GROVEZERO_BUZZER_PLAY_MELODY_OPT6="magic wand";i.Msg.GROVEZERO_BUZZER_PLAY_MELODY_OPT7="siren";i.Msg.GROVEZERO_BUZZER_MUTE_FOR_BEAT="%1 %2 蜂鸣器 停顿 %3 拍";i.Msg.GROVEZERO_BUZZER_SET_BPM="%1 %2 蜂鸣器 将节奏(bpm) 设定为 %3";i.Msg.GROVEZERO_BUZZER_ADD_BPM="%1 %2 蜂鸣器 将节奏(bpm) 增加 %3";i.Msg.GROVEZERO_BUZZER_GET_BPM="%1 %2 蜂鸣器 节奏(bpm)";i.Msg.GROVEZERO_BUZZER_STOP="%1 %2 蜂鸣器 停止播放";i.Msg.GROVEZERO_BUZZER_PLAY_NOTE="%1 %2 蜂鸣器 持续播放音符 %3";i.Msg.GROVEZERO_BUZZER_PLAY_NOTE_FOR_BEAT="%1 %2 蜂鸣器 弹奏音符 %3 持续 %4 拍";i.Msg.SOUND_BUZZER_NOTES_OPT0="低 C";i.Msg.SOUND_BUZZER_NOTES_OPT1="低 D";i.Msg.SOUND_BUZZER_NOTES_OPT2="低 E";i.Msg.SOUND_BUZZER_NOTES_OPT3="低 F";i.Msg.SOUND_BUZZER_NOTES_OPT4="低 G";i.Msg.SOUND_BUZZER_NOTES_OPT5="低 A";i.Msg.SOUND_BUZZER_NOTES_OPT6="低 B";i.Msg.SOUND_BUZZER_NOTES_OPT7="中 C";i.Msg.SOUND_BUZZER_NOTES_OPT8="中 D";i.Msg.SOUND_BUZZER_NOTES_OPT9="中 E";i.Msg.SOUND_BUZZER_NOTES_OPT10="中 F";i.Msg.SOUND_BUZZER_NOTES_OPT11="中 G";i.Msg.SOUND_BUZZER_NOTES_OPT12="中 A";i.Msg.SOUND_BUZZER_NOTES_OPT13="中 B";i.Msg.SOUND_BUZZER_NOTES_OPT14="高 C";i.Msg.SOUND_BUZZER_NOTES_OPT15="高 D";i.Msg.SOUND_BUZZER_NOTES_OPT16="高 E";i.Msg.SOUND_BUZZER_NOTES_OPT17="高 F";i.Msg.SOUND_BUZZER_NOTES_OPT18="高 G";i.Msg.SOUND_BUZZER_NOTES_OPT19="高 A";i.Msg.SOUND_BUZZER_NOTES_OPT20="高 B";i.Msg.SOUND_BUZZER_NOTES_OPT21="低 C#";i.Msg.SOUND_BUZZER_NOTES_OPT22="低 D#";i.Msg.SOUND_BUZZER_NOTES_OPT23="低 F#";i.Msg.SOUND_BUZZER_NOTES_OPT24="低 G#";i.Msg.SOUND_BUZZER_NOTES_OPT25="低 A#";i.Msg.SOUND_BUZZER_NOTES_OPT26="中 C#";i.Msg.SOUND_BUZZER_NOTES_OPT27="中 D#";i.Msg.SOUND_BUZZER_NOTES_OPT28="中 F#";i.Msg.SOUND_BUZZER_NOTES_OPT29="中 G#";i.Msg.SOUND_BUZZER_NOTES_OPT30="中 A#";i.Msg.SOUND_BUZZER_NOTES_OPT31="高 C#";i.Msg.SOUND_BUZZER_NOTES_OPT32="高 D#";i.Msg.SOUND_BUZZER_NOTES_OPT33="高 F#";i.Msg.SOUND_BUZZER_NOTES_OPT34="高 G#";i.Msg.SOUND_BUZZER_NOTES_OPT35="高 A#";i.Msg.GROVEZERO_MP3_START_PLAY="%1 %2 MP3播放器 播放第 %3 首歌";i.Msg.GROVEZERO_MP3_PAUSE_OR_PLAY="%1 %2 MP3播放器 %3 播放";i.Msg.GROVEZERO_MP3_SWITCH="%1 %2 MP3播放器 %3";i.Msg.GROVEZERO_MP3_ADD_VOLUME="%1 %2 MP3播放器 将音量增加 %3 %";i.Msg.GROVEZERO_MP3_SET_VOLUME="%1 %2 MP3播放器 将音量设定为 %3 %";i.Msg.GROVEZERO_MP3_STOP_PLAY="%1 %2 MP3播放器 停止播放";i.Msg.GROVEZERO_MP3_PLAY_MODE="%1 %2 MP3播放器 模式为 %3";i.Msg.GROVEZERO_MP3_PAUSE_OR_PLAY_OPT0="暂停";i.Msg.GROVEZERO_MP3_PAUSE_OR_PLAY_OPT1="恢复";i.Msg.GROVEZERO_MP3_SWITCH_OPT0="下一首";i.Msg.GROVEZERO_MP3_SWITCH_OPT1="上一首";i.Msg.GROVEZERO_MP3_PLAY_MODE_OPT0="顺序播放";i.Msg.GROVEZERO_MP3_PLAY_MODE_OPT1="随机播放";i.Msg.GROVEZERO_MP3_PLAY_MODE_OPT2="单曲循环";i.Msg.GROVEZERO_MAINBOARD_START="%1 %2 当控制板启动时";i.Msg.GROVEZERO_MAINBOARD_WHEN_ARRIVAL_TIME="%1 %2 当计时器大于 %3 秒";i.Msg.GROVEZERO_MAINBOARD_WHEN_RADIO_RECEIVE="%1 %2 当无线接收到 %3";i.Msg.GROVEZERO_MAINBOARD_BROADCAST="%1 %2 广播 %3";i.Msg.GROVEZERO_MAINBOARD_STOP_BROADCAST="%1 %2 停止广播";i.Msg.GROVEZERO_MAINBOARD_SET_BROADCAST_CHANNEL="%1 %2 设置广播频道 %3";i.Msg.GROVEZERO_TWIN_BUTTON_WHEN_CLICK="%1 %2 当 %3 双按钮开关 的 %4 被 %5";i.Msg.GROVEZERO_TWIN_BUTTON_IS_PRESSED="%1 %2 %3 双按钮开关 的 %4 正在被按下?";i.Msg.GROVEZERO_TWIN_BUTTON_WHEN_CLICK_OPT3="单击";i.Msg.GROVEZERO_TWIN_BUTTON_WHEN_CLICK_OPT5="长按";i.Msg.GROVEZERO_IMU9_DOF_STATUS_WHEN_CHANGE="%1 %2 当 9轴姿态传感器 %3";i.Msg.GROVEZERO_IMU9_DOF_STATUS_OPT0="竖直向下";i.Msg.GROVEZERO_IMU9_DOF_STATUS_OPT1="竖直向上";i.Msg.GROVEZERO_IMU9_DOF_STATUS_OPT2="向左倾斜";i.Msg.GROVEZERO_IMU9_DOF_STATUS_OPT3="向右倾斜";i.Msg.GROVEZERO_IMU9_DOF_STATUS_OPT4="正面朝上";i.Msg.GROVEZERO_IMU9_DOF_STATUS_OPT5="正面朝下";i.Msg.GROVEZERO_IMU9_DOF_STATUS_OPT6="被摇晃";i.Msg.GROVEZERO_IMU9_DOF_STATUS_OPT7="自由落体";i.Msg.GROVEZERO_IMU9_DOF_STATUS_IS="%1 %2 9轴姿态传感器 %3 ?";i.Msg.GROVEZERO_IMU9_DOF_GET_VALUE="%1 %2 9轴姿态传感器 %3 轴加速度值(mg)";i.Msg.GROVEZERO_PIR_MOTION_SENSOR_DETECT_SOMEONE="%1 %2 当 红外运动传感器 检测到人";i.Msg.GROVEZERO_MECH_KEY_WHENCLICK="%1 %2 当 %3 机械按钮开关 被 %4";i.Msg.GROVEZERO_MECH_KEY_WHENCLICK_OPT0="单击";i.Msg.GROVEZERO_MECH_KEY_WHENCLICK_OPT1="长按";i.Msg.GROVEZERO_MECH_KEY_IS_PRESSED="%1 %2 %3 机械按钮开关 正在被按下?";i.Msg.GROVEZERO_MECH_KEY_SET_RGB="%1 %2 %3 机械按钮开关 背灯亮 %4";i.Msg.GROVEZERO_MECH_KEY_CLOSE_RGB="%1 %2 %3 机械按钮开关 背灯熄灭";i.Msg.GROVEZERO_KNOB_WHEN_CHANGE="%1 %2 当 %3 旋钮调节器被 %4";i.Msg.GROVEZERO_KNOB_WHEN_CHANGE_OPT0="顺时针旋转";i.Msg.GROVEZERO_KNOB_WHEN_CHANGE_OPT1="逆时针旋转";i.Msg.GROVEZERO_KNOB_WHEN_CHANGE_OPT2="按下";i.Msg.GROVEZERO_GESTURE_SENSOR_WHEN_CHANGE="%1 %2 当 手势识别传感器 检测到 %3";i.Msg.GROVEZERO_GESTURE_SENSOR_WHEN_CHANGE_OPT0="向左划";i.Msg.GROVEZERO_GESTURE_SENSOR_WHEN_CHANGE_OPT1="向右划";i.Msg.GROVEZERO_GESTURE_SENSOR_WHEN_CHANGE_OPT2="向上划";i.Msg.GROVEZERO_GESTURE_SENSOR_WHEN_CHANGE_OPT3="向下划";i.Msg.GROVEZERO_GESTURE_SENSOR_WHEN_CHANGE_OPT4="物体靠近";i.Msg.GROVEZERO_GESTURE_SENSOR_WHEN_CHANGE_OPT5="物体远离";i.Msg.GROVEZERO_GESTURE_SENSOR_WHEN_CHANGE_OPT6="顺时针画圈";i.Msg.GROVEZERO_GESTURE_SENSOR_WHEN_CHANGE_OPT7="逆时针画圈";i.Msg.GROVEZERO_GESTURE_SENSOR_WHEN_CHANGE_OPT8="手指舞动";i.Msg.GROVEZERO_TOUCHPAD_IS_PRESSED="%1 %2 %3 多触摸开关 引脚 %4 被按下?";i.Msg.GROVEZERO_TOUCHPAD_WHEN_CLICK="%1 %2 当 %3 多触摸开关 引脚 %4 被按下";i.Msg.GROVEZERO_LIGHT_SENSOR_GET_VALUE="%1 %2 光线传感器 光线强度(流明)";i.Msg.GROVEZERO_SOUND_SENSOR_GET_VALUE="%1 %2 声音传感器 声音响度";i.Msg.GROVEZERO_TEMPERATURESENSOR_GET_VALUE="%1 %2 温度传感器 温度值 %3";i.Msg.GROVEZERO_TEMPERATURESENSOR_GET_VALUE_OPT0="℃";i.Msg.GROVEZERO_TEMPERATURESENSOR_GET_VALUE_OPT1="℉";i.Msg.GROVEZERO_SLIDER_GET_VALUE="%1 %2 %3 滑动变阻器 值";i.Msg.GROVEZERO_ULTRASONIC_SENSOR_GET_VALUE="%1 %2 超声波测距传感器 距离(厘米)";i.Msg.GROVEZERO_TEMHUM_SENSOR_GET_TEM_VALUE="%1 %2 温湿度传感器 温度值 %3";i.Msg.GROVEZERO_TEMHUM_SENSOR_GET_HUM_VALUE="%1 %2 温湿度传感器 湿度值(%)";i.Msg.GROVEZERO_COLOR_LINE_FOLLOWER_GET_COLOR="%1 %2 识色循迹传感器 颜色值";i.Msg.GROVEZERO_COLOR_LINE_FOLLOWER_IS_POSITION="%1 %2 识色循迹传感器 线的位置为 %3";i.Msg.GROVEZERO_COLOR_LINE_FOLLOWER_IS_POSITiON_OPT0="中";i.Msg.GROVEZERO_COLOR_LINE_FOLLOWER_IS_POSITiON_OPT1="右";i.Msg.GROVEZERO_COLOR_LINE_FOLLOWER_IS_POSITiON_OPT2="最右";i.Msg.GROVEZERO_COLOR_LINE_FOLLOWER_IS_POSITiON_OPT3="左";i.Msg.GROVEZERO_COLOR_LINE_FOLLOWER_IS_POSITiON_OPT4="最左";i.Msg.GROVEZERO_COLOR_LINE_FOLLOWER_IS_POSITiON_OPT5="丢失";i.Msg.GROVEZERO_COLOR_LINE_FOLLOWER_IS_COLOR="%1 %2 识色循迹传感器 检测到 %3 色";i.Msg.GROVEZERO_COLOR_LINE_FOLLOWER_IS_COLOR_OPT0="红";i.Msg.GROVEZERO_COLOR_LINE_FOLLOWER_IS_COLOR_OPT1="绿";i.Msg.GROVEZERO_COLOR_LINE_FOLLOWER_IS_COLOR_OPT2="蓝";i.Msg.GROVEZERO_COLOR_LINE_FOLLOWER_IS_COLOR_OPT3="黑";i.Msg.GROVEZERO_COLOR_LINE_FOLLOWER_IS_COLOR_OPT4="其他";i.Msg.ARDUINO_SEEED_SERVO_MOVE="%1 %2 舵机 管脚 %3 角度 %4 延时 %5";i.Msg.ARDUINO_SEEED_SERVO_READ_DEGREES="%1 %2 舵机 管脚 %3 读取读取";i.Msg.ARDUINO_SEEED_LED="%1 %2 LED灯 管脚 %3 设为 %4";i.Msg.ARDUINO_SEEED_BUZZER="%1 %2 蜂鸣器 管脚 %3 设为 %4";i.Msg.ARDUINO_SEEED_RELAY="%1 %2 继电器 管脚 %3 设为 %4";i.Msg.ARDUINO_SEEED_BTN="%1 %2 按键正在被按下 管脚 %3";i.Msg.ARDUINO_SEEED_TILT="%1 %2 倾斜传感器 管脚 %3";i.Msg.ARDUINO_SEEED_TOUCH="%1 %2 触摸 管脚 %3";i.Msg.ARDUINO_SEEED_ROTATION="%1 %2 旋转电位计 管脚 %3";i.Msg.ARDUINO_SEEED_SOUND="%1 %2 噪声(模拟) 管脚 %3";i.Msg.ARDUINO_SEEED_LIGHT="%1 %2 光线传感器 管脚 %3";i.Msg.ARDUINO_SEEED_TEMPERATURE="%1 %2 温度传感器 管脚 %3";i.Msg.ARDUINO_GROVE_SERIAL_LCD_PRINT="%1 %2 全彩背光LCD屏 打印第1行 %3 打印第2行 %4";i.Msg.ARDUINO_GROVE_SERIAL_LCD_PRINT2="%1 %2 全彩背光LCD屏 在第 %3 行 第 %4 列 打印 %5";i.Msg.ARDUINO_GROVE_SERIAL_LCD_POWER="%1 %2 全彩背光LCD屏 %3";i.Msg.ARDUINO_GROVE_SERIAL_LCD_POWER_OPT1="开";i.Msg.ARDUINO_GROVE_SERIAL_LCD_POWER_OPT2="关";i.Msg.ARDUINO_GROVE_SERIAL_LCD_POWER_OPT3="有光标";i.Msg.ARDUINO_GROVE_SERIAL_LCD_POWER_OPT4="无光标";i.Msg.ARDUINO_GROVE_SERIAL_LCD_POWER_OPT5="闪烁";i.Msg.ARDUINO_GROVE_SERIAL_LCD_POWER_OPT6="不闪烁";i.Msg.ARDUINO_GROVE_SERIAL_LCD_POWER_OPT7="清除";i.Msg.ARDUINO_GROVE_SERIAL_LCD_SETRGB="%1 %2 全彩背光LCD屏 设置颜色 R %3 G %4 B %5";i.Msg.ARDUINO_SEEED_TEMPERATURE_HUMIDITY="%1 %2 温湿度传感器 管脚 %3 %4";i.Msg.ARDUINO_SEEED_TEMPERATURE_HUMIDITY_OPT1="温度";i.Msg.ARDUINO_SEEED_TEMPERATURE_HUMIDITY_OPT2="湿度";i.Msg.ARDUINO_SEEED_THUMB_JOYSTICK="%1 %2 拇指控制杆管脚 %3 坐标值 %4轴";i.Msg.ARDUINO_SEEED_ULT="%1 %2 超声波测距传感器距离(cm) 管脚 %3";i.Msg.ARDUINO_SEEED_LINE_FINDER="%1 %2 红外接近传感器 管脚 %3";i.Msg.ARDUINO_SEEED_LINE_FINDER_R="%1 %2 巡线传感器 管脚 %3";i.Msg.ARDUINO_SEEED_WATER="%1 %2 水分子检测传感器 管脚 %3";i.Msg.ARDUINO_SEEED_MAGNETIC_SWITCH="%1 %2 磁力开关 管脚 %3";i.Msg.ARDUINO_SEEED_PIR_MOTION="%1 %2 人体红外传感器 管脚 %3";i.Msg.ARDUINO_SEEED_FLAME="%1 %2 火焰传感器 管脚 %3";i.Msg.ARDUINO_SEEED_COLLISION="%1 %2 碰撞传感器 管脚 %3";i.Msg.ARDUINO_SEEED_HALL="%1 %2 霍尔电磁开关 管脚 %3";i.Msg.ARDUINO_SEEED_SLIDE_POT="%1 %2 滑动电位开关 管脚 %3";i.Msg.ARDUINO_SEEED_MOISTURE="%1 %2 土壤湿度传感器 管脚 %3";i.Msg.ARDUINO_SEEED_4DIGIT_DISPLAY="%1 %2 4位数码管 管脚 %3 显示为 %4";i.Msg.ARDUINO_SEEED_RGB_LED="%1 %2 炫彩RGB LED灯 管脚 %3 显示为 %4 序号 %5";i.Msg.ARDUINO_SEEED_RGB_LED1="%1 %2 炫彩RGB LED灯 管脚 %3 显示为 R %4 G %5 B %6 序号 %7";i.Msg.ARDUINO_SEEED_RGB_LED10="%1 %2 炫彩RGB LED灯 管脚 %3 显示为 %4";i.Msg.ARDUINO_SEEED_RGB_LED11="%1 %2 炫彩RGB LED灯 管脚 %3 显示为 R %4 G %5 B %6";i.Msg.ARDUINO_SEEED_SPEAKER="%1 %2 扬声器 管脚 %3 播放音符 %4 以%5拍";i.Msg.ARDUINO_SEEED_RECORDER="%1 %2 录音播放模块 管脚 %3 %4";i.Msg.ARDUINO_SEEED_EL_DRIVER="%1 %2 冷光条驱动 管脚 %3 设为 %4";i.Msg.ARDUINO_SEEED_EL_VIBRATION_MOTOR="%1 %2 震动马达 管脚 %3 设为 %4";i.Msg.ARDUINO_SEEED_ELECTROMAGNET="%1 %2 电磁铁模块 管脚 %3 设为 %4";i.Msg.ARDUINO_SEEED_MINI_FAN="%1 %2 迷你风扇 管脚 %3 设为 %4";i.Msg.ARDUINO_GROVE_SERIAL_3ADA="%1 %2 三轴数字加速度(16g) %3 轴";i.Msg.ARDUINO_GROVE_SERIAL_TOUCH="%1 %2 多通道触摸传感器 通道 %3";i.Msg.ARDUINO_GROVE_SERIAL_MINI_MOTOR_DRIVER="%1 %2 迷你电机驱动模块 电机 %3 转速(-255~255)%4";i.Msg.ARDUINO_GROVE_SERIAL_MINI_MOTOR_DRIVER_STOP="%1 %2 迷你电机驱动模块 电机 %3 停止";i.Msg.ARDUINO_SEEED_LED_STRING_LIGHT="%1 %2 LED灯条 管脚 %3 编号 %4 显示为 R %5 G %6 B %7";i.Msg.ARDUINO_SEEED_LED_BAR="%1 %2 柱状发光二级管 管脚 %3 %4 %5";i.Msg.ARDUINO_SEEED_LED_CIRCULAR_LED="%1 %2 环形发光二级管 管脚 %3 亮灯 %4";i.Msg.ARDUINO_SEEED_GESTURE="%1 %2 手势识别传感器 识别手势 %3?";i.Msg.ARDUINO_SEEED_SPEECH_RECOGNIZER="%1 %2 语音识别传感器 管脚 %3 识别语音 %4?";i.Msg.ARDUINO_FIGURE_OUTPUT="数字输出 管脚 %1 设为 %2";i.Msg.ARDUINO_FIGURE_INPUT="数字输入 管脚 %1";i.Msg.ARDUINO_ANALOG_INPUT="模拟输入 管脚 %1";i.Msg.ARDUINO_ANALOG_OUTPUT="模拟输出 管脚 %1 赋值为 %2";i.Msg.ARDUINO_PULSE_LEN="脉冲长度 管脚 %1 状态 %2";i.Msg.ARDUINO_PULSE_LEN_US="脉冲长度 管脚 %1 状态 %2 超时(微秒) %3";i.Msg.ARDUINO_SERIAL_BAUD_RATE="串口 波特率 %1";i.Msg.ARDUINO_SERIAL_PRINT="串口 写入文本 %1";i.Msg.ARDUINO_SERIAL_IS_READABLE="串口 有数据可读吗?";i.Msg.ARDUINO_SERIAL_READ="串口 读取字符串";i.Msg.ARDUINO_DELAY_MS="延时 毫秒 %1";i.Msg.ARDUINO_DELAY_US="延时 微秒 %1";i.Msg.ARDUINO_SYS_TIME="系统运行时间 %1";i.Msg.ARDUINO_KEEP_WAIT="一直等待(结束程序)";i.Msg.ARDUINO_FOR1="使用 %1 从 %2 到 %3 步长为 %4";i.Msg.ARDUINO_FOR2="执行 %1";i.Msg.ARDUINO_GROVE_SERIAL_RGB_LED_MATRIX_ON_POINT="%1 %2 RGB矩阵 点亮 x:%3 y:%4 %5";i.Msg.ARDUINO_GROVE_SERIAL_RGB_LED_MATRIX_SHOW_TEXT="%1 %2 RGB矩阵 显示字符串 %3";i.Msg.ARDUINO_GROVE_SERIAL_RGB_LED_MATRIX_SHOW_EMOJS="%1 %2 RGB矩阵 显示图案 %3";i.Msg.ARDUINO_GROVE_OTTO_DIY_ROBOT1="%1 %2 Otto DIY机器人 %3 步数:%4 时间:%5";i.Msg.ARDUINO_GROVE_OTTO_DIY_ROBOT2="%1 %2 Otto DIY机器人 %3 步数:%4 时间:%5 方向:%6";i.Msg.ARDUINO_SETUP_LOOP0="初始化 setup";i.Msg.ARDUINO_SETUP_LOOP2="循环 loop";i.Msg.ARDUINO_REPEAT="重复当 %1";i.Msg.ARDUINO_BREAK="中断循环";i.Msg.ARDUINO_SEEED_GESTURE_OPT0="向上";i.Msg.ARDUINO_SEEED_GESTURE_OPT1="向下";i.Msg.ARDUINO_SEEED_GESTURE_OPT2="向左";i.Msg.ARDUINO_SEEED_GESTURE_OPT3="向右";i.Msg.ARDUINO_SEEED_GESTURE_OPT4="向前";i.Msg.ARDUINO_SEEED_GESTURE_OPT5="向后";i.Msg.ARDUINO_SEEED_GESTURE_OPT6="顺时针";i.Msg.ARDUINO_SEEED_GESTURE_OPT7="逆时针";i.Msg.ARDUINO_SEEED_GESTURE_OPT8="挥手";i.Msg.ARDUINO_GROVE_SERIAL_RGB_LED_MATRIX_ON_POINT_OPT0="红";i.Msg.ARDUINO_GROVE_SERIAL_RGB_LED_MATRIX_ON_POINT_OPT1="橙";i.Msg.ARDUINO_GROVE_SERIAL_RGB_LED_MATRIX_ON_POINT_OPT2="黄";i.Msg.ARDUINO_GROVE_SERIAL_RGB_LED_MATRIX_ON_POINT_OPT3="绿";i.Msg.ARDUINO_GROVE_SERIAL_RGB_LED_MATRIX_ON_POINT_OPT4="青";i.Msg.ARDUINO_GROVE_SERIAL_RGB_LED_MATRIX_ON_POINT_OPT5="蓝";i.Msg.ARDUINO_GROVE_SERIAL_RGB_LED_MATRIX_ON_POINT_OPT6="紫";i.Msg.ARDUINO_GROVE_SERIAL_RGB_LED_MATRIX_ON_POINT_OPT7="粉红";i.Msg.ARDUINO_GROVE_SERIAL_RGB_LED_MATRIX_ON_POINT_OPT8="白";i.Msg.ARDUINO_GROVE_SERIAL_RGB_LED_MATRIX_ON_POINT_OPT9="熄灭";i.Msg.ARDUINO_GROVE_OTTO_DIY_ROBOT1_OPT0="前进";i.Msg.ARDUINO_GROVE_OTTO_DIY_ROBOT1_OPT1="后退";i.Msg.ARDUINO_GROVE_OTTO_DIY_ROBOT1_OPT2="往左";i.Msg.ARDUINO_GROVE_OTTO_DIY_ROBOT1_OPT3="往右";i.Msg.ARDUINO_GROVE_OTTO_DIY_ROBOT2_OPT0="停止";i.Msg.ARDUINO_GROVE_OTTO_DIY_ROBOT2_OPT1="跳动";i.Msg.ARDUINO_GROVE_OTTO_DIY_ROBOT2_OPT2="侧踢";i.Msg.ARDUINO_GROVE_OTTO_DIY_ROBOT2_OPT3="摇摇腿";i.Msg.ARDUINO_GROVE_OTTO_DIY_ROBOT2_OPT4="上下摇摆";i.Msg.ARDUINO_GROVE_OTTO_DIY_ROBOT2_OPT5="左右摇摆";i.Msg.ARDUINO_GROVE_OTTO_DIY_ROBOT2_OPT6="舞动脚尖";i.Msg.ARDUINO_GROVE_OTTO_DIY_ROBOT2_OPT7="抖动";i.Msg.ARDUINO_GROVE_OTTO_DIY_ROBOT2_OPT8="上下抖动";i.Msg.ARDUINO_GROVE_OTTO_DIY_ROBOT2_OPT9="太空步";i.Msg.ARDUINO_GROVE_OTTO_DIY_ROBOT2_OPT10="月球漫步";i.Msg.ARDUINO_GROVE_OTTO_DIY_ROBOT2_OPT11="摇摆";i.Msg.ARDUINO_GROVE_OTTO_DIY_ROBOT2_OPT12="向右/向前";i.Msg.ARDUINO_GROVE_OTTO_DIY_ROBOT2_OPT13="向左/向后";i.Msg.ARDUINO_SHIELD_BOT2="%1 %2 Shield Bot 小车 循迹传感器线的位置为 %3";i.Msg.ARDUINO_SHIELD_BOT2_OPT1="中";i.Msg.ARDUINO_SHIELD_BOT2_OPT2="左";i.Msg.ARDUINO_SHIELD_BOT2_OPT3="最左";i.Msg.ARDUINO_SHIELD_BOT2_OPT4="右";i.Msg.ARDUINO_SHIELD_BOT2_OPT5="最右";i.Msg.ARDUINO_SHIELD_BOT2_OPT6="丢失";i.Msg.ARDUINO_SHIELD_BOT1="%1 %2 Shield Bot 小车 %3 %4";i.Msg.ARDUINO_SHIELD_BOT1_OPT1="前进";i.Msg.ARDUINO_SHIELD_BOT1_OPT2="后退";i.Msg.ARDUINO_SHIELD_BOT1_OPT3="往左";i.Msg.ARDUINO_SHIELD_BOT1_OPT4="往右";i.Msg.ARDUINO_SHIELD_BOT1_OPT5="停止";i.Msg.ARDUINO_SHIELD_BOT1_OPT6="低速";i.Msg.ARDUINO_SHIELD_BOT1_OPT7="中速";i.Msg.ARDUINO_SHIELD_BOT1_OPT8="高速";i.Msg.CATEGORY_ARDUINO_INIT="初始化";i.Msg.CATEGORY_ARDUINO_INPUT="输入";i.Msg.CATEGORY_ARDUINO_OUTPUT="输出";i.Msg.CATEGORY_ARDUINO_SERIAL="串口";i.Msg.CATEGORY_ARDUINO_GROVE_IGURE="Grove 数字";i.Msg.CATEGORY_ARDUINO_GROVE_ANALOG="Grove 模拟";i.Msg.CATEGORY_ARDUINO_GROVE_I2C="Grove I2C";i.Msg.CATEGORY_ARDUINO_ROBOT_KIT="M.A.R.K";i.Msg.ARDUINO_WEBSERVER_SHOW="%1 %2 web服务器 %3 %4 显示 名称:%5 数值:%6";i.Msg.ARDUINO_WEBSERVER_SHOW_OPT1="水分子检测传感器";i.Msg.ARDUINO_WEBSERVER_SHOW_OPT2="超声波测距传感器";i.Msg.ARDUINO_WEBSERVER_SHOW_OPT3="人体红外传感器";i.Msg.ARDUINO_WEBSERVER_SHOW_OPT4="温湿度传感器";i.Msg.ARDUINO_WEBSERVER_SHOW_OPT5="LED灯";i.Msg.ARDUINO_WEBSERVER_SHOW_OPT6="振动传感器";i.Msg.ARDUINO_WEBSERVER_SHOW_OPT7="电压分压器";i.Msg.ARDUINO_WEBSERVER_SHOW_OPT8="空气质量传感器";i.Msg.ARDUINO_WEBSERVER_SHOW_OPT9="火焰传感器";i.Msg.ARDUINO_WEBSERVER_SHOW_OPT10="图像识别传感器";i.Msg.ARDUINO_WEBSERVER_INIT="%1 %2 web服务器 初始化 %3 网络名称 %4 密码 %5";i.Msg.ARDUINO_WEBSERVER_INIT_OPT1="智慧城市";i.Msg.ARDUINO_COLOR_SENSOR="%1 %2 颜色识别传感器 识别到颜色 %3 ?";i.Msg.ARDUINO_COLOR_SENSOR_OPT1="红";i.Msg.ARDUINO_COLOR_SENSOR_OPT2="绿";i.Msg.ARDUINO_COLOR_SENSOR_OPT3="蓝";i.Msg.ARDUINO_COLOR_SENSOR_OPT4="黑";i.Msg.ARDUINO_COLOR_SENSOR_OPT5="白";i.Msg.ARDUINO_COLOR_SENSOR_OPT6="其他";i.Msg.GROVEZERO_MATH_ITOA_VALUE_MESSAGE0="转字符串 %1";i.Msg.TOOLBOX_EXTENSION_CATEGORY_NAME="扩展";i.Msg.ARDUINO_SEEED_VOLTAGE="%1 %2 电压分压器 管脚 %3";i.Msg.ARDUINO_SEEED_QUALITY="%1 %2 空气质量传感器 管脚 %3";i.Msg.ARDUINO_SEEED_WATER_ANALOG="%1 %2 水分子检测传感器 管脚 %3";i.Msg.ARDUINO_SEEED_HUMIDIFIER="%1 %2 超声波雾化器 管脚 %3 设为 %4";i.Msg.ARDUINO_SEEED_VIBRATION="%1 %2 震动传感器 管脚 %3";i.Msg.ARDUINO_SEEED_LED_ANALOG="%1 %2 LED灯 管脚 %3 设为 %4";i.Msg.ARDUINO_VISION_SENSOR1="%1 %2 图像识别传感器 识别 球体 %3";i.Msg.ARDUINO_VISION_SENSOR1_OPT1="橙色乒乓球";i.Msg.ARDUINO_VISION_SENSOR1_OPT2="绿色网球";i.Msg.ARDUINO_VISION_SENSOR2="%1 %2 图像识别传感器 识别 交通标示卡片 %3";i.Msg.ARDUINO_VISION_SENSOR3="%1 %2 图像识别传感器 识别 数字卡片 %3";i.Msg.ARDUINO_VISION_SENSOR4="%1 %2 图像识别传感器 识别 图形卡片 %3";i.Msg.ARDUINO_VISION_SENSOR4_OPT1="对号";i.Msg.ARDUINO_VISION_SENSOR4_OPT2="叉号";i.Msg.ARDUINO_VISION_SENSOR4_OPT3="圆形";i.Msg.ARDUINO_VISION_SENSOR4_OPT4="方形";i.Msg.ARDUINO_VISION_SENSOR4_OPT5="三角形";i.Msg.ARDUINO_VISION_SENSOR5="%1 %2 图像识别传感器 识别 人体";i.Msg.ARDUINO_VISION_SENSOR6="%1 %2 图像识别传感器 识别 颜色 %3";i.Msg.ARDUINO_VISION_SENSOR7="%1 %2 图像识别传感器 获取识别颜色值";i.Msg.BUZZER_TONE_LOW="低";i.Msg.BUZZER_TONE_MIDDLE="中";i.Msg.BUZZER_TONE_HIGH="高";i.Msg.BUZZER_SELECTED_PREFIX="已选:";i.Msg.ARDUINO_LED_STRIP1="%1 %2 炫彩RGB LED灯条 管脚 %3 显示为R值 %4 G值 %5 B值 %6 序号 %7";i.Msg.ARDUINO_LED_STRIP2="%1 %2 炫彩RGB LED灯条 管脚 %3 显示为R值 %4 G值 %5 B值 %6";i.Msg.ARDUINO_VISION_SENSOR8="%1 %2 图像识别传感器 获取球体 %3 值";i.Msg.ARDUINO_OLCD1="%1 %2 OLCD屏幕 显示图案 %3";i.Msg.ARDUINO_OLCD2="%1 %2 OLCD屏幕 显示字符串 %3 第 %4 行,第 %5 列";i.Msg.ARDUINO_OLCD3="%1 %2 OLCD屏幕 清除显示";i.Msg.MAIXDUINO_ENENT_WHENSTARTUP="当启动时";i.Msg.MAIXDUINO_DISPLAY_STRING="显示 %1 于第 %2 行";i.Msg.MAIXDUINO_DISPLAY_SET_CIRCLE="绘制圆形:圆心坐标 X%1 Y%2 半径%3";i.Msg.MAIXDUINO_DISPLAY_SET_RECTANGLE="绘制长方形: X1%1 Y1%2 X2%3 Y2%4";i.Msg.MAIXDUINO_DISPLAY_DRAW_CIRCLE="%1 %2 绘制圆形区域 %3";i.Msg.MAIXDUINO_DISPLAY_DRAW_RECTANGLE="%1 %2 绘制长方形区域 %3";i.Msg.MAIXDUINO_CAMERA_SET_THRESHOLD="设置图像识别 灵敏度为 %1";i.Msg.MAIXDUINO_CAMERA_TAKE_PICTURE="拍照: 文件名 %1";i.Msg.MAIXDUINO_CAMERA_TAKE_VIDEO="录像:时间 %1 秒, 文件名 %2";i.Msg.MAIXDUINO_CAMERA_DETECTION_BALL="检测到圆形";i.Msg.MAIXDUINO_CAMERA_DETECTION_BALL_COORD="检测到的圆 %1";i.Msg.MAIXDUINO_CAMERA_DETECTION_BALL_VALUE="检测到的圆信息";i.Msg.MAIXDUINO_CAMERA_DETECTION_RECTANGLE="检测到长方形";i.Msg.MAIXDUINO_CAMERA_DETECTION_RECTANGLE_COORD="检测到的长方形 %1";i.Msg.MAIXDUINO_CAMERA_DETECTION_RECTANGLE_VALUE="检测到的长方形信息";i.Msg.MAIXDUINO_CAMERA_GET_BALL_AVERAGE_COLOR="%1 %2 球形区域:X坐标 %3 Y坐标 %4 R值 %5 的平均颜色RGB值";i.Msg.MAIXDUINO_CAMERA_GET_RECTANGLE_AVERAGE_COLOR="%1 %2 长方形区域:Xmin坐标 %3 Xmax坐标 %4 Ymin坐标 %5 Ymax坐标 %6 的平均颜色RGB值";i.Msg.MAIXDUINO_CAMERA_INTEREST_AREA_COLOR="%1 %2 兴趣区域 %3 检测到 %4";i.Msg.MAIXDUINO_CAMERA_INTEREST_AREA_AVERAGE_COLOR="%1 %2 兴趣区域 %3 的平均颜色RGB值";i.Msg.MAIXDUINO_SENSING_HOME_ANIMAL_DETECTION="家庭动物识别结果 概率 > %1 %";i.Msg.MAIXDUINO_SENSING_HOME_ANIMAL_SEL_DETECTION="家庭动物 识别结果为 %1 概率 > %2 %";i.Msg.MAIXDUINO_SENSING_ZOO_ANIMAL_DETECTION="动物园动物识别结果 概率 > %1 %";i.Msg.MAIXDUINO_SENSING_ZOO_ANIMAL_SEL_DETECTION="动物园动物 识别结果为 %1 概率 > %2 %";i.Msg.MAIXDUINO_SENSING_ORDINARY_OBJECT_DETECTION="普通物体识别结果 概率 > %1 %";i.Msg.MAIXDUINO_SENSING_ORDINARY_OBJECT_SEL_DETECTION="普通物体 识别结果为 %1 概率 > %2 %";i.Msg.MAIXDUINO_SENSING_NUM_DETECTION="检测到的数字结果 概率 > %1 %";i.Msg.MAIXDUINO_NUM_SEL_DETECTION="数字 检测结果为 %1 概率 > %2 %";i.Msg.MAIXDUINO_NUM_CERTRE_DETECTION="检测到的数字 %1 的 %2 概率 > %3 %";i.Msg.MAIXDUINO_SENSING_TRAFFIC_SIGNS_DETECTION="检测到的交通标志 概率 > %1 %";i.Msg.MAIXDUINO_TRAFFIC_SIGNS_SEL_DETECTION="交通标志 检测结果为 %1 概率 > %2 %";i.Msg.MAIXDUINO_TRAFFIC_SIGNS_CERTRE_DETECTION="检测到的交通标志 %1 的 %2 概率 >%3 %";i.Msg.MAIXDUINO_INPUT_SYSTEMTIME="系统运行时间 %1";i.Msg.MAIXDUINO_CAMERA_R_MAX="R最大";i.Msg.MAIXDUINO_CAMERA_R_MIN="R最小";i.Msg.MAIXDUINO_CAMERA_SIZE_MAX="最大";i.Msg.MAIXDUINO_CAMERA_SIZE_MIN="最小";i.Msg.MAIXDUINO_CAMERA_COORD_X="位置:X坐标";i.Msg.MAIXDUINO_CAMERA_COORDP_Y="Y坐标";i.Msg.MAIXDUINO_CAMERA_COORDP_XMIN="位置:Xmin坐标";i.Msg.MAIXDUINO_CAMERA_COORDP_YMIN="位置:Ymin坐标";i.Msg.MAIXDUINO_CAMERA_COORDP_XMAX="位置:Xmax坐标";i.Msg.MAIXDUINO_CAMERA_COORDP_YMAX="位置:Ymax坐标";i.Msg.MAIXDUINO_CAMERA_R_VALUE="半径";i.Msg.MAIXDUINO_CAMERA_SENSOR_OPT1="红色";i.Msg.MAIXDUINO_CAMERA_SENSOR_OPT2="绿色";i.Msg.MAIXDUINO_CAMERA_SENSOR_OPT3="蓝色";i.Msg.MAIXDUINO_CAMERA_SENSOR_OPT4="黄色";i.Msg.MAIXDUINO_CAMERA_SENSOR_OPT5="青色";i.Msg.MAIXDUINO_CAMERA_SENSOR_OPT6="紫色";i.Msg.MAIXDUINO_CAMERA_SENSOR_OPT7="黑色";i.Msg.MAIXDUINO_CAMERA_SENSOR_OPT8="白色";i.Msg.MAIXDUINO_SENSING_ANIMAL_OPT1="猫";i.Msg.MAIXDUINO_SENSING_ANIMAL_OPT2="狗";i.Msg.MAIXDUINO_SENSING_ANIMAL_OPT3="鸟";i.Msg.MAIXDUINO_SENSING_ANIMAL_OPT4="刺猬";i.Msg.MAIXDUINO_SENSING_ANIMAL_OPT5="老鼠";i.Msg.MAIXDUINO_SENSING_ANIMAL_OPT6="鳄鱼";i.Msg.MAIXDUINO_SENSING_ANIMAL_OPT7="熊";i.Msg.MAIXDUINO_SENSING_ANIMAL_OPT8="大象";i.Msg.MAIXDUINO_SENSING_ANIMAL_OPT9="长颈鹿";i.Msg.MAIXDUINO_SENSING_ANIMAL_OPT10="老虎";i.Msg.MAIXDUINO_SENSING_ANIMAL_OPT11="蝴蝶";i.Msg.MAIXDUINO_SENSING_ANIMAL_OPT12="蟑螂";i.Msg.MAIXDUINO_SENSING_ANIMAL_OPT13="鱼";i.Msg.MAIXDUINO_SENSING_ANIMAL_OPT14="蜥蜴";i.Msg.MAIXDUINO_SENSING_ANIMAL_OPT15="蜘蛛";i.Msg.MAIXDUINO_TRAFFIC_SIGNS_OPT0="左转";i.Msg.MAIXDUINO_TRAFFIC_SIGNS_OPT1="右转";i.Msg.MAIXDUINO_TRAFFIC_SIGNS_OPT2="直行";i.Msg.MAIXDUINO_TRAFFIC_SIGNS_OPT3="调头";i.Msg.MAIXDUINO_TRAFFIC_SIGNS_OPT4="停车让行";i.Msg.MAIXDUINO_TRAFFIC_SIGNS_OPT5="限速5";i.Msg.MAIXDUINO_TRAFFIC_SIGNS_OPT6="限速80";i.Msg.MAIXDUINO_TRAFFIC_SIGNS_OPT7="禁止直行";i.Msg.MAIXDUINO_TRAFFIC_SIGNS_OPT8="减速让行";i.Msg.MAIXDUINO_TRAFFIC_SIGNS_OPT9="注意行人";i.Msg.MAIXDUINO_SENSING_OBJECT_OPT1="椅子";i.Msg.MAIXDUINO_SENSING_OBJECT_OPT2="书籍";i.Msg.MAIXDUINO_SENSING_OBJECT_OPT3="杯子";i.Msg.MAIXDUINO_SENSING_OBJECT_OPT4="笔";i.Msg.MAIXDUINO_SENSING_OBJECT_OPT5="比萨饼";i.Msg.MAIXDUINO_SENSING_OBJECT_OPT6="智能手机";i.Msg.MAIXDUINO_SENSING_OBJECT_OPT7="炸弹";i.Msg.MAIXDUINO_SENSING_OBJECT_OPT8="电脑";i.Msg.MAIXDUINO_SENSING_OBJECT_OPT9="人";i.Msg.MAIXDUINO_SENSING_OBJECT_OPT10="背包";i.Msg.MAIXDUINO_SENSING_COORD_X="X 坐标";i.Msg.MAIXDUINO_SENSING_COORD_Y="Y 坐标";i.Msg.MAIXDUINO_LINEPAROL_ANGLE="%1 %2 巡线 设置线识别颜色为 %3 区域权重 红区%4% 蓝区%5% 绿区%6%";i.Msg.MAIXDUINO_CAMERA_BALL_AERA="球形";i.Msg.MAIXDUINO_CAMERA_RECTANGLE_AERA="长方形";i.Msg.MAIXDUINO_ROBOT_MARK_RUN="M.A.R.K 小车以 %1 %2";i.Msg.MAIXDUINO_ROBOT_MOTOR_RUN="M.A.R.K 设置 %1 转速为 %2 %";i.Msg.MAIXDUINO_ROBOT_SERVO_RUN="M.A.R.K 舵机 %1 转到 %2 度";i.Msg.MAIXDUINO_ROBOT_STEPPER_SERVO_SETANGLE="M.A.R.K 设置步进电机步距角为 %1 °";i.Msg.MAIXDUINO_ROBOT_STEPPER_SERVO_SETROTATESPEED="M.A.R.K 设置步进电机转速为 %1 RPM";i.Msg.MAIXDUINO_ROBOT_STEPPER_SERVO_RUN="M.A.R.K 步进电机转动 %1 步";i.Msg.MAIXDUINO_ROBOT_STEPPER_SERVO_TURN="M.A.R.K 视觉巡线: 转弯角度 %1 速度 %2 灵敏度 %3";i.Msg.CocoRobo_ENENT_WHENSTARTUP="%1 %2 当教科板 启动";i.Msg.CocoRobo_ENENT_WHENACTION="%1 %2 当按键 %3 被 %4 时";i.Msg.CocoRobo_ENENT_WHENPINVOLTAGE="%1 %2 当引脚 %3 被 %4 时";i.Msg.CocoRobo_ENENT_WHENSHARK="%1 %2 当教科板 被摇晃时";i.Msg.CocoRobo_ENENT_TILT_DIRECTION="%1 %2 当教科板 %3 时";i.Msg.CocoRobo_ENENT_WHENTOUCHKEY="%1 %2 当触摸键 %3 被 %4 时";i.Msg.CocoRobo_ENENT_FOR1="%1 %2 设置定时器 %3 %4 周期 %5 毫秒";i.Msg.CocoRobo_ENENT_FOR2="执行 %1";i.Msg.CocoRobo_ENENT_CLEAR_TIMER="%1 %2 清除 定时器/事件 %3";i.Msg.CocoRobo_ENENT_TIMER_COUNT="%1 %2 定时器 %3 的计数值";i.Msg.CocoRobo_EVENT_WHEN_ACTION="%1 %2 事件 %3 : 当 %4 时";i.Msg.CocoRobo_EVENT_CHILD_THREAD="%1 %2 子线程 %3";i.Msg.CocoRobo_SYSRESOURES_BUTTON_PRESSED="%1 %2 按键 %3 被按下";i.Msg.CocoRobo_SYSRESOURES_BUTTON_TOUCH="%1 %2 按键 %3 被触摸";i.Msg.CocoRobo_SYSRESOURES_TOUCH_VALUE="%1 %2 按键 %3 触摸值";i.Msg.CocoRobo_SYSRESOURES_VOLUME="%1 %2 声音值";i.Msg.CocoRobo_SYSRESOURES_LIGHT="%1 %2 光线值";i.Msg.CocoRobo_SYSRESOURES_ACCELERATION="%1 %2 %3 轴加速度";i.Msg.CocoRobo_SYSRESOURES_SLOPE="%1 %2 %3 轴倾斜角";i.Msg.CocoRobo_SYSRESOURES_SHARKED="%1 %2 掌控版 被摇晃";i.Msg.CocoRobo_SYSRESOURES_SLOPE_ANGLE="%1 %2 掌控版 %3";i.Msg.CocoRobo_SYSRESOURES_SET_SINGLE_COLOR="%1 %2 设置 %3 RGB灯颜色为 %4";i.Msg.CocoRobo_SYSRESOURES_SET_SINGLE_RGB="%1 %2 设置 %3 RGB灯颜色为 R %4 G %5 B %6";i.Msg.CocoRobo_SYSRESOURES_SET_ALL_COLOR="%1 %2 设置所有 RGB灯颜色为 %3";i.Msg.CocoRobo_SYSRESOURES_SET_ALL_RGB="%1 %2 设置所有 RGB灯颜色为 R %3 G %4 B %5";i.Msg.CocoRobo_SYSRESOURES_CLOSE_RGB="%1 %2 关闭 RGB灯";i.Msg.CocoRobo_SYSRESOURES_SET_BME280="%1 %2 BME280 %3";i.Msg.CocoRobo_SYSRESOURES_DRAW_CLOCK="%1 %2 绘制时钟 x %3 y %4 半径 %5";i.Msg.CocoRobo_SYSRESOURES_CLOCK_OPERATE="%1 %2 %3 时钟";i.Msg.CocoRobo_SYSRESOURES_SET_RUN_TIME="%1 %2 运行时间 %3";i.Msg.CocoRobo_SYSRESOURES_SET_LOCAL_TIME="%1 %2 本地时间 %3";i.Msg.CocoRobo_SYSRESOURES_RESET="%1 %2 复位";i.Msg.CocoRobo_SYSRESOURES_MAC_ADDRESS="%1 %2 MAC地址";i.Msg.CocoRobo_LOOKS_OLCD="%1 %2 LCD 屏 %3";i.Msg.CocoRobo_LOOKS_OLCD_LINE_TEXT="%1 %2 LCD 屏第 %3 行显示 %4 模式 %5";i.Msg.CocoRobo_LOOKS_OLCD_CLEAR_LINE="%1 %2 LCD 屏 清除第 %3 行";i.Msg.CocoRobo_LOOKS_DISPLAY_TEXT="%1 %2 显示文本 x %3 y %4 内容 %5 模式 %6";i.Msg.CocoRobo_LOOKS_TRACE_POINT="%1 %2 描点 x %3 y %4 为 %5";i.Msg.CocoRobo_LOOKS_PROGRESS="%1 %2 进度条 x %3 y %4 宽 %5 高 %6 进度 %7";i.Msg.CocoRobo_LOOKS_COLUMN_STRIP="%1 %2 柱状条 %3 x %4 y %5 宽 %6 高 %7 进度 %8";i.Msg.CocoRobo_LOOKS_DRAW_LINE="%1 %2 %3 线 x1 %4 y1 %5 到 x2 %6 y2 %7";i.Msg.CocoRobo_LOOKS_DRAW_FRAME="%1 %2 %3 边框 x %4 y %5 宽 %6 高 %7";i.Msg.CocoRobo_LOOKS_DRAW_ARC_BORDER="%1 %2 %3 圆角边框 x %4 y %5 宽 %6 高 %7 半径 %8";i.Msg.CocoRobo_LOOKS_DRAW_RECT="%1 %2 %3 矩形 x %4 y %5 宽 %6 高 %7";i.Msg.CocoRobo_LOOKS_DRAW_CIRCLE="%1 %2 %3 %4 圆 x %5 y %6 半径 %7";i.Msg.CocoRobo_LOOKS_DRAW_TRIANGLE="%1 %2 %3 %4 三角形 x %5 y %6 x2 %7 y2 %8 x3 %9 y3 %10";i.Msg.CocoRobo_LOOKS_DRAW_DISPLAY_PICTURE="%1 %2 在 x %3 y %4 显示图像 %5";i.Msg.CocoRobo_LOOKS_DRAW_DISPLAY="%1 %2 在 x %3 y %4 显示 %5 字体 %6 %7";i.Msg.CocoRobo_MUSIC_STOP_PLAY="%1 %2 停止音乐 引脚 %3";i.Msg.CocoRobo_MUSIC_RESTORE_MUSIC_SET="%1 %2 恢复音乐设置";i.Msg.CocoRobo_MUSIC_NOTE_BEAT="%1 %2 音符 %3 节拍 %4";i.Msg.CocoRobo_MUSIC_NOTE_BEAT_PIN="%1 %2 播放音符 音符 %3 节拍 %4 引脚 %5";i.Msg.CocoRobo_MUSIC_TONE="%1 %2 音调 %3";i.Msg.CocoRobo_MUSIC_PLAY_TONE_PIN="%1 %2 播放音调 音调%3 延时 %4 引脚 %5";i.Msg.CocoRobo_MUSIC_PLAY_TONE_PIN_PARA="%1 %2 播放音调 从 %3 到 %4 步长 %5 时长 %6 (毫秒)引脚 %7";i.Msg.CocoRobo_MUSIC_PLAY_MUSIC_PIN="%1 %2 播放音乐 %3 等待 %4 循环 %5 引脚 %6";i.Msg.CocoRobo_MUSIC_SET_PLAY_SPEED="%1 %2 设置播放速度为 %3 倍";i.Msg.CocoRobo_MUSIC_SET_BEAT="%1 %2 设置每一拍等同 %3 分音符,每分钟节拍数 %4";i.Msg.CocoRobo_MUSIC_SET_CURRENT_BEAT="%1 %2 当前节拍数";i.Msg.CocoRobo_BUZZER_INIT="%1 %2 音频 初始化";i.Msg.CocoRobo_BUZZER_RELEASE_CACHE="%1 %2 音频 释放缓存";i.Msg.CocoRobo_BUZZER_SET_VOLUMN="%1 %2 设置音频音量 %3";i.Msg.CocoRobo_BUZZER_SET_ACTION="%1 %2 音频 %3";i.Msg.CocoRobo_BUZZER_PLAY="%1 %2 音频 播放 %3";i.Msg.CocoRobo_BUZZER_VOICE_CONF="%1 %2 TTS 语音配置 APPID %3 APIKey %4";i.Msg.CocoRobo_BUZZER_VOICE_PLAY="%1 %2 TTS 语音播放 %3";i.Msg.CocoRobo_PIN_GET_VALUE="%1 %2 读取引脚 %3 数字值";i.Msg.CocoRobo_PIN_SET_VALUE="%1 %2 设置引脚 %3 数字值为 %4";i.Msg.CocoRobo_PIN_GET_ANALOG_VALUE="%1 %2 读取引脚 %3 模拟值";i.Msg.CocoRobo_PIN_SET_ANALOG_VALUE="%1 %2 设置引脚 %3 PWM为 %4";i.Msg.CocoRobo_PIN_SET_SERVO_ANGLE="%1 %2 设置舵机 %3 角度为 %4";i.Msg.CocoRobo_PIN_SET_SERVO_PWM_MAXANGLE="%1 %2 设置舵机 %3 角度为 %4 脉宽从 %5 到 %6 最大角度 %7";i.Msg.CocoRobo_PIN_SET_PIN_MODE="%1 %2 设置引脚 %3 为 %4 模式 %5";i.Msg.CocoRobo_PIN_EXTERNAL_LEVEL_DURATION="%1 %2 %3 外部 %4 电平持续时间(微秒)";i.Msg.CocoRobo_PIN_DHT11_VALUE="%1 %2 DHT11 %3 %4";i.Msg.CocoRobo_PIN_DHT22_VALUE="%1 %2 DHT22 %3 %4";i.Msg.CocoRobo_PIN_INIT_I2C_BAUD_RATE="%1 %2 初始化I2C 波特率 %3";i.Msg.CocoRobo_PIN_INIT_I2C_SCL_SDA_BAUD="%1 %2 初始化I2C SCL %3 SDA %4 波特率 %5";i.Msg.CocoRobo_PIN_I2C_ADDRESS_WRITE="%1 %2 I2C地址 %3 写入 %4";i.Msg.CocoRobo_PIN_I2C_ADDRESS_GET_BYTES_NUM="%1 %2 I2C地址 %3 读取bytes数量 %4";i.Msg.CocoRobo_PIN_HSCR04_ULTRASONIC_INIT="%1 %2HCSR04 超声波初始化 名称 %3 trigger %4 echo %5";i.Msg.CocoRobo_PIN_HSCR04_ULTRASONIC_DISTANCE_UNIT="%1 %2 %3 HCSR04 超声测距 %4";i.Msg.CocoRobo_RADIO_ACTION="%1 %2 %3 无线广播";i.Msg.CocoRobo_SET_RADIO_CHANNEL="%1 %2 设置无线广播 频道为 %3";i.Msg.CocoRobo_SET_RADIO_SEND_MES="%1 %2 无线广播 发送 %3";i.Msg.CocoRobo_RADIO_GET_MES="%1 %2 无线广播 接收消息";i.Msg.CocoRobo_RADIO_GET_MES_FOR1="当收到无线广播消息 %1";i.Msg.CocoRobo_RADIO_GET_SPECIAL_FOR1="当收到特定无线广播消息 %1";i.Msg.CocoRobo_WIFI_CONNECT="%1 %2 连接 Wi-Fi 名称 %3 密码 %4";i.Msg.CocoRobo_WIFI_DISCONNECT="%1 %2 断开 Wi-Fi 连接";i.Msg.CocoRobo_WIFI_CONNECTED="%1 %2 Wi-Fi 已连接";i.Msg.CocoRobo_WIFI_ALL_CONF="%1 %2 所有 Wi-Fi 配置信息";i.Msg.CocoRobo_WIFI_CONF_MES="%1 %2 Wi-Fi 配置信息 %3";i.Msg.CocoRobo_WIFI_OPEN_AP_MODE="%1 %2 开启 AP模式 名称 %3 信道 %4";i.Msg.CocoRobo_WIFI_CLOSE_AP_MODE="%1 %2 关闭 AP模式";i.Msg.CocoRobo_WIFI_SYNC_NETWORK_TIME="%1 %2 同步网络时间 时区 %3 授时服务器 %4";i.Msg.CocoRobo_NEOPIXEL_INIT="%1 %2 灯带 初始化 %3 引脚 %4 数量 %5";i.Msg.CocoRobo_NEOPIXEL_CHANNEL_COLOR="%1 %2 灯带 %3 %4 号颜色为 %5";i.Msg.CocoRobo_NEOPIXEL_CHANNEL_RGB="%1 %2 灯带 %3 %4 号 红 %5 绿 %6 蓝 %7";i.Msg.CocoRobo_NEOPIXEL_FULL_LIGHT_COLOR="%1 %2 灯带 %3 全亮 颜色 %4";i.Msg.CocoRobo_NEOPIXEL_FULL_LIGHT_RGB="%1 %2 灯带 %3 全亮 红 %4 绿 %5 蓝 %6";i.Msg.CocoRobo_NEOPIXEL_CLOSE="%1 %2 灯带 %3 熄灭";i.Msg.CocoRobo_NEOPIXEL_RAINBOW_LIGHT_EFFECT="%1 %2 彩虹灯带 %3 数量 %4 亮度 %5 偏移 %6";i.Msg.CocoRobo_NEOPIXEL_SET_WRITE="%1 %2 灯带 %3 设置生效";i.Msg.CocoRobo_CONTROL_FOR1="为每个项目 %1 在列表中";i.Msg.CocoRobo_OPERATORS_GET_TYPE="值 %1 的类型";i.Msg.CocoRobo_OPERATORS_JUDGE_TYPE="值 %1 的类型为 %2";i.Msg.CocoRobo_OPERATORS_MOD_INT="%1 ÷ %2 商的整数部分";i.Msg.CocoRobo_OPERATORS_KEEP_TWO_DECIMALS="%1 保留 %2 位小数";i.Msg.CocoRobo_OPERATORS_LIMIT_RANGE="限制数字 %1 介于低 %2 至 高 %3";i.Msg.CocoRobo_OPERATORS_MAPPING_RANGE="映射 %1 从低 %2 至 %3 到高 %4 至 %5";i.Msg.CocoRobo_G0_COLOR_LINE_FOLLOWER_POSITION="%1 %2 识色循迹传感器 线的位置为 %3";i.Msg.CocoRobo_G0_COLOR_LINE_FOLLOWER_SEEING="%1 %2 识色循迹传感器 检测到%3 色";i.Msg.CocoRobo_G0_COLOR_LINE_FOLLOWER_COLOR="%1 %2 识色循迹传感器 颜色值";i.Msg.ARDUINO_GROVE_SERIAL_3ADA15="%1 %2 三轴数字加速度(1.5g) %3 轴";i.Msg.ARDUINO_SEEED_LED_BAR_OPT1="亮灯";i.Msg.ARDUINO_SEEED_LED_BAR_OPT2="熄灭";i.Msg.ARDUINO_SEEED_SPEECH_RECOGNIZER_GETVALUE="%1 %2 语音识别传感器 管脚 %3 获取值";i.Msg.ARDUINO_SERIAL_STR_TONUMBER="串口 字符串转数值 %1";i.Msg.ARDUINO_VISION_SENSOR6_OPT1="红";i.Msg.ARDUINO_VISION_SENSOR6_OPT2="黄";i.Msg.ARDUINO_VISION_SENSOR6_OPT3="绿";i.Msg.ARDUINO_VISION_SENSOR6_OPT4="青";i.Msg.ARDUINO_VISION_SENSOR6_OPT5="蓝";i.Msg.ARDUINO_VISION_SENSOR6_OPT6="紫";i.Msg.ARDUINO_VISION_SENSOR6_OPT7="黑";i.Msg.ARDUINO_VISION_SENSOR6_OPT8="白";i.Msg.ARDUINO_VISION_SENSOR6_OPT9="其他";i.Msg.ARDUINO_VISION_SENSOR_OPT1="前进";i.Msg.ARDUINO_VISION_SENSOR_OPT2="左转";i.Msg.ARDUINO_VISION_SENSOR_OPT3="右转";i.Msg.ARDUINO_VISION_SENSOR_OPT4="掉头";i.Msg.ARDUINO_VISION_SENSOR_OPT5="P";i.Msg.ARDUINO_MARK_ROBOT_RUN="%1 %2 M.A.R.K 小车 %3 %4";i.Msg.ARDUINO_MARK_ROBOT_MOTOR_RUN="%1 %2 M.A.R.K 设置电机 %3 转速为 %4";i.Msg.ARDUINO_MARK_ROBOT_SERVO_RUN="%1 %2 M.A.R.K 舵机 %3 转到 %4";i.Msg.ARDUINO_NETWORK_SETWIFI="%1 %2 开始连接无线网络 %3 密码 %4";i.Msg.ARDUINO_NETWORK_STATE="%1 %2 网络已连接?";i.Msg.ARDUINO_SPEECH_RECOGNITION_REC="%1 %2 识别 %3 语音 %4 秒钟";i.Msg.ARDUINO_SPEECH_RECOGNITION_OPT01="汉语";i.Msg.ARDUINO_SPEECH_RECOGNITION_OPT02="英语";i.Msg.ARDUINO_SPEECH_RECOGNITION_RECTEXT="%1 %2 语音识别出的文字";i.Msg.ARDUINO_SPEECH_RECOGNITION_TTS="%1 %2 说 %3";i.Msg.ARDUINO_AUDIO_RECORD="%1 %2 录音 %3 %4";i.Msg.ARDUINO_AUDIO_STORAGE_OPT01="文件";i.Msg.ARDUINO_AUDIO_STORAGE_OPT02="Micro SD";i.Msg.ARDUINO_AUDIO_STORAGE_OPT03="USB";i.Msg.ARDUINO_AUDIO_STORAGE_OPT04="暂存";i.Msg.ARDUINO_AUDIO_STOP_RECORD="%1 %2 录音停止";i.Msg.ARDUINO_AUDIO_PLAY="%1 %2 播放音频 %3 %4";i.Msg.ARDUINO_AUDIO_PLAY_SOMEONE="%1 %2 播放第 %3 首曲目";i.Msg.ARDUINO_AUDIO_PLAY_PREORNEXT="%1 %2 播放 %3 曲目";i.Msg.ARDUINO_AUDIO_PLAY_OPT1="上一首";i.Msg.ARDUINO_AUDIO_PLAY_OPT2="下一首";i.Msg.ARDUINO_AUDIO_PLAY_ATMODE="%1 %2 %3 播放曲目";i.Msg.ARDUINO_AUDIO_PLAY_MODE_OPT1="循环";i.Msg.ARDUINO_AUDIO_PLAY_MODE_OPT2="暂停";i.Msg.ARDUINO_AUDIO_PLAY_MODE_OPT3="停止";i.Msg.ARDUINO_AUDIO_SETVOL="%1 %2 设置扬声器音量 %3";i.Msg.ELFBOT_MAINBOARD_START="%1 %2 当精灵启动";i.Msg.ELFBOT_WHEN_BUTTON_S_PRESSED="%1 %2 当按下按钮 S ";i.Msg.ELFBOT_WHEN_LIGHTINTENSITY_LESSTHAN="%1 %2 当环境光强度 %3 %4";i.Msg.ELFBOT_WHENGREATERTHAN_TIMER="%1 %2 当计时器 > %3";i.Msg.ELFBOT_WHENGREATERTHAN_LOUDNESS="%1 %2 当响度 %3 %4";i.Msg.ELFBOT_BUTTONS_ISPRESSED="%1 %2 精灵 按钮S被按下?";i.Msg.ELFBOT_ULTRASONIC_DISTANCE_FROMOBJ="%1 %2 精灵 前方障碍物距离(mm)";i.Msg.ELFBOT_ULTRASONIC_ISDETECTED_OBJECT="%1 %2 精灵 检测到前方物体?";i.Msg.ELFBOT_ULTRASONIC_LED_SHOW_COLOR="%1 %2 精灵 设置超声波 LED颜色为 %3";i.Msg.ELFBOT_ULTRASONIC_LED_CRUSHOUT="%1 %2 精灵 熄灭超声波 LED";i.Msg.ELFBOT_ULTRASONIC_WHENDETECTEDOBJECT="%1 %2 当检测到前方物体";i.Msg.ELFBOT_LEDMATRIX_PLOT="%1 %2 精灵 点亮 x: %3 y: %4";i.Msg.ELFBOT_LEDMATRIX_UNPLOT="%1 %2 精灵 熄灭 x: %3 y: %4";i.Msg.ELFBOT_LEDMATRIX_PLOT_OR_UNPLOT="%1 %2 精灵 切换点亮或熄灭 x: %3 y: %4";i.Msg.ELFBOT_LEDMATRIX_ISPLOT="%1 %2 精灵 x: %3 y: %4 是否被点亮?";i.Msg.ELFBOT_LEDMATRIX_SHOW_TEXT="%1 %2 精灵 显示 %3";i.Msg.ELFBOT_LEDMATRIX_SHOW_TEXT_UNTILDONE="%1 %2 精灵 显示 %3 直到结束";i.Msg.ELFBOT_LEDMATRIX_SHOW_EMOTICON="%1 %2 精灵 显示表情 %3";i.Msg.ELFBOT_LEDMATRIX_SHOW_EMOTICON_FORDURATION="%1 %2 精灵 显示表情 %3 持续 %4 秒";i.Msg.ELFBOT_LEDMATRIX_SCREEN_CRUSHOUT="%1 %2 精灵 熄灭屏幕";i.Msg.ELFBOT_LEDMATRIX_EMOTICON_VALUE_OPTION1="smile";i.Msg.ELFBOT_LEDMATRIX_EMOTICON_VALUE_OPTION2="wink";i.Msg.ELFBOT_LEDMATRIX_EMOTICON_VALUE_OPTION3="happy";i.Msg.ELFBOT_LEDMATRIX_EMOTICON_VALUE_OPTION4="cute";i.Msg.ELFBOT_LEDMATRIX_EMOTICON_VALUE_OPTION5="lovely";i.Msg.ELFBOT_LEDMATRIX_EMOTICON_VALUE_OPTION6="expressionless";i.Msg.ELFBOT_LEDMATRIX_EMOTICON_VALUE_OPTION7="playful";i.Msg.ELFBOT_LEDMATRIX_EMOTICON_VALUE_OPTION8="like1";i.Msg.ELFBOT_LEDMATRIX_EMOTICON_VALUE_OPTION9="like2";i.Msg.ELFBOT_LEDMATRIX_EMOTICON_VALUE_OPTION10="sniker1";i.Msg.ELFBOT_LEDMATRIX_EMOTICON_VALUE_OPTION11="sniker2";i.Msg.ELFBOT_LEDMATRIX_EMOTICON_VALUE_OPTION12="bored";i.Msg.ELFBOT_LEDMATRIX_EMOTICON_VALUE_OPTION13="serious";i.Msg.ELFBOT_LEDMATRIX_EMOTICON_VALUE_OPTION14="sweat";i.Msg.ELFBOT_LEDMATRIX_EMOTICON_VALUE_OPTION15="frown";i.Msg.ELFBOT_LEDMATRIX_EMOTICON_VALUE_OPTION16="rage";i.Msg.ELFBOT_LEDMATRIX_EMOTICON_VALUE_OPTION17="pitiful";i.Msg.ELFBOT_LEDMATRIX_EMOTICON_VALUE_OPTION18="wail";i.Msg.ELFBOT_LEDMATRIX_EMOTICON_VALUE_OPTION19="cry";i.Msg.ELFBOT_LEDMATRIX_EMOTICON_VALUE_OPTION20="daze";i.Msg.ELFBOT_LEDMATRIX_EMOTICON_VALUE_OPTION21="caim";i.Msg.ELFBOT_LEDMATRIX_EMOTICON_VALUE_OPTION22="angry";i.Msg.ELFBOT_LEDMATRIX_EMOTICON_VALUE_OPTION23="thinking";i.Msg.ELFBOT_LEDMATRIX_EMOTICON_VALUE_OPTION24="dizziness";i.Msg.ELFBOT_LEDMATRIX_EMOTICON_VALUE_OPTION25="tired";i.Msg.ELFBOT_LEDMATRIX_EMOTICON_VALUE_OPTION26="sleepy";i.Msg.ELFBOT_LEDMATRIX_EMOTICON_VALUE_OPTION27="dream";i.Msg.ELFBOT_LEDMATRIX_EMOTICON_VALUE_OPTION28="shocked";i.Msg.ELFBOT_LEDMATRIX_EMOTICON_VALUE_OPTION29="strabismus";i.Msg.ELFBOT_LEDMATRIX_EMOTICON_VALUE_OPTION30="cool";i.Msg.ELFBOT_LEDMATRIX_EMOTICON_VALUE_OPTION31="query";i.Msg.ELFBOT_LEDMATRIX_EMOTICON_VALUE_OPTION32="pain";i.Msg.ELFBOT_LEDMATRIX_EMOTICON_VALUE_OPTION33="uncomfortable";i.Msg.ELFBOT_LEDMATRIX_EMOTICON_VALUE_OPTION34="right";i.Msg.ELFBOT_LEDMATRIX_EMOTICON_VALUE_OPTION35="left";i.Msg.ELFBOT_LEDMATRIX_EMOTICON_VALUE_OPTION36="forward";i.Msg.ELFBOT_LEDMATRIX_EMOTICON_VALUE_OPTION37="backward";i.Msg.ELFBOT_LEDMATRIX_EMOTICON_VALUE_OPTION38="hello";i.Msg.ELFBOT_LEDMATRIX_EMOTICON_VALUE_OPTION39="bye";i.Msg.ELFBOT_LEDMATRIX_EMOTICON_VALUE_OPTION40="oK";i.Msg.ELFBOT_LEDMATRIX_EMOTICON_VALUE_OPTION41="good";i.Msg.ELFBOT_LEDMATRIX_EMOTICON_VALUE_OPTION42="yes";i.Msg.ELFBOT_LEDMATRIX_EMOTICON_VALUE_OPTION43="no";i.Msg.ELFBOT_LEDMATRIX_EMOTICON_VALUE_OPTION44="low_energy";i.Msg.ELFBOT_LEDMATRIX_EMOTICON_VALUE_OPTION45="meow";i.Msg.ELFBOT_LEDMATRIX_EMOTICON_VALUE_OPTION46="panda";i.Msg.ELFBOT_LEDMATRIX_SHOW_IMAGE="%1 %2 精灵 显示图案 %3";i.Msg.ELFBOT_LEDMATRIX_SHOW_IMAGE_DURATION="%1 %2 精灵 显示图案 %3 持续 %4 秒";i.Msg.ELFBOT_RGBLED_SHOW_EFFECTS_COLOR="%1 %2 精灵 RGB LED一直 %3 %4";i.Msg.ELFBOT_RGBLED_EFFECTS_VALUE_OPTION0="亮";i.Msg.ELFBOT_RGBLED_EFFECTS_VALUE_OPTION1="闪烁";i.Msg.ELFBOT_RGBLED_EFFECTS_VALUE_OPTION2="呼吸";i.Msg.ELFBOT_RGBLED_SHOW_POSITION_COLOR="%1 %2 精灵 RGB LED 亮起 %3 灯,颜色为 %4";i.Msg.ELFBOT_RGBLED_POSITION_VALUE_OPTION0="全部";i.Msg.ELFBOT_RGBLED_POSITION_VALUE_OPTION1="左";i.Msg.ELFBOT_RGBLED_POSITION_VALUE_OPTION2="右";i.Msg.ELFBOT_RGBLED_SHOW_POSITION_COLOR_DURATION="%1 %2 精灵 RGB LED 亮起 %3 灯,颜色为 %4 ,持续 %5秒";i.Msg.ELFBOT_RGBLED_SHOW_COLOR="%1 %2 精灵 设置RGB LED颜色为 %3";i.Msg.ELFBOT_RGBLED_COLOR_VALUE_OPTION0="红色";i.Msg.ELFBOT_RGBLED_COLOR_VALUE_OPTION1="绿色";i.Msg.ELFBOT_RGBLED_COLOR_VALUE_OPTION2="蓝色";i.Msg.ELFBOT_RGBLED_COLOR_VALUE_OPTION3="黄色";i.Msg.ELFBOT_RGBLED_COLOR_VALUE_OPTION4="青色";i.Msg.ELFBOT_RGBLED_COLOR_VALUE_OPTION5="紫色";i.Msg.ELFBOT_RGBLED_COLOR_VALUE_OPTION6="黑色";i.Msg.ELFBOT_RGBLED_COLOR_VALUE_OPTION7="白色";i.Msg.ELFBOT_RGBLED_CRUSHOUT="%1 %2 精灵 熄灭RGB LED";i.Msg.ELFBOT_INFRARED_WHENOVERHEAD="%1 %2 当检测到前方悬空";i.Msg.ELFBOT_INFRARED_LIGHTINTENSITY_VALUE="%1 %2 精灵 红外反射光强度";i.Msg.ELFBOT_INFRARED_DETECTED_ISHEAD="%1 %2 精灵 检测到前方悬空?";i.Msg.ELFBOT_LINEPATROL_WHENDETECTEDCOLORD="%1 %2 当检测到的颜色是 %3";i.Msg.ELFBOT_LINEPATROL_COLOR_VALUE_OPTION0="红色";i.Msg.ELFBOT_LINEPATROL_COLOR_VALUE_OPTION1="绿色";i.Msg.ELFBOT_LINEPATROL_COLOR_VALUE_OPTION2="蓝色";i.Msg.ELFBOT_LINEPATROL_COLOR_VALUE_OPTION3="黄色";i.Msg.ELFBOT_LINEPATROL_COLOR_VALUE_OPTION4="青色";i.Msg.ELFBOT_LINEPATROL_COLOR_VALUE_OPTION5="紫色";i.Msg.ELFBOT_LINEPATROL_COLOR_VALUE_OPTION6="黑色";i.Msg.ELFBOT_LINEPATROL_COLOR_VALUE_OPTION7="白色";i.Msg.ELFBOT_LINEPATROL_GREYSCALE="%1 %2 精灵 灰度值";i.Msg.ELFBOT_LINEPATROL_DETECTED_COLOR="%1 %2 精灵 检测到颜色是 %3 ?";i.Msg.ELFBOT_LINEPATROL_DETECTED_COLOR_VALUE="%1 %2 精灵 检测到的 %3 色值";i.Msg.ELFBOT_LINEPATROL_LIGHTINTENSITY_VALUE="%1 %2 精灵 反射光强度";i.Msg.ELFBOT_SERVO_HEAD_LOOKLEFT="%1 %2 精灵 头部向左转到 %3 度";i.Msg.ELFBOT_SERVO_HEAD_LOOKRIGHT="%1 %2 精灵 头部向右转到 %3 度";i.Msg.ELFBOT_SERVO_HEAD_LOOKUP="%1 %2 精灵 头部向上转到 %3 度";i.Msg.ELFBOT_SERVO_HEAD_LOOKDOWN="%1 %2 精灵 头部向下转到 %3 度";i.Msg.ELFBOT_SERVO_EAR_TURNFORWARD="%1 %2 精灵 耳朵向前转到 %3 度";i.Msg.ELFBOT_SERVO_EAR_TURNBACKWARD="%1 %2 精灵 耳朵向后转到 %3 度";i.Msg.ELFBOT_VEHICLEWHEEL_RUN_DIRECTION_POWER="%1 %2 精灵 %3 以动力 %4 %";i.Msg.ELFBOT_VEHICLEWHEEL_DIRECTION_VALUE_OPTION0="前进";i.Msg.ELFBOT_VEHICLEWHEEL_DIRECTION_VALUE_OPTION1="后退";i.Msg.ELFBOT_VEHICLEWHEEL_DIRECTION_VALUE_OPTION2="左转";i.Msg.ELFBOT_VEHICLEWHEEL_DIRECTION_VALUE_OPTION3="右转";i.Msg.ELFBOT_VEHICLEWHEEL_RUNFORWORD_POWER_DURATION="%1 %2 精灵 前进以动力 %3 % 持续 %4 秒";i.Msg.ELFBOT_VEHICLEWHEEL_RUNBACKWORD_POWER_DURATION="%1 %2 精灵 后退以动力 %3 % 持续 %4 秒";i.Msg.ELFBOT_VEHICLEWHEEL_RUNLEFT_POWER_DURATION="%1 %2 精灵 左转以动力 %3 % 持续 %4 秒";i.Msg.ELFBOT_VEHICLEWHEEL_RUNRIGHT_POWER_DURATION="%1 %2 精灵 右转以动力 %3 % 持续 %4 秒";i.Msg.ELFBOT_VEHICLEWHEEL_RUN_POWER="%1 %2 精灵 移动左轮以动力 %3 % ,右轮以动力 %4 %";i.Msg.ELFBOT_VEHICLEWHEEL_RUNFORWORD_DURATION="%1 %2 精灵 直线前进持续 %3 秒";i.Msg.ELFBOT_VEHICLEWHEEL_RUNBACKWORD_DURATION="%1 %2 精灵 直线后退持续 %3 秒";i.Msg.ELFBOT_VEHICLEWHEEL_RUN_STOP="%1 %2 精灵 停止运动";i.Msg.ELFBOT_LIGHT_INTENSITY_VALUE="%1 %2 精灵 环境光强度";i.Msg.ELFBOT_SOUND_LOUDNESS_VALUE="%1 %2 精灵 响度";i.Msg.ELFBOT_SOUND_PLAY="%1 %2 精灵 播放声音 %3";i.Msg.ELFBOT_SOUND_VALUE_OPTION0="hello";i.Msg.ELFBOT_SOUND_VALUE_OPTION1="miao";i.Msg.ELFBOT_SOUND_VALUE_OPTION2="bye";i.Msg.ELFBOT_SOUND_VALUE_OPTION3="hum";i.Msg.ELFBOT_SOUND_VALUE_OPTION4="laugh";i.Msg.ELFBOT_SOUND_VALUE_OPTION5="wrong";i.Msg.ELFBOT_SOUND_VALUE_OPTION6="right";i.Msg.ELFBOT_SOUND_VALUE_OPTION7="sad";i.Msg.ELFBOT_SOUND_VALUE_OPTION8="vehicles";i.Msg.ELFBOT_SOUND_VALUE_OPTION9="yeah";i.Msg.ELFBOT_SOUND_VALUE_OPTION10="powerdown";i.Msg.ELFBOT_SOUND_PLAY_UNTILDONE="%1 %2 精灵 播放声音 %3 直到结束";i.Msg.ELFBOT_SOUND_STOP_PLAY="%1 %2 精灵 停止播放声音";i.Msg.ELFBOT_SOUND_REST_BEATS="%1 %2 精灵 休止 %3 拍";i.Msg.ELFBOT_SOUND_BEAT_VALUE_OPTION0="1";i.Msg.ELFBOT_SOUND_BEAT_VALUE_OPTION1="1/2";i.Msg.ELFBOT_SOUND_BEAT_VALUE_OPTION2="1/4";i.Msg.ELFBOT_SOUND_BEAT_VALUE_OPTION3="1/8";i.Msg.ELFBOT_SOUND_BEAT_VALUE_OPTION4="1/16";i.Msg.ELFBOT_SOUND_BEAT_VALUE_OPTION5="2";i.Msg.ELFBOT_SOUND_BEAT_VALUE_OPTION6="4";i.Msg.ELFBOT_SOUND_BEAT_VALUE_OPTION7="8";i.Msg.ELFBOT_SOUND_PLAY_FREQUENCYHZ="%1 %2 精灵 播放声音以频率 %3 赫兹,持续 %4 秒";i.Msg.ELFBOT_SOUND_CHANGE_VOLUME="%1 %2 精灵 将音量增加 %3";i.Msg.ELFBOT_SOUND_SET_VOLUME="%1 %2 精灵 将音量设定为 %3";i.Msg.ELFBOT_SOUND_VOLUME="%1 %2 精灵 音量";i.Msg.ELFBOT_SOUND_NOTE_BEATS="%1 %2 精灵 播放音符 %3 以 %4 拍";i.Msg.ELFBOT_LINECOLOR_DETECT="%1 %2 颜色识别传感器 检测到 %3 色";i.Msg.ELFBOT_LINECOLOR_DETECT_POSITION="%1 %2 颜色识别传感器 %3 的位置为 %4";i.Msg.ELFBOT_LINECOLOR_OPT0="红";i.Msg.ELFBOT_LINECOLOR_OPT1="绿";i.Msg.ELFBOT_LINECOLOR_OPT2="蓝";i.Msg.ELFBOT_LINECOLOR_DETECT_BLACK="黑线";i.Msg.ELFBOT_LINECOLOR_DETECT_WRITE="白线";i.Msg.ELFBOT_LINECOLOR_DETECT_POSITION_OPT0="中";i.Msg.ELFBOT_LINECOLOR_DETECT_POSITION_OPT1="右";i.Msg.ELFBOT_LINECOLOR_DETECT_POSITION_OPT2="最右";i.Msg.ELFBOT_LINECOLOR_DETECT_POSITION_OPT3="左";i.Msg.ELFBOT_LINECOLOR_DETECT_POSITION_OPT4="最左";i.Msg.ELFBOT_LINECOLOR_DETECT_POSITION_OPT5="丢失";i.Msg.MICROBIT_WHEN_START="%1 %2 当 micro:bit 启动";i.Msg.MICROBIT_WHEN_BUTTONPRESSED="%1 %2 当 %3 被按下";i.Msg.MICROBIT_BUTTON_VALUE_OPTION0="A";i.Msg.MICROBIT_BUTTON_VALUE_OPTION1="B";i.Msg.MICROBIT_BUTTON_VALUE_OPTION2="A+B";i.Msg.MICROBIT_WHEN_PINSTOUCHED="%1 %2 当引脚 %3 被接触";i.Msg.MICROBIT_PINS_VALUE_OPTION0="0";i.Msg.MICROBIT_PINS_VALUE_OPTION1="1";i.Msg.MICROBIT_PINS_VALUE_OPTION2="2";i.Msg.MICROBIT_WHEN_GESTURESTRIKE="%1 %2 当姿态 %3";i.Msg.MICROBIT_GESTURE_VALUE_OPTION0="摇晃";i.Msg.MICROBIT_GESTURE_VALUE_OPTION1="向上倾斜";i.Msg.MICROBIT_GESTURE_VALUE_OPTION2="向下倾斜";i.Msg.MICROBIT_GESTURE_VALUE_OPTION3="向左倾斜";i.Msg.MICROBIT_GESTURE_VALUE_OPTION4="向右倾斜";i.Msg.MICROBIT_GESTURE_VALUE_OPTION5="正面朝上";i.Msg.MICROBIT_GESTURE_VALUE_OPTION6="正面朝下";i.Msg.MICROBIT_GESTURE_VALUE_OPTION7="自由落体";i.Msg.MICROBIT_GESTURE_VALUE_OPTION8="3g";i.Msg.MICROBIT_GESTURE_VALUE_OPTION9="6g";i.Msg.MICROBIT_GESTURE_VALUE_OPTION10="5g";i.Msg.MICROBIT_COMMUCATION_OPEN="%1 %2 打开无线通讯";i.Msg.MICROBIT_COMMUCATION_CLOSED="%1 %2 关闭无线通讯";i.Msg.MICROBIT_COMMUCATION_RESET="%1 %2 复位无线通讯";i.Msg.MICROBIT_COMMUCATION_RECEIVE="%1 %2 接受无线通讯";i.Msg.MICROBIT_COMMUCATION_SEND="%1 %2 发送无线消息 %3";i.Msg.MICROBIT_COMMUCATION_SETCHANNEL="%1 %2 设置无线通讯频道 %3";i.Msg.MICROBIT_PIN_CONNECTED="%1 %2 引脚 %3 被接触";i.Msg.MICROBIT_PIN_ANALOGQUANTITY="%1 %2 引脚 %3 模拟量";i.Msg.MICROBIT_PIN_SET_ANALOGQUANTITY="%1 %2 设置引脚 %3 模拟量为 %4";i.Msg.MICROBIT_PIN_NUMBER_INPUT="%1 %2 引脚 %3 有数字输入";i.Msg.MICROBIT_PIN_ANALOG_MAP_TO="%1 %2 映射 %3 模拟值到 %4 至 %5";i.Msg.MICROBIT_PIN_ANALOG_READ="%1 %2 模拟读取 引脚 %3";i.Msg.MICROBIT_PIN_ANALOG_WRITE="%1 %2 向引脚 %3 模拟写入 %4";i.Msg.MICROBIT_PIN_ANALOG_SET_PERIOD="%1 %2 设置引脚 %3 模拟期间为 %4 (us)";i.Msg.MICROBIT_PIN_DIGITAL_READ="%1 %2 数字读取 引脚 %3";i.Msg.MICROBIT_PIN_DIGITAL_IS="%1 %2 数字引脚 %3 为 %4";i.Msg.MICROBIT_PIN_DIGITAL_IS_OPT1="高";i.Msg.MICROBIT_PIN_DIGITAL_IS_OPT2="低";i.Msg.MICROBIT_PIN_DIGITAL_SET_TO="%1 %2 设置数字引脚 %3 为 %4";i.Msg.MICROBIT_PIN_I2C_READ="%1 %2 i2c 读取 i2c地址 %3 ,格式为 %4 重复 %5";i.Msg.MICROBIT_PIN_I2C_WRITE="%1 %2 向 i2c地址 %3 写入值 %4 ,格式为 %5 重复 %6";i.Msg.MICROBIT_PIN_I2C_READ_OPT1="否";i.Msg.MICROBIT_PIN_I2C_READ_OPT2="是";i.Msg.MICROBIT_SENSOR_BUTTON_PRESSED="%1 %2 按键 %3 被按下?";i.Msg.MICROBIT_SENSOR_GESTURE_STRIKE="%1 %2 姿态是 %3?";i.Msg.MICROBIT_SENSOR_ACCELERATION="%1 %2 %3 加速度";i.Msg.MICROBIT_SENSOR_ACCELERATION_VALUE_OPTION0="x轴";i.Msg.MICROBIT_SENSOR_ACCELERATION_VALUE_OPTION1="y轴";i.Msg.MICROBIT_SENSOR_ACCELERATION_VALUE_OPTION2="z轴";i.Msg.MICROBIT_SENSOR_COMPASSANGLE="%1 %2 指南针角度";i.Msg.MICROBIT_SENSOR_COMPASS_MAGNETICDENSITY="%1 %2 指南针磁场强度";i.Msg.MICROBIT_SENSOR_CALIBRATE_COMPASS="%1 %2 校正指南针";i.Msg.MICROBIT_SENSOR_TEMPERATURE="%1 %2 温度";i.Msg.MICROBIT_SENSOR_RUNNINGTIME="%1 %2 运行时间";i.Msg.MICROBIT_SHOW_IMAGE="%1 %2 显示图案 %3";i.Msg.MICROBIT_SHOW_IMAGEFOR="%1 %2 显示图案 %3 持续 %4 秒";i.Msg.MICROBIT_SHOW_MIRRORING_IMAGE="%1 %2 镜像显示图案 %3";i.Msg.MICROBIT_SHOW_SETIMAGE="%1 %2 设置图案 %3 %4 移动 %5";i.Msg.MICROBIT_SHOW_POSITION_VALUE_OPTION0="向左";i.Msg.MICROBIT_SHOW_POSITION_VALUE_OPTION1="向右";i.Msg.MICROBIT_SHOW_POSITION_VALUE_OPTION2="向上";i.Msg.MICROBIT_SHOW_POSITION_VALUE_OPTION3="向下";i.Msg.MICROBIT_SHOW_TEXT="%1 %2 显示 %3";i.Msg.MICROBIT_SHOW_TEXTUNTIL="%1 %2 显示 %3 直到滚动结束";i.Msg.MICROBIT_SHOW_CLOSE="%1 %2 熄灭屏幕";i.Msg.MICROBIT_SHOW_LIGHT="%1 %2 %3 在坐标 x: %4 y: %5";i.Msg.MICROBIT_SHOW_LIGHT_ACTION_VALUE_OPTION0="点亮";i.Msg.MICROBIT_SHOW_LIGHT_ACTION_VALUE_OPTION1="熄灭";i.Msg.MICROBIT_SHOW_LIGHTON="%1 %2 设置x: %3 y: %4 的亮度为 %5";i.Msg.MICROBIT_SHOW_BRIGHTNESS="%1 %2 获得 x: %3 y: %4的亮度";i.Msg.MICROBIT_MUSIC_PLAY="%1 %2 引脚 %3 播放声音 %4";i.Msg.MICROBIT_MUSIC_PLAY_UNTILDONE="%1 %2 引脚 %3 播放声音 %4 直到播放结束";i.Msg.MICROBIT_MUSIC_PLAY_NOTE="%1 %2 引脚 %3 播放音符 %4 持续 %5";i.Msg.MICROBIT_MUSIC_CHANGETEMPO="%1 %2 调整声音速度(bpm)%3";i.Msg.MICROBIT_MUSIC_SETTEMPO="%1 %2 将声音速度(bpm)设置为 %3";i.Msg.MICROBIT_MUSIC_TEMPO="%1 %2 声音速度(bpm)";i.Msg.MICROBIT_BITPLAYER_KEY_IS_PRESSED="%1 %2 BitPlayer: 当按键 %3 正在被按下";i.Msg.MICROBIT_BITPLAYER_JOYSTICK="%1 %2 BitPlayer: 摇杆被推向 %3";i.Msg.MICROBIT_BITPLAYER_VIBRATION="%1 %2 BitPlayer: 震动 %3";i.Msg.MICROBIT_BITPLAYER_VIBRATION_OPT1="开";i.Msg.MICROBIT_BITPLAYER_VIBRATION_OPT2="关";i.Msg.MICROBIT_BITPLAYER_JOYSTICK_OPT1="左上";i.Msg.MICROBIT_BITPLAYER_JOYSTICK_OPT2="上";i.Msg.MICROBIT_BITPLAYER_JOYSTICK_OPT3="右上";i.Msg.MICROBIT_BITPLAYER_JOYSTICK_OPT4="左";i.Msg.MICROBIT_BITPLAYER_JOYSTICK_OPT5="中";i.Msg.MICROBIT_BITPLAYER_JOYSTICK_OPT6="右";i.Msg.MICROBIT_BITPLAYER_JOYSTICK_OPT7="左下";i.Msg.MICROBIT_BITPLAYER_JOYSTICK_OPT8="下";i.Msg.MICROBIT_BITPLAYER_JOYSTICK_OPT9="右下";i.Msg.MICROBIT_BITWEAR_VIBRATION="%1 %2 BitWear: 震动 %3";i.Msg.MICROBIT_BITWEAR_SET_LED_COLOR="%1 %2 BitWear: 设置LED灯颜色 %3";i.Msg.MICROBIT_BITMAKER_SET_LED_COLOR="%1 %2 BitMaker: 设置LED灯 %3 颜色 %4";i.Msg.MICROBIT_BITCAR_MOVE="%1 %2 BitCar: 左轮动力 %3 %,右轮动力 %4 %";i.Msg.MICROBIT_BITCAR_STOP="%1 %2 BitCar: 停止";i.Msg.MICROBIT_BITCAR_STANDUP_STILL="%1 %2 BitCar: 以速度 %3 %站立,冲刺 %4 (ms)";i.Msg.MICROBIT_BITCAR_LINE_UNDER_SENSOR="%1 %2 BitCar: 黑线在 %3 传感器下方";i.Msg.MICROBIT_BITCAR_LINE_UNDER_SENSOR_OPT1="左侧";i.Msg.MICROBIT_BITCAR_LINE_UNDER_SENSOR_OPT2="右侧";i.Msg.MICROBIT_BITCAR_LINE_FOLLOW_AT_SPEED="%1 %2 BitCar: 以 %3 % 速度巡线";i.Msg.MICROBIT_GROVE_ONE_MINI_FAN_SET_SPEED="%1 %2 迷你风扇 %3 :设置转速为 %4 %";i.Msg.MICROBIT_GROVE_ONE_SERVO_SET_ANGLE="%1 %2 舵机 %3 :设置角度为 %4 °";i.Msg.MICROBIT_GROVE_ONE_ULTRASONIC_GET_DISTANCE="%1 %2 超声波测距传感器 %3 :距离 %4";i.Msg.MICROBIT_GROVE_ONE_ULTRASONIC_GET_DISTANCE_OPT1="厘米";i.Msg.MICROBIT_GROVE_ONE_ULTRASONIC_GET_DISTANCE_OPT2="英尺";i.Msg.CATEGORY_COMMON="常用";i.Msg.CATEGORY_SYSTEM="系统资源";i.Msg.CATEGORY_SHOW="显示";i.Msg.CATEGORY_MUSIC="音乐";i.Msg.CATEGORY_AUDIO="音频";i.Msg.CATEGORY_PIN="引脚";i.Msg.CATEGORY_RADIO="无线广播";i.Msg.CATEGORY_DISPLAY="显示";i.Msg.CATEGORY_LIGHTING="灯光";i.Msg.CATEGORY_ACTION="动作";i.Msg.CATEGORY_SENSOR="感知";i.Msg.CATEGORY_WIRELESS="无线通讯";i.Msg.CATEGORY_ADDONS="扩展板";i.Msg.CATEGORY_GROVE_ONE="Grove One";i.Msg.CATEGORY_DISPLAY1="显示";i.Msg.CATEGORY_MACHINE_VISION="图像识别";i.Msg.CATEGORY_CNN_MODELS="模型预测";i.Msg.CATEGORY_MAXIDUINO_SYSTEM="系统";i.Msg.CATEGORY_START="初始化";i.Msg.CATEGORY_GROVE_INPUT="Grove 输入";i.Msg.CATEGORY_GROVE_OUTPUT="Grove 输出";i.Msg.CATEGORY_MAIXDUINO_GROVE="Grove";i.Msg.SNAPSHOOT="快照";i.Msg.MAIXDUINO_ENENT_DELAY="等待 %1 %2";i.Msg.MAIXDUINO_ENENT_DELAY_UNIT_MS="毫秒";i.Msg.MAIXDUINO_ENENT_DELAY_UNIT_US="微秒";i.Msg.MAIXDUINO_ENENT_RUNTIME="运行时间 %1";i.Msg.MAIXDUINO_DISPLAY_ORIENTATION="设置屏幕方向为 %1";i.Msg.MAIXDUINO_DISPLAY_ORIENTATION_NORMAL="正常";i.Msg.MAIXDUINO_DISPLAY_ORIENTATION_ROTATE="翻转";i.Msg.MAIXDUINO_DISPLAY_STRING_AT_POSITION="显示 %1 于 X%2 Y%3";i.Msg.MAIXDUINO_DISPLAY_DRAW_RECTANGLE_WH="绘制长方形: 长%1 宽%2 中心坐标 X%3 Y%4";i.Msg.MAIXDUINO_CAMERA_DETECTION_BALL_AT_SIZE_COLOR="检测到 %1 圆形";i.Msg.MAIXDUINO_CAMERA_DETECTION_BALL_RGB="检测到的圆RGB值";i.Msg.MAIXDUINO_CAMERA_DETECTION_RECTANGLE_AT_SIZE_COLOR="检测到 %1 长方形";i.Msg.MAIXDUINO_CAMERA_DETECTION_RECTANGLE_RGB="检测到的长方形RGB值";i.Msg.MAIXDUINO_CAMERA_COLORLINE_SETCOLOR="设置线识别颜色为 %1";i.Msg.MAIXDUINO_CAMERA_COLORLINE_SETWEIGHT="设置线识别区域权重: A区 %1% B区 %2% C区 %3%";i.Msg.MAIXDUINO_CAMERA_COLORLINE_TURNANGLE="转弯角度";i.Msg.MAIXDUINO_SEEED_LINE_FINDER="%1 %2 引脚 %3 巡线传感器检测到 %4";i.Msg.MAIXDUINO_FIGURE_OUTPUT="向 数字引脚 %1 写入值 %2";i.Msg.MAIXDUINO_FIGURE_INPUT="数字读取 引脚 %1";i.Msg.MAIXDUINO_ANALOG_INPUT="模拟输入 管脚 %1";i.Msg.MAIXDUINO_ANALOG_OUTPUT="向 模拟引脚 %1 写入值 %2";i.Msg.MAIXDUINO_CAMERA_COORDP_X="X坐标";i.Msg.MAIXDUINO_CAMERA_COORDP_W="长";i.Msg.MAIXDUINO_CAMERA_COORDP_H="宽";i.Msg.MAIXDUINO_ROBOT_MARK_OPT1="前进";i.Msg.MAIXDUINO_ROBOT_MARK_OPT2="后退";i.Msg.MAIXDUINO_ROBOT_MARK_OPT3="左转";i.Msg.MAIXDUINO_ROBOT_MARK_OPT4="右转";i.Msg.MAIXDUINO_ROBOT_MARK_OPT6="慢速";i.Msg.MAIXDUINO_ROBOT_MARK_OPT7="中速";i.Msg.MAIXDUINO_ROBOT_MARK_OPT8="全速";i.Msg.MAIXDUINO_ROBOT_MARK_STOP="M.A.R.K 小车停止运动";i.Msg.MAIXDUINO_ROBOT_MOTOR_RUN_0PT1="左轮";i.Msg.MAIXDUINO_ROBOT_MOTOR_RUN_0PT2="右轮";i.Msg.MAIXDUINO_GROVE_BUTTON_ISPRESSED="%1 %2 引脚 %3 按键开关正在被按下?";i.Msg.MAIXDUINO_GROVE_ULT_DISTANCE="%1 %2 引脚 %3 超声波测距传感器 距离(cm)";i.Msg.MAIXDUINO_GROVE_RGBLED_STRIP_DISPALY="%1 %2 引脚 %3 RGB 灯条 %4 灯亮 %5";i.Msg.MAIXDUINO_GROVE_RGBLED_STRIP_DISPALY1="%1 %2 引脚 %3 RGB 灯条 %4 R %5 G %6 B %7";i.Msg.MAIXDUINO_GROVE_RGBLED_STRIP_CLOSED="%1 %2 引脚 %3 RGB 灯条 熄灭";i.Msg.MAIXDUINO_ROBOT_SPEAKER_SETVOL="M.A.R.K. 扬声器 设置音量为 %1 %";i.Msg.MAIXDUINO_ROBOT_SPEAKER_PLAYNOTE="M.A.R.K. 扬声器 播放音调 %1 %2 拍";i.Msg.MAIXDUINO_ROBOT_SPEAKER_PAUSE="M.A.R.K. 扬声器 停顿 %1 拍";i.Msg.MAIXDUINO_ROBOT_SPEAKER_BEAT_OPT0="1";i.Msg.MAIXDUINO_ROBOT_SPEAKER_BEAT_OPT1="1/2";i.Msg.MAIXDUINO_ROBOT_SPEAKER_BEAT_OPT2="1/4";i.Msg.MAIXDUINO_ROBOT_SPEAKER_BEAT_OPT3="1/8";i.Msg.MAIXDUINO_ROBOT_SPEAKER_BEAT_OPT4="1/16";i.Msg.MAIXDUINO_ROBOT_SPEAKER_BEAT_OPT5="2";i.Msg.MAIXDUINO_ROBOT_SPEAKER_BEAT_OPT6="4";i.Msg.MAIXDUINO_ROBOT_SPEAKER_BEAT_OPT7="8";i.Msg.MAIXDUINO_ROBOT_HEAD_LIGHTS_SHOW="M.A.R.K %1 车头灯亮 %2";i.Msg.MAIXDUINO_ROBOT_TAIL_LIGHTS_SHOW="M.A.R.K. 尾灯 %1 亮 %2 %3 %4 ";i.Msg.MAIXDUINO_ROBOT_LIGHTS_CRUSHOUT="M.A.R.K. %1 车头灯熄灭";i.Msg.MAIXDUINO_ROBOT_HEAD_LIGHTS_OPT01="左";i.Msg.MAIXDUINO_ROBOT_HEAD_LIGHTS_OPT02="右";i.Msg.MAIXDUINO_ROBOT_TAIL_LIGHTS_OPT01="顶部";i.Msg.MAIXDUINO_ROBOT_TAIL_LIGHTS_OPT02="中间";i.Msg.MAIXDUINO_ROBOT_TAIL_LIGHTS_OPT03="尾部";i.Msg.MAIXDUINO_ROBOT_LIGHTS_OPT01="全部";i.Msg.MAIXDUINO_ROBOT_LIGHTS_OPT02="前";i.Msg.MAIXDUINO_ROBOT_LIGHTS_OPT03="尾";i.Msg.CocoRobo_SYSRESOURES_SLOPE_OPT1="向前倾斜";i.Msg.CocoRobo_SYSRESOURES_SLOPE_OPT2="向后倾斜";i.Msg.CocoRobo_SYSRESOURES_SLOPE_OPT3="向左倾斜";i.Msg.CocoRobo_SYSRESOURES_SLOPE_OPT4="向右倾斜";i.Msg.CocoRobo_SYSRESOURES_BME280_OPT1="温度";i.Msg.CocoRobo_SYSRESOURES_BME280_OPT2="湿度";i.Msg.CocoRobo_SYSRESOURES_BME280_OPT3="气压";i.Msg.CocoRobo_SYSRESOURES_OPERATE_OPT1="刷新";i.Msg.CocoRobo_SYSRESOURES_OPERATE_OPT2="删除";i.Msg.CocoRobo_SYSRESOURES_TIME_OPT0="清空";i.Msg.CocoRobo_SYSRESOURES_TIME_OPT1="年";i.Msg.CocoRobo_SYSRESOURES_TIME_OPT2="月";i.Msg.CocoRobo_SYSRESOURES_TIME_OPT3="日";i.Msg.CocoRobo_SYSRESOURES_TIME_OPT4="时";i.Msg.CocoRobo_SYSRESOURES_TIME_OPT5="分";i.Msg.CocoRobo_SYSRESOURES_TIME_OPT6="秒";i.Msg.CocoRobo_SYSRESOURES_TIME_OPT7="星期数";i.Msg.CocoRobo_SYSRESOURES_TIME_OPT8="天数";i.Msg.CocoRobo_SYSRESOURES_TIME_OPT9="毫秒";i.Msg.CocoRobo_SYSRESOURES_TIME_OPT10="微秒";i.Msg.CocoRobo_PIN_OPT="default";i.Msg.CocoRobo_PIN_OPT0="P0";i.Msg.CocoRobo_PIN_OPT1="P1";i.Msg.CocoRobo_PIN_OPT2="P2";i.Msg.CocoRobo_PIN_OPT3="P3(EXT)";i.Msg.CocoRobo_PIN_OPT4="P4(light)";i.Msg.CocoRobo_PIN_OPT6="P6(buzzer)";i.Msg.CocoRobo_PIN_OPT7="P7(RGB)";i.Msg.CocoRobo_PIN_OPT8="P8";i.Msg.CocoRobo_PIN_OPT9="P9";i.Msg.CocoRobo_PIN_OPT10="P10(sound)";i.Msg.CocoRobo_PIN_OPT13="P13";i.Msg.CocoRobo_PIN_OPT14="P14";i.Msg.CocoRobo_PIN_OPT15="P15";i.Msg.CocoRobo_PIN_OPT16="P16";i.Msg.CocoRobo_PIN_OPT19="P19(LCD)";i.Msg.CocoRobo_PIN_OPT20="P20(LCD)";i.Msg.CocoRobo_PIN_VOLTAGE_OPT1="高";i.Msg.CocoRobo_PIN_VOLTAGE_OPT2="低";i.Msg.CocoRobo_PIN_MODE_OPT1="无上下拉";i.Msg.CocoRobo_PIN_MODE_OPT2="上拉";i.Msg.CocoRobo_PIN_MODE_OPT3="下拉";i.Msg.CocoRobo_PIN_STATYS_OPT1="输入";i.Msg.CocoRobo_PIN_STATYS_OPT2="推挽输出";i.Msg.CocoRobo_PIN_STATYS_OPT3="开漏输出";i.Msg.CocoRobo_LOOKS_OLCD_OPT1="清空";i.Msg.CocoRobo_LOOKS_OLCD_OPT2="全亮";i.Msg.CocoRobo_LOOKS_OLCD_OPT3="黑底";i.Msg.CocoRobo_LOOKS_OLCD_OPT4="白底";i.Msg.CocoRobo_EVENT_ACTION_OPT1="按下";i.Msg.CocoRobo_EVENT_ACTION_OPT2="松开";i.Msg.CocoRobo_EVENT_ACTION_OPT3="触摸";i.Msg.CocoRobo_EVENT_ACTION_OPT4="释放";i.Msg.CocoRobo_EVENT_ACTION_OPT5="重复执行";i.Msg.CocoRobo_EVENT_ACTION_OPT6="延时执行";i.Msg.CocoRobo_MUSIC_ACTION_OPT1="打开";i.Msg.CocoRobo_MUSIC_ACTION_OPT2="关闭";i.Msg.CocoRobo_MUSIC_ACTION_OPT3="暂停";i.Msg.CocoRobo_MUSIC_ACTION_OPT4="继续播放";i.Msg.CocoRobo_MUSIC_ACTION_OPT5="停止";i.Msg.CocoRobo_EVENT_VOLTAGE_OPT1="↗从低到高";i.Msg.CocoRobo_EVENT_VOLTAGE_OPT2="↘从高到低";i.Msg.CocoRobo_LOOKS_MODE_OPT1="普通";i.Msg.CocoRobo_LOOKS_MODE_OPT2="反转";i.Msg.CocoRobo_LOOKS_MODE_OPT3="透明";i.Msg.CocoRobo_LOOKS_MODE_OPT4="XOR";i.Msg.CocoRobo_LOOKS_LIGHT_OPT1="亮";i.Msg.CocoRobo_LOOKS_LIGHT_OPT2="暗";i.Msg.CocoRobo_LOOKS_DIRECTION_OPT1="垂直";i.Msg.CocoRobo_LOOKS_DIRECTION_OPT2="水平";i.Msg.CocoRobo_OPERATORS_JUDGE_OPT1="是偶数";i.Msg.CocoRobo_OPERATORS_JUDGE_OPT2="是奇数";i.Msg.CocoRobo_OPERATORS_JUDGE_OPT3="是整数";i.Msg.CocoRobo_OPERATORS_JUDGE_OPT4="为正";i.Msg.CocoRobo_OPERATORS_JUDGE_OPT5="为负";i.Msg.CocoRobo_OPERATORS_JUDGE_OPT6="可被整除";i.Msg.CocoRobo_LOOKS_DRAW_OPT1="绘制";i.Msg.CocoRobo_LOOKS_DRAW_OPT2="擦除";i.Msg.CocoRobo_LOOKS_CIRCLE_OPT1="空心";i.Msg.CocoRobo_LOOKS_CIRCLE_OPT2="实心";i.Msg.CocoRobo_LOOKS_FONT_OPT1="不换行";i.Msg.CocoRobo_LOOKS_FONT_OPT2="自动换行";i.Msg.CocoRobo_LOOKS_EXPRESSION_OPT1="心型";i.Msg.CocoRobo_LOOKS_EXPRESSION_OPT2="心型(小)";i.Msg.CocoRobo_LOOKS_EXPRESSION_OPT3="高兴";i.Msg.CocoRobo_LOOKS_EXPRESSION_OPT4="笑脸";i.Msg.CocoRobo_LOOKS_EXPRESSION_OPT5="伤心";i.Msg.CocoRobo_LOOKS_EXPRESSION_OPT6="困惑";i.Msg.CocoRobo_LOOKS_EXPRESSION_OPT7="生气";i.Msg.CocoRobo_LOOKS_EXPRESSION_OPT8="睡着";i.Msg.CocoRobo_LOOKS_EXPRESSION_OPT9="惊讶";i.Msg.CocoRobo_LOOKS_EXPRESSION_OPT10="愚蠢";i.Msg.CocoRobo_LOOKS_EXPRESSION_OPT11="极妙";i.Msg.CocoRobo_LOOKS_EXPRESSION_OPT12="无聊";i.Msg.CocoRobo_LOOKS_EXPRESSION_OPT13="石头";i.Msg.CocoRobo_LOOKS_EXPRESSION_OPT14="石头(小)";i.Msg.CocoRobo_LOOKS_EXPRESSION_OPT15="布";i.Msg.CocoRobo_LOOKS_EXPRESSION_OPT16="布(小)";i.Msg.CocoRobo_LOOKS_EXPRESSION_OPT17="剪刀";i.Msg.CocoRobo_LOOKS_EXPRESSION_OPT18="剪刀(小)";i.Msg.CocoRobo_LOOKS_EXPRESSION_OPT19="Expressions/Big smile.pbm";i.Msg.CocoRobo_LOOKS_EXPRESSION_OPT20="Expressions/Heart large.pbm";i.Msg.CocoRobo_LOOKS_EXPRESSION_OPT21="Expressions/Heart small.pbm";i.Msg.CocoRobo_LOOKS_EXPRESSION_OPT22="Expressions/Mouth 1 open.pbm";i.Msg.CocoRobo_LOOKS_EXPRESSION_OPT23="Expressions/Mouth 1 shut.pbm";i.Msg.CocoRobo_LOOKS_EXPRESSION_OPT24="Expressions/Mouth 2 open.pbm";i.Msg.CocoRobo_LOOKS_EXPRESSION_OPT25="Expressions/Mouth 2 shut.pbm";i.Msg.CocoRobo_LOOKS_EXPRESSION_OPT26="Expressions/Sad.pbm";i.Msg.CocoRobo_LOOKS_EXPRESSION_OPT27="Expressions/Sick.pbm";i.Msg.CocoRobo_LOOKS_EXPRESSION_OPT28="Expressions/Smile.pbm";i.Msg.CocoRobo_LOOKS_EXPRESSION_OPT29="Expressions/Swearing.pbm";i.Msg.CocoRobo_LOOKS_EXPRESSION_OPT30="Expressions/Talking.pbm";i.Msg.CocoRobo_LOOKS_EXPRESSION_OPT31="Expressions/Wink.pbm";i.Msg.CocoRobo_LOOKS_EXPRESSION_OPT32="Expressions/ZZZ.pbm";i.Msg.CocoRobo_LOOKS_EXPRESSION_OPT33="Eyes/Angry.pbm";i.Msg.CocoRobo_LOOKS_EXPRESSION_OPT34="Eyes/Awake.pbm";i.Msg.CocoRobo_LOOKS_EXPRESSION_OPT35="Eyes/Black eye.pbm";i.Msg.CocoRobo_LOOKS_EXPRESSION_OPT36="Eyes/Bottom left.pbm";i.Msg.CocoRobo_LOOKS_EXPRESSION_OPT37="Eyes/Bottom right.pbm";i.Msg.CocoRobo_LOOKS_EXPRESSION_OPT38="Eyes/Crazy 1.pbm";i.Msg.CocoRobo_LOOKS_EXPRESSION_OPT39="Eyes/Crazy 2.pbm";i.Msg.CocoRobo_LOOKS_EXPRESSION_OPT40="Eyes/Disappointed.pbm";i.Msg.CocoRobo_LOOKS_EXPRESSION_OPT41="Eyes/Dizzy.pbm";i.Msg.CocoRobo_LOOKS_EXPRESSION_OPT42="Eyes/Down.pbm";i.Msg.CocoRobo_LOOKS_EXPRESSION_OPT43="Eyes/Evil.pbm";i.Msg.CocoRobo_LOOKS_EXPRESSION_OPT44="Eyes/Hurt.pbm";i.Msg.CocoRobo_LOOKS_EXPRESSION_OPT45="Eyes/Knocked out.pbm";i.Msg.CocoRobo_LOOKS_EXPRESSION_OPT46="Eyes/Love.pbm";i.Msg.CocoRobo_LOOKS_EXPRESSION_OPT47="Eyes/Middle left.pbm";i.Msg.CocoRobo_LOOKS_EXPRESSION_OPT48="Eyes/Middle right.pbm";i.Msg.CocoRobo_LOOKS_EXPRESSION_OPT49="Eyes/Neutral.pbm";i.Msg.CocoRobo_LOOKS_EXPRESSION_OPT50="Eyes/Nuclear.pbm";i.Msg.CocoRobo_LOOKS_EXPRESSION_OPT51="Eyes/Pinch left.pbm";i.Msg.CocoRobo_LOOKS_EXPRESSION_OPT52="Eyes/Pinch middle.pbm";i.Msg.CocoRobo_LOOKS_EXPRESSION_OPT53="Eyes/Pinch right.pbm";i.Msg.CocoRobo_LOOKS_EXPRESSION_OPT54="Eyes/Tear.pbm";i.Msg.CocoRobo_LOOKS_EXPRESSION_OPT55="Eyes/Tired left.pbm";i.Msg.CocoRobo_LOOKS_EXPRESSION_OPT56="Eyes/Tired middle.pbm";i.Msg.CocoRobo_LOOKS_EXPRESSION_OPT57="Eyes/Tired right.pbm";i.Msg.CocoRobo_LOOKS_EXPRESSION_OPT58="Eyes/Toxic.pbm";i.Msg.CocoRobo_LOOKS_EXPRESSION_OPT59="Eyes/Up.pbm";i.Msg.CocoRobo_LOOKS_EXPRESSION_OPT60="Eyes/Winking.pbm";i.Msg.CocoRobo_LOOKS_EXPRESSION_OPT61="Information/Accept.pbm";i.Msg.CocoRobo_LOOKS_EXPRESSION_OPT62="Information/Backward.pbm";i.Msg.CocoRobo_LOOKS_EXPRESSION_OPT63="Information/Decline.pbm";i.Msg.CocoRobo_LOOKS_EXPRESSION_OPT64="Information/Forward.pbm";i.Msg.CocoRobo_LOOKS_EXPRESSION_OPT65="Information/Left.pbm";i.Msg.CocoRobo_LOOKS_EXPRESSION_OPT66="Information/No go.pbm";i.Msg.CocoRobo_LOOKS_EXPRESSION_OPT67="Information/Question mark.pbm";i.Msg.CocoRobo_LOOKS_EXPRESSION_OPT68="Information/Right.pbm";i.Msg.CocoRobo_LOOKS_EXPRESSION_OPT69="Information/Stop 1.pbm";i.Msg.CocoRobo_LOOKS_EXPRESSION_OPT70="Information/Stop 2.pbm";i.Msg.CocoRobo_LOOKS_EXPRESSION_OPT71="Information/Thumbs down.pbm";i.Msg.CocoRobo_LOOKS_EXPRESSION_OPT72="Information/Thumbs up.pbm";i.Msg.CocoRobo_LOOKS_EXPRESSION_OPT73="Information/Warning.pbm";i.Msg.CocoRobo_LOOKS_EXPRESSION_OPT74="Objects/Bomb.pbm";i.Msg.CocoRobo_LOOKS_EXPRESSION_OPT75="Objects/Boom.pbm";i.Msg.CocoRobo_LOOKS_EXPRESSION_OPT76="Objects/Fire.pbm";i.Msg.CocoRobo_LOOKS_EXPRESSION_OPT77="Objects/Flowers.pbm";i.Msg.CocoRobo_LOOKS_EXPRESSION_OPT78="Objects/Forest.pbm";i.Msg.CocoRobo_LOOKS_EXPRESSION_OPT79="Objects/Light off.pbm";i.Msg.CocoRobo_LOOKS_EXPRESSION_OPT80="Objects/Light on.pbm";i.Msg.CocoRobo_LOOKS_EXPRESSION_OPT81="Objects/Lightning.pbm";i.Msg.CocoRobo_LOOKS_EXPRESSION_OPT82="Objects/Night.pbm";i.Msg.CocoRobo_LOOKS_EXPRESSION_OPT83="Objects/Pirate.pbm";i.Msg.CocoRobo_LOOKS_EXPRESSION_OPT84="Objects/Snow.pbm";i.Msg.CocoRobo_LOOKS_EXPRESSION_OPT85="Objects/Target.pbm";i.Msg.CocoRobo_LOOKS_EXPRESSION_OPT86="Progress/Bar 0.pbm";i.Msg.CocoRobo_LOOKS_EXPRESSION_OPT87="Progress/Bar 1.pbm";i.Msg.CocoRobo_LOOKS_EXPRESSION_OPT88="Progress/Bar 2.pbm";i.Msg.CocoRobo_LOOKS_EXPRESSION_OPT89="Progress/Bar 3.pbm";i.Msg.CocoRobo_LOOKS_EXPRESSION_OPT90="Progress/Bar 4.pbm";i.Msg.CocoRobo_LOOKS_EXPRESSION_OPT91="Progress/Dial 0.pbm";i.Msg.CocoRobo_LOOKS_EXPRESSION_OPT92="Progress/Dial 1.pbm";i.Msg.CocoRobo_LOOKS_EXPRESSION_OPT93="Progress/Dial 2.pbm";i.Msg.CocoRobo_LOOKS_EXPRESSION_OPT94="Progress/Dial 3.pbm";i.Msg.CocoRobo_LOOKS_EXPRESSION_OPT95="Progress/Dial 4.pbm";i.Msg.CocoRobo_LOOKS_EXPRESSION_OPT96="Progress/Dots 0.pbm";i.Msg.CocoRobo_LOOKS_EXPRESSION_OPT97="Progress/Dots 1.pbm";i.Msg.CocoRobo_LOOKS_EXPRESSION_OPT98="Progress/Dots 2.pbm";i.Msg.CocoRobo_LOOKS_EXPRESSION_OPT99="Progress/Dots 3.pbm";i.Msg.CocoRobo_LOOKS_EXPRESSION_OPT100="Progress/Hourglass 0.pbm";i.Msg.CocoRobo_LOOKS_EXPRESSION_OPT101="Progress/Hourglass 1.pbm";i.Msg.CocoRobo_LOOKS_EXPRESSION_OPT102="Progress/Hourglass 2.pbm";i.Msg.CocoRobo_LOOKS_EXPRESSION_OPT103="Progress/Timer 0.pbm";i.Msg.CocoRobo_LOOKS_EXPRESSION_OPT104="Progress/Timer 1.pbm";i.Msg.CocoRobo_LOOKS_EXPRESSION_OPT105="Progress/Timer 2.pbm";i.Msg.CocoRobo_LOOKS_EXPRESSION_OPT106="Progress/Timer 3.pbm";i.Msg.CocoRobo_LOOKS_EXPRESSION_OPT107="Progress/Timer 4.pbm";i.Msg.CocoRobo_LOOKS_EXPRESSION_OPT108="Progress/Water level 0.pbm";i.Msg.CocoRobo_LOOKS_EXPRESSION_OPT109="Progress/Water level 1.pbm";i.Msg.CocoRobo_LOOKS_EXPRESSION_OPT110="Progress/Water level 2.pbm";i.Msg.CocoRobo_LOOKS_EXPRESSION_OPT111="Progress/Water level 3.pbm";i.Msg.CocoRobo_LOOKS_EXPRESSION_OPT112="System/Accept_1.pbm";i.Msg.CocoRobo_LOOKS_EXPRESSION_OPT113="System/Accept_2.pbm";i.Msg.CocoRobo_LOOKS_EXPRESSION_OPT114="System/Alert.pbm";i.Msg.CocoRobo_LOOKS_EXPRESSION_OPT115="System/Box.pbm";i.Msg.CocoRobo_LOOKS_EXPRESSION_OPT116="System/Busy_0.pbm";i.Msg.CocoRobo_LOOKS_EXPRESSION_OPT117="System/Busy_1.pbm";i.Msg.CocoRobo_LOOKS_EXPRESSION_OPT118="System/Decline_1.pbm";i.Msg.CocoRobo_LOOKS_EXPRESSION_OPT119="System/Decline_2.pbm";i.Msg.CocoRobo_LOOKS_EXPRESSION_OPT120="System/Dot_empty.pbm";i.Msg.CocoRobo_LOOKS_EXPRESSION_OPT121="System/Dot_full.pbm";i.Msg.CocoRobo_LOOKS_EXPRESSION_OPT122="System/Play.pbm";i.Msg.CocoRobo_LOOKS_EXPRESSION_OPT123="System/Slider_0.pbm";i.Msg.CocoRobo_LOOKS_EXPRESSION_OPT124="System/Slider_1.pbm";i.Msg.CocoRobo_LOOKS_EXPRESSION_OPT125="System/Slider_2.pbm";i.Msg.CocoRobo_LOOKS_EXPRESSION_OPT126="System/Slider_3.pbm";i.Msg.CocoRobo_LOOKS_EXPRESSION_OPT127="System/Slider_4.pbm";i.Msg.CocoRobo_LOOKS_EXPRESSION_OPT128="System/Slider_5.pbm";i.Msg.CocoRobo_LOOKS_EXPRESSION_OPT129="System/Slider_6.pbm";i.Msg.CocoRobo_LOOKS_EXPRESSION_OPT130="System/Slider_7.pbm";i.Msg.CocoRobo_LOOKS_EXPRESSION_OPT131="System/Slider_8.pbm";i.Msg.CocoRobo_LOOKS_TUBE_OPT1="仿数码管11像素";i.Msg.CocoRobo_LOOKS_TUBE_OPT2="仿数码管16像素";i.Msg.CocoRobo_LOOKS_TUBE_OPT3="仿数码管21像素";i.Msg.CocoRobo_LOOKS_TUBE_OPT4="仿数码管30像素";i.Msg.CocoRobo_LOOKS_TUBE_OPT5="仿数码管44像素";i.Msg.CocoRobo_LOOKS_TUBE_OPT6="仿数码管斜体 30像素";i.Msg.CocoRobo_LOOKS_TUBE_OPT7="仿数码管斜体 42像素";i.Msg.CocoRobo_LOOKS_TUBE_OPT8="DejaVu Sans Mono 12像素";i.Msg.CocoRobo_LOOKS_TUBE_OPT9="DejaVu Sans Mono 16像素";i.Msg.CocoRobo_LOOKS_TUBE_OPT10="DejaVu Sans Mono 21像素";i.Msg.CocoRobo_LOOKS_TUBE_OPT11="DejaVu Sans Mono 黑体 12像素";i.Msg.CocoRobo_LOOKS_TUBE_OPT12="DejaVu Sans Mono 黑体 16像素";i.Msg.CocoRobo_LOOKS_TUBE_OPT13="DejaVu Sans Mono 黑体 21像素";i.Msg.CocoRobo_WIFI_ZONE_OPT1="东一区";i.Msg.CocoRobo_WIFI_ZONE_OPT2="东二区";i.Msg.CocoRobo_WIFI_ZONE_OPT3="东三区";i.Msg.CocoRobo_WIFI_ZONE_OPT4="东四区";i.Msg.CocoRobo_WIFI_ZONE_OPT5="东五区";i.Msg.CocoRobo_WIFI_ZONE_OPT6="东六区";i.Msg.CocoRobo_WIFI_ZONE_OPT7="东七区";i.Msg.CocoRobo_WIFI_ZONE_OPT8="东八区";i.Msg.CocoRobo_WIFI_ZONE_OPT9="东九区";i.Msg.CocoRobo_WIFI_ZONE_OPT10="东十区";i.Msg.CocoRobo_WIFI_ZONE_OPT11="东十一区";i.Msg.CocoRobo_WIFI_ZONE_OPT12="东十二区";i.Msg.CocoRobo_WIFI_ZONE_OPT13="西一区";i.Msg.CocoRobo_WIFI_ZONE_OPT14="西二区";i.Msg.CocoRobo_WIFI_ZONE_OPT15="西三区";i.Msg.CocoRobo_WIFI_ZONE_OPT16="西四区";i.Msg.CocoRobo_WIFI_ZONE_OPT17="西五区";i.Msg.CocoRobo_WIFI_ZONE_OPT18="西六区";i.Msg.CocoRobo_WIFI_ZONE_OPT19="西七区";i.Msg.CocoRobo_WIFI_ZONE_OPT20="西八区";i.Msg.CocoRobo_WIFI_ZONE_OPT21="西九区";i.Msg.CocoRobo_WIFI_ZONE_OPT22="西十区";i.Msg.CocoRobo_WIFI_ZONE_OPT23="西十一区";i.Msg.CocoRobo_WIFI_ZONE_OPT24="西十二区";i.Msg.GROVE_JOINT_SETUP="初始化 setup";i.Msg.GROVE_JOINT_SETUP_LOOP="循环 loop";i.Msg.GROVE_JOINT_INPUT_HUMITURE="%1 %2 温湿度传感器 %3";i.Msg.GROVE_JOINT_INPUT_INFRARED="%1 %2 红外接近传感器";i.Msg.GROVE_JOINT_INPUT_MAGNESWITCH="%1 %2 磁力开关";i.Msg.GROVE_JOINT_INPUT_ULTRASONIC="%1 %2 超声波测距传感器";i.Msg.GROVE_JOINT_INPUT_LIGHT="%1 %2 光线传感器";i.Msg.GROVE_JOINT_INPUT_SLIDESWITCH="%1 %2 滑动电位开关";i.Msg.GROVE_JOINT_INPUT_INCLINE="%1 %2 倾斜传感器";i.Msg.GROVE_JOINT_INPUT_TOUCH="%1 %2 触摸传感器";i.Msg.GROVE_JOINT_INPUT_NOISE="%1 %2 噪音传感器";i.Msg.GROVE_JOINT_INPUT_SOILHUMIDITY="%1 %2 土壤湿度传感器";i.Msg.GROVE_JOINT_INPUT_SHAFTSPEED="%1 %2 三轴数字加速度 %3";i.Msg.GROVE_JOINT_INPUT_MULTICHANNEDL_TOUCH="%1 %2 多通道触摸传感器 通道 %3";i.Msg.GROVE_JOINT_OUTPUT_MINIMOTOR_RUN="%1 %2 迷你电机驱动板 电机# %3 转速 %4";i.Msg.GROVE_JOINT_OUTPUT_FOURDIGIT_TUBE_DISPLAY="%1 %2 四位数码显示管 显示为 %3";i.Msg.GROVE_JOINT_OUTPUT_LEDBOARD_SHOW="%1 %2 LED驱动板 设为 %3";i.Msg.GROVE_JOINT_OUTPUT_RGBLED_SHOW="%1 %2 全彩RGB LED灯显示为红 %3 绿 %4 蓝 %5";i.Msg.GROVE_JOINT_OUTPUT_SPEAKER_NOTEBEAT="%1 %2 扬声器 音符 %3";i.Msg.GROVE_JOINT_OUTPUT_SERVO_TRUNANGLE="%1 %2 舵机 角度(0-180) %3";i.Msg.GROVE_JOINT_OUTPUT_BUZZER_PLAY="%1 %2 蜂鸣器 设为 %3";i.Msg.GROVE_JOINT_OUTPUT_MOTOR_RUN="%1 %2 震动马达 设为 %3";i.Msg.GROVE_JOINT_OUTPUT_DCMOTOR_RUN="%1 %2 直流电机驱动板 设为 %3";i.Msg.GROVE_JOINT_INPUT_HUMITURE_OPT01="温度";i.Msg.GROVE_JOINT_INPUT_HUMITURE_OPT02="湿度";i.Msg.GROVE_JOINT_INPUT_LEVEL_HIGH="高电平";i.Msg.GROVE_JOINT_INPUT_LEVEL_LOW="低电平";i.Categories={};i.Categories.motion="motion";i.Categories.looks="looks";i.Categories.sound="sounds";i.Categories.pen="pen";i.Categories.data="data";i.Categories.dataLists="data-lists";i.Categories.event="events";i.Categories.control="control";i.Categories.sensing="sensing";i.Categories.operators="operators";i.Categories.more="more";i.Msg.ESP32BUTTON="当按钮";i.Msg.ESP32IS="是";i.Msg.ESP32PRESSED="按下时";i.Msg.ESP32RELEASED="松开时";i.Msg.ESP32DIALER_LEFT="左侧";i.Msg.ESP32DIALER_MIDDLE="中间";i.Msg.ESP32DIALER_RIGHT="右侧";i.Msg.ESP32DIALSWITCH="当拨盘";i.Msg.ESP32TURN="设置";i.Msg.ESP32LED="";i.Msg.ESP32LED_MONO_TEXT_NO="第";i.Msg.ESP32LED_MONO_TEXT_AFTER="颗 LED 灯";i.Msg.ESP32LED_BLUE="蓝灯";i.Msg.ESP32LED_RED="红灯";i.Msg.ESP32LED_TURNON="点亮";i.Msg.ESP32LED_TURNOFF="关闭";i.Msg.ESP32LED_CORD_DRAWPIXEL_LIGHTUP="点亮";i.Msg.ESP32LED_CORD_DRAWPIXEL_LIGHTOFF="熄灭";i.Msg.ESP32LED_CORD_DRAWPIXEL_LIGHT_INIT_TEXT="位于(第";i.Msg.ESP32LED_CORD_DRAWPIXEL_LIGHT_MIDDLE_TEXT="列,第";i.Msg.ESP32LED_CORD_DRAWPIXEL_LIGHT_END_TEXT="行)的 LED 灯";i.Msg.ESP32TURNOBAF="蜂鸣器";i.Msg.ESP32TURNOB="关闭蜂鸣器";i.Msg.ESP32TA="当触摸区域";i.Msg.ESP32_TOUCHED="被触摸时";i.Msg.ESP32_UNTOUCHED="未被触摸时";i.Msg.ESP32_READ="获取触摸区域";i.Msg.ESP32_READ_VALUE="的电容变化数值";i.Msg.ESP32_ENV_GET_TEXT="获取";i.Msg.esp32_main_controller_turn_off_buzzer_music_lite="蜂鸣器播放音符";i.Msg.esp32_main_controller_turn_off_buzzer_music_lite_2="持续";i.Msg.esp32_main_controller_turn_off_buzzer_music_lite_3="拍";i.Msg.LCDINIT="LCD初始化";i.Msg.LCDINIT_R="设置屏幕旋转";i.Msg.LCDINIT_M="设置镜像翻转";i.Msg.LCDROTATION="设置LCD屏幕旋转";i.Msg.LCDMF="设置LCD屏幕镜面翻转";i.Msg.LCDDFSW="设置LCD显示填充屏幕为";i.Msg.LCDDT="设置LCD显示文本";i.Msg.LCDDT_C="文字颜色";i.Msg.LCDDT_BC="背景色";i.Msg.LED_COORDINATE="坐标";i.Msg.WIFISERVER_SERVERSEND_CONTENT="内容";i.Msg.LCDDLOC="绘制线条";i.Msg.LCDDCC="LCD创建画布";i.Msg.LCDDCC_F="填充图像:";i.Msg.LCDDCC_I="图像路径:";i.Msg.LCDDSC="LCD显示画布";i.Msg.LCDDSC_SC="设置坐标";i.Msg.LCDDSC_X=" X:";i.Msg.LCDDSC_Y=" Y:";i.Msg.LCD_CANVAS="画布";i.Msg.LCDDTOC="绘制文本";i.Msg.LCDDTOC_SH="设置换行";i.Msg.LCDDASOC="绘制箭头标志";i.Msg.LCDDASOC_SC="开始坐标";i.Msg.LCDDASOC_EC="结束坐标";i.Msg.LCDDASOC_LC="线条颜色";i.Msg.LCDDASOC_LT="线条粗细";i.Msg.LCDDASOC_T="厚度";i.Msg.LCDDFROC="绘制";i.Msg.LCDDFROC_R="矩形";i.Msg.LCDDFROC_C="圆圈";i.Msg.LCDRADIUS="半径";i.Msg.LCDDCSOC="绘制十字标志";i.Msg.LCDCEOC="清除画布上的所有内容";i.Msg.LCDSCIC="设置画布:";i.Msg.LCDSCIC_I="颜色反转";i.Msg.LCDSCCRTW="设置画布";i.Msg.LCDSCCRTW_R="调整为宽度";i.Msg.LCDSCCRTW_TCANC="然后创建一个新画布";i.Msg.LCDDI="显示在";i.Msg.LCDSCCCVTP="设置画布:画布将矢量转换为像素";i.Msg.LCDRQ="二维码";i.Msg.CAMERAINIT="相机初始化";i.Msg.CAMERAINIT_SFS="设置帧大小:";i.Msg.CAMERAINIT_SFS_I=" in";i.Msg.CAMERAINIT_SWW="设置窗口宽度:224高度:224";i.Msg.CAMERAINIT_SVFOSHMO="设置垂直翻转";i.Msg.CAMERAINIT_SVFOSHMO_O="设置水平镜像";i.Msg.CAMERAINIT_SABOSAGO="设置自动白平衡:";i.Msg.CAMERAINIT_SABOSAGO_O="设置自动增益:";i.Msg.CAMERAINIT_SCBS="设置对比度:";i.Msg.CAMERAINIT_SCBS_B="亮度:";i.Msg.CAMERAINIT_SCBS_S="饱和度:";i.Msg.CAMERASVFO="设置垂直翻转";i.Msg.CAMERASVFO_SHMO="设置水平镜像";i.Msg.CAMERASVFO_SABO="设置自动白平衡";i.Msg.CAMERASVFO_SAGO="设置自动增益";i.Msg.CAMERASVFO_SCT="设置对比度为";i.Msg.CAMERASVFO_SBT="设置亮度为";i.Msg.CAMERASVFO_SST="将饱和度设置为";i.Msg.CAMERGICFC="获取从相机捕获的图像";i.Msg.CAMERGICFC_SCT="选择摄像机类型:正常";i.Msg.MODELLPM="加载预设模型:";i.Msg.CAMERINIT="初始化预设模型:单数字识别";i.Msg.CAMERINIT_SISF="从以下位置设置图像源:";i.Msg.CAMERINIT_FPM="来自预设模型:单数字识别";i.Msg.CAMERINIT_GCDN="获取当前检测到的号码(0-9)";i.Msg.CAMERINIT_CRC="当前识别的置信度 (%)";i.Msg.CAMERINIT_GTCS="获取检测到的数字的置信度(%)";i.Msg.MODELS_L="识别到了任意常见物体";i.Msg.MODELS_GET_F="从";i.Msg.MODELS_GET_G="获取识别到常见物体的";i.Msg.MODELS_GET_O="物体名称";i.Msg.MODELS_GET_X="检测框起点X轴坐标";i.Msg.MODELS_GET_Y="检测框起点Y轴坐标";i.Msg.MODELS_GET_W="检测框终点X轴坐标";i.Msg.MODELS_GET_H="检测框终点Y轴坐标";i.Msg.MODELS_GET_NO="物体数量";i.Msg.MODELS_GET_S="序号";i.Msg.MODELS_GET_C="置信度";i.Msg.MODELS_FACE="识别到了人脸";i.Msg.MODELS_XY_F="获取识别到人脸的";i.Msg.MODELS_XY_N="数量";i.Msg.MODELS_SDR="手写数字识别模型";i.Msg.MODELS_COR="常见物体识别模型";i.Msg.MODELS_AR="常见动物识别模型";i.Msg.MODELS_HFR="人脸检测模型";i.Msg.CAMERINITPM="初始化预设模型:通用对象识别";i.Msg.CAMERINITPM_SMSFIOR="从设置图像源";i.Msg.CAMERINITPM_ACOID="检测到任何公共对象";i.Msg.CAMERINITPM_IACOID="如果检测到任何公共对象";i.Msg.CAMERINITPM_D="执行";i.Msg.CAMERINITPM_E="其他";i.Msg.CAMERINITPM_FPM="来自预设模型:通用对象识别";i.Msg.CAMERINITPM_G="获取";i.Msg.CAMERINITPM_GIOTCOD="检测到公共对象";i.Msg.CAMERINITPM_DCOIA="检测到的公共对象为";i.Msg.CAMERINITPMA="初始化预设模型:动物识别";i.Msg.CAMERINITPMA_AAOID="检测到任何动物";i.Msg.CAMERINITPMA_IAAOID="如果检测到任何动物";i.Msg.CAMERINITPMA_FPMA="来自预设模型:动物确认";i.Msg.CAMERINITPMA_GIOTCAD="检测到的动物";i.Msg.CAMERINITPMA_DAOIA="检测到的动物是";i.Msg.CAMERINITPMF="初始化预设模型:人脸检测";i.Msg.CAMERINITPMF_SISFIF="从设置图像源";i.Msg.CAMERINITPMF_AFID="检测到任何人的脸";i.Msg.CAMERINITPMF_IAFID="如果检测到人脸";i.Msg.CAMERINITPMF_FPM="来自预设模型:人脸检测";i.Msg.CAMERINITPMF_GIOTFD="检测到的脸";i.Msg.CAMERINITPMF_LCMLM="加载定制的机器学习模型";i.Msg.CAMERINITPMF_FSC="来自SD卡:";i.Msg.CAMERINIINNYFNOT="初始化神经网络YOLOv2";i.Msg.CAMERINIINNYFNOT_F="来自网络对象";i.Msg.CAMERINIINNYFNOT_SPT="设置概率阈值:";i.Msg.CAMERINIINNYFNOT_SPT_S="设置盒IoU阈值:";i.Msg.CAMERINITPMF_SNOAA="设置锚点数量";i.Msg.CAMERINITPMF_SNOAA_S="将锚设置为:锚";i.Msg.CAMERGRFRNNY="从运行神经网络YOLOv2获得结果";i.Msg.CAMERGRFRNNY_FNOT="来自网络对象";i.Msg.CAMERGRFRNNY_SNOLTCTTN="设置要计算到网络的层数:";i.Msg.CAMERGRFRNNY_SISA="将图像源设置为:";i.Msg.CAMERGFMOFNOT="从网络对象获取要素地图对象";i.Msg.CAMERGFMOFNOT_SNOLTCTTN="设置要计算到网络的层数:";i.Msg.CAMERGFMOFNOT_SISAC="将图像源设置为:";i.Msg.CAMERDNOT="取消初始化网络对象";i.Msg.VISION_IF="如果颜色";i.Msg.VISION_IF_R="从画布中检测到区域:";i.Msg.VISION_IF_S="设置最大检测大小:";i.Msg.VISION_IF_C="获取检测到的区域";i.Msg.VISION_CIF="从画布中检测到圆圈:";i.Msg.VISION_CIF_D="获取被发现的圈子";i.Msg.VISION_SIF="开始双线检测";i.Msg.VISION_SIF_D="检测线条颜色:";i.Msg.VISION_SIF_G="获取方向偏移值";i.Msg.VISION_SIF_GF="来自双线检测";i.Msg.MPHONE="麦克风初始化";i.Msg.MPHONE_A="从麦克风读取平均响度";i.Msg.AUDIO_S="扬声器初始化";i.Msg.AUDIO_S_P="播放音频文件";i.Msg.AUDIO_S_PS="设置音量";i.Msg.AUDIO_S_PF="文件路径:";i.Msg.AUDIO_SET="设置音频播放音量";i.Msg.VIDEO_S="视频录制初始化";i.Msg.VIDEO_S_S="文件保存路径:";i.Msg.VIDEO_G="从图像源";i.Msg.VIDEO_S_I="录制视频";i.Msg.VIDEO_S_R="停止录制视频";i.Msg.VIDEO_SET_F="播放视频文件";i.Msg.VIDEO_SET_P="文件路径:";i.Msg.VIDEO_NUM="设置视频播放音量 ";i.Msg.VIDEO_STATUS="获取视频播放的状态";i.Msg.SYSTEM="重启系统";i.Msg.SYSTEM_GC="启动内存回收";i.Msg.SYSTEM_CREATE="创建文本文件 ";i.Msg.SYSTEM_CREATE_F="文件名:";i.Msg.SYSTEM_RUN="运行程序文件";i.Msg.SYSTEM_RUN_F="文件名:";i.Msg.SYSTEM_WRITE="创建文本文件";i.Msg.SYSTEM_WRITE_F="文件名:";i.Msg.SYSTEM_WRITE_W="写入内容:";i.Msg.SYSTEM_WRITE_S="分隔符为:";i.Msg.SYSTEM_WRITE_S_N="换行";i.Msg.SYSTEM_WRITE_S_C="逗号";i.Msg.SYSTEM_WRITE_S_S="空格";i.Msg.SYSTEM_WRITE_S_SE="分号";i.Msg.SYSTEM_INPUT="读取文本文件为列表";i.Msg.SERIALPORT_PRINT_TITLE="串口打印 %1";i.Msg.SERIALPORT_SPACER="间隔符";i.Msg.SERIALPORT_TERMINATOR="结束符";i.Msg.SERIALPORT_DATA="数据";i.Msg.SERIALPORT_COLOR="文字颜色";i.Msg.SERIALPORT_TCOLOR="文字底色";i.Msg.SERIALPORT_SLDT="设置LCD灯显示文字";i.Msg.LCD_CLEAR="清除屏幕";i.Msg.CAMERA_WINDOW="设置摄像头窗口化";i.Msg.CAMERA_SIZE="窗口尺寸";i.Msg.CAMERA_INIT="摄像头初始化";i.Msg.CAMERA_CIS="捕捉图像尺寸:";i.Msg.CAMERA_COCI="捕捉图像颜色为:";i.Msg.CAMERA_C="彩色";i.Msg.CAMERA_BW="黑白";i.Msg.math_degrad_rad="转换角度为弧度";i.Msg.math_degrad_deg="转换弧度为角度";i.Msg.io_high="高电平";i.Msg.io_low="低电平";i.Msg.digital_set="设置引脚 #";i.Msg.digital_set_as="为";i.Msg.digital_get="获取引脚 #";i.Msg.digital_get_value="的数字信号数值";i.Msg.analog_get="获取引脚 #";i.Msg.analog_get_value="的模拟信号数值 (PWM)";i.Msg.analog_set="IoT 模块设置引脚 #";i.Msg.set_pin="(范围:0 ~ 1023)";i.Msg.analog_set_ai="A.I. 模块设置引脚 #";i.Msg.analog_set_freq="设置频率为:";i.Msg.analog_set_pwm="设置 PWM 为:";i.Msg.set_pwm="的模拟输出为";i.Msg.led="LED";i.Msg.control="控制";i.Msg.OUT_PWM="输出 PWM 波";i.Msg.analog_set_timer="设置 Timer 为:";i.Msg.analog_set_timer_channel="设置 Timer 频道为:";i.Msg.Esp32_Main_Controller_Io_analog_pin_1="A.I. 模块引脚 #";i.Msg.Esp32_Main_Controller_Io_analog_pin_2="IoT 模块引脚 #";i.Msg.time_iot_module="IoT 模块 ";i.Msg.time_ai_module="AI 模块";i.Msg.time_init_timer="初始化计时器";i.Msg.time_timer_get_time="获取计时器已过时间(秒)";i.Msg.time_timer_clear="清除计时器";i.Msg.time_timer_periodically="启用周期重复计时器";i.Msg.time_timer_every="每隔";i.Msg.time_timer_ms="毫秒";i.Msg.time_execution="运行";i.Msg.time_timer_periodically_clear="清除周期重复计时器";i.Msg.time_get_current_date_title="获取本地时间:";i.Msg.time_get_current_date_y="年";i.Msg.time_get_current_date_m="月";i.Msg.time_get_current_date_d="日";i.Msg.time_get_current_date_hour="时";i.Msg.time_get_current_date_min="分";i.Msg.time_get_current_date_sec="秒";i.Msg.serialcomm_print="串口打印";i.Msg.serialcomm_write_title_text="通过串口发送数据至其他设备";i.Msg.serialcomm_write_title_text_arduino="通过USB发送数据至Arduino";i.Msg.serialcomm_read_setup_title_text_arduino="通过USB获取数据初始化";i.Msg.serialcomm_read_setup_title_text="通过串口获取数据";i.Msg.serialcomm_read_setup_title_text_1="初始化";i.Msg.serial_read_data="从";i.Msg.Serial_Read_Data_all="获取到的串口数据";i.Msg.ARD_SERIAL_RECEIVE_DATASET_GET_TEXT="获取接收一代和二代串口数据中第";i.Msg.ARD_SERIAL_RECEIVE_DATASET_TYPE_TEXT="位的数据";i.Msg.ARD_SERIAL_RECEIVE_DATASET_TYPE_FLOAT="浮点数";i.Msg.ARD_SERIAL_RECEIVE_DATASET_TYPE_INTEGER="Number";i.Msg.ARD_SERIAL_RECEIVE_DATASET_TYPE_STRING="字符";i.Msg.serialcomm_write_item_first="第 ";i.Msg.serialcomm_write_item_last=" 位数据:";i.Msg.serialcomm_write_item="项目";i.Msg.serialcomm_write_data="数据";i.Msg.serialcomm_write_data_bps_title="设置波特率为:";i.Msg.serialcomm_write_data_bps_attrib="比特/秒";i.Msg.serialcomm_write_on="使用";i.Msg.serialcomm_write_on_ai="AI 模块 ";i.Msg.serialcomm_write_on_iot="IoT 模块";i.Msg.serial_send_data_on="在";i.Msg.serial_send_data_on_send_data_cocorobo="CocoPi 发送数据至一代和二代";i.Msg.serial_send_data_on_send_data="CocoPi 发送数据至 Micro:bit";i.Msg.serial_send_data_on_send_data_control_panel="CocoPi 发送数据至掌控板";i.Msg.serial_send_data_on_send_data_control_panel_arduino="CocoPi 发送数据至 Arduino";i.Msg.basic_button_read_value="读取按钮";i.Msg.basic_button_read_value_after="的电平状态";i.Msg.basic_buzzer_set_init="蜂鸣器初始化,并设置引脚为:";i.Msg.basic_buzzer_set="蜂鸣器设置音调频率为 (Hz):";i.Msg.basic_temperature="温度";i.Msg.basic_humidity="湿度";i.Msg.basic_pressure="大气压";i.Msg.basic_env_value="数值(获取数值时间要大于1秒)";i.Msg.basic_motion_use="使用运动传感器";i.Msg.basic_shaking_sensitivity="设置灵敏度为";i.Msg.basic_shaking_sensitivity_high="高";i.Msg.basic_shaking_sensitivity_middle="中";i.Msg.basic_shaking_sensitivity_low="低";i.Msg.basic_when_shaking_when_module="当模块";i.Msg.basic_when_shaking_when_is_in="处于";i.Msg.basic_when_shaking_when_is_not_in="不处于";i.Msg.basic_when_shaking_when_shaking="摇晃状态时";i.Msg.basic_when_shaking="当模块处于摇晃状态时";i.Msg.basic_when_shaking_not="当模块不处于摇晃状态时";i.Msg.basic_when_tilting_get="当模块";i.Msg.basic_when_tilting_get_left="向左";i.Msg.basic_when_tilting_get_right="向右";i.Msg.basic_when_tilting_get_forward="向前";i.Msg.basic_when_tilting_get_backward="向后";i.Msg.basic_when_tilting_get_left_and_forward="向左前";i.Msg.basic_when_tilting_get_left_and_backward="向左后";i.Msg.basic_when_tilting_get_right_and_forward="向右前";i.Msg.basic_when_tilting_get_right_and_backward="向右后";i.Msg.basic_when_tilting_not_tilting="没有";i.Msg.basic_when_tilting_get_when="倾斜时";i.Msg.basic_motion_get="获取";i.Msg.basic_motion_accel="轴的加速度";i.Msg.basic_motion_rotation_measurement="轴的旋转测量值";i.Msg.basic_motion_angle="轴的倾斜角度";i.Msg.isUnit="需要单位";i.Msg.confUnit="是";i.Msg.cancUnit="否";i.Msg.basic_light_get="获取光线值(0~4095)";i.Msg.basic_motion_statement_exec="执行";i.Msg.display_clear_screen="清除 LCD 屏幕";i.Msg.display_fill_screen="设置 LCD 铺满颜色为";i.Msg.display_draw_pixel="像素点";i.Msg.display_draw_vertical="垂直";i.Msg.display_draw_horizontal="水平";i.Msg.display_start_cord="起始坐标";i.Msg.display_length="长度";i.Msg.display_draw_rectangle="矩形";i.Msg.display_drawqr_text=" QR 二维码";i.Msg.display_drawqr_content="文本内容";i.Msg.display_drawqr_padding="边距宽度";i.Msg.display_draw_text="文本";i.Msg.display_draw_text_content="文本内容";i.Msg.display_draw_text_size="文本大小";i.Msg.display_draw_text_return="是否换行";i.Msg.display_red="红";i.Msg.display_green="绿";i.Msg.display_blue="蓝";i.Msg.wifi_setup_hotspot="创建 Wi-Fi 热点";i.Msg.wifi_hotspot_ssid="SSID:";i.Msg.wifi_hotspot_pass="密码:";i.Msg.wifi_connect_router="连接 WiFi 网络";i.Msg.wifi_router_ssid="SSID:";i.Msg.wifi_router_pass="密码:";i.Msg.wifi_router_disconnect="断开 WiFi 连接";i.Msg.wifi_hotspot_get_clients="获取当前已连接的设备数量";i.Msg.wifi_hotspot_get_list="获取当前已连接的设备列表";i.Msg.wifi_router_connection_status="获取 WiFi 连接状态";i.Msg.wifi_close_hotspot="关闭 Wi-Fi 热点";i.Msg.wifi_router_get_info="获取 WiFi 配置信息";i.Msg.wifi_router_device_ip="IP";i.Msg.wifi_router_device_mask="子网掩码";i.Msg.wifi_router_device_gateway="网关";i.Msg.wifi_router_device_dns="DNS";i.Msg.wifi_ntptime_title="同步网络时间";i.Msg.wifi_ntptime_set_timezone="设置同步时区";i.Msg.wifi_ntptime_utc8="东8区";i.Msg.wifi_ntptime_utc9="东9区";i.Msg.wifi_ntptime_utc10="东10区";i.Msg.wifi_ntptime_utc11="东11区";i.Msg.wifi_ntptime_utc12="东12区";i.Msg.wifi_ntptime_utcm12="西12区";i.Msg.wifi_ntptime_utcm11="西区";i.Msg.wifi_ntptime_utcm10="西区";i.Msg.wifi_ntptime_utcm9="西9区";i.Msg.wifi_ntptime_utcm8="西8区";i.Msg.wifi_ntptime_utcm7="西7区";i.Msg.wifi_ntptime_utcm6="西6区";i.Msg.wifi_ntptime_utcm5="西5区";i.Msg.wifi_ntptime_utcm4="西4区";i.Msg.wifi_ntptime_utcm3="西3区";i.Msg.wifi_ntptime_utcm2="西2区";i.Msg.wifi_ntptime_utcm1="西1区";i.Msg.wifi_ntptime_utc0="中时区";i.Msg.wifi_ntptime_utc1="东1区";i.Msg.wifi_ntptime_utc2="东2区";i.Msg.wifi_ntptime_utc3="东3区";i.Msg.wifi_ntptime_utc4="东4区";i.Msg.wifi_ntptime_utc5="东5区";i.Msg.wifi_ntptime_utc6="东6区";i.Msg.wifi_ntptime_utc7="东7区";i.Msg.wifi_ntptime_time_server="设置同步服务器:";i.Msg.wifi_web_http_server_setup="HTTP 服务器初始化";i.Msg.wifi_web_http_server_route_setting_title="HTTP 服务器设置访问路径";i.Msg.wifi_web_http_server_route_setting_path="当路径:";i.Msg.wifi_web_http_server_route_setting_being_requested="被请求时";i.Msg.wifi_web_http_server_route_setting_property="设置请求属性为:";i.Msg.wifi_web_http_server_route_setting_get="GET 请求";i.Msg.wifi_web_http_server_route_setting_post="POST 请求";i.Msg.wifi_web_http_server_route_setting_do="运行";i.Msg.wifi_web_http_server_respond_title="HTTP 服务器设置响应内容";i.Msg.wifi_web_http_server_respond_type="设置返回数据类型:";i.Msg.wifi_web_http_server_respond_text="纯文本";i.Msg.wifi_web_http_server_respond_json="字典类型数据 (JSON)";i.Msg.wifi_web_http_server_respond_html="网页 (HTML 代码)";i.Msg.wifi_web_http_server_respond_exec="响应";i.Msg.wifi_web_http_server_get_title="HTTP 服务器获取从客户端收到的数据,类型为";i.Msg.wifi_web_http_server_get_as_json="字典类型数据 (JSON)";i.Msg.wifi_web_http_server_get_as_text="文本";i.Msg.nbiot_module_which_module_iot="在 IoT 模块上";i.Msg.nbiot_module_which_module_ai="在 AI 模块上";i.Msg.nbiot_module_init="NB-IoT 模块通信初始化";i.Msg.nbiot_module_power="获取 NB-IoT 模块启用状态";i.Msg.nbiot_module_connectivity="获取 NB-IoT 模块网络连接状态";i.Msg.nbiot_module_ip="获取 NB-IoT 模块网络 IP 地址";i.Msg.nbiot_onenet_title="NB-IoT 模块连接 OneNET";i.Msg.nbiot_onenet_connect_productid="产品 ID:";i.Msg.nbiot_onenet_connect_deviceid="设备 ID:";i.Msg.nbiot_onenet_connect_device_api="设备 API Key:";i.Msg.nbiot_onenet_connectivity="NB-IoT 模块获取 OneNET 连接状态";i.Msg.nbiot_onenet_send_title="NB-IoT 模块发送数据至 OneNET";i.Msg.nbiot_onenet_send_property="属性名称: ";i.Msg.nbiot_onenet_when_incoming_msg="当 NB-IoT 模块从 OneNET 收到消息";i.Msg.nbiot_onenet_when_incoming_msg_when="时";i.Msg.nbiot_onenet_when_incoming_msg_exec="运行";i.Msg.nbiot_onenet_receive_command="获取 NB-IoT 模块从 OneNET 发送的指令";i.Msg.nbiot_cococloud_get_event_title="NB-IoT 模块获取 CocoCloud 事件数据";i.Msg.nbiot_cococloud_get_event_api="云端事件 API Key:";i.Msg.nbiot_cococloud_get_property="获取 CocoCloud 事件中属性为";i.Msg.nbiot_cococloud_get_data="的数据";i.Msg.nbiot_cococloud_send_title="NB-IoT 模块发送数据至 CocoCloud";i.Msg.nbiot_cococloud_send_api="事件 API Key:";i.Msg.nbiot_cococloud_send_property="属性名称: ";i.Msg.nbiot_http_get_title="发送 HTTP GET 请求";i.Msg.nbiot_http_get_url="设置目标网址:";i.Msg.internet_server_setup="HTTP 服务器初始化";i.Msg.internet_server_set_max="设置最大连接数:";i.Msg.internet_server_set_source="获取发起请求设备的来源 IP";i.Msg.internet_response_http_content_title="获取 HTTP 响应内容的";i.Msg.internet_response_text="文本";i.Msg.internet_response_content="内容";i.Msg.internet_response_status="状态码";i.Msg.internet_response_json="JSON数据";i.Msg.internet_response_encode="编码";i.Msg.internet_response_reason="原因短语";i.Msg.internet_http_get_title="发送 HTTP GET 请求";i.Msg.internet_http_get_url="设置目标网址:";i.Msg.internet_http_post_title="发送 HTTP POST 请求";i.Msg.internet_http_post_url="设置目标网址:";i.Msg.internet_http_post_json="提交数据 (JSON):";i.Msg.internet_http_get_server_data_title="获取从本地 HTTP 服务器请求得到的数据";i.Msg.internet_http_get_server_data_type="数据类型为:";i.Msg.internet_http_get_server_data_json="字典数据类型";i.Msg.internet_http_get_server_data_text="纯文本";i.Msg.internet_ws_setup_send_text="实时通信 (WebSocket) 发送端初始化";i.Msg.internet_ws_setup_send_ip="设置目标设备 IP:";i.Msg.internet_ws_send_msg="透过实时通信 (WebSocket) 发送消息";i.Msg.internet_ws_setup_recv="实时通信 (WebSocket) 接收端初始化";i.Msg.internet_ws_setup_receiving="当实时通信 (WebSocket) 收到消息时";i.Msg.internet_ws_setup_recv_exec="运行";i.Msg.internet_ws_setup_get_msg="获取从实时通信 (WebSocket) 接收到的消息";i.Msg.internet_ws_setup_get_msg_type="类型为";i.Msg.internet_ws_setup_get_msg_text="文本";i.Msg.internet_ws_setup_get_msg_json="字典类型数据 (JSON)";i.Msg.v831_get_weather_init="初始化天气";i.Msg.set_weather_city="设置获取天气的城市";i.Msg.set_weather_title_small="设置天气时段";i.Msg.set_weather_real_time="实时";i.Msg.set_weather_All_day_long="全天";i.Msg.set_weather_city_title="设置获取天气的城市和时段";i.Msg.beijing="北京";i.Msg.shanghai="上海";i.Msg.guangzhou="广州";i.Msg.shenzhen="深圳";i.Msg.tianjin="天津";i.Msg.HongKong="香港";i.Msg.weather_resulet="天气结果";i.Msg.weather_condition="天气状况";i.Msg.windDir="风向";i.Msg.windScale="风向等级";i.Msg.windSpeed="风速";i.Msg.iotservice_thingspeak_send_title="发送数据至 ThingSpeak 频道 (Channel)";i.Msg.iotservice_thingspeak_send_api_set="设置频道 API Key:";i.Msg.iotservice_thingspeak_send_data_1="数据1";i.Msg.iotservice_onenet_mqtt_setup="OneNET 物联网平台 (MQTTS) 连接初始化";i.Msg.iotservice_onenet_mqtt_server="设置连接服务器:";i.Msg.iotservice_onenet_mqtt_productid="设置产品 ID:";i.Msg.iotservice_onenet_mqtt_productkey="设置产品 API Key:";i.Msg.iotservice_onenet_mqtt_deviceid="设置设备 ID:";i.Msg.iotservice_onenet_mqtt_send="往 OneNET 发送数据";i.Msg.iotservice_onenet_mqtt_send_item="属性名称: ";i.Msg.iotservice_onenet_mqtt_receive="当从 OneNET 收到消息为";i.Msg.iotservice_onenet_mqtt_receive_when="时";i.Msg.iotservice_onenet_mqtt_receive_exec="运行";i.Msg.iotservice_onenet_mqtt_disconnect="断开 OneNET 连接";i.Msg.iotservice_ifttt_send_title="发送数据到 IFTTT Webhooks 事件";i.Msg.iotservice_ifttt_send_webhook="Webhooks API Key:";i.Msg.iotservice_ifttt_send_eventname="事件名称:";i.Msg.iotservice_ifttt_send_1="数据 1:";i.Msg.iotservice_ifttt_send_2="数据 2:";i.Msg.iotservice_ifttt_send_3="数据 3:";i.Msg.iotservice_ifttt_trigger_title="触发 IFTTT 事件";i.Msg.iotservice_ifttt_trigger_webhook="Webhook API Key:";i.Msg.iotservice_ifttt_trigger_eventname="事件名称:";i.Msg.iotservice_thingspeak_send_title="发送数据至 ThingSpeak 频道";i.Msg.iotservice_thingspeak_send_api="频道 API Key:";i.Msg.iotservice_thingspeak_query_title="查找 ThingSpeak 指定频道的数据";i.Msg.iotservice_thingspeak_query_api="频道 API Key:";i.Msg.iotservice_thingspeak_channel_id="频道 ID:";i.Msg.iotservice_thingspeak_read_total="获取 ThingSpeak 频道中的数据总量";i.Msg.iotservice_thingspeak_get_title="获取 ThingSpeak 频道中第";i.Msg.iotservice_thingspeaK_get_field="条数据的 Field";i.Msg.iotservice_thingspeaK_get_value="的数值";i.Msg.iotservice_cococloud_send_title="发送数据至 CocoCloud 事件";i.Msg.iotservice_cococloud_send_title_api="事件 API Key:";i.Msg.iotservice_cococloud_send_property="属性名称: ";i.Msg.iotservice_cococloud_send_property_1="属性值:";i.Msg.iotservice_cococloud_get_title="获取 CocoCloud 事件中的数据";i.Msg.iotservice_cococloud_get_api="事件 API Key:";i.Msg.iotservice_cococloud_get_property="获取 CocoCloud 事件中属性为";i.Msg.iotservice_cococloud_get_data="的数据";i.Msg.system_code_path="程序路径为:";i.Msg.system_get_size="获取模块内剩余空间(单位: MB)";i.Msg.system_get_mac="获取模块的 MAC 地址";i.Msg.system_get_cocorobo_cid="获取 IoT 设备 ID";i.Msg.iot_system_get_cocorobo_firmware_version="获取 IoT 当前固件版本号";i.Msg.iot_system_delete="删除文件";i.Msg.ai_system_get_cocorobo_firmware_version="获取 AI 当前固件版本号";i.Msg.ai_system_get_size="获取内存内剩余空间(单位: MB)";i.Msg.ai_system_sd_get_size="获取SD卡内剩余空间(单位: MB)";i.Msg.ai_system_thread="启用多线程";i.Msg.ai_systen_thread_val="参数";i.Msg.ai_system_thread_setting="设置多线程";i.Msg.ai_system_thread_setDaemon="守护线程";i.Msg.ai_system_thread_not_setDaemon="非守护线程";i.Msg.ai_system_thread_set_setDaemon_TOOLTIP="设置子线程为守护线程,需要在子线程开启之前进行设置";i.Msg.ai_system_thread_set_join="阻塞";i.Msg.ai_systen_queue_aritem="将变量";i.Msg.ai_systen_queue_put="放在队列中";i.Msg.ai_systen_queue_get="得到队列";i.Msg.ai_systen_queue_value="的值";i.Msg.ledstrip_setup_text_iot="在 IoT 模块上 ";i.Msg.ledstrip_setup_text_ai="在 AI 模块上";i.Msg.ledstrip_setup_text="LED 灯带";i.Msg.ledstrip_setup="初始化";i.Msg.ledstrip_set_gpio="设置灯带引脚 #:";i.Msg.ledstrip_set_total_led="设置灯带中灯的数量:";i.Msg.ledstrip_set_light_up="点亮 LED 灯带";i.Msg.ledstrip_set_no="设置要点亮的 LED 灯序号:";i.Msg.ledstrip_set_color="并设置颜色为:";i.Msg.ledstrip_setup_text_show_above_set="使灯带";i.Msg.ledstrip_setup_text_show_above="显示以上效果";i.Msg.ledstrip_set_brightness_setup="设置灯带亮度为:";i.Msg.Pedometer_Init="初始化计步器";i.Msg.Pedometer_Run="运行计步器";i.Msg.Pedometer_Get="获取计数";i.Msg.Pedometer_Init_time="时间间隔";i.Msg.Pedometer_Init_sensitivity="灵敏度";i.Msg.ledstrip_set_brightness_1="设置 LED 灯带亮度为:";i.Msg.ledstrip_set_brightness_after="(亮度范围: 0~255)";i.Msg.servo_setup="IoT 模块舵机初始化";i.Msg.servo_set_gpio="IoT 模块设置位于引脚 #";i.Msg.servo_rotate_to="的舵机转动至";i.Msg.servo_degree="度 (0˚~180˚)";i.Msg.servo_setup_ai="舵机初始化";i.Msg.servo_set_gpio_ai="设置位于引脚 #";i.Msg.servo_rotate_to_ai="的舵机转动至";i.Msg.servo_degree_ai="度 (0˚~180˚)";i.Msg.x_motor_set_motor="IoT 模块电机驱动初始化设置";i.Msg.x_motor_set_motor_turn="IoT 模块设定电机";i.Msg.x_motor_set_motor_speed="以速度";i.Msg.x_motor_exec="(-255~255)进行";i.Msg.x_motor_cw="顺时针";i.Msg.x_motor_acw="逆时针";i.Msg.x_motor_set_motor_turns="转动";i.Msg.x_motor_set_motor_ai="电机驱动初始化设置";i.Msg.x_motor_set_motor_turn_ai="设定电机";i.Msg.x_motor_set_motor_speed_ai="以速度";i.Msg.x_motor_exec_ai="(0~255)进行";i.Msg.x_motor_cw_ai="顺时针";i.Msg.x_motor_acw_ai="逆时针";i.Msg.x_motor_set_motor_turns_ai="转动";i.Msg.x_led_matrix_setup_ai="AI 模块 LED 灯屏模块 (6×6) 初始化设置";i.Msg.x_led_matrix_setup_ai_set_bright_1="设置灯屏亮度为:";i.Msg.x_led_matrix_setup_ai_set_bright_range="(亮度范围: 0~255)";i.Msg.x_led_matrix_width_ai_set_brightness_1="设置灯屏亮度为:";i.Msg.x_led_matrix_width_ai_x="列:";i.Msg.x_led_matrix_width_ai_y="行:";i.Msg.x_led_matrix_width_ai="宽:";i.Msg.x_led_matrix_height_ai="高:";i.Msg.x_led_matrix_color_ai="颜色";i.Msg.x_led_matrix_draw_title_ai="AI 模块 LED 灯屏模块";i.Msg.x_led_matrix_draw_pixel_ai="绘制点";i.Msg.x_led_matrix_draw_rect_ai="绘制矩形";i.Msg.x_led_matrix_parameter_color_ai="颜色:";i.Msg.x_led_matrix_parameter_coord_ai="坐标:";i.Msg.x_led_matrix_parameter_size_ai="尺寸:";i.Msg.x_led_matrix_show_above_ai="显示图案";i.Msg.x_led_matrix_clear_all_ai="清除灯屏";i.Msg.x_led_matrix_setup_iot="IoT 模块 LED 灯屏模块 (6×6) 初始化设置";i.Msg.x_led_matrix_width_iot_x="列:";i.Msg.x_led_matrix_width_iot_y="行:";i.Msg.x_led_matrix_width_iot="宽:";i.Msg.x_led_matrix_height_iot="高:";i.Msg.x_led_matrix_color_iot="颜色";i.Msg.x_led_matrix_draw_title_iot="IoT 模块 LED 灯屏模块";i.Msg.x_led_matrix_setup_iot_set_bright_1="设置灯屏亮度为:";i.Msg.x_led_matrix_setup_iot_set_bright_range="(亮度范围: 0~255)";i.Msg.x_led_matrix_width_iot_set_brightness_1="设置灯屏亮度为:";i.Msg.x_led_matrix_setup_iot_io="设置灯屏 引脚 # 为:";i.Msg.x_led_matrix_draw_pixel_iot="绘制点";i.Msg.x_led_matrix_parameter_color_iot="颜色:";i.Msg.x_led_matrix_parameter_coord_iot="坐标:";i.Msg.x_led_matrix_show_above_iot="IoT 模块 LED 灯屏模块显示生效";i.Msg.x_gamepad_read_button_first_text_iot="当游戏手柄上的按键";i.Msg.x_gamepad_read_button_first_text_pressed_iot=" 按下时";i.Msg.x_gamepad_read_button_first_text_released_iot=" 松开时";i.Msg.x_gamepad_read_button_status_first_text_iot="获取游戏手柄上按键";i.Msg.x_gamepad_read_button_status_after_text_iot="的电平值";i.Msg.x_gamepad_read_joystick_read_iot="获取游戏手柄上摇杆";i.Msg.x_gamepad_read_joystick_read_iot_x="X轴方向";i.Msg.x_gamepad_read_joystick_read_iot_y="Y轴方向 ";i.Msg.x_gamepad_read_joystick_read_after_iot="的模拟数值 (范围: 0~1023)";i.Msg.x_gamepad_read_joystick_when_iot="当游戏手柄上的摇杆";i.Msg.x_gamepad_read_joystick_when_top_iot="向上推时";i.Msg.x_gamepad_read_joystick_when_bottom_iot="向下推时";i.Msg.x_gamepad_read_joystick_when_left_iot="向左推时";i.Msg.x_gamepad_read_joystick_when_right_iot="向右推时";i.Msg.x_gamepad_read_joystick_when_not_iot="没有动时";i.Msg.x_gamepad_read_button_first_text_ai="当游戏手柄上的按键";i.Msg.x_gamepad_read_button_first_text_pressed_ai=" 按下时";i.Msg.x_gamepad_read_button_first_text_released_ai=" 松开时";i.Msg.x_gamepad_read_button_status_first_text_ai="获取游戏手柄上按键";i.Msg.x_gamepad_read_button_status_after_text_ai="的电平值";i.Msg.x_gamepad_read_joystick_read_ai="获取游戏手柄上摇杆";i.Msg.x_gamepad_read_joystick_read_ai_x="X轴方向";i.Msg.x_gamepad_read_joystick_read_ai_y="Y轴方向 ";i.Msg.x_gamepad_read_joystick_read_after_ai="的模拟数值 (范围: 0~1023)";i.Msg.x_gamepad_read_joystick_when_ai="当游戏手柄上的摇杆";i.Msg.x_gamepad_read_joystick_when_top_ai="向上推时";i.Msg.x_gamepad_read_joystick_when_bottom_ai="向下推时";i.Msg.x_gamepad_read_joystick_when_left_ai="向左推时";i.Msg.x_gamepad_read_joystick_when_right_ai="向右推时";i.Msg.x_gamepad_read_joystick_when_not_ai="没有动时";i.Msg.ai_basic_button_when="当按钮";i.Msg.ai_basic_pressed="按下时";i.Msg.ai_basic_released="松开时";i.Msg.ai_basic_led_set="设置";i.Msg.ai_basic_led_blue="蓝色LED";i.Msg.ai_basic_led_red="LED2(右侧)";i.Msg.ai_basic_led_on="点亮";i.Msg.ai_basic_led_off="熄灭";i.Msg.ai_basic_rgb_set_on="点亮 RGB 灯,灯颜色为";i.Msg.ai_basic_rgb_set_off="熄灭 RGB 灯";i.Msg.ai_basic_led_analog_set="设置";i.Msg.ai_basic_led_analog_led1="LED1";i.Msg.ai_basic_led_analog_led2="LED2";i.Msg.ai_basic_led_analog_brightness_text="的灯光亮度为";i.Msg.ai_basic_led_analog_range_text="(数值范围: 0~100)";i.Msg.image_process_lcd_init="LCD 屏幕初始化";i.Msg.image_process_lcd_direction="设置屏幕方向";i.Msg.image_process_lcd_landscape_screen="横屏";i.Msg.image_process_lcd_vertical_screen="竖屏";i.Msg.image_process_text_let_canvas="将画布";i.Msg.image_process_text_image_canvas="图片化";i.Msg.image_process_text_let_canvas_filled_with_color="铺满颜色";i.Msg.image_process_text_on_canvas="在画布";i.Msg.image_process_text_on_draw="上绘制";i.Msg.image_text_on_draw="绘制";i.Msg.image_process_text_set_canvas_setup="设置画布";i.Msg.image_process_draw_qrcode="二维码";i.Msg.image_process_draw_qr_code_size="二维码大小";i.Msg.image_process_text_filled="实心";i.Msg.image_process_text_stroked="空心";i.Msg.image_process_statistical_chart_bar="条形";i.Msg.image_process_statistical_chart_broken_line="折线";i.Msg.image_process_statistical_chart_sector="扇形";i.Msg.image_process_sensor="传感器 ";i.Msg.image_process_temperature="温度";i.Msg.image_process_humidity="湿度";i.Msg.image_process_Ray_value="光线值";i.Msg.image_process_temperature_range="范围 ";i.Msg.image_process_nothing="不定义范围(温度除外)";i.Msg.image_process_interface="界面 ";i.Msg.ai_speech_recognition_setup_set_english="英文";i.Msg.ai_speech_recognition_setup_set_simplified_chinese="中文";i.Msg.ai_speech_recognition_setup_set_traditional_chinese="繁体中文";i.Msg.image_process_text_start_coord_as="起始点坐标为:";i.Msg.image_process_text_start_coord="设置起始点坐标:";i.Msg.image_process_text_end_coord="设置结束点坐标:";i.Msg.image_process_text_size="尺寸:";i.Msg.image_process_text_color="颜色:";i.Msg.image_process_background_color="背景颜色:";i.Msg.image_process_text_thick="厚度:";i.Msg.image_process_text_radius="半径:";i.Msg.image_process_text_content="内容";i.Msg.image_process_statistical_chart_content="获取需绘图的数据";i.Msg.image_process_statistical_chart_y_property="定义 Y 轴为";i.Msg.image_process_pixtovec_text_first="进行";i.Msg.image_process_pixtovec_v2p="矢量转像素";i.Msg.image_process_pixtovec_p2v="像素转矢量";i.Msg.image_process_pixtovec_conversion="转换";i.Msg.image_process_color_mode_gray="灰度模式";i.Msg.image_process_color_mode_rgb="彩色模式";i.Msg.image_process_imgcut_cutting="进行裁剪处理";i.Msg.image_process_imgcut_start_coord="裁剪起始坐标:";i.Msg.image_process_imgcut_size="裁剪尺寸:";i.Msg.image_process_img_save="保存至本地";i.Msg.image_process_img_save_quality="设置图像压缩质量:";i.Msg.image_process_color_invert="进行颜色反转";i.Msg.image_process_resize_to="调整尺寸至";i.Msg.image_process_color_scheme_convert="转换为";i.Msg.image_process_color_scheme_bw="黑白";i.Msg.image_process_color_scheme_rgb="彩色";i.Msg.image_process_draw_cross_title="上绘制十字标";i.Msg.image_process_draw_cross_centerpos="中心坐标:";i.Msg.image_process_draw_cross_length="十字线延伸长度:";i.Msg.image_process_draw_cross_thick="十字线厚度:";i.Msg.image_process_draw_cross_color="颜色:";i.Msg.image_process_draw_arrow_title="上绘制箭头";i.Msg.image_process_draw_image_title="上绘制图片";i.Msg.image_process_draw_image_title_image_path="设置图片文档路径:";i.Msg.image_process_draw_image_scale_x="设置 X 方向的缩放比例:";i.Msg.image_process_draw_image_scale_y="设置 Y 方向的缩放比例:";i.Msg.image_process_draw_sensor_image_title="上绘制相机捕捉的图像";i.Msg.image_process_draw_sensor_image_path="设置图像源:";i.Msg.image_process_draw_arrow_start="开始坐标:";i.Msg.image_process_draw_arrow_end="结束坐标:";i.Msg.image_process_draw_arrow_color="颜色:";i.Msg.image_process_draw_arrow_thick="厚度:";i.Msg.image_process_draw_rectangle_text="矩形";i.Msg.image_process_draw_circle_text="圆形";i.Msg.image_process_draw_circle_text_start="圆心坐标";i.Msg.image_process_draw_text_font_size="文本大小:(由 1 至 3 之间的整数)";i.Msg.image_process_draw_text_if_monospace="是否等宽字体";i.Msg.image_process_draw_text="文本";i.Msg.image_process_draw_statistical_chart="统计图";i.Msg.image_process_draw_characters="汉字字符";i.Msg.image_process_draw_line="直线";i.Msg.image_process_create_blank_canvas="创建空白画布";i.Msg.image_process_create_image_canvas="创建图像画布";i.Msg.image_process_create_image_canvas_path="图像路径: ";i.Msg.image_process_show_canvas="显示画布";i.Msg.image_process_clear_canvas_1="清除画布";i.Msg.image_process_clear_canvas_2="中的所有内容";i.Msg.image_process_set_lcd_rotation="旋转至";i.Msg.image_process_set_lcd_mirror_flip="将 LCD 屏幕进行镜面翻转";i.Msg.image_process_set_filled_screen_color="将 LCD 屏幕填充颜色为";i.Msg.image_process_set_filled_screen_color_red="红色";i.Msg.image_process_set_filled_screen_color_green="绿色";i.Msg.image_process_set_filled_screen_color_blue="蓝色";i.Msg.image_process_set_filled_screen_color_purple="紫色";i.Msg.image_process_set_filled_screen_color_cyan="青色";i.Msg.image_process_set_filled_screen_color_orange="橙色";i.Msg.image_process_set_filled_screen_color_yellow="黄色";i.Msg.image_process_set_filled_screen_color_black="黑色";i.Msg.image_process_set_filled_screen_color_white="白色";i.Msg.image_process_clear_lcd="清除屏幕";i.Msg.image_process_rgb_r="红";i.Msg.image_process_rgb_g="绿";i.Msg.image_process_rgb_b="蓝";i.Msg.image_process_xy_x="X";i.Msg.image_process_xy_y="Y";i.Msg.image_process_wh_width="宽";i.Msg.image_process_wh_height="高";i.Msg.image_process_lcd_show_text="在 LCD 屏幕上显示文本";i.Msg.image_process_lcd_show_text_color="文本颜色";i.Msg.image_process_lcd_show_text_bg_color="文本背景颜色";i.Msg.image_process_lcd_show_text_color_red="红色";i.Msg.image_process_lcd_show_text_color_green="绿色";i.Msg.image_process_lcd_show_text_color_blue="蓝色";i.Msg.image_process_lcd_show_text_color_purple="紫色";i.Msg.image_process_lcd_show_text_color_cyan="青色";i.Msg.image_process_lcd_show_text_color_orange="橙色";i.Msg.image_process_lcd_show_text_color_yellow="黄色";i.Msg.image_process_lcd_show_text_color_black="黑色";i.Msg.image_process_lcd_show_text_color_white="白色";i.Msg.image_process_get_statistics_to_canvas="获取对画布";i.Msg.image_process_get_statistics_get_analysis="进行颜色信道信息分析的结果";i.Msg.image_process_get_statistics_start_coord="设置分析区域的起始坐标:";i.Msg.image_process_get_statistics_size="设置分析区域的尺寸:";i.Msg.image_process_get_statistics_boxes="设置直方图信道的箱数:";i.Msg.image_process_lab_rgb_conversion_exec="运行颜色制式转换";i.Msg.image_process_lab_rgb_conversion_torgb="LAB 转 RGB";i.Msg.image_process_lab_rgb_conversion_tolab="RGB 转 LAB";i.Msg.image_process_lab_rgb_conversion_tuple="设置要转换的颜色元组为:";i.Msg.image_process_rgb_grayscale_conversion_exec="运行颜色制式转换";i.Msg.image_process_rgb_grayscale_conversion_torgb="灰度转 RGB";i.Msg.image_process_rgb_grayscale_conversion_togray="RGB 转灰度";i.Msg.image_process_rgb_grayscale_conversion_set="设置要转换的颜色元组或灰度值为:";i.Msg.image_lcd_set_font="设置字体为";i.Msg.ai_camera_camera_init="相机初始化";i.Msg.ai_camera_camera_set_size="设置捕捉画面的尺寸为:";i.Msg.ai_camera_camera_fit_set="设置相机捕捉画面";i.Msg.ai_camera_camera_fit_to="的尺寸为";i.Msg.ai_camera_camera_fit_1="LCD 屏幕 (240*240px)";i.Msg.ai_camera_camera_fit_2="用于 YOLO 模型推理 (224*224px)";i.Msg.ai_camera_camera_color_mode="设置捕捉画面颜色模式为:";i.Msg.ai_camera_camera_color_mode_rgb="彩色";i.Msg.ai_camera_camera_color_mode_bw="黑白";i.Msg.ai_camera_windowing_resize="将相机捕捉到的图像尺寸调整至";i.Msg.ai_camera_windowing_w="宽:";i.Msg.ai_camera_windowing_h="高:";i.Msg.ai_camera_windowing_unit=" (单位: px)";i.Msg.ai_camera_snapshot="获取相机捕捉的图像";i.Msg.ai_camera_enable="启用";i.Msg.ai_camera_disable="关闭";i.Msg.ai_camera_set_vflip="设置相机图像垂直翻转";i.Msg.ai_camera_set_hmirror="设置相机图像水平镜像";i.Msg.ai_camera_set_auto_whitebal="设置相机图像自动白平衡";i.Msg.ai_camera_set_auto_gain="设置相机图像自动增益";i.Msg.ai_camera_set_auto_exposure="设置相机图像自动曝光";i.Msg.ai_camera_set_contrast_to_value="设置相机图像对比度为:";i.Msg.ai_camera_set_brightness_to_value="设置相机图像亮度为:";i.Msg.ai_camera_set_saturation_value="设置相机图像色彩饱和度为:";i.Msg.ai_camera_set_range="(范围: -3至3)";i.Msg.ai_camera_set_lens_corr="广角镜头画面纠正";i.Msg.ai_camera_bcs_set_text="设置摄像头图像的";i.Msg.ai_camera_bcs_contrast="对比度";i.Msg.ai_camera_bcs_brightness="亮度";i.Msg.ai_camera_bcs_saturation="色彩饱和度";i.Msg.ai_camera_bcs_as="为";i.Msg.ai_camera_bcs_set_text_2="设置摄像头图像";i.Msg.ai_camera_bcs_vflip="垂直翻转";i.Msg.ai_camera_bcs_hmirror="水平镜像";i.Msg.ai_camera_bcs_wb="自动白平衡";i.Msg.ai_camera_bcs_g="自动增益";i.Msg.ai_camera_bcs_e="自动曝光";i.Msg.ai_camera_bcs_as_2="为";i.Msg.ai_camera_bcs_status="状态";i.Msg.ai_vision_get_canvas="获取画布";i.Msg.ai_vision_from_canvas="从画布";i.Msg.ai_vision_from="从";i.Msg.ai_vision_color_analyze_get_result="中指定区域的颜色分析结果 (RGB)";i.Msg.ai_vision_color_analyze_start_coord="设置分析区域的起始坐标:";i.Msg.ai_vision_color_analyze_size="设置分析区域的尺寸:";i.Msg.ai_vision_find_blobs_color_region="寻找指定的颜色色块";i.Msg.ai_vision_find_lines_color_region="寻找指定的颜色线";i.Msg.ai_vision_find_lines_color_region_result="获取寻找到线的结果";i.Msg.ai_vision_find_blobs_color_threshold="设置要追踪的颜色阈值:";i.Msg.ai_vision_find_blobs_start_coord="设置检测区域的起始坐标:";i.Msg.ai_vision_find_blobs_size="设置检测区域的尺寸:";i.Msg.ai_vision_find_blobs_region_threshold="设置边界框区域阈值";i.Msg.ai_vision_find_blobs_pixel_threshold="设置像素数阈值";i.Msg.ai_vision_find_blobs_filtered_region="是否合并所有没有被过滤掉的色块 ";i.Msg.ai_vision_get_blobs_result="获取追踪指定颜色的识别结果";i.Msg.ai_vision_detection_box_x="检测框起点 X 轴坐标";i.Msg.ai_vision_detection_box_y="检测框起点 Y 轴坐标";i.Msg.ai_vision_detection_box_width="检测框宽度";i.Msg.ai_vision_detection_box_height="检测框高度";i.Msg.ai_vision_detection_box_pixels="属于色块一部分的像素数量";i.Msg.ai_vision_detection_box_cx="检测框的中心点 X 轴坐标";i.Msg.ai_vision_detection_box_cy="检测框的中心点 Y 轴坐标";i.Msg.ai_vision_detection_box_degree="检测框的旋转角度";i.Msg.ai_vision_detection_box_total="总数量";i.Msg.ai_vision_find_blobs_margin="边界矩形的大小";i.Msg.ai_vision_detection_color_threshold_set="获取用于颜色追踪的默认颜色:";i.Msg.ai_vision_detection_color_threshold_set_black="黑色";i.Msg.ai_vision_detection_color_threshold_set_white="白色";i.Msg.ai_vision_detection_color_threshold_set_red="亮红色";i.Msg.ai_vision_detection_color_threshold_set_green="绿色";i.Msg.ai_vision_detection_color_threshold_set_blue="浅蓝色";i.Msg.ai_vision_detection_color_threshold_set_orange="橙色";i.Msg.ai_vision_qrcode_detected_result="中 QR 码的检测结果";i.Msg.ai_vision_apriltag_detected_result="中 AprilTag 的检测结果";i.Msg.ai_vision_datamatrices_detected_result="中数据矩阵 (Data Matrix) 的检测结果";i.Msg.ai_vision_barcode_detected_result="中条形码的检测结果";i.Msg.ai_vision_qrcode_get_result="获取检测 QR 码的";i.Msg.ai_vision_apriltag_get_result="获取检测 AprilTag 的";i.Msg.ai_vision_data_matrices_get_result="获取检测数据矩阵 (Data Matrix) 的";i.Msg.ai_vision_barcode_matrices_get_result="获取检测条形码的";i.Msg.ai_vision_pattern_detection_content="源文本";i.Msg.ai_vision_pattern_detection_type="数据类型";i.Msg.ai_vision_pattern_detection_x="边界框的 X 轴坐标";i.Msg.ai_vision_pattern_detection_y="边界框的 Y 轴坐标";i.Msg.ai_vision_pattern_detection_w="边界框的宽度";i.Msg.ai_vision_pattern_detection_h="边界框的高度";i.Msg.ai_vision_pattern_distance="距离";i.Msg.ai_vision_pattern_detection_type_id="数字 ID";i.Msg.ai_vision_pattern_detection_type_family="数字家庭";i.Msg.ai_vision_pattern_detection_rows="行数";i.Msg.ai_vision_pattern_detection_cols="列数";i.Msg.ai_vision_pattern_detection_can_tolerate_count="所能容纳的字符数量";i.Msg.ai_vision_pattern_detection_can_not_tolerate_count="未使用的字符数量";i.Msg.ai_vision_find_circle="中寻找圆形";i.Msg.ai_vision_find_circle_start_coord="设置检测区域的起始坐标:";i.Msg.ai_vision_find_circle_region_size="设置检测区域的尺寸:";i.Msg.ai_vision_find_circle_hoffman_threshold="设置从霍夫变换中监测到圆的阈值:";i.Msg.ai_vision_find_circle_merge_x="设置所检测的圆的合并 (x):";i.Msg.ai_vision_find_circle_merge_y="设置所检测的圆的合并 (y):";i.Msg.ai_vision_find_circle_merge_r="设置所检测的圆的合并 (r):";i.Msg.ai_vision_find_circle_min_radius="设置检测到的最小圆半径:";i.Msg.ai_vision_find_circle_max_radius="设置检测到的最大圆半径:";i.Msg.ai_vision_find_circle_step_radius="设置逐步检测半径:";i.Msg.ai_vision_find_circle_detected_result="获取寻找圆形的结果";i.Msg.ai_vision_find_circle_detected_x="检测到圆的 X 轴坐标";i.Msg.ai_vision_find_circle_detected_y="检测到圆的 Y 轴坐标";i.Msg.ai_vision_find_circle_detected_radius="检测到圆的半径";i.Msg.ai_vision_find_line="中寻找直线";i.Msg.ai_vision_find_line_start_coord="设置检测区域的起始坐标:";i.Msg.ai_vision_find_line_size="设置检测区域的尺寸:";i.Msg.ai_vision_find_line_hoffman_threshold="设置从霍夫变换中监测到直线的阈值:";i.Msg.ai_vision_find_line_merge_theta="设置所监测的直线的合并值 (theta):";i.Msg.ai_vision_find_line_merge_rho="设置所监测的直线的合并值 (rho):";i.Msg.ai_vision_find_line_detected_result="获取寻找直线的结果";i.Msg.ai_vision_find_line_detected_start_x="检测到直线起始点的 X 轴坐标";i.Msg.ai_vision_find_line_detected_start_y="检测到直线起始点的 Y 轴坐标";i.Msg.ai_vision_find_line_detected_end_x="检测到直线结束点的 X 轴坐标";i.Msg.ai_vision_find_line_detected_end_y="检测到直线结束点的 Y 轴坐标";i.Msg.ai_vision_find_line_detected_length="检测到直线的长度";i.Msg.ai_vision_find_line_detected_angle="检测到直线的角度";i.Msg.ai_vision_find_rect="中寻找矩形";i.Msg.ai_vision_find_rect_start_coord="设置检测区域的起始坐标:";i.Msg.ai_vision_find_rect_region_size="设置检测区域的尺寸:";i.Msg.ai_vision_find_rect_bounding_threshold="设置边界阈值大小:";i.Msg.ai_vision_find_rect_detected_result="获取寻找矩形的结果";i.Msg.ai_vision_find_rect_detected_tuple="检测到矩形的坐标及尺寸元组";i.Msg.ai_vision_find_rect_detected_corners="检测到矩形的四个角的坐标位置";i.Msg.ai_vision_find_rect_detected_x="检测到矩形的起始点的 X 轴坐标";i.Msg.ai_vision_find_rect_detected_y="检测到矩形的起始点的 Y 轴坐标";i.Msg.ai_vision_find_rect_detected_w="检测到矩形的宽度";i.Msg.ai_vision_find_rect_detected_h="检测到矩形的高度";i.Msg.ai_vision_get_histogram_get="获取从画布";i.Msg.ai_vision_get_histogram_compute="中进行标准化直方图运算的结果";i.Msg.ai_vision_get_histogram_region="设定颜色追踪区域范围:";i.Msg.ai_vision_get_histogram_region_xy="区域坐标:";i.Msg.ai_vision_get_histogram_region_wh="区域尺寸:";i.Msg.ai_vision_get_histogram_details_1="从直方图计算结果";i.Msg.ai_vision_get_histogram_details_get="获取直方图频道的 CDF 计算值 (%)";i.Msg.ai_vision_get_histogram_percentile_1="从直方图计算结果获取的百分比值中";i.Msg.ai_vision_get_histogram_percentile_2="获取";i.Msg.ai_vision_get_histogram_percentile_3="灰度百分比值";i.Msg.ai_vision_get_histogram_percentile_4="RGB565 LAB 的L通道的百分比值";i.Msg.ai_vision_get_histogram_percentile_5="RGB565 LAB 的A通道的百分比值";i.Msg.ai_vision_get_histogram_percentile_6="RGB565 LAB 的B通道的百分比值";i.Msg.ai_vision_canvas_area_tuple="创建区域元组";i.Msg.ai_vision_canvas_area_tuple_xy="设置起始座标:";i.Msg.ai_vision_canvas_area_tuple_wh="设置尺寸:";i.Msg.ai_vision_lane_tracking_setup="道路循线识别初始化";i.Msg.ai_vision_lane_tracking_setup_threshold="设置要追踪的颜色";i.Msg.ai_vision_lane_tracking_setup_l="设置左侧识别区域:";i.Msg.ai_vision_lane_tracking_setup_r="设置右侧识别区域:";i.Msg.ai_vision_lane_tracking_setup_axis="设置中轴线位置:";i.Msg.ai_vision_lane_tracking_run="运行道路循线识别";i.Msg.ai_vision_lane_tracking_run_get="从道路循线识别的结果中获取";i.Msg.ai_vision_lane_tracking_run_ld="左侧区域检测结果";i.Msg.ai_vision_lane_tracking_run_lv="左侧区域检测偏移距离";i.Msg.ai_vision_lane_tracking_run_rd="右侧区域检测结果";i.Msg.ai_vision_lane_tracking_run_rv="右侧区域检测偏移距离";i.Msg.ai_microphone_init="麦克风初始化";i.Msg.ai_microphone_start_spectrum_analyze="开始读取音频频谱";i.Msg.ai_microphone_get_spectrum_analyze_result="获取麦克风采集的音频频谱";i.Msg.ai_microphone_get_spectrum_analyze_result_1="低音 1";i.Msg.ai_microphone_get_spectrum_analyze_result_2="低音 2";i.Msg.ai_microphone_get_spectrum_analyze_result_3="中低音 1";i.Msg.ai_microphone_get_spectrum_analyze_result_4="中低音 2";i.Msg.ai_microphone_get_spectrum_analyze_result_5="中高音 1";i.Msg.ai_microphone_get_spectrum_analyze_result_6="中高音 2";i.Msg.ai_microphone_get_spectrum_analyze_result_7="高音 1";i.Msg.ai_microphone_get_spectrum_analyze_result_8="高音 2";i.Msg.ai_mphone_Record_audio_init="麦克风录制音频初始化";i.Msg.ai_mphone_Record_audio_start="开始录制音频";i.Msg.ai_mphone_Record_audio_start_path="设置音频保存路径:";i.Msg.ai_mphone_Record_audio_start_time="设置录制的时间(s):";i.Msg.ai_audio_stop_recording="停止录制音频";i.Msg.ai_audio_play_music_file="播放音频文件(单个循环)";i.Msg.ai_audio_play_music_file_list_loop="播放音频文件(顺序播放)";i.Msg.ai_audio_play_music_file_list_random="播放音频文件(随机播放)";i.Msg.ai_audio_play_music_file_set_vol="设置音量为:";i.Msg.ai_audio_play_music_file_set_file_path="加载音乐文件,路径为:";i.Msg.ai_audio_play_music_file_set_files_list="音频文件列表:";i.Msg.ai_audio_play_music_file_set_first_index="起始位置:";i.Msg.ai_audio_files_list_set_file_path="当前路径:";i.Msg.ai_audio_get_play_status="获取音频文件播放状态";i.Msg.ai_audio_end_play="结束音频文件播放";i.Msg.ai_audio_start_play="播放音乐文件";i.Msg.ai_audio_init="喇叭初始化";i.Msg.ai_audio_set_music_vol="设置音频文件播放音量为:";i.Msg.ai_audio_files_list="获取音频文件列表";i.Msg.ai_speech_recognition_setup="语音识别初始化";i.Msg.ai_speech_recognition_setup_set_sensi="设置环境噪音灵敏度为:";i.Msg.ai_speech_recognition_setup_set_sensi_normal="正常";i.Msg.ai_speech_recognition_setup_set_sensi_high="高";i.Msg.ai_speech_recognition_setup_set_sensi_ehigh="很高";i.Msg.ai_speech_recognition_start_recording="开始录制语音片段";i.Msg.ai_speech_recognition_start_recording_clip_text="设置要识别的语音片段个数为:";i.Msg.ai_speech_recognition_start_recording_clip_note="(不得超过 6 个片段)";i.Msg.ai_speech_recognition_start_recording_take_text="设置每个片段录制的次数为:";i.Msg.ai_speech_recognition_start_recording_take_note="(不得超过 4 次)";i.Msg.ai_speech_recognition_start_recognizing="开始进行语音识别";i.Msg.ai_speech_recognition_any_result_text="当语音识别获得任意结果的时候";i.Msg.ai_speech_recognition_any_result_text_do="执行";i.Msg.ai_speech_recognition_get_result="语音识别的结果为第 ";i.Msg.ai_speech_recognition_get_result_after="条片段";i.Msg.ai_speech_recognition_phonetic_to_pinyin_setup="语音转拼音初始化";i.Msg.ai_speech_recognition_setup_pinyin="设置拼音";i.Msg.ai_speech_recognition_phonetic_to_pinyin_get_result="获取语音转拼音的结果";i.Msg.ai_speech_recognition_phonetic_to_pinyin_set_param="设置拼音识别参数";i.Msg.ai_speech_recognition_phonetic_to_pinyin_set_param_1="设置优先级";i.Msg.speech_recognition_phonetic_to_pinyin_start_recognition="开始语音拼音识别";i.Msg.speech_recognition_phonetic_to_pinyin_stop_recognition="终止语音拼音识别";i.Msg.speech_recognition_phonetic_to_pinyin_pause_recognition="清除语音拼音识别";i.Msg.speech_recognition_number_of_recordings="录制片段次数";i.Msg.speech_recognition_In_recording="录制片段中";i.Msg.speech_recognition_Recorded_successfully="录制片段成功";i.Msg.speech_recognition_Start_speech_recognition="录制语音片段并识别显示在";i.Msg.speech_recognition_Start_speech_recognition_title="录制语音片段并识别显示";i.Msg.speech_recognition_Speech_recognition_result="语音识别结果";i.Msg.speech_recognition_Clean_up_the_last_study_result="清理上一次学习结果";i.Msg.speech_recognition_Recognition_success="识别成功";i.Msg.speech_recognition_Recognition_fail="识别失败";i.Msg.ai_video_start_recording="开始录制视频";i.Msg.ai_video_start_recording_file_path="设置视频保存路径:";i.Msg.ai_video_start_recording_width="设置视频宽度 (px):";i.Msg.ai_video_start_recording_height="设置视频高度 (px):";i.Msg.ai_video_to_canvas="对画布";i.Msg.ai_video_record="进行录制";i.Msg.ai_video_stop_recording="停止录制视频";i.Msg.ai_video_play_video="播放视频文件";i.Msg.ai_video_play_video_2="注:仅支持尺寸为 320*240 的视频";i.Msg.ai_video_play_video_file_path="视频路径:";i.Msg.ai_video_stop_video_playing="结束视频文件播放";i.Msg.ai_video_get_video_playing_status="获取视频播放的状态";i.Msg.ai_video_recording_and_save="录制视频文件并保存";i.Msg.ai_video_set_play="视频文件播放";i.Msg.ai_video_set_play_stats="视频属性";i.Msg.ai_video_set_play_init="视频初始化";i.Msg.ai_models_from="从";i.Msg.ai_models_init_title="初始化预设模型:";i.Msg.ai_model_allinit_language="设置语言为:";i.Msg.ai_models_load_title="加载预设模型:";i.Msg.ai_models_init_hand_written_model="手写数字识别模型";i.Msg.ai_models_init_object_model="常见物体检测模型";i.Msg.ai_models_init_guesswork_model="猜拳识别模型";i.Msg.ai_models_guesswork_model_if="检测到猜拳结果";i.Msg.ai_models_guesswork_model_get="获取检测到的猜拳结果的";i.Msg.ai_model_guesswork_look_attribute="待猜拳手势属性";i.Msg.ai_models_init_object_model_title="常见物体检测模型(飞机、自行车、鸟,船,瓶子,公共汽车,汽车,猫,椅子,牛,餐桌,狗,马,摩托车,人,盆栽,羊,沙发,火车,电视监视器)";i.Msg.ai_models_init_face_model="人脸检测模型";i.Msg.ai_camera_camera_fit_set1="设置相机捕捉画面为:";i.Msg.ai_models_init_source="设置要检测的图像源为:";i.Msg.ai_models_init_source_written="设置要检测手写数字识别的图像源为:";i.Msg.ai_models_hand_written_model_result="获取手写数字检测模型的检测结果";i.Msg.ai_models_hand_written_model_number="获取当前检测到的数字 (0至9)";i.Msg.ai_models_hand_written_model_confidence="获取当前检测到的数字的置信度 (%)";i.Msg.ai_model_digital="待测数字属性";i.Msg.ai_model_digital_attribute="检测到待测数字";i.Msg.ai_models_object_model_if="检测到待测物体";i.Msg.ai_models_object_model_get="获取检测到的待测物体的";i.Msg.ai_model_look_attribute="待测物体属性";i.Msg.ai_models_object_model_name="物体名称";i.Msg.ai_models_object_model_x="检测框起点 X 轴坐标";i.Msg.ai_models_object_model_y="检测框起点 Y 轴坐标";i.Msg.ai_models_object_model_w="检测框终点 X 轴坐标";i.Msg.ai_models_object_model_h="检测框终点 Y 轴坐标";i.Msg.ai_models_object_model_count="物体数量";i.Msg.ai_models_object_model_index="出现顺序";i.Msg.ai_models_object_model_confidence="置信度";i.Msg.ai_models_face_model_if_new="识别到人脸";i.Msg.ai_model_face_attribute_new="人脸识别属性";i.Msg.ai_models_face_model_if="检测到人脸";i.Msg.ai_model_face_attribute="人脸属性";i.Msg.ai_models_face_model_get="获取检测到的人脸的";i.Msg.ai_models_face_model_x="检测框起点 X轴坐标";i.Msg.ai_models_face_model_y="检测框起点 Y轴坐标";i.Msg.ai_models_face_model_w="检测框终点 X轴坐标";i.Msg.ai_models_face_model_h="检测框终点 Y轴坐标";i.Msg.ai_models_face_model_ws="检测框的宽度";i.Msg.ai_models_face_model_hs="检测框的高度";i.Msg.ai_models_face_model_rect="检测框";i.Msg.ai_models_face_model_count="数量";i.Msg.ai_models_face_model_index="出现顺序";i.Msg.ai_models_face_model_confidence="置信度";i.Msg.ai_models_face_model_confidence_1="置信度(人脸检测)";i.Msg.ai_model_human_attribute="人体属性";i.Msg.ai_models_human_model_if="检测到人体";i.Msg.ai_models_human_model_get="获取检测到的人体的";i.Msg.ai_models_init_humane_model="人体检测模型";i.Msg.ai_models_init_card_model="车牌识别模型";i.Msg.ai_models_init_card_result="车牌结果";i.Msg.ai_models_card_if_true="检测到车牌";i.Msg.ai_models_card_attribute="检测到的车牌属性";i.Msg.ai_models_card_model_get="获取检测到车牌的";i.Msg.ai_model_customized_init_setup_definition="加载自定义模型前的设置";i.Msg.ai_models_customized_init_setup_title="自定义模型 (TinyYOLOv2)";i.Msg.ai_model_customized_load_setup_title="加载自定义模型 (TinyYOLOv2)";i.Msg.ai_models_customized_init_setup_path="模型文件路径:";i.Msg.ai_models_customized_init_setup_source="设置要识别的图像源为:";i.Msg.v831_transmission_init_setup_source="设置要传输的图像源为:";i.Msg.v831_transmission_setup_show="将捕捉的相机图像传输到电脑并显示";i.Msg.v831_internet_transmission_setup_show="将捕捉的相机图像在网页显示";i.Msg.ai_models_customized_init_type_set="设置识别模式:";i.Msg.ai_models_customized_init_type_set_fast="识别单张人脸(速度快)";i.Msg.ai_models_customized_init_type_set_slow="识别多张人脸(速度慢):";i.Msg.ai_models_customized_init_setup_name="设置模型识别物体的名称:";i.Msg.ai_models_customized_if_got="识别到了自定义模型的对象";i.Msg.ai_model_customized_attribute="自定义模型对象属性";i.Msg.ai_models_customized_get_result_any="获取识别到自定义模型结果的";i.Msg.ai_models_customized_get_result_name="名称";i.Msg.ai_models_customized_get_result_x="检测框起点 X 轴坐标";i.Msg.ai_models_customized_get_result_y="检测框起点 Y 轴坐标";i.Msg.ai_models_customized_get_result_w="检测框终点 X 轴坐标";i.Msg.ai_models_customized_get_result_h="检测框终点 Y 轴坐标";i.Msg.ai_models_customized_get_result_count="数量";i.Msg.ai_models_customized_get_result_index="出现顺序";i.Msg.ai_models_customized_get_result_confidence="置信度";i.Msg.ai_model_face_name="设置模型识别人脸的名称:";i.Msg.ai_model_face_setup="自定义人脸识别";i.Msg.ai_model_face="自定义初始化人脸识别模型";i.Msg.ai_face_detection_model="初始化人脸检测模型";i.Msg.ai_face_point_detection_model="初始化人脸5点关键点检测模型";i.Msg.ai_face_Vitter_eigenvalue_model="初始化人脸196维特征值模型";i.Msg.ai_model_Calculation_of_196_eigenvalues="计算运行人脸特征模型后的196维特征值";i.Msg.ai_model_face_start_recognition="加载人脸检测模型,";i.Msg.ai_model_face_model_load_finish="人脸检测模型加载完成";i.Msg.ai_model_face_load_point_detection_model="加载人脸5点关键点检测模型,";i.Msg.ai_model_face_load_point_detection_model_1="获取人脸图像并将其存到";i.Msg.ai_model_face_load_point_detection_model_2="设置人脸检测框为";i.Msg.ai_model_face_gather="采集新的人脸数据并保存人脸数据";i.Msg.ai_model_face_gather_1="保存人脸数据并将数据保存在文件中,路径为:";i.Msg.ai_model_face_data_load="加载已保存的人脸数据";i.Msg.ai_model_face_data_load_1="设置路径为 /sd/user 的加载人脸数据的文件名为";i.Msg.ai_model_face_model_list="人脸检测属性";i.Msg.ai_model_face_gather_num_judge="人脸采集完成";i.Msg.ai_model_face_recognition="采集或者加载完成人脸数据并进行人脸识别";i.Msg.ai_model_face_recognition_get_result="人脸识别获得任意结果";i.Msg.ai_model_show_face="处理图像并显示";i.Msg.v831_face_recognition_load="加载人脸识别模型,";i.Msg.v831_face_recognition_load_title="加载人脸模型,并设置要检测的图像源";i.Msg.v831_setting_face_data_save="设置要保存的人脸数据:";i.Msg.face_recognition_map_face_canvas="在画布上";i.Msg.face_recognition_map_face_show="显示第";i.Msg.face_recognition_map_face_key_point="人脸的关键点";i.Msg.v831_setting_face_data_save_title="设置要保存的人脸数据";i.Msg.v831_setting_face_data_remove="删除最后一次保存的人脸数据";i.Msg.v831_setting_face_data_remove_title="删除最后一次保存的人脸数据";i.Msg.v831_face_recognition_result="图像源识别结果:";i.Msg.v831_face_recognition_result_title="图像源识别结果";i.Msg.v831_model_face_name="人脸的名称";i.Msg.v831_models_face_model_confidence="置信度(人脸识别)";i.Msg.ai_model_class_setup="自定义物体识别";i.Msg.ai_class_model="初始化自定义物体特征提取模型";i.Msg.ai_class_model_cluster="初始化自定义物体聚类参数";i.Msg.ai_model_class_start_load="并对图像进行处理";i.Msg.ai_model_class_gather="开始采集物体";i.Msg.ai_model_class_data_load="加载物体数据";i.Msg.ai_model_class_data_load_1="设置路径为 /sd/user 的加载物体数据的文件名为";i.Msg.ai_model_class_gather_load_finish="采集或者加载完成物体数据";i.Msg.ai_model_class_cluster_train="开始进行物体特征提取,然后加以聚类训练";i.Msg.ai_model_class_cluster_train_1="设置路径为 /sd/user 的保存物体数据的文件名为";i.Msg.ai_model_class_recognition="开始进行物体识别";i.Msg.ai_model_class="自定义初始化物体识别模型";i.Msg.ai_model_class_name="设置模型识别物体的名称";i.Msg.ai_model_getface="识别到了人脸模型的对象";i.Msg.ai_model_getclass="识别到了物体模型的对象";i.Msg.face_information="人脸信息";i.Msg.ai_models_object_model_x_center="检测框中心点的X轴坐标";i.Msg.ai_models_object_model_y_center="检测框中心点的Y轴坐标";i.Msg.ai_models_face_model_x_center="检测框中心点的 X 轴坐标";i.Msg.ai_models_face_model_y_center="检测框中心点的 Y 轴坐标";i.Msg.ai_models_customized_get_result_x_center="检测框中心点的 X 轴坐标";i.Msg.ai_models_customized_get_result_y_center="检测框中心点的 Y 轴坐标";i.Msg.ai_models_edge_detection_model="边缘检测模型";i.Msg.ai_models_load_edge_detection_model="加载边缘检测模型";i.Msg.ai_models_get_edge_detection_result="获取边缘检测模型结果";i.Msg.ai_model_self_learning_init="初始化自学习分类模型";i.Msg.ai_model_self_learning_load="加载自学习分类模型";i.Msg.ai_model_self_learning_recognize_load="加载自学习分类识别模型";i.Msg.ai_model_self_learning_add_class_category="添加分类类别";i.Msg.ai_model_self_learning_make_data_set="制作模型训练的数据集";i.Msg.ai_model_self_learning_picture="进行图片自学习";i.Msg.ai_model_self_learning_save_modal="保存模型";i.Msg.ai_model_self_learning_class_verification="自学习分类模型验证";i.Msg.ai_model_self_learning_result="自学习结果";i.Msg.ai_model_self_learning_result_name="名称";i.Msg.ai_system_restart="重启系统";i.Msg.ai_system_off="关机";i.Msg.ai_system_refresh="刷新文件目录";i.Msg.ai_system_enable_gc="启动内存回收";i.Msg.ai_system_run_python_code="运行 Python 程序";i.Msg.ai_system_run_python_code_file_path="程序路径为:";i.Msg.ai_wifi_set_wifi="设定 Wi-Fi 为";i.Msg.ai_wifi_enabled="启用状态";i.Msg.ai_wifi_disabled="禁用状态";i.Msg.ai_wifi_start_wifi_scan="开始扫描附近 Wi-Fi 热点";i.Msg.ai_wifi_wifi_scan_result="获取 Wi-Fi 扫描的结果为列表形式";i.Msg.ai_wifi_connect_wifi="连接至 Wi-Fi 网络";i.Msg.ai_wifi_connect_wifi_ssid="网络名称 (SSID):";i.Msg.ai_wifi_connect_wifi_pass="网络密码:";i.Msg.ai_wifi_get_connection_status="获取 Wi-Fi 连接的状态";i.Msg.ai_wifi_get_wifi_info="获取 Wi-Fi 连接的设备信息:";i.Msg.ai_wifi_get_wifi_info_name="热点名称";i.Msg.ai_wifi_get_wifi_info_ip="IP 地址";i.Msg.ai_wifi_get_wifi_info_dns="DNS 地址";i.Msg.ai_wifi_get_wifi_info_mac="MAC 地址";i.Msg.third_party_hcsr04_iot="在 IoT 模块上";i.Msg.third_party_hcsr04_ai="在 A.I. 模块上 ";i.Msg.third_party_hcsr04_setup_title="初始化 HCSR-04 超声波传感器 ";i.Msg.third_party_hcsr04_trig_pin="设置 Trig 接口为 引脚 #";i.Msg.third_party_hcsr04_echo_pin=", 设置 Echo 接口为 引脚 #";i.Msg.third_party_hcsr04_read_text="读取来自超声波传感器";i.Msg.third_party_hcsr04_read_text_after="的距离检测数值 (单位: 厘米)";i.Msg.Set_Auto_Wrap="自动换行";i.Msg.esp32_ble_setup_sender_msg="BLE(低功耗蓝牙)";i.Msg.esp32_ble_setup_sender="发送端初始化";i.Msg.esp32_ble_send_data_msg="BLE 发送数据";i.Msg.esp32_ble_setup_receiver_msg="BLE(低功耗蓝牙)";i.Msg.esp32_ble_setup_receiver="接收端初始化";i.Msg.esp32_ble_get_data_msg="获取从BLE接收的数据";i.Msg.esp32_ble_sender_connected_msg="发送端已经被连接";i.Msg.esp32_ble_receiver_connected_msg="接收端已经被连接";i.Msg.esp32_ble_set_uuid="设置 UUID:";i.Msg.esp32_ble_set_name="设置设备名称:";i.Msg.esp32_ble_set_name_limit=" (不得超过 8 个字符)";i.Msg.text_additional_delimiter_string="将字符串";i.Msg.text_additional_delimiter_deli="使用分隔符:";i.Msg.text_additional_delimiter_end="进行拆分并生成列表";i.Msg.MLX90614_READ_AMBIENT="从 MLX90614 获取当前环境温度";i.Msg.MLX90614_READ_OBJECT="从 MLX90614 获取目标物体温度";i.Msg.MLX90614_READ_SET_TEMP="设置温度单位为:";i.Msg.MLX90614_READ_SET_TEMP_C="摄氏";i.Msg.MLX90614_READ_SET_TEMP_F="华氏";i.Msg.MLX90614_SETUP_TEXT_1="非接触式测温传感器";i.Msg.MLX90614_SETUP_TEXT_2="MLX90614 初始化设置";i.Msg.DHT_SETUP_TEXT_1="温湿度传感器初始化设置";i.Msg.DHT_SETUP_TEXT_2="传感器型号:";i.Msg.DHT_SETUP_TEXT_3="初始化";i.Msg.DHT_SETUP_TEXT_4="设置传感器数据接收引脚 #:";i.Msg.PM25_SETUP_TEXT="PM2.5灰尘传感器初始化设置";i.Msg.robot_dog_movement="语音操控机器狗";i.Msg.robot_dog_movement_action="设置动作指令";i.Msg.robot_dog_phonetic_to_pinyin_get_result="获取语音识别的结果";i.Msg.robot_dog_movement_action_0="趴下";i.Msg.robot_dog_movement_action_1="站起";i.Msg.robot_dog_movement_action_2="匍匐前进";i.Msg.robot_dog_movement_action_3="转圈";i.Msg.robot_dog_movement_action_4="原地踏步";i.Msg.robot_dog_movement_action_5="蹲起";i.Msg.robot_dog_movement_action_6="转动Roll";i.Msg.robot_dog_movement_action_7="转动Pitch";i.Msg.robot_dog_movement_action_8="转动Yaw";i.Msg.robot_dog_movement_action_9="三轴转动";i.Msg.robot_dog_movement_action_10="撒尿";i.Msg.robot_dog_movement_action_11="坐下";i.Msg.robot_dog_movement_action_12="招手";i.Msg.robot_dog_movement_action_13="伸懒腰";i.Msg.robot_dog_movement_action_14="波浪";i.Msg.robot_dog_movement_action_15="左右摇摆";i.Msg.robot_dog_movement_action_16="求食";i.Msg.robot_dog_movement_action_17="觅食";i.Msg.robot_dog_movement_action_18="握手";i.Msg.robot_dog_movement_action_19="恢复初始状态";i.Msg.robot_dog_movement_action_20="前进";i.Msg.robot_dog_movement_action_21="后退";i.Msg.robot_dog_movement_action_22="向左运动";i.Msg.robot_dog_movement_action_23="向右运动";i.Msg.robot_dog_movement_action_24="开启自稳功能";i.Msg.robot_dog_movement_action_25="关闭自稳功能";i.Msg.robot_dog_movement_action_30="拜年";i.Msg.robot_dog_setup="机器狗初始化";i.Msg.robot_dog_execution="机器狗执行";i.Msg.robot_dog_action="指令";i.Msg.robot_dog_servo_execution="设置";i.Msg.robot_dog_front_left_leg="左前";i.Msg.robot_dog_back_left_leg="左后";i.Msg.robot_dog_front_right_leg="右前";i.Msg.robot_dog_back_right_leg="右后";i.Msg.robot_dog_leg="腿部";i.Msg.robot_dog_up="上 (-31˚~31˚)";i.Msg.robot_dog_up_1="上";i.Msg.robot_dog_middle="中 (-66˚~93˚)";i.Msg.robot_dog_middle_1="中";i.Msg.robot_dog_down="下 (-65˚~73˚)";i.Msg.robot_dog_down_1="下";i.Msg.robot_dog_servo_rotate="关节舵机转动至";i.Msg.robot_dog_ag="度";i.Msg.robot_dog_angle="毫米";i.Msg.robot_dog_angle_speed="度/秒";i.Msg.robot_dog_servo_set_speed="设置";i.Msg.robot_dog_servo_speed="舵机速度";i.Msg.robot_dog_movement_speed="迈步频率";i.Msg.robot_dog_servo_to="为";i.Msg.robot_dog_servo_speed_1="快";i.Msg.robot_dog_servo_speed_2="正常";i.Msg.robot_dog_servo_speed_3="慢";i.Msg.robot_dog_servo_movement_location="方向的位置为";i.Msg.robot_dog_leg_f="腿足尖";i.Msg.robot_dog_controll_action_0="关闭";i.Msg.robot_dog_controll_action_1="打开";i.Msg.robot_dog_gyroscope="陀螺仪";i.Msg.robot_dog_open_performance_mode="机器狗表演模式";i.Msg.robot_dog_open_calibration_mode="机器狗标定模式";i.Msg.robot_dog_get_power="获取机器狗当前的电量";i.Msg.robot_dog_get_servo_angle="关节舵机的角度";i.Msg.robot_dog_servo_movement_distance="设置机器狗执行";i.Msg.robot_dog_movement_action_26="左移 (0mm~18mm)";i.Msg.robot_dog_movement_action_27="右移 (-18mm~0mm)";i.Msg.robot_dog_movement_action_28="前进 (0mm~25mm)";i.Msg.robot_dog_movement_action_29="后退 (-25mm~0mm)";i.Msg.robot_dog_servo_movement_distance_location="方向平移运动步长为";i.Msg.robot_dog_servo_movement_rotate="设置机器狗执行";i.Msg.robot_dog_servo_movement_rotate_location="方向旋转运动转动速度为";i.Msg.MOTION_ONDIRECTION_CLOCKWISE1="左转 (0˚/s~150˚/s)";i.Msg.MOTION_ONDIRECTION_COUNTERCLOCKWISE1="右转 (-150˚/s~0˚/s)";i.Msg.robot_dog_servo_movement_standing_still="设置机器狗以";i.Msg.robot_dog_servo_movement_standing_still_1="(10mm~35mm)的抬腿高度以固定频率执行原地踏步";i.Msg.robot_dog_servo_movement_distance_cycle_1="持续";i.Msg.robot_dog_servo_movement_distance_cycle_2="秒";i.Msg.robot_dog_servo_movement_distance_still="设置机器狗";i.Msg.robot_dog_servo_movement_distance_still_1="方向平移";i.Msg.robot_dog_servo_movement_distance_still_2="(-128~127)厘米";i.Msg.robot_dog_servo_movement_rotate_still="设置机器狗绕";i.Msg.robot_dog_servo_movement_rotate_still1="轴旋转";i.Msg.robot_dog_servo_movement_rotate_still2="(-128~127)";i.Msg.robot_dog_servo_movement_distance_still_cycle="设置机器狗以周期";i.Msg.robot_dog_servo_movement_distance_still_cycle_1="秒(1.5s~8s)向";i.Msg.robot_dog_servo_movement_distance_still_cycle_2="方向往复平移";i.Msg.robot_dog_servo_movement_rotate_still_cycle="秒(1.5s~8s) 绕";i.Msg.robot_dog_servo_movement_rotate_still_cycle_1="轴往复转动";i.Msg.robot_dog_servo_movement_distance_still_cycle_stop="停止机器狗周期性向";i.Msg.robot_dog_servo_movement_rotate_still_cycle_stop="停止机器狗周期性绕";i.Msg.robot_dog_get_rotate_angle="轴的角度";i.Msg.robot_dog_get_rotate_angle_1="获取陀螺仪";i.Msg.uav_initialization="无人机初始化";i.Msg.numbers_for="编号为";i.Msg.uav_uav="无人机";i.Msg.uav_height="高度";i.Msg.uav_lock="锁定";i.Msg.uav_unlock="解锁";i.Msg.uav_the_nose_direction="机头方向";i.Msg.uav_landing="降落";i.Msg.uav_brake="刹车";i.Msg.uav_hover="悬停";i.Msg.uav_scram="急停";i.Msg.uav_calibration="校准";i.Msg.Take_off_altitude="无人机起飞高度";i.Msg.uav_switch="无人机切换";i.Msg.uav_AI_switch="无人机,AI切换到";i.Msg.uav_fly_mode="飞行模式";i.Msg.uav_horizontal_velocity="无人机,水平速度";i.Msg.uav_speed_unit="厘米/秒";i.Msg.uav_vertical_speed="无人机,垂直速度";i.Msg.uav_go_to="无人机,向";i.Msg.uav_patrol_flight="巡线飞行";i.Msg.uav_fly="飞";i.Msg.uav_look_for_black_patches="厘米,寻找黑色小块";i.Msg.uav_look_for="厘米,寻找";i.Msg.uav_the_label="号标签";i.Msg.uav_look_for_color_piece="厘米,寻找色块";i.Msg.uav_direct="无人机,直达";i.Msg.uav_rotating="无人机,旋转";i.Msg.uav_circle="圈";i.Msg.uav_light_color="的灯光颜色为(";i.Msg.uav_off_led="无人机关闭灯光";i.Msg.uav_detection="无人机检测";i.Msg.uav_black_spots="黑点";i.Msg.uav_black_line="黑线";i.Msg.uav_black_line="黑线";i.Msg.uav_black_label="标签";i.Msg.uav_code="二维码";i.Msg.uav_bar_code="条形码";i.Msg.uav_electromagnet="电磁铁";i.Msg.uav_servo_ctrl="无人机的舵机";i.Msg.uav_role_ctrl="无人机的命令";i.Msg.uav_continuous="连续";i.Msg.uav_laser="发射激光";i.Msg.uav_face_recognition="人脸识别";i.Msg.uav_object_tracking="物体追踪";i.Msg.uav_obj_recognition="物体识别";i.Msg.uav_patrol_tracking="巡线追踪";i.Msg.uav_color_recognition="颜色识别";i.Msg.uav_label_recognition="标签识别";i.Msg.uav_object_classification="物体分类";i.Msg.uav_mode="模式";i.Msg.uav_learing_ID="无人机,学习一次的ID";i.Msg.uav_forget_data="无人机忘记所有学习数据";i.Msg.uav_setup_ID="无人机设置ID";i.Msg.uav_name_is="的名字为";i.Msg.uav_taking_pictures="拍照";i.Msg.uav_screenshots="截屏";i.Msg.uav_save_SD="保存到SD卡";i.Msg.optical_flow_localization="光流定位";i.Msg.label_position="标签定位";i.Msg.autonomous_patrol="自主巡线";i.Msg.normally_on="常亮";i.Msg.breathing_lamp="呼吸灯";i.Msg.colour_change="七彩变换";i.Msg.uav_detection_if="无人机检测到";i.Msg.uav_detection_color_block="色块";i.Msg.uav_detection_if_line="边有线";i.Msg.uav_get_distance_of_obstacles="无人机";i.Msg.uav_get_distance_of_obstacles_1="障碍物的距离";i.Msg.uav_roll_angle="横滚角";i.Msg.uav_pitch_angle="俯仰角";i.Msg.uav_yaw_angle="偏航角";i.Msg.uav_abscissa="横坐标";i.Msg.uav_ordinate="纵坐标";i.Msg.uav_height="高度";i.Msg.uav_voltage="电压";i.Msg.uav_get_AI_value="AI识别结果";i.Msg.uav_get_electronic_balance_value="电子秤读数";i.Msg.uav_get_shooting_value="射击";i.Msg.uav_get_shooting_value_0="序号";i.Msg.uav_get_shooting_value_1="成绩";i.Msg.uav_get_msg_value="消息";i.Msg.uav_get_msg_value_0="内容";i.Msg.esp32_expand_io_from_digital_pin="获取引脚 #";i.Msg.esp32_expand_io_set_digital_pin="设置引脚 #";i.Msg.esp32_expand_io_set_analog_pin="设置引脚 #";i.Msg.esp32_expand_io_set_analog_pin_digital_set_as="PWM 输出";i.Msg.esp32_expand_io_set_analog_pin_digital_set_af="(0-255)";i.Msg.KUJU_title="连接KUJU";i.Msg.KUJU_username="账号";i.Msg.KUJU_password="密码";i.Msg.KUJU_controll_title="发送数据至KUJU";i.Msg.KUJU_controll_content="控制智能插座的";i.Msg.KUJU_controll_action_0="关闭";i.Msg.KUJU_controll_action_1="打开";i.Msg.KUJU_get_temperature_humidity_data_title="获取温度传感器的";i.Msg.KUJU_get_motion_data_title="获取移动感应器的";i.Msg.basic_motion_data="是否移动";i.Msg.basic_illumination_intensity="照明强度";i.Msg.KUJU_get_sensor_data_title="获取";i.Msg.basic_water_sensor="漏水传感器";i.Msg.basic_door_sensor="门磁";i.Msg.wifiServices_WeTech_title="连接WeTech";i.Msg.wifiServices_WeTech_username="用户名";i.Msg.wifiServices_WeTech_password="密码";i.Msg.WeTech_controll_title="发送数据至WeTech";i.Msg.WeTech_controll_content="指令";i.Msg.WeTech_controll_action_0="关闭";i.Msg.WeTech_controll_action_1="打开";i.Msg.WeTech_controll_action_2="停止";i.Msg.wifiServices_WeTech_get_gateway_device_id_list_title="获取特定网关id";i.Msg.WIFIEASYMODE_WeTech_KEY5="中名字为";i.Msg.WIFIEASYMODE_WeTech_KEY4="的设备id";i.Msg.WIFIEASYMODE_WeTech_KEY6="控制的三路灯面制id";i.Msg.WIFIEASYMODE_WeTech_KEY7="网关id";i.Msg.WIFIEASYMODE_WeTech_KEY8="控制的二路灯面制id";i.Msg.WIFIEASYMODE_WeTech_KEY9="控制的Curtain Sensor (for projector Screen) id";i.Msg.WIFIEASYMODE_WeTech_KEY10="控制的冷气IR id";i.Msg.WIFIEASYMODE_WeTech_KEY11="控制的TV IR (for TV and Projector) id";i.Msg.WIFIEASYMODE_WeTech_KEY12="Mac地址";i.Msg.WeTech_controll_air_content="模式";i.Msg.WeTech_controll_wind_speed_content="风速";i.Msg.WeTech_controll_temp_content="温度(16℃-30℃)";i.Msg.WeTech_controll_IR_content="次序(0-255)";i.Msg.WeTech_controll_power_meter="获取数值";i.Msg.WeTech_controll_power_meter_1="Power Meter的id";i.Msg.Wetech_controll_pm25_sensor="PM2.5检测器";i.Msg.Wetech_controll_CO2_sensor="CO2检测器";i.Msg.Wetech_controll_Temperature_sensor="温度检测器";i.Msg.Wetech_controll_Humidity_sensor="湿度检测器";i.Msg.Wetech_controll_sensor_title="的id";i.Msg.WeTech_controll_mode_0="关闭";i.Msg.WeTech_controll_mode_1="自动";i.Msg.WeTech_controll_mode_2="制冷";i.Msg.WeTech_controll_mode_3="制热";i.Msg.WeTech_controll_mode_4="供暖";i.Msg.WeTech_controll_mode_5="预冷";i.Msg.WeTech_controll_mode_6="送风";i.Msg.WeTech_controll_mode_7="除湿";i.Msg.WeTech_controll_mode_8="睡眠";i.Msg.WeTech_controll_mode_9="节能";i.Msg.WeTech_controll_mode_10="低";i.Msg.WeTech_controll_mode_11="中";i.Msg.WeTech_controll_mode_12="高";i.Msg.WeTech_controll_mode_13="自动";i.Msg.iot_service_tuya_title="连接涂鸦";i.Msg.iot_service_tuya_access_id="Access ID/Client ID";i.Msg.iot_service_tuya_access_secret="Access Secret/Client Secret";i.Msg.iot_service_tuya_setToken_text="当连接涂鸦获取到访问令牌的时候";i.Msg.iot_service_tuya_getDeviceList_text="获取设备列表";i.Msg.iot_service_tuya_controll_light_belt_title="控制智能灯带";i.Msg.iot_service_tuya_controll_light_belt_device_id="设备id";i.Msg.iot_service_tuya_controll_light_belt_des="状态为";i.Msg.iot_service_tuya_controll_light_belt_status_0="关闭";i.Msg.iot_service_tuya_controll_light_belt_status_1="打开";i.Msg.iot_service_tuya_controll_light_belt_status_2="柔光模式";i.Msg.iot_service_tuya_controll_light_belt_status_3="缤纷模式";i.Msg.iot_service_tuya_controll_light_belt_status_4="炫彩模式";i.Msg.iot_service_tuya_controll_light_belt_status_5="斑斓模式";i.Msg.iot_service_tuya_controll_light_belt_status_6="晚安情景";i.Msg.iot_service_tuya_controll_light_belt_status_7="阅读情景";i.Msg.iot_service_tuya_controll_light_belt_status_8="聚会情景";i.Msg.iot_service_tuya_controll_light_belt_status_9="休闲情景";i.Msg.iot_service_tuya_controll_light_belt_color_value_title="控制智能灯带";i.Msg.iot_service_tuya_controll_light_belt_color_value_title1="颜色为";i.Msg.TURTLE_CREATE_NE_TURTLE="创建新的海龟";i.Msg.TURTLE_MAKE_TURTLE_MOVE_FORWARD_BY="让海龟往前走";i.Msg.TURTLE_MAKE_TURTLE_MOVE_BACKWARD_BY="让海龟后退";i.Msg.TURTLE_MAKE_TURN_LEFT_BY="让海龟向左转";i.Msg.TURTLE_DEGREE="度";i.Msg.TURTLE_MAKE_TURN_RIGHT_BY="让海龟向右转";i.Msg.TURTLE_MAKE_TURRLE_COLOR="设置海龟画笔的颜色为";i.Msg.TURTLE_MAKE_TURRLE_PEN="让海龟画笔";i.Msg.TURTLE_MAKE_TURTLE_GOTO_LOCATION_X="让海龟去地点 X:";i.Msg.TURTLE_MAKE_TURTLE_SET_POSITION="设置海龟画笔的位置为 X:";i.Msg.TURTLE_MAKE_SET_HEADING="让海龟旋转至";i.Msg.TURTLE_RESET="重置画笔位置";i.Msg.TURTLE_CLEAR="清除";i.Msg.TURTLE_PEN_UP="抬起";i.Msg.TURTLE_PEN_DOWN="落下";i.Msg.SYSTEM="重启系统";i.Msg.SYSTEM_GC="启动内存回收";i.Msg.SYSTEM_CREATE="创建文本文件 ";i.Msg.SYSTEM_CREATE_FILE="创建文件 ";i.Msg.SYSTEM_CREATE_F="文件名:";i.Msg.SYSTEM_CREATE_F_1="文件路径为:";i.Msg.SYSTEM_WRITE="创建文本文件";i.Msg.SYSTEM_OPEN_FILE="打开文件";i.Msg.SYSTEM_WRITE_FILE="写入文件";i.Msg.SYSTEM_CLOSE_FILE="关闭文件";i.Msg.SYSTEM_WRITE_F="文件名:";i.Msg.SYSTEM_WRITE_W="写入内容:";i.Msg.SYSTEM_WRITE_S="分隔符为:";i.Msg.SYSTEM_WRITE_S_N="换行";i.Msg.SYSTEM_WRITE_S_C="逗号";i.Msg.SYSTEM_WRITE_S_S="空格";i.Msg.SYSTEM_WRITE_S_SE="分号";i.Msg.SYSTEM_INPUT="读取文本文件为列表";i.Msg.SYSTEM_INPUT_FILE="读取文件为列表";i.Msg.Text_to_speech_initialization="在线文本转语音初始化";i.Msg.Content_of_text="文本内容";i.Msg.text_conversion_voice="将文本内容转化为语音文件";i.Msg.Voice_path="音频文件保存路径";i.Msg.online_face_result="在线人脸检测数量";i.Msg.online_face_loading="在线人脸检测模型加载";i.Msg.online_face_init="在线人脸检测初始化";i.Msg.online_face_init_path="检测图片路径";i.Msg.online_voice_result="在线语音识别结果";i.Msg.online_voice_loading="在线语音识别加载";i.Msg.online_voice_init="在线语音识别初始化";i.Msg.online_voice_init_path="识别语音路径";i.Msg.read_img_path_to="读取图片文件自";i.Msg.take_the_picture="将图片";i.Msg.machine_translation_result="在线机器翻译结果";i.Msg.machine_translation_load="在线机器翻译加载";i.Msg.machine_translation_init="机器翻译初始化";i.Msg.machine_translation_to="翻译至";i.Msg.online_card_result="在线车牌识别结果";i.Msg.online_card_load="在线车牌识别加载";i.Msg.online_card_init="在线车牌识别初始化";i.Msg.online_object_init="在线物体识别初始化";i.Msg.online_object_load="在线物体识别加载";i.Msg.online_object_result="在线物体识别结果";i.Msg.handwritten_text_result="在线手写文字识别结果";i.Msg.handwritten_text_load="在线手写文字识别加载";i.Msg.handwritten_text_init="手写文字识别初始化";i.Msg.handwritten_text_language_init="设置识别语种";i.Msg.gesture_result="手势识别结果";i.Msg.gesture_load="手势识别加载";i.Msg.gesture_init="手势识别初始化";i.Msg.emotion_result="情绪识别结果";i.Msg.emotion_load="情绪识别加载";i.Msg.emotion_init="情绪识别初始化";i.Msg.set_dictionary="设定字典";i.Msg.dictionary_contain="字典包含(age、emotion、gender、expression)";i.Msg.emotion_result_age="年龄";i.Msg.emotion_result_emotion="情绪";i.Msg.emotion_result_gender="性别";i.Msg.emotion_result_expression="表情";i.Msg.formula_result="公式识别结果";i.Msg.formula_load="公式识别加载";i.Msg.formula_init="公式识别初始化";i.Msg.system_voice="设置系统音量";i.Msg.numpy_mnist_get_result="获取识别结果";i.Msg.numpy_mnist_loading_model="加载已保存的模型";i.Msg.numpy_mnist_setting_training_argument="设置训练参数";i.Msg.numpy_mnist_input_trait_dimensionality="输入特征的维度:";i.Msg.numpy_mnist_setting_training_argument_number_node="节点数:";i.Msg.numpy_mnist_output_dimensionality="输出维度:";i.Msg.numpy_mnist_setting_training_argument_learning_rate="学习率:";i.Msg.numpy_mnist_setting_training_argument_frequency="训练次数:";i.Msg.numpy_mnist_is_training_start="训练模块启动";i.Msg.numpy_mnist_loading_train_and_test_set="加载训练集和测试集";i.Msg.numpy_mnist_train_set_url="训练集路径:";i.Msg.numpy_mnist_test_set_url="测试集路径:";i.Msg.numpy_mnist_model_init="numpy + mnist 训练模型初始化";i.Msg.numpy_mnist_clear="清除numpy模块";const q6=i.Msg;var s=s||{Msg:Object.create(null)};s.Msg.ADD_COMMENT="加入註解";s.Msg.CANNOT_DELETE_VARIABLE_PROCEDURE="無法刪除變數「%1」,因為這是功能「%2」定義的一部份內容";s.Msg.CHANGE_VALUE_TITLE="修改值:";s.Msg.CLEAN_UP="清理區塊";s.Msg.COLLAPSED_WARNINGS_WARNING="收合含有警告的區塊。";s.Msg.COLLAPSE_ALL="收合區塊";s.Msg.COLLAPSE_BLOCK="收合區塊";s.Msg.COLOUR_BLEND_COLOUR1="顏色 1";s.Msg.COLOUR_BLEND_COLOUR2="顏色 2";s.Msg.COLOUR_BLEND_HELPURL="https://meyerweb.com/eric/tools/color-blend/#:::rgbp";s.Msg.COLOUR_BLEND_RATIO="比例";s.Msg.COLOUR_BLEND_TITLE="混合";s.Msg.COLOUR_BLEND_TOOLTIP="用一個給定的比率(0.0-1.0)混合兩種顏色。";s.Msg.COLOUR_PICKER_HELPURL="https://zh.wikipedia.org/wiki/顏色";s.Msg.COLOUR_PICKER_TOOLTIP="從調色板中選擇一種顏色。";s.Msg.COLOUR_RANDOM_HELPURL="http://randomcolour.com";s.Msg.COLOUR_RANDOM_TITLE="隨機顏色";s.Msg.COLOUR_RANDOM_TOOLTIP="隨機選擇一種顏色。";s.Msg.COLOUR_RGB_BLUE="藍";s.Msg.COLOUR_RGB_GREEN="綠";s.Msg.COLOUR_RGB_HELPURL="https://www.december.com/html/spec/colorpercompact.html";s.Msg.COLOUR_RGB_RED="紅";s.Msg.COLOUR_RGB_TITLE="顏色";s.Msg.COLOUR_RGB_TOOLTIP="透過指定紅、綠、 藍色的值來建立一種顏色。所有的值必須介於 0 和 100 之間。";s.Msg.CONTROLS_FLOW_STATEMENTS_HELPURL="https://github.com/google/blockly/wiki/Loops#loop-termination-blocks";s.Msg.CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK="中斷循環";s.Msg.CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE="繼續下一個循環";s.Msg.CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK="中斷當前的循環。";s.Msg.CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE="跳過這個循環的其餘步驟,並繼續下一次的循環。";s.Msg.CONTROLS_FLOW_STATEMENTS_WARNING="警告:此區塊僅可用於循環內。";s.Msg.CONTROLS_FOREACH_HELPURL="https://github.com/google/blockly/wiki/Loops#for-each";s.Msg.CONTROLS_FOREACH_TITLE="為列表 %2 裡的每一項 %1";s.Msg.CONTROLS_FOREACH_TOOLTIP="遍歷每個清單中的項目,將變數「%1」設定到該項目中,然後執行某些陳述式。";s.Msg.CONTROLS_FOR_HELPURL="https://github.com/google/blockly/wiki/Loops#count-with";s.Msg.CONTROLS_FOR_TITLE="循環計數 %1 從 %2 到 %3 每次增加 %4";s.Msg.CONTROLS_FOR_TOOLTIP="從起始數到結尾數中取出變數「%1」的值,按指定的時間間隔,執行指定的區塊。";s.Msg.CONTROLS_IF_ELSEIF_TOOLTIP="添加條件到「如果」區塊。";s.Msg.CONTROLS_IF_ELSE_TOOLTIP="加入一個最終、所有條件都執行的部份到「如果」區塊中。";s.Msg.CONTROLS_IF_HELPURL="https://github.com/google/blockly/wiki/IfElse";s.Msg.CONTROLS_IF_IF_TOOLTIP="添加、刪除或重新排列各部份以重新配置這個「如果」區塊。";s.Msg.CONTROLS_IF_MSG_ELSE="否則";s.Msg.CONTROLS_IF_MSG_ELSEIF="否則,如果";s.Msg.CONTROLS_IF_MSG_IF="如果";s.Msg.CONTROLS_IF_TOOLTIP_1="當值為 true 時,執行一些陳述式。";s.Msg.CONTROLS_IF_TOOLTIP_2="值為是(true)就執行第一塊陳述式,否則執行第二塊。";s.Msg.CONTROLS_IF_TOOLTIP_3="如果第一個值為 true,則執行第一塊陳述式。否則,當第二個值為 true 時,則執行第二塊陳述式。";s.Msg.CONTROLS_IF_TOOLTIP_4="如果第一個值為 true,則執行第一塊陳述式。否則當第二個值為 true 時,則執行第二塊陳述式。如果前幾個敘述都不為 ture,則執行最後一塊陳述式。";s.Msg.CONTROLS_REPEAT_HELPURL="https://zh.wikipedia.org/wiki/For迴圈";s.Msg.CONTROLS_REPEAT_INPUT_DO="執行";s.Msg.CONTROLS_REPEAT_TITLE="重複%1次";s.Msg.CONTROLS_REPEAT_TOOLTIP="重複執行某些陳述式多次。";s.Msg.CONTROLS_WHILEUNTIL_HELPURL="https://github.com/google/blockly/wiki/Loops#repeat";s.Msg.CONTROLS_WHILEUNTIL_OPERATOR_UNTIL="重複直到";s.Msg.CONTROLS_WHILEUNTIL_OPERATOR_WHILE="重複,當";s.Msg.CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL="當值為 false 時,執行一些陳述式。";s.Msg.CONTROLS_WHILEUNTIL_TOOLTIP_WHILE="當值為 true 時,執行一些陳述式。";s.Msg.DELETE_ALL_BLOCKS="刪除全部 %1 個區塊?";s.Msg.DELETE_BLOCK="刪除區塊";s.Msg.DELETE_VARIABLE="刪除變數「%1」";s.Msg.DELETE_VARIABLE_CONFIRMATION="刪除使用%1次的「%2」變數?";s.Msg.DELETE_X_BLOCKS="刪除%1個區塊";s.Msg.DIALOG_CANCEL="取消";s.Msg.DIALOG_OK="確定";s.Msg.DISABLE_BLOCK="停用區塊";s.Msg.DUPLICATE_BLOCK="重複";s.Msg.DUPLICATE_COMMENT="複製註解";s.Msg.ENABLE_BLOCK="啟用區塊";s.Msg.EXPAND_ALL="展開區塊";s.Msg.EXPAND_BLOCK="展開區塊";s.Msg.EXTERNAL_INPUTS="外部輸入";s.Msg.HELP="說明";s.Msg.INLINE_INPUTS="單行輸入";s.Msg.LISTS_CREATE_EMPTY_HELPURL="https://github.com/google/blockly/wiki/Lists#create-empty-list";s.Msg.LISTS_CREATE_EMPTY_TITLE="建立空的清單";s.Msg.LISTS_CREATE_EMPTY_TOOLTIP="返回一個長度(項目數量)為 0 的清單,不包含任何資料記錄";s.Msg.LISTS_CREATE_WITH_CONTAINER_TITLE_ADD="清單";s.Msg.LISTS_CREATE_WITH_CONTAINER_TOOLTIP="添加、刪除或重新排列各部份以重新配置這個清單區塊。";s.Msg.LISTS_CREATE_WITH_HELPURL="https://github.com/google/blockly/wiki/Lists#create-list-with";s.Msg.LISTS_CREATE_WITH_INPUT_WITH="使用這些值建立清單";s.Msg.LISTS_CREATE_WITH_ITEM_TOOLTIP="添加一個項目到清單裡。";s.Msg.LISTS_CREATE_WITH_TOOLTIP="建立一個具備任意數量項目的清單。";s.Msg.LISTS_GET_INDEX_FIRST="第一筆";s.Msg.LISTS_GET_INDEX_FROM_END="倒數第 # 筆";s.Msg.LISTS_GET_INDEX_FROM_START="#";s.Msg.LISTS_GET_INDEX_GET="取得";s.Msg.LISTS_GET_INDEX_GET_REMOVE="取得並移除";s.Msg.LISTS_GET_INDEX_LAST="最後一筆";s.Msg.LISTS_GET_INDEX_RANDOM="隨機";s.Msg.LISTS_GET_INDEX_REMOVE="移除";s.Msg.LISTS_GET_INDEX_TAIL="";s.Msg.LISTS_GET_INDEX_TOOLTIP_GET_FIRST="返回清單中的第一個項目。";s.Msg.LISTS_GET_INDEX_TOOLTIP_GET_FROM="返回在清單中指定位置的項目。";s.Msg.LISTS_GET_INDEX_TOOLTIP_GET_LAST="返回清單中的最後一個項目。";s.Msg.LISTS_GET_INDEX_TOOLTIP_GET_RANDOM="返回清單中隨機一個項目。";s.Msg.LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST="移除並返回清單中的第一個項目。";s.Msg.LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM="移除並返回清單中的指定位置的項目。";s.Msg.LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST="移除並返回清單中的最後一個項目。";s.Msg.LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM="移除並返回清單中的隨機項目。";s.Msg.LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST="移除清單中的第一個項目。";s.Msg.LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM="移除在清單中指定位置的項目。";s.Msg.LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST="移除清單中的最後一個項目。";s.Msg.LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM="移除清單中隨機一個項目。";s.Msg.LISTS_GET_SUBLIST_END_FROM_END="到倒數 #";s.Msg.LISTS_GET_SUBLIST_END_FROM_START="到 #";s.Msg.LISTS_GET_SUBLIST_END_LAST="到 最後面";s.Msg.LISTS_GET_SUBLIST_HELPURL="https://github.com/google/blockly/wiki/Lists#getting-a-sublist";s.Msg.LISTS_GET_SUBLIST_START_FIRST="從最前面取得子清單";s.Msg.LISTS_GET_SUBLIST_START_FROM_END="從倒數# 取得子清單";s.Msg.LISTS_GET_SUBLIST_START_FROM_START="從 #取得子清單";s.Msg.LISTS_GET_SUBLIST_TAIL="";s.Msg.LISTS_GET_SUBLIST_TOOLTIP="複製清單中指定的部分。";s.Msg.LISTS_INDEX_FROM_END_TOOLTIP="%1 是最後一個項目。";s.Msg.LISTS_INDEX_FROM_START_TOOLTIP="%1 是第一個項目。";s.Msg.LISTS_INDEX_OF_FIRST="從 最前面 索引項目";s.Msg.LISTS_INDEX_OF_HELPURL="https://github.com/google/blockly/wiki/Lists#getting-items-from-a-list";s.Msg.LISTS_INDEX_OF_LAST="從 最後面 索引項目";s.Msg.LISTS_INDEX_OF_TOOLTIP="在清單中檢索是否有包含項目,如果有,返回從頭/倒數算起的索引值。如果沒有則返回 %1。";s.Msg.LISTS_INLIST="自清單";s.Msg.LISTS_ISEMPTY_HELPURL="https://github.com/google/blockly/wiki/Lists#is-empty";s.Msg.LISTS_ISEMPTY_TITLE="%1 值為空";s.Msg.LISTS_ISEMPTY_TOOLTIP="如果該清單為空,則返回 true。";s.Msg.LISTS_LENGTH_HELPURL="https://github.com/google/blockly/wiki/Lists#length-of";s.Msg.LISTS_LENGTH_TITLE="長度 %1";s.Msg.LISTS_LENGTH_TOOLTIP="返回清單的長度(項目數)。";s.Msg.LISTS_REPEAT_HELPURL="https://github.com/google/blockly/wiki/Lists#create-list-with";s.Msg.LISTS_REPEAT_TITLE="使用項目 %1 重複 %2 次建立清單";s.Msg.LISTS_REPEAT_TOOLTIP="建立一個清單,項目中包含指定重複次數的值。";s.Msg.LISTS_REVERSE_HELPURL="https://github.com/google/blockly/wiki/Lists#reversing-a-list";s.Msg.LISTS_REVERSE_MESSAGE0="反轉%1";s.Msg.LISTS_REVERSE_TOOLTIP="反轉清單的複製內容。";s.Msg.LISTS_SET_INDEX_HELPURL="https://github.com/google/blockly/wiki/Lists#in-list--set";s.Msg.LISTS_SET_INDEX_INPUT_TO="為";s.Msg.LISTS_SET_INDEX_INSERT="添加";s.Msg.LISTS_SET_INDEX_SET="設定";s.Msg.LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST="添加一個項目到清單中的第一個位置。";s.Msg.LISTS_SET_INDEX_TOOLTIP_INSERT_FROM="添加一個項目到清單中的指定位置。";s.Msg.LISTS_SET_INDEX_TOOLTIP_INSERT_LAST="添加一個項目到清單中的最後一個位置。";s.Msg.LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM="添加一個項目到清單中的隨機位置。";s.Msg.LISTS_SET_INDEX_TOOLTIP_SET_FIRST="設定清單中的第一個項目。";s.Msg.LISTS_SET_INDEX_TOOLTIP_SET_FROM="設定清單中指定位置的項目。";s.Msg.LISTS_SET_INDEX_TOOLTIP_SET_LAST="設定清單中的最後一個項目。";s.Msg.LISTS_SET_INDEX_TOOLTIP_SET_RANDOM="設定清單中隨機一個項目。";s.Msg.LISTS_SORT_HELPURL="https://github.com/google/blockly/wiki/Lists#sorting-a-list";s.Msg.LISTS_SORT_ORDER_ASCENDING="升序";s.Msg.LISTS_SORT_ORDER_DESCENDING="降序";s.Msg.LISTS_SORT_TITLE="排列 %1 %2 %3";s.Msg.LISTS_SORT_TOOLTIP="排序清單的複製內容。";s.Msg.LISTS_SORT_TYPE_IGNORECASE="依字母排序,忽略大小寫";s.Msg.LISTS_SORT_TYPE_NUMERIC="依數字";s.Msg.LISTS_SORT_TYPE_TEXT="依字母";s.Msg.LISTS_SPLIT_HELPURL="https://github.com/google/blockly/wiki/Lists#splitting-strings-and-joining-lists";s.Msg.LISTS_SPLIT_LIST_FROM_TEXT="從文本製作清單";s.Msg.LISTS_SPLIT_TEXT_FROM_LIST="從清單拆出文本";s.Msg.LISTS_SPLIT_TOOLTIP_JOIN="串起清單項目成一個文本,並用分隔符號分開。";s.Msg.LISTS_SPLIT_TOOLTIP_SPLIT="將文本變成清單項目,按分隔符號拆分。";s.Msg.LISTS_SPLIT_WITH_DELIMITER="用分隔符";s.Msg.LOGIC_BOOLEAN_FALSE="假";s.Msg.LOGIC_BOOLEAN_HELPURL="https://github.com/google/blockly/wiki/Logic#values";s.Msg.LOGIC_BOOLEAN_TOOLTIP="返回真或假。";s.Msg.LOGIC_BOOLEAN_TRUE="真";s.Msg.LOGIC_COMPARE_HELPURL="https://zh.wikipedia.org/wiki/不等";s.Msg.LOGIC_COMPARE_TOOLTIP_EQ="如果這兩個輸入的結果相等,返回 true。";s.Msg.LOGIC_COMPARE_TOOLTIP_GT="如果第一個輸入結果大於第二個,返回 true。";s.Msg.LOGIC_COMPARE_TOOLTIP_GTE="如果第一個輸入結果大於或等於第二個,返回 true。";s.Msg.LOGIC_COMPARE_TOOLTIP_LT="如果第一個輸入結果比第二個小,返回 true。";s.Msg.LOGIC_COMPARE_TOOLTIP_LTE="如果第一個輸入結果小於或等於第二個,返回 true。";s.Msg.LOGIC_COMPARE_TOOLTIP_NEQ="如果這兩個輸入的結果不相等,返回 true。";s.Msg.LOGIC_NEGATE_HELPURL="https://github.com/google/blockly/wiki/Logic#not";s.Msg.LOGIC_NEGATE_TITLE="%1 不成立";s.Msg.LOGIC_NEGATE_TOOLTIP="如果輸入結果是 false,則返回 true。如果輸入結果是 true,則返回 false。";s.Msg.LOGIC_NULL="空";s.Msg.LOGIC_NULL_HELPURL="https://en.wikipedia.org/wiki/Nullable_type";s.Msg.LOGIC_NULL_TOOLTIP="返回空值。";s.Msg.LOGIC_OPERATION_AND="和";s.Msg.LOGIC_OPERATION_HELPURL="https://github.com/google/blockly/wiki/Logic#logical-operations";s.Msg.LOGIC_OPERATION_OR="或";s.Msg.LOGIC_OPERATION_TOOLTIP_AND="如果兩個輸入結果都為 true,則返回 true。";s.Msg.LOGIC_OPERATION_TOOLTIP_OR="如果至少一個輸入結果為 true,返回 true。";s.Msg.LOGIC_TERNARY_CONDITION="測試";s.Msg.LOGIC_TERNARY_HELPURL="https://en.wikipedia.org/wiki/%3F:";s.Msg.LOGIC_TERNARY_IF_FALSE="如果為假";s.Msg.LOGIC_TERNARY_IF_TRUE="如果為真";s.Msg.LOGIC_TERNARY_TOOLTIP="檢查「測試」中的條件。如果條件為真,將返回「如果為真」的值;否則,返回「如果為假」的值。";s.Msg.MATH_ADDITION_SYMBOL="+";s.Msg.MATH_ARITHMETIC_HELPURL="https://zh.wikipedia.org/wiki/算術";s.Msg.MATH_ARITHMETIC_TOOLTIP_ADD="返回兩個數字的總和。";s.Msg.MATH_ARITHMETIC_TOOLTIP_DIVIDE="傳回兩數之商。";s.Msg.MATH_ARITHMETIC_TOOLTIP_MINUS="傳回兩數之差。";s.Msg.MATH_ARITHMETIC_TOOLTIP_MULTIPLY="返回兩個數字的乘積。";s.Msg.MATH_ARITHMETIC_TOOLTIP_POWER="返回以第一個數值為底數,以第二個數值為冪的結果。";s.Msg.MATH_ATAN2_HELPURL="https://zh.wikipedia.org/wiki/Atan2";s.Msg.MATH_ATAN2_TITLE="X:%1 Y:%2 的 Atan2";s.Msg.MATH_ATAN2_TOOLTIP="回傳點(X,Y)從 -180 至 180 度的反正切值。";s.Msg.MATH_CHANGE_HELPURL="https://zh.wikipedia.org/wiki/加法";s.Msg.MATH_CHANGE_TITLE="修改 %1 自 %2";s.Msg.MATH_CHANGE_TOOLTIP="將數字加到變數「%1」。";s.Msg.MATH_CONSTANT_HELPURL="https://zh.wikipedia.org/wiki/數學常數";s.Msg.MATH_CONSTANT_TOOLTIP="返回一個的常見常量: π (3.141......),e (2.718...)、 φ (1.618...)、 開方(2) (1.414......)、 開方(½) (0.707......) 或 ∞ (無窮大)。";s.Msg.MATH_CONSTRAIN_HELPURL="https://en.wikipedia.org/wiki/Clamping_(graphics)";s.Msg.MATH_CONSTRAIN_TITLE="限制數字 %1 介於(低)%2 到(高)%3";s.Msg.MATH_CONSTRAIN_TOOLTIP="限制數字介於兩個指定的數字之間(包含)。";s.Msg.MATH_DIVISION_SYMBOL="÷";s.Msg.MATH_IS_DIVISIBLE_BY="可被整除";s.Msg.MATH_IS_EVEN="是偶數";s.Msg.MATH_IS_NEGATIVE="是負數";s.Msg.MATH_IS_ODD="是奇數";s.Msg.MATH_IS_POSITIVE="是正值";s.Msg.MATH_IS_PRIME="是質數";s.Msg.MATH_IS_TOOLTIP="如果數字是偶數,奇數,非負整數,正數、 負數,或如果它是可被某數字整除,則返回 true 或 false。";s.Msg.MATH_IS_WHOLE="是整數";s.Msg.MATH_MODULO_HELPURL="https://zh.wikipedia.org/wiki/模除";s.Msg.MATH_MODULO_TITLE="%1 除以 %2 的餘數";s.Msg.MATH_MODULO_TOOLTIP="返回兩個數字相除的餘數。";s.Msg.MATH_MULTIPLICATION_SYMBOL="×";s.Msg.MATH_NUMBER_HELPURL="https://zh.wikipedia.org/wiki/數";s.Msg.MATH_NUMBER_TOOLTIP="數字";s.Msg.MATH_ONLIST_HELPURL="";s.Msg.MATH_ONLIST_OPERATOR_AVERAGE="清單的平均數";s.Msg.MATH_ONLIST_OPERATOR_MAX="清單的最大數字";s.Msg.MATH_ONLIST_OPERATOR_MEDIAN="清單的中位數";s.Msg.MATH_ONLIST_OPERATOR_MIN="清單的最小數字";s.Msg.MATH_ONLIST_OPERATOR_MODE="清單中的眾數";s.Msg.MATH_ONLIST_OPERATOR_RANDOM="清單中的隨機一項";s.Msg.MATH_ONLIST_OPERATOR_STD_DEV="清單的標準差";s.Msg.MATH_ONLIST_OPERATOR_SUM="清單中數值的和";s.Msg.MATH_ONLIST_TOOLTIP_AVERAGE="返回清單中數值的平均值(算術平均值)。";s.Msg.MATH_ONLIST_TOOLTIP_MAX="返回清單中最大的數字。";s.Msg.MATH_ONLIST_TOOLTIP_MEDIAN="返回清單中數值的中位數。";s.Msg.MATH_ONLIST_TOOLTIP_MIN="返回清單中最小的數字。";s.Msg.MATH_ONLIST_TOOLTIP_MODE="返回一個清單中的最常見的項目列表。";s.Msg.MATH_ONLIST_TOOLTIP_RANDOM="從清單中返回一個隨機的項目。";s.Msg.MATH_ONLIST_TOOLTIP_STD_DEV="返回清單中數字的標準差。";s.Msg.MATH_ONLIST_TOOLTIP_SUM="返回清單中的所有數字的總和。";s.Msg.MATH_POWER_SYMBOL="^";s.Msg.MATH_RANDOM_FLOAT_HELPURL="https://zh.wikipedia.org/wiki/隨機數生成器";s.Msg.MATH_RANDOM_FLOAT_TITLE_RANDOM="隨機取分數";s.Msg.MATH_RANDOM_FLOAT_TOOLTIP="在 0.0(包含)和 1.0(不包含)之間隨機取一個分數。";s.Msg.MATH_RANDOM_INT_HELPURL="https://zh.wikipedia.org/wiki/隨機數生成器";s.Msg.MATH_RANDOM_INT_TITLE="隨機取整數 %1 到 %2";s.Msg.MATH_RANDOM_INT_TOOLTIP="在指定二個數之間隨機取一個整數(包含)。";s.Msg.MATH_ROUND_HELPURL="https://zh.wikipedia.org/wiki/數值簡化";s.Msg.MATH_ROUND_OPERATOR_ROUND="四捨五入";s.Msg.MATH_ROUND_OPERATOR_ROUNDDOWN="無條件捨去";s.Msg.MATH_ROUND_OPERATOR_ROUNDUP="無條件進位";s.Msg.MATH_ROUND_TOOLTIP="上捨入或下捨入數字";s.Msg.MATH_SINGLE_HELPURL="https://zh.wikipedia.org/wiki/平方根";s.Msg.MATH_SINGLE_OP_ABSOLUTE="絕對值";s.Msg.MATH_SINGLE_OP_ROOT="開根號";s.Msg.MATH_SINGLE_TOOLTIP_ABS="返回指定數字的絕對值。";s.Msg.MATH_SINGLE_TOOLTIP_EXP="返回e的指定數字次冪。";s.Msg.MATH_SINGLE_TOOLTIP_LN="返回指定數字的自然對數。";s.Msg.MATH_SINGLE_TOOLTIP_LOG10="返回指定數字的對數。";s.Msg.MATH_SINGLE_TOOLTIP_NEG="返回指定數字的相反數。";s.Msg.MATH_SINGLE_TOOLTIP_POW10="返回10的指定數字次冪。";s.Msg.MATH_SINGLE_TOOLTIP_ROOT="返回指定數字的平方根。";s.Msg.MATH_SUBTRACTION_SYMBOL="-";s.Msg.MATH_TRIG_ACOS="反餘弦";s.Msg.MATH_TRIG_ASIN="反正弦";s.Msg.MATH_TRIG_ATAN="反正切";s.Msg.MATH_TRIG_COS="餘弦";s.Msg.MATH_TRIG_HELPURL="https://zh.wikipedia.org/wiki/三角函數";s.Msg.MATH_TRIG_SIN="正弦";s.Msg.MATH_TRIG_TAN="正切";s.Msg.MATH_TRIG_TOOLTIP_ACOS="返回指定數字的反餘弦值。";s.Msg.MATH_TRIG_TOOLTIP_ASIN="返回指定角度的反正弦值(非弧度)。";s.Msg.MATH_TRIG_TOOLTIP_ATAN="返回指定數字的反正切值。";s.Msg.MATH_TRIG_TOOLTIP_COS="返回指定角度的餘弦值(非弧度)。";s.Msg.MATH_TRIG_TOOLTIP_SIN="返回指定角度的正弦值(非弧度)。";s.Msg.MATH_TRIG_TOOLTIP_TAN="返回指定角度的正切值(非弧度)。";s.Msg.NEW_COLOUR_VARIABLE="建立顏色變數…";s.Msg.NEW_NUMBER_VARIABLE="建立數值變數……";s.Msg.NEW_STRING_VARIABLE="建立字串變數……";s.Msg.NEW_VARIABLE="建立變數…";s.Msg.NEW_VARIABLE_TITLE="新變數名稱:";s.Msg.NEW_VARIABLE_TYPE_TITLE="新變數類型:";s.Msg.ORDINAL_NUMBER_SUFFIX="";s.Msg.PROCEDURES_ALLOW_STATEMENTS="允許陳述式";s.Msg.PROCEDURES_BEFORE_PARAMS="與:";s.Msg.PROCEDURES_CALLNORETURN_HELPURL="https://zh.wikipedia.org/wiki/子程式";s.Msg.PROCEDURES_CALLNORETURN_TOOLTIP="執行使用者定義的函式「%1」。";s.Msg.PROCEDURES_CALLRETURN_HELPURL="https://zh.wikipedia.org/wiki/%E5%AD%90%E7%A8%8B%E5%BA%8F";s.Msg.PROCEDURES_CALLRETURN_TOOLTIP="執行使用者定義的函式「%1」,並使用它的回傳值。";s.Msg.PROCEDURES_CALL_BEFORE_PARAMS="與:";s.Msg.PROCEDURES_CREATE_DO="建立「%1」";s.Msg.PROCEDURES_DEFNORETURN_COMMENT="描述此函式...";s.Msg.PROCEDURES_DEFNORETURN_DO="";s.Msg.PROCEDURES_DEFNORETURN_HELPURL="https://zh.wikipedia.org/wiki/子程式";s.Msg.PROCEDURES_DEFNORETURN_PROCEDURE="做些什麼";s.Msg.PROCEDURES_DEFNORETURN_TITLE="到";s.Msg.PROCEDURES_DEFNORETURN_TOOLTIP="創建一個無回傳值的函式。";s.Msg.PROCEDURES_DEFRETURN_HELPURL="https://zh.wikipedia.org/wiki/子程式";s.Msg.PROCEDURES_DEFRETURN_RETURN="返回";s.Msg.PROCEDURES_DEFRETURN_TOOLTIP="創建一個有回傳值的的函式。";s.Msg.PROCEDURES_DEF_DUPLICATE_WARNING="警告: 此函式中有重複的參數。";s.Msg.PROCEDURES_HIGHLIGHT_DEF="反白顯示函式定義";s.Msg.PROCEDURES_IFRETURN_HELPURL="https://c2.com/cgi/wiki?GuardClause";s.Msg.PROCEDURES_IFRETURN_TOOLTIP="如果值為 true,則返回第二個值。";s.Msg.PROCEDURES_IFRETURN_WARNING="警告:這個區塊只可以在定義函式時使用。";s.Msg.PROCEDURES_MUTATORARG_TITLE="輸入名稱:";s.Msg.PROCEDURES_MUTATORARG_TOOLTIP="添加一個輸入區塊到函式。";s.Msg.PROCEDURES_MUTATORCONTAINER_TITLE="輸入";s.Msg.PROCEDURES_MUTATORCONTAINER_TOOLTIP="添加、刪除或重新排列此函式的輸入。";s.Msg.REDO="重做";s.Msg.REMOVE_COMMENT="移除註解";s.Msg.RENAME_VARIABLE="重新命名變數...";s.Msg.RENAME_VARIABLE_TITLE="將所有「%1」變數重新命名為:";s.Msg.TEXT_APPEND_HELPURL="https://github.com/google/blockly/wiki/Text#text-modification";s.Msg.TEXT_APPEND_TITLE="至 %1 套用文字 %2";s.Msg.TEXT_APPEND_TOOLTIP="添加一些文字到變數「%1」之後。";s.Msg.TEXT_CHANGECASE_HELPURL="https://github.com/google/blockly/wiki/Text#adjusting-text-case";s.Msg.TEXT_CHANGECASE_OPERATOR_LOWERCASE="轉成英文小寫";s.Msg.TEXT_CHANGECASE_OPERATOR_TITLECASE="轉成英文首字大寫";s.Msg.TEXT_CHANGECASE_OPERATOR_UPPERCASE="轉成英文大寫";s.Msg.TEXT_CHANGECASE_TOOLTIP="使用不同的大小寫複製這段文字。";s.Msg.TEXT_CHARAT_FIRST="擷取首字元";s.Msg.TEXT_CHARAT_FROM_END="取得倒數第#字元";s.Msg.TEXT_CHARAT_FROM_START="取得 字元 #";s.Msg.TEXT_CHARAT_HELPURL="https://github.com/google/blockly/wiki/Text#extracting-text";s.Msg.TEXT_CHARAT_LAST="取得 最後一個字元";s.Msg.TEXT_CHARAT_RANDOM="取得 任意字元";s.Msg.TEXT_CHARAT_TAIL="";s.Msg.TEXT_CHARAT_TITLE="在文字 %1 %2";s.Msg.TEXT_CHARAT_TOOLTIP="返回位於指定位置的字元。";s.Msg.TEXT_COUNT_HELPURL="https://github.com/google/blockly/wiki/Text#counting-substrings";s.Msg.TEXT_COUNT_MESSAGE0="計算%1在%2裡出現的次數";s.Msg.TEXT_COUNT_TOOLTIP="計算在一段文本中,某個部分文本重複出現了多少次。";s.Msg.TEXT_CREATE_JOIN_ITEM_TOOLTIP="添加一個項目到字串中。";s.Msg.TEXT_CREATE_JOIN_TITLE_JOIN="加入";s.Msg.TEXT_CREATE_JOIN_TOOLTIP="添加、刪除或重新排列各部份以重新配置這個文字區塊。";s.Msg.TEXT_GET_SUBSTRING_END_FROM_END="到倒數第#字元";s.Msg.TEXT_GET_SUBSTRING_END_FROM_START="到 字元 #";s.Msg.TEXT_GET_SUBSTRING_END_LAST="到尾字元";s.Msg.TEXT_GET_SUBSTRING_HELPURL="https://github.com/google/blockly/wiki/Text#extracting-a-region-of-text";s.Msg.TEXT_GET_SUBSTRING_INPUT_IN_TEXT="在字串";s.Msg.TEXT_GET_SUBSTRING_START_FIRST="取得首字元";s.Msg.TEXT_GET_SUBSTRING_START_FROM_END="取得 倒數第 # 個字元";s.Msg.TEXT_GET_SUBSTRING_START_FROM_START="取得 字元 #";s.Msg.TEXT_GET_SUBSTRING_TAIL="";s.Msg.TEXT_GET_SUBSTRING_TOOLTIP="返回指定的部分文字。";s.Msg.TEXT_INDEXOF_HELPURL="https://github.com/google/blockly/wiki/Text#finding-text";s.Msg.TEXT_INDEXOF_OPERATOR_FIRST="從 最前面 索引字串";s.Msg.TEXT_INDEXOF_OPERATOR_LAST="從 最後面 索引字串";s.Msg.TEXT_INDEXOF_TITLE="在文字 %1 %2 %3";s.Msg.TEXT_INDEXOF_TOOLTIP="在字串1中檢索是否有包含字串2,如果有,返回從頭/倒數算起的索引值。如果沒有則返回 %1。";s.Msg.TEXT_ISEMPTY_HELPURL="https://github.com/google/blockly/wiki/Text#checking-for-empty-text";s.Msg.TEXT_ISEMPTY_TITLE="%1 為空";s.Msg.TEXT_ISEMPTY_TOOLTIP="如果提供的字串為空,則返回 true。";s.Msg.TEXT_JOIN_HELPURL="https://github.com/google/blockly/wiki/Text#text-creation";s.Msg.TEXT_JOIN_TITLE_CREATEWITH="字串組合";s.Msg.TEXT_JOIN_TOOLTIP="通過連接任意數量的項目來建立一串文字。";s.Msg.TEXT_LENGTH_HELPURL="https://github.com/google/blockly/wiki/Text#text-modification";s.Msg.TEXT_LENGTH_TITLE="%1的長度";s.Msg.TEXT_LENGTH_TOOLTIP="返回這串文字的字元數(包含空格)。";s.Msg.TEXT_PRINT_HELPURL="https://github.com/google/blockly/wiki/Text#printing-text";s.Msg.TEXT_PRINT_TITLE="輸出 %1";s.Msg.TEXT_PRINT_TOOLTIP="輸出指定的文字、 數字或其他值。";s.Msg.TEXT_PROMPT_HELPURL="https://github.com/google/blockly/wiki/Text#getting-input-from-the-user";s.Msg.TEXT_PROMPT_TOOLTIP_NUMBER="要求用戶輸入數字";s.Msg.TEXT_PROMPT_TOOLTIP_TEXT="要求用戶輸入文字";s.Msg.TEXT_PROMPT_TYPE_NUMBER="要求輸入數字,並顯示提示訊息";s.Msg.TEXT_PROMPT_TYPE_TEXT="要求輸入文字,並顯示提示訊息";s.Msg.TEXT_REPLACE_HELPURL="https://github.com/google/blockly/wiki/Text#replacing-substrings";s.Msg.TEXT_REPLACE_MESSAGE0="在%3以%2取代%1";s.Msg.TEXT_REPLACE_TOOLTIP="取代在內容裡的全部某些文字。";s.Msg.TEXT_REVERSE_HELPURL="https://github.com/google/blockly/wiki/Text#reversing-text";s.Msg.TEXT_REVERSE_MESSAGE0="反轉%1";s.Msg.TEXT_REVERSE_TOOLTIP="反轉排序在文字裡的字元。";s.Msg.TEXT_TEXT_HELPURL="https://zh.wikipedia.org/wiki/字串";s.Msg.TEXT_TEXT_TOOLTIP="一粒字元、一個字詞或一行字";s.Msg.TEXT_TRIM_HELPURL="https://github.com/google/blockly/wiki/Text#trimming-removing-spaces";s.Msg.TEXT_TRIM_OPERATOR_BOTH="消除兩側空格";s.Msg.TEXT_TRIM_OPERATOR_LEFT="消除左側空格";s.Msg.TEXT_TRIM_OPERATOR_RIGHT="消除右側空格";s.Msg.TEXT_TRIM_TOOLTIP="複製這段文字,同時刪除兩端多餘的空格。";s.Msg.TODAY="今天";s.Msg.UNDO="還原";s.Msg.UNNAMED_KEY="未命名";s.Msg.VARIABLES_DEFAULT_NAME="項目";s.Msg.VARIABLES_GET_CREATE_SET="建立「賦值 %1」";s.Msg.VARIABLES_GET_HELPURL="https://github.com/google/blockly/wiki/Variables#get";s.Msg.VARIABLES_GET_TOOLTIP="返回此變數的值。";s.Msg.VARIABLES_SET="賦值 %1 成 %2";s.Msg.VARIABLES_SET_CREATE_GET="建立「取得 %1」";s.Msg.VARIABLES_SET_HELPURL="https://github.com/google/blockly/wiki/Variables#set";s.Msg.VARIABLES_SET_TOOLTIP="設定此變數,好和輸入結果相等。";s.Msg.VARIABLE_ALREADY_EXISTS="已存在變數「%1」。";s.Msg.VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE="已存在名為「%1」,且用於其它類型「%2」的變數。";s.Msg.WORKSPACE_ARIA_LABEL="Blockly工作區";s.Msg.WORKSPACE_COMMENT_DEFAULT_TEXT="來說些事情...";s.Msg.CONTROLS_FOREACH_INPUT_DO=s.Msg.CONTROLS_REPEAT_INPUT_DO;s.Msg.CONTROLS_FOR_INPUT_DO=s.Msg.CONTROLS_REPEAT_INPUT_DO;s.Msg.CONTROLS_IF_ELSEIF_TITLE_ELSEIF=s.Msg.CONTROLS_IF_MSG_ELSEIF;s.Msg.CONTROLS_IF_ELSE_TITLE_ELSE=s.Msg.CONTROLS_IF_MSG_ELSE;s.Msg.CONTROLS_IF_IF_TITLE_IF=s.Msg.CONTROLS_IF_MSG_IF;s.Msg.CONTROLS_IF_MSG_THEN=s.Msg.CONTROLS_REPEAT_INPUT_DO;s.Msg.CONTROLS_WHILEUNTIL_INPUT_DO=s.Msg.CONTROLS_REPEAT_INPUT_DO;s.Msg.LISTS_CREATE_WITH_ITEM_TITLE=s.Msg.VARIABLES_DEFAULT_NAME;s.Msg.LISTS_GET_INDEX_HELPURL=s.Msg.LISTS_INDEX_OF_HELPURL;s.Msg.LISTS_GET_INDEX_INPUT_IN_LIST=s.Msg.LISTS_INLIST;s.Msg.LISTS_GET_SUBLIST_INPUT_IN_LIST=s.Msg.LISTS_INLIST;s.Msg.LISTS_INDEX_OF_INPUT_IN_LIST=s.Msg.LISTS_INLIST;s.Msg.LISTS_SET_INDEX_INPUT_IN_LIST=s.Msg.LISTS_INLIST;s.Msg.MATH_CHANGE_TITLE_ITEM=s.Msg.VARIABLES_DEFAULT_NAME;s.Msg.PROCEDURES_DEFRETURN_COMMENT=s.Msg.PROCEDURES_DEFNORETURN_COMMENT;s.Msg.PROCEDURES_DEFRETURN_DO=s.Msg.PROCEDURES_DEFNORETURN_DO;s.Msg.PROCEDURES_DEFRETURN_PROCEDURE=s.Msg.PROCEDURES_DEFNORETURN_PROCEDURE;s.Msg.PROCEDURES_DEFRETURN_TITLE=s.Msg.PROCEDURES_DEFNORETURN_TITLE;s.Msg.TEXT_APPEND_VARIABLE=s.Msg.VARIABLES_DEFAULT_NAME;s.Msg.TEXT_CREATE_JOIN_ITEM_TITLE_ITEM=s.Msg.VARIABLES_DEFAULT_NAME;s.Msg.MATH_HUE="230";s.Msg.LOOPS_HUE="120";s.Msg.LISTS_HUE="260";s.Msg.LOGIC_HUE="210";s.Msg.VARIABLES_HUE="330";s.Msg.TEXTS_HUE="160";s.Msg.PROCEDURES_HUE="290";s.Msg.COLOUR_HUE="20";s.Msg.VARIABLES_DYNAMIC_HUE="310";s.Msg.TEXT_IS_NUMBER_HELPURL="";s.Msg.TEXT_IS_NUMBER_TOOLTIP="判斷文本%1,並返回True或False";s.Msg.TEXT_IS_NUMBER_MESSAGE0="%1 %2";s.Msg.TEXT_IS_DIGIT="是數字";s.Msg.TEXT_IS_ALPHA="是字母";s.Msg.TEXT_IS_ALNUM="是數字和字母的組合";s.Msg.TEXT_LIST_START="初始化陣列 [";s.Msg.TEXT_LIST_END="]";s.Msg.TEXT_TUPLE_START="初始化元組 (";s.Msg.TEXT_TUPLE_END=")";s.Msg.TEXT_DICT_START="初始化字典 {";s.Msg.TEXT_DICT_END="}";s.Msg.TEXT_SET_START="初始化集合 {";s.Msg.TEXT_SET_END="}";s.Msg.TEXT_SET_HELPURL="https://CocoRobox.readthedocs.io/zh_CN/latest/index.html";s.Msg.ADD_COMMENT="添加註釋";s.Msg.CHANGE_VALUE_TITLE="更改值:";s.Msg.CLEAN_UP="整理塊";s.Msg.COLLAPSE_ALL="折疊塊";s.Msg.COLLAPSE_BLOCK="折疊塊";s.Msg.COLOUR_BLEND_COLOUR1="顏色1";s.Msg.COLOUR_BLEND_COLOUR2="顏色2";s.Msg.COLOUR_BLEND_HELPURL="http://meyerweb.com/eric/tools/color-blend/";s.Msg.COLOUR_BLEND_RATIO="比例";s.Msg.COLOUR_BLEND_TITLE="混合";s.Msg.COLOUR_BLEND_TOOLTIP="用一個給定的比率(0.0-1.0)混合兩種顏色。";s.Msg.COLOUR_PICKER_HELPURL="https://zh.wikipedia.org/wiki/顏色";s.Msg.COLOUR_PICKER_TOOLTIP="從調色板中選擇壹種顏色。";s.Msg.COLOUR_RANDOM_HELPURL="http://randomcolour.com";s.Msg.COLOUR_RANDOM_TITLE="隨機顏色";s.Msg.COLOUR_RANDOM_TOOLTIP="隨機選擇壹種顏色。";s.Msg.COLOUR_RGB_BLUE="藍色";s.Msg.COLOUR_RGB_GREEN="綠色";s.Msg.COLOUR_RGB_HELPURL="http://www.december.com/html/spec/colorper.html";s.Msg.COLOUR_RGB_RED="紅色";s.Msg.COLOUR_RGB_TITLE="顏色";s.Msg.COLOUR_RGB_TOOLTIP="透過指定紅色、綠色和藍色的量創建壹種顏色。所有的值必須介於0和100之間。";s.Msg.CONTROLS_FLOW_STATEMENTS_HELPURL="https://github.com/google/blockly/wiki/Loops#loop-termination-blocks";s.Msg.CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK="中斷循環";s.Msg.CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE="繼續下一次循環";s.Msg.CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK="中斷包含它的循環。";s.Msg.CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE="跳過這個循環的剩余部分,並繼續下一次疊代。";s.Msg.CONTROLS_FLOW_STATEMENTS_WARNING="警告:此塊僅可用於在一個循環內。";s.Msg.CONTROLS_FOREACH_HELPURL="https://github.com/google/blockly/wiki/Loops#for-each";s.Msg.CONTROLS_FOREACH_TITLE="在陣列 %2 中以 %1 遍歷每個項目";s.Msg.CONTROLS_FOREACH_TOOLTIP="遍歷每個陣列中的項目,將變量“%1”設定到該項中,然後執行某些語句。";s.Msg.CONTROLS_FOR_HELPURL="https://github.com/google/blockly/wiki/Loops#count-with";s.Msg.CONTROLS_FOR_TITLE="使用 %1 從範圍 %2 到 %3 每隔 %4";s.Msg.CONTROLS_FOR_TOOLTIP="從起始數到結尾數中取出變量“%1”的值,按指定的時間間隔,執行指定的塊。";s.Msg.CONTROLS_IF_ELSEIF_TOOLTIP="在if語句塊中增加一個條件。";s.Msg.CONTROLS_IF_ELSE_TOOLTIP="添加一個最終的,包括所有情況的節到if塊中。";s.Msg.CONTROLS_IF_HELPURL="https://github.com/google/blockly/wiki/IfElse";s.Msg.TRY_EXCEPT_HELPURL="https://CocoRobox.readthedocs.io/zh_CN/latest/index.html";s.Msg.CONTROLS_IF_IF_TOOLTIP="增加、刪除或重新排列各節來重新配置“if”塊。";s.Msg.CONTROLS_IF_MSG_ELSE="否則";s.Msg.CONTROLS_IF_MSG_ELSEIF="否則如果";s.Msg.TRY_EXCEPT_FINALLY="最後";s.Msg.TRY_EXCEPT_FINALLY_TOOLTIP="";s.Msg.TRY_EXCEPT_EXCEPT="除了";s.Msg.TRY_EXCEPT_EXCEPT_TOOLTIP="";s.Msg.TRY_EXCEPT_TRY="嘗試";s.Msg.TRY_EXCEPT_TRY_TOOLTIP="";s.Msg.CONTROLS_IF_MSG_IF="如果";s.Msg.CONTROLS_IF_TOOLTIP_1="如果值為真,執行壹些語句。";s.Msg.CONTROLS_IF_TOOLTIP_2="如果值為真,則執行首個塊語句。否則,則執行第二塊語句。";s.Msg.CONTROLS_IF_TOOLTIP_3="如果首個值為真,則執行首個塊的語句。否則,如果第二個值為真,則執行第二塊的語句。";s.Msg.CONTROLS_IF_TOOLTIP_4="如果首個值為真,則執行首個塊對語句。否則,如果第二個值為真,則執行語句的第二塊。如果沒有值為真,則執行最後壹塊的語句。";s.Msg.CONTROLS_REPEAT_FOREVER="一直重複";s.Msg.CONTROLS_REPEAT_FOREVER_TOOLTIP="壹直執行壹些語句。";s.Msg.CONTROLS_REPEAT_HELPURL="https://zh.wikipedia.org/wiki/For循環";s.Msg.CONTROLS_REPEAT_INPUT_DO="執行";s.Msg.CONTROLS_REPEAT_TITLE="重複 %1 次";s.Msg.CONTROLS_REPEAT_TOOLTIP="多次執行壹些語句。";s.Msg.CONTROLS_WHILEUNTIL_HELPURL="https://github.com/google/blockly/wiki/Loops#repeat";s.Msg.CONTROLS_WHILEUNTIL_OPERATOR_UNTIL="重複直到";s.Msg.CONTROLS_WHILEUNTIL_OPERATOR_WHILE="重複當";s.Msg.CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL="只要值為假,執行壹些語句。";s.Msg.CONTROLS_WHILEUNTIL_TOOLTIP_WHILE="只要值為真,執行壹些語句。";s.Msg.DELETE_ALL_BLOCKS="刪除所有%1塊嗎?";s.Msg.DELETE_BLOCK="刪除塊";s.Msg.DELETE_VARIABLE="刪除“%1”變量";s.Msg.DELETE_VARIABLE_CONFIRMATION="刪除“%2”變量的%1種用途麼?";s.Msg.DELETE_X_BLOCKS="刪除塊";s.Msg.DISABLE_BLOCK="禁用塊";s.Msg.DUPLICATE_BLOCK="復制";s.Msg.ENABLE_BLOCK="啟用塊";s.Msg.EXPAND_ALL="展開塊";s.Msg.EXPAND_BLOCK="展開塊";s.Msg.EXTERNAL_INPUTS="多欄輸入";s.Msg.HELP="幫助";s.Msg.INLINE_INPUTS="單欄輸入";s.Msg.LISTS_CREATE_EMPTY_HELPURL="https://github.com/google/blockly/wiki/Lists#create-empty-list";s.Msg.LISTS_CREATE_EMPTY_TITLE="創建空陣列";s.Msg.TUPLE_CREATE_EMPTY_TITLE="創建空元組";s.Msg.DICT_CREATE_EMPTY_TITLE="創建空字典";s.Msg.SET_CREATE_EMPTY_TITLE="創建空集合";s.Msg.LISTS_CREATE_EMPTY_TOOLTIP="返回一個陣列,長度為 0,不包含任何數據記錄";s.Msg.LISTS_CREATE_WITH_CONTAINER_TITLE_ADD="陣列";s.Msg.TUPLE_CREATE_WITH_CONTAINER_TITLE_ADD="元組";s.Msg.DICT_CREATE_WITH_CONTAINER_TITLE_ADD="字典";s.Msg.SET_CREATE_WITH_CONTAINER_TITLE_ADD="集合";s.Msg.LISTS_CREATE_WITH_CONTAINER_TOOLTIP="增加、刪除或重新排列各部分以此重新配置這個陣列塊。";s.Msg.TUPLE_CREATE_WITH_CONTAINER_TOOLTIP="增加、刪除或重新排列各部分以此重新配置這個元組塊。";s.Msg.DICT_CREATE_WITH_CONTAINER_TOOLTIP="增加、刪除或重新排列各部分以此重新配置這個字典塊。";s.Msg.SET_CREATE_WITH_CONTAINER_TOOLTIP="增加、刪除或重新排列各部分以此重新配置這個集合塊。";s.Msg.LISTS_CREATE_WITH_HELPURL="https://github.com/google/blockly/wiki/Lists#create-list-with";s.Msg.LISTS_CREATE_WITH_INPUT_WITH="初始化陣列";s.Msg.TUPLE_CREATE_WITH_INPUT_WITH="初始化元組";s.Msg.DICT_CREATE_WITH_INPUT_WITH="初始化字典";s.Msg.SET_CREATE_WITH_INPUT_WITH="初始化集合";s.Msg.LISTS_CREATE_WITH_ITEM_TOOLTIP="將一個項添加到陣列中。";s.Msg.TUPLE_CREATE_WITH_ITEM_TOOLTIP="將一個項添加到元組中。";s.Msg.DICT_CREATE_WITH_ITEM_TOOLTIP="將一個項添加到字典中。";s.Msg.SET_CREATE_WITH_ITEM_TOOLTIP="將一個項添加到集合中。";s.Msg.LISTS_CREATE_WITH_TOOLTIP="建立一個具有任意數量項目的陣列。";s.Msg.LISTS_GET_INDEX_FIRST="首個";s.Msg.LISTS_GET_INDEX_FROM_END="倒數第";s.Msg.LISTS_GET_INDEX_FROM_START="第";s.Msg.LISTS_GET_INDEX_GET="獲得";s.Msg.LISTS_GET_INDEX_GET_REMOVE="取出並移除";s.Msg.LISTS_GET_INDEX_LAST="最後";s.Msg.LISTS_GET_INDEX_RANDOM="隨機";s.Msg.LISTS_GET_INDEX_REMOVE="移除";s.Msg.LISTS_POP_HELPURL="";s.Msg.LISTS_POP_TOOLTIP="";s.Msg.LISTS_POP_MESSAGE0="在陣列 %1 中移除 %2 項";s.Msg.LISTS_GET_INDEX_TAIL="";s.Msg.LISTS_GET_INDEX_TOOLTIP_GET_FIRST="返回陣列中的首個項目。";s.Msg.LISTS_GET_INDEX_TOOLTIP_GET_FROM="返回在陣列中的指定位置的項。";s.Msg.LISTS_GET_INDEX_TOOLTIP_GET_LAST="返回陣列中的最後壹項。";s.Msg.LISTS_GET_INDEX_TOOLTIP_GET_RANDOM="隨機返回陣列中的一個項目。";s.Msg.LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST="移除並返回陣列中的首個項目。";s.Msg.LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM="移除並返回陣列中的指定位置的項。";s.Msg.LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST="移除並返回陣列中的最後一個項目。";s.Msg.LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM="移除並返回陣列中的一個隨機項目中。";s.Msg.LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST="移除陣列中的首個項";s.Msg.LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM="移除在陣列中的指定位置的項。";s.Msg.LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST="移除陣列中的最後壹項";s.Msg.LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM="刪除陣列中的一個隨機的項。";s.Msg.LISTS_GET_SUBLIST_END_FROM_END="到倒數第#";s.Msg.LISTS_GET_SUBLIST_END_FROM_START="到#";s.Msg.LISTS_GET_SUBLIST_END_LAST="到最後";s.Msg.LISTS_GET_SUBLIST_HELPURL="https://github.com/google/blockly/wiki/Lists#getting-a-sublist";s.Msg.LISTS_GET_SUBLIST_START_FIRST="從頭獲得子陣列";s.Msg.LISTS_GET_SUBLIST_START_FROM_END="從倒數#取得子陣列";s.Msg.LISTS_GET_SUBLIST_START_FROM_START="從#取得子陣列";s.Msg.LISTS_GET_SUBLIST_TAIL="";s.Msg.LISTS_GET_SUBLIST_TOOLTIP="復制陣列中指定的部分。";s.Msg.LISTS_INDEX_FROM_END_TOOLTIP="%1是最後壹項。";s.Msg.LISTS_INDEX_FROM_START_TOOLTIP="%1是首個項目。";s.Msg.LISTS_INDEX_OF_FIRST="找出首個項出現";s.Msg.LISTS_INDEX_OF_HELPURL="https://github.com/google/blockly/wiki/Lists#getting-items-from-a-list";s.Msg.LISTS_INDEX_OF_LAST="找出最後一個項出現";s.Msg.LISTS_INDEX_OF_TOOLTIP="返回在陣列中的首個/最後一個匹配項的索引值。如果找不到項目則返回0";s.Msg.LISTS_INLIST="在陣列中";s.Msg.LISTS_ISEMPTY_HELPURL="https://github.com/google/blockly/wiki/Lists#is-empty";s.Msg.LISTS_ISEMPTY_TITLE="%1是空的";s.Msg.LISTS_ISEMPTY_TOOLTIP="如果改陣列為空,則返回真。";s.Msg.LISTS_LENGTH_HELPURL="https://github.com/google/blockly/wiki/Lists#length-of";s.Msg.LISTS_LENGTH_TITLE="%1的長度";s.Msg.LISTS_LENGTH_TOOLTIP="返回陣列的長度。";s.Msg.LISTS_REPEAT_HELPURL="https://github.com/google/blockly/wiki/Lists#create-list-with";s.Msg.LISTS_REPEAT_TITLE="建立陣列 項 %1 重複 %2 次";s.Msg.LISTS_REPEAT_TOOLTIP="建立包含指定重複次數的值的陣列。";s.Msg.LISTS_SET_INDEX_HELPURL="https://github.com/google/blockly/wiki/Lists#in-list--set";s.Msg.LISTS_SET_INDEX_INPUT_TO="為";s.Msg.LISTS_SET_INDEX_INSERT="插入在";s.Msg.LISTS_SET_INDEX_SET="設置";s.Msg.LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST="在陣列的起始處添加該項。";s.Msg.LISTS_SET_INDEX_TOOLTIP_INSERT_FROM="插入在陣列中指定位置的項。";s.Msg.LISTS_SET_INDEX_TOOLTIP_INSERT_LAST="將該項追加到陣列的末尾。";s.Msg.LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM="在陣列中隨機插入項。";s.Msg.LISTS_SET_INDEX_TOOLTIP_SET_FIRST="設置陣列中的首個項目。";s.Msg.LISTS_SET_INDEX_TOOLTIP_SET_FROM="設置在陣列中指定位置的項。";s.Msg.LISTS_SET_INDEX_TOOLTIP_SET_LAST="設置陣列中的最後壹項。";s.Msg.LISTS_SET_INDEX_TOOLTIP_SET_RANDOM="設置陣列中一個隨機的項目。";s.Msg.LISTS_SORT_HELPURL="https://github.com/google/blockly/wiki/Lists#sorting-a-list";s.Msg.LISTS_SORT_ORDER_ASCENDING="升序";s.Msg.LISTS_SORT_ORDER_DESCENDING="降序";s.Msg.LISTS_SORT_TITLE="排序%1 %2 %3";s.Msg.LISTS_SORT_TOOLTIP="排序一個陣列的拷貝。";s.Msg.LISTS_SORT_TYPE_IGNORECASE="按字母排序,忽略大小寫";s.Msg.LISTS_SORT_TYPE_NUMERIC="按數字排序";s.Msg.LISTS_SORT_TYPE_TEXT="按字母排序";s.Msg.LISTS_SPLIT_HELPURL="https://github.com/google/blockly/wiki/Lists#splitting-strings-and-joining-lists";s.Msg.LISTS_SPLIT_LIST_FROM_TEXT="從文本制作陣列";s.Msg.LISTS_SPLIT_TEXT_FROM_LIST="從陣列組合文本";s.Msg.LISTS_SPLIT_TOOLTIP_JOIN="加入文本陣列至一個文本,由分隔符分隔。";s.Msg.LISTS_SPLIT_TOOLTIP_SPLIT="拆分文本到文本陣列,按每個分隔符拆分。";s.Msg.LISTS_SPLIT_WITH_DELIMITER="用分隔符";s.Msg.LOGIC_BOOLEAN_FALSE="假";s.Msg.LOGIC_BOOLEAN_HELPURL="https://github.com/google/blockly/wiki/Logic#values";s.Msg.LOGIC_BOOLEAN_TOOLTIP="返回真或假。";s.Msg.LOGIC_BOOLEAN_TRUE="真";s.Msg.LOGIC_COMPARE_HELPURL="https://zh.wikipedia.org/wiki/不等";s.Msg.LOGIC_COMPARE_TOOLTIP_EQ="如果兩個輸入結果相等,則返回真。";s.Msg.LOGIC_COMPARE_TOOLTIP_GT="如果首個輸入結果比第二個大,則返回真。";s.Msg.LOGIC_COMPARE_TOOLTIP_GTE="如果首個輸入結果大於或等於第二個輸入結果,則返回真。";s.Msg.LOGIC_COMPARE_TOOLTIP_LT="如果首個輸入結果比第二個小,則返回真。";s.Msg.LOGIC_COMPARE_TOOLTIP_LTE="如果首個輸入結果小於或等於第二個輸入結果,則返回真。";s.Msg.LOGIC_COMPARE_TOOLTIP_NEQ="如果兩個輸入結果不相等,則返回真。";s.Msg.LOGIC_NEGATE_HELPURL="https://github.com/google/blockly/wiki/Logic#not";s.Msg.LOGIC_NEGATE_TITLE="非%1";s.Msg.LOGIC_NEGATE_TOOLTIP="如果輸入結果為假,則返回真;如果輸入結果為真,則返回假。";s.Msg.LOGIC_NULL="空";s.Msg.LOGIC_NULL_HELPURL="https://en.wikipedia.org/wiki/Nullable_type";s.Msg.LOGIC_NULL_TOOLTIP="返回空值。";s.Msg.LOGIC_OPERATION_AND="和";s.Msg.LOGIC_OPERATION_HELPURL="https://github.com/google/blockly/wiki/Logic#logical-operations";s.Msg.LOGIC_OPERATION_OR="或";s.Msg.LOGIC_OPERATION_TOOLTIP_AND="如果兩個輸入結果都為真,則返回真。";s.Msg.LOGIC_OPERATION_TOOLTIP_OR="如果至少有一個輸入結果為真,則返回真。";s.Msg.LOGIC_TERNARY_CONDITION="測試";s.Msg.LOGIC_TERNARY_HELPURL="https://zh.wikipedia.org/wiki/條件運算符";s.Msg.LOGIC_TERNARY_IF_FALSE="如果為假";s.Msg.LOGIC_TERNARY_IF_TRUE="如果為真";s.Msg.LOGIC_TERNARY_TOOLTIP="檢查“test”中的條件。如果條件為真,則返回“if true”的值,否則,則返回“if false”的值。";s.Msg.MATH_ADDITION_SYMBOL="+";s.Msg.MATH_ARITHMETIC_HELPURL="https://zh.wikipedia.org/wiki/算術";s.Msg.MATH_ARITHMETIC_TOOLTIP_ADD="返回兩個數字的和。";s.Msg.MATH_ARITHMETIC_TOOLTIP_DIVIDE="返回兩個數字的商。";s.Msg.MATH_ARITHMETIC_TOOLTIP_MINUS="返回兩個數字的區別。";s.Msg.MATH_ARITHMETIC_TOOLTIP_MULTIPLY="返回兩個數字的乘積。";s.Msg.MATH_ARITHMETIC_TOOLTIP_POWER="返回首個數的第二個數次方。";s.Msg.MATH_CHANGE_HELPURL="https://zh.wikipedia.org/wiki/%E5%8A%A0%E6%B3%95";s.Msg.MATH_CHANGE_TITLE="將變量 %1 的值增加 %2";s.Msg.MATH_CHANGE_TOOLTIP="將一個數添加到變量“%1”。";s.Msg.MATH_CONSTANT_HELPURL="https://zh.wikipedia.org/wiki/數學常數";s.Msg.MATH_CONSTANT_TOOLTIP="返回一個常見常量:π (3.141......),e (2.718...)、φ (1.618...)、 sqrt(2) (1.414......)、sqrt(½) (0.707......)或 ∞(無窮大)。";s.Msg.MATH_CONSTRAIN_HELPURL="https://en.wikipedia.org/wiki/Clamping_%28graphics%29";s.Msg.MATH_CONSTRAIN_TITLE="限制數字 %1 介於 (低) %2 到 (高) %3";s.Msg.MATH_CONSTRAIN_TOOLTIP="限制數字介於兩個指定的數字之間";s.Msg.MATH_CONVERT_HELPURL="";s.Msg.MATH_CONVERT_MESSAGE0="%1 %2";s.Msg.MATH_CONVERT_TOOLTIP="強制轉換數據類型";s.Msg.MATH_DIVISION_CONSULT_HELPURL="";s.Msg.MATH_DIVISION_CONSULT_TITLE="%1 ÷ %2 商的整數部分";s.Msg.MATH_DIVISION_CONSULT_TOOLTIP="返回兩數商的整數部分";s.Msg.MATH_DIVISION_SYMBOL="÷";s.Msg.MATH_IS_DIVISIBLE_BY="可被整除";s.Msg.MATH_IS_EVEN="是偶數";s.Msg.MATH_IS_NEGATIVE="為負";s.Msg.MATH_IS_ODD="是奇數";s.Msg.MATH_IS_POSITIVE="為正";s.Msg.MATH_IS_PRIME="是質數";s.Msg.MATH_IS_TOOLTIP="如果數字是偶數、奇數、非負整數、正數、負數或如果它可被某數字整除,則返回真或假。";s.Msg.MATH_IS_WHOLE="為整數";s.Msg.MATH_MODULO_HELPURL="https://zh.wikipedia.org/wiki/模除";s.Msg.MATH_MODULO_TITLE="%1 ÷ %2 的餘數";s.Msg.MATH_MODULO_TOOLTIP="返回這兩個數字相除後的餘數。";s.Msg.MATH_MULTIPLICATION_SYMBOL="×";s.Msg.MATH_NUMBER_BITS_OPS_HELPURL="";s.Msg.MATH_NUMBER_BITS_OPS_MESSAGE0="%1 %2 %3";s.Msg.MATH_NUMBER_BITS_OPS_TOOLTIP="對數字進行位運算";s.Msg.MATH_NUMBER_HELPURL="https://zh.wikipedia.org/wiki/數";s.Msg.MATH_NUMBER_TOOLTIP="一個數字。";s.Msg.MATH_ONLIST_HELPURL="";s.Msg.MATH_ONLIST_OPERATOR_AVERAGE="陣列中的平均數";s.Msg.MATH_ONLIST_OPERATOR_MAX="陣列中的最大值";s.Msg.MATH_ONLIST_OPERATOR_MEDIAN="陣列中位數";s.Msg.MATH_ONLIST_OPERATOR_MIN="陣列中的最小值";s.Msg.MATH_ONLIST_OPERATOR_MODE="陣列模式";s.Msg.MATH_ONLIST_OPERATOR_RANDOM="陣列的隨機項";s.Msg.MATH_ONLIST_OPERATOR_STD_DEV="陣列中的標準差";s.Msg.MATH_ONLIST_OPERATOR_SUM="陣列中的數的總和";s.Msg.MATH_ONLIST_TOOLTIP_AVERAGE="返回陣列中的數值的平均值。";s.Msg.MATH_ONLIST_TOOLTIP_MAX="返回陣列中最大數。";s.Msg.MATH_ONLIST_TOOLTIP_MEDIAN="返回陣列中的中位數。";s.Msg.MATH_ONLIST_TOOLTIP_MIN="返回陣列中最小數。";s.Msg.MATH_ONLIST_TOOLTIP_MODE="返回陣列中的最常見的項的陣列。";s.Msg.MATH_ONLIST_TOOLTIP_RANDOM="從陣列中返回一個隨機的元素。";s.Msg.MATH_ONLIST_TOOLTIP_STD_DEV="返回陣列的標準偏差。";s.Msg.MATH_ONLIST_TOOLTIP_SUM="返回陣列中的所有數字的和。";s.Msg.MATH_POWER_SYMBOL="**";s.Msg.MATH_RANDOM_FLOAT_HELPURL="https://zh.wikipedia.org/wiki/隨機數生成器";s.Msg.MATH_RANDOM_FLOAT_TITLE_RANDOM="隨機小數";s.Msg.MATH_RANDOM_FLOAT_TOOLTIP="返回介於(包含)0.0到1.0之間的隨機數。";s.Msg.MATH_RANDOM_INT_HELPURL="https://zh.wikipedia.org/wiki/隨機數生成器";s.Msg.MATH_RANDOM_INT_TITLE="從 %1 到 %2 之間的隨機整數";s.Msg.MATH_RANDOM_INT_TOOLTIP="返回兩個指定的範圍(含)之間的隨機整數。";s.Msg.MATH_ROUND_HELPURL="https://zh.wikipedia.org/wiki/數值修約";s.Msg.MATH_ROUND_OPERATOR_ROUND="四舍五入";s.Msg.MATH_ROUND_OPERATOR_ROUNDDOWN="向下舍入";s.Msg.MATH_ROUND_OPERATOR_ROUNDUP="向上舍入";s.Msg.MATH_ROUND_TOOLTIP="數字向上或向下舍入。";s.Msg.MATH_SINGLE_HELPURL="https://zh.wikipedia.org/wiki/平方根";s.Msg.MATH_SINGLE_OP_ABSOLUTE="絕對";s.Msg.MATH_SINGLE_OP_ROOT="平方根";s.Msg.MATH_SINGLE_TOOLTIP_ABS="返回一個數的絕對值。";s.Msg.MATH_SINGLE_TOOLTIP_EXP="返回數的e次方。";s.Msg.MATH_SINGLE_TOOLTIP_LN="返回一個數的自然對數。";s.Msg.MATH_SINGLE_TOOLTIP_LOG10="返回數字的對數。";s.Msg.MATH_SINGLE_TOOLTIP_NEG="返回數的邏輯非。";s.Msg.MATH_SINGLE_TOOLTIP_POW10="返回數的10次方。";s.Msg.MATH_SINGLE_TOOLTIP_ROOT="返回數的平方根。";s.Msg.MATH_SUBTRACTION_SYMBOL="-";s.Msg.MATH_TRIG_ACOS="acos";s.Msg.MATH_TRIG_ASIN="asin";s.Msg.MATH_TRIG_ATAN="atan";s.Msg.MATH_TRIG_COS="cos";s.Msg.MATH_TRIG_HELPURL="https://zh.wikipedia.org/wiki/三角函數";s.Msg.MATH_TRIG_SIN="sin";s.Msg.MATH_TRIG_TAN="tan";s.Msg.MATH_TRIG_TOOLTIP_ACOS="返回一個數的反余弦值。";s.Msg.MATH_TRIG_TOOLTIP_ASIN="返回一個數的反正弦值。";s.Msg.MATH_TRIG_TOOLTIP_ATAN="返回指定角度的反正切值。";s.Msg.MATH_TRIG_TOOLTIP_COS="返回指定角度的余弦值(非弧度)。";s.Msg.MATH_TRIG_TOOLTIP_SIN="返回指定角度的正弦值(非弧度)。";s.Msg.MATH_TRIG_TOOLTIP_TAN="返回指定角度的正切值(非弧度)。";s.Msg.NEW_VARIABLE="創建變量...";s.Msg.NEW_VARIABLE_TITLE="新變量的名稱:";s.Msg.ORDINAL_NUMBER_SUFFIX="";s.Msg.PROCEDURES_ALLOW_STATEMENTS="允許宣告";s.Msg.PROCEDURES_BEFORE_PARAMS="參數:";s.Msg.PROCEDURES_CALLNORETURN_HELPURL="https://zh.wikipedia.org/wiki/子程序";s.Msg.PROCEDURES_CALLNORETURN_TOOLTIP="運行用戶定義的函數“%1”。";s.Msg.PROCEDURES_CALLRETURN_HELPURL="https://zh.wikipedia.org/wiki/子程序";s.Msg.PROCEDURES_CALLRETURN_TOOLTIP="運行用戶定義的函數“%1”,並使用它的輸出值。";s.Msg.PROCEDURES_CALL_BEFORE_PARAMS="與:";s.Msg.PROCEDURES_CREATE_DO="創建“%1”";s.Msg.PROCEDURES_DEFNORETURN_COMMENT="";s.Msg.PROCEDURES_DEFNORETURN_DO="";s.Msg.PROCEDURES_DEFNORETURN_HELPURL="https://zh.wikipedia.org/wiki/子程序";s.Msg.PROCEDURES_DEFNORETURN_PROCEDURE="my_func";s.Msg.PROCEDURES_DEFNORETURN_TITLE="定義函數";s.Msg.PROCEDURES_DEFNORETURN_TOOLTIP="創建一個不帶輸出值的函數。";s.Msg.PROCEDURES_DEFRETURN_HELPURL="https://zh.wikipedia.org/wiki/子程序";s.Msg.PROCEDURES_DEFRETURN_RETURN="返回";s.Msg.PROCEDURES_DEFRETURN_TOOLTIP="創建一個有輸出值的函數。";s.Msg.PROCEDURES_DEF_DUPLICATE_WARNING="警告: 此函數具有重複參數。";s.Msg.PROCEDURES_HIGHLIGHT_DEF="突出顯示函數定義";s.Msg.PROCEDURES_IFRETURN_HELPURL="http://c2.com/cgi/wiki?GuardClause";s.Msg.PROCEDURES_IFRETURN_TOOLTIP="如果值為真,則返回第二個值。";s.Msg.PROCEDURES_IFRETURN_WARNING="警告: 僅在定義函數內可使用此塊。";s.Msg.PROCEDURES_MUTATORARG_TITLE="輸入名稱:";s.Msg.PROCEDURES_MUTATORARG_TOOLTIP="添加函數輸入。";s.Msg.PROCEDURES_MUTATORCONTAINER_TITLE="輸入";s.Msg.PROCEDURES_MUTATORCONTAINER_TOOLTIP="添加、刪除或重新排此函數的輸入。";s.Msg.REDO="重做";s.Msg.REMOVE_COMMENT="刪除註釋";s.Msg.RENAME_VARIABLE="重命名變量...";s.Msg.RENAME_VARIABLE_TITLE="將所有“%1”變量重命名為:";s.Msg.TEXT_APPEND_APPENDTEXT="追加文本";s.Msg.TEXT_APPEND_HELPURL="https://github.com/google/blockly/wiki/Text#text-modification";s.Msg.TEXT_APPEND_TO="";s.Msg.TEXT_APPEND_TOOLTIP="將壹些文本追加到變量“%1”。";s.Msg.TEXT_CHANGECASE_HELPURL="https://github.com/google/blockly/wiki/Text#adjusting-text-case";s.Msg.TEXT_CHANGECASE_OPERATOR_LOWERCASE="轉為小寫";s.Msg.TEXT_CHANGECASE_OPERATOR_TITLECASE="轉為首字母大寫";s.Msg.TEXT_CHANGECASE_OPERATOR_UPPERCASE="轉為大寫";s.Msg.TEXT_CHANGECASE_TOOLTIP="使用不同的大小寫復制這段文字。";s.Msg.TEXT_CHARAT_FIRST="獲得首個字元";s.Msg.TEXT_CHARAT_FROM_END="獲得倒數第#個字元";s.Msg.TEXT_CHARAT_FROM_START="獲得字元#";s.Msg.TEXT_CHARAT_HELPURL="https://github.com/google/blockly/wiki/Text#extracting-text";s.Msg.TEXT_CHARAT_INPUT_INTEXT="從文本";s.Msg.TEXT_CHARAT_LAST="獲得最後一個字元";s.Msg.TEXT_CHARAT_RANDOM="獲取隨機的字母";s.Msg.TEXT_CHARAT_TAIL="";s.Msg.TEXT_CHARAT_TOOLTIP="返回位於指定位置的字母。";s.Msg.TEXT_CREATE_JOIN_ITEM_TOOLTIP="將一個項添加到文本中。";s.Msg.TEXT_CREATE_JOIN_TITLE_JOIN="加入";s.Msg.TEXT_CREATE_JOIN_TOOLTIP="添加、移除或重新排列各節來重新配置這個文本塊。";s.Msg.TEXT_GET_SUBSTRING_END_FROM_END="到倒數第#個字元";s.Msg.TEXT_GET_SUBSTRING_END_FROM_START="到字元#";s.Msg.TEXT_GET_SUBSTRING_END_LAST="到最後一個字元";s.Msg.TEXT_GET_SUBSTRING_HELPURL="https://github.com/google/blockly/wiki/Text#extracting-a-region-of-text";s.Msg.TEXT_GET_SUBSTRING_INPUT_IN_TEXT="從文本";s.Msg.TEXT_GET_SUBSTRING_START_FIRST="取得段落字串自首個字元";s.Msg.TEXT_GET_SUBSTRING_START_FROM_END="取得段落字串自倒數第#個字元";s.Msg.TEXT_GET_SUBSTRING_START_FROM_START="取得段落字串自#";s.Msg.TEXT_GET_SUBSTRING_TAIL="";s.Msg.TEXT_GET_SUBSTRING_TOOLTIP="返回指定的部分文本。";s.Msg.TEXT_INDEXOF_HELPURL="https://github.com/google/blockly/wiki/Text#finding-text";s.Msg.TEXT_INDEXOF_INPUT_INTEXT="在文本";s.Msg.TEXT_INDEXOF_OPERATOR_FIRST="中查找 最先 出現";s.Msg.TEXT_INDEXOF_OPERATOR_LAST="中查找 最後 出現";s.Msg.TEXT_INDEXOF_TAIL="的位置";s.Msg.TEXT_INDEXOF_TOOLTIP="返回在第二個字串中的首個/最後一個匹配項的索引值。如果未找到則返回%1。";s.Msg.TEXT_ISEMPTY_HELPURL="https://github.com/google/blockly/wiki/Text#checking-for-empty-text";s.Msg.TEXT_ISEMPTY_TITLE="%1是空的";s.Msg.TEXT_ISEMPTY_TOOLTIP="如果提供的文本為空,則返回真。";s.Msg.TEXT_JOIN_HELPURL="https://github.com/google/blockly/wiki/Text#text-creation";s.Msg.TEXT_JOIN_TITLE_CREATEWITH="轉為文本";s.Msg.TEXT_JOIN_TOOLTIP="透過串起任意數量的項以建立壹段文字。";s.Msg.TEXT_LENGTH_HELPURL="https://github.com/google/blockly/wiki/Text#text-modification";s.Msg.TEXT_LENGTH_TITLE="%1的長度";s.Msg.TEXT_LENGTH_TOOLTIP="返回提供文本的字母數(包括空格)。";s.Msg.TEXT_PRINT_HELPURL="https://github.com/google/blockly/wiki/Text#printing-text";s.Msg.TEXT_PRINT_TITLE="打印%1";s.Msg.CocoRobo_INPUT_MESSAGE0="輸入%1";s.Msg.TEXT_PRINT_TOOLTIP="打印指定的文字、數字或其他值。";s.Msg.TEXT_PROMPT_HELPURL="https://github.com/google/blockly/wiki/Text#getting-input-from-the-user";s.Msg.TEXT_PROMPT_TOOLTIP_NUMBER="提示用戶輸入數字。";s.Msg.TEXT_PROMPT_TOOLTIP_TEXT="提示用戶輸入壹些文本。";s.Msg.TEXT_PROMPT_TYPE_NUMBER="輸入數字並顯示提示消息";s.Msg.TEXT_PROMPT_TYPE_TEXT="輸入數字並顯示提示消息";s.Msg.TEXT_TEXT_HELPURL="https://zh.wikipedia.org/wiki/字串";s.Msg.TEXT_TEXT_TOOLTIP="一個字母、單詞或壹欄文本。";s.Msg.TEXT_TRIM_HELPURL="https://github.com/google/blockly/wiki/Text#trimming-removing-spaces";s.Msg.TEXT_TRIM_OPERATOR_BOTH="消除兩側空格";s.Msg.TEXT_TRIM_OPERATOR_LEFT="消除左側空格";s.Msg.TEXT_TRIM_OPERATOR_RIGHT="消除右側空格";s.Msg.TEXT_TRIM_TOOLTIP="復制這段文字的同時刪除兩端多余的空格。";s.Msg.TODAY="今天";s.Msg.UNDO="撤銷";s.Msg.VARIABLES_DEFAULT_NAME="item";s.Msg.VARIABLES_GET_CREATE_SET="創建“設定%1”";s.Msg.VARIABLES_GET_HELPURL="https://github.com/google/blockly/wiki/Variables#get";s.Msg.VARIABLES_GET_TOOLTIP="返回此變量的值。";s.Msg.VARIABLES_SET="將變量 %1 設定為 %2";s.Msg.VARIABLES_SET_CREATE_GET="創建“獲得%1”";s.Msg.VARIABLES_SET_HELPURL="https://github.com/google/blockly/wiki/Variables#set";s.Msg.VARIABLES_SET_TOOLTIP="設置此變量,以使它和輸入值相等。";s.Msg.VARIABLE_ALREADY_EXISTS="已存在名為“%1”的變量。";s.Msg.PROCEDURES_DEFRETURN_TITLE=s.Msg.PROCEDURES_DEFNORETURN_TITLE;s.Msg.CONTROLS_IF_IF_TITLE_IF=s.Msg.CONTROLS_IF_MSG_IF;s.Msg.CONTROLS_WHILEUNTIL_INPUT_DO=s.Msg.CONTROLS_REPEAT_INPUT_DO;s.Msg.CONTROLS_IF_MSG_THEN=s.Msg.CONTROLS_REPEAT_INPUT_DO;s.Msg.TRY_EXCEPT_TRY="嘗試";s.Msg.CONTROLS_IF_ELSE_TITLE_ELSE=s.Msg.CONTROLS_IF_MSG_ELSE;s.Msg.CONTROLS_IF_ELSE_TITLE_ELSE=s.Msg.CONTROLS_IF_MSG_ELSE;s.Msg.PROCEDURES_DEFRETURN_PROCEDURE=s.Msg.PROCEDURES_DEFNORETURN_PROCEDURE;s.Msg.LISTS_GET_SUBLIST_INPUT_IN_LIST=s.Msg.LISTS_INLIST;s.Msg.LISTS_GET_INDEX_INPUT_IN_LIST=s.Msg.LISTS_INLIST;s.Msg.PROCEDURES_DEFRETURN_DO=s.Msg.PROCEDURES_DEFNORETURN_DO;s.Msg.CONTROLS_IF_ELSEIF_TITLE_ELSEIF=s.Msg.CONTROLS_IF_MSG_ELSEIF;s.Msg.LISTS_GET_INDEX_HELPURL=s.Msg.LISTS_INDEX_OF_HELPURL;s.Msg.CONTROLS_FOREACH_INPUT_DO=s.Msg.CONTROLS_REPEAT_INPUT_DO;s.Msg.LISTS_SET_INDEX_INPUT_IN_LIST=s.Msg.LISTS_INLIST;s.Msg.CONTROLS_FOR_INPUT_DO=s.Msg.CONTROLS_REPEAT_INPUT_DO;s.Msg.LISTS_CREATE_WITH_ITEM_TITLE=s.Msg.VARIABLES_DEFAULT_NAME;s.Msg.TUPLE_CREATE_WITH_ITEM_TITLE=s.Msg.VARIABLES_DEFAULT_NAME;s.Msg.DICT_CREATE_WITH_ITEM_TITLE=s.Msg.VARIABLES_DEFAULT_NAME;s.Msg.SET_CREATE_WITH_ITEM_TITLE=s.Msg.VARIABLES_DEFAULT_NAME;s.Msg.TEXT_APPEND_VARIABLE=s.Msg.VARIABLES_DEFAULT_NAME;s.Msg.TEXT_CREATE_JOIN_ITEM_TITLE_ITEM=s.Msg.VARIABLES_DEFAULT_NAME;s.Msg.MATH_CHANGE_TITLE_ITEM=s.Msg.VARIABLES_DEFAULT_NAME;s.Msg.LISTS_INDEX_OF_INPUT_IN_LIST=s.Msg.LISTS_INLIST;s.Msg.PROCEDURES_DEFRETURN_COMMENT=s.Msg.PROCEDURES_DEFNORETURN_COMMENT;s.Msg.CocoRobo_OPEN="開啟";s.Msg.CocoRobo_CLOSE="關閉";s.Msg.CocoRoboBOX_RGB_IMAGE_SHIFT_LEFT="左移";s.Msg.CocoRoboBOX_RGB_IMAGE_SHIFT_RIGHT="右移";s.Msg.CocoRoboBOX_RGB_IMAGE_SHIFT_UP="上移";s.Msg.CocoRoboBOX_RGB_IMAGE_SHIFT_DOWN="下移";s.Msg.CocoRobo_AI_LCD_SHOW_IMAGE_HEAT_GRAYSCALE="灰度";s.Msg.CocoRobo_AI_LCD_SHOW_IMAGE_HEAT_RAINBOW="彩虹";s.Msg.CocoRobo_AI_LCD_SHOW_IMAGE_HEAT_NEGATE="數字反轉";s.Msg.CocoRobo_AI_LCD_SHOW_IMAGE_HEAT_INVERT="黑白翻轉";s.Msg.CocoRobo_AI_LCD_SHOW_IMAGE_DESCARTES_LINPOLAR="線性極";s.Msg.CocoRobo_AI_LCD_SHOW_IMAGE_DESCARTES_LOGPOLAR="對數極";s.Msg.CocoRobo_AI_SENSOR_PATTERN_GRAYSCALE="灰度";s.Msg.CocoRobo_AI_SENSOR_PATTERN_COLOR="彩色";s.Msg.CocoRobo_AI_SENSOR_ENABLE_START="開始抓取圖像";s.Msg.CocoRobo_AI_SENSOR_ENABLE_STOP="停止抓取圖像";s.Msg.CocoRobo_AI_SENSOR_LEVEL_MI_H="水平鏡像";s.Msg.CocoRobo_AI_SENSOR_LEVEL_MI_V="垂直翻轉";s.Msg.CocoRobo_AI_SENSOR_SETS_CONTRAST="對比度";s.Msg.CocoRobo_AI_SENSOR_SETS_BRIGHTNESS="亮度";s.Msg.CocoRobo_AI_SENSOR_SETS_SATURATION="飽和度";s.Msg.CocoRobo_AI2_FACE_YOLO="人臉檢測";s.Msg.CocoRobo_AI2_CLASS_20_YOLO="20類識別";s.Msg.CocoRobo_AI_TRACE_COLOR_RECTANGLE="矩形";s.Msg.CocoRobo_AI_TRACE_COLOR_CROSS="十字";s.Msg.TEXT_APPEND_TEXT_HELPURL="";s.Msg.TEXT_APPEND_TEXT_TOOLTIP="在指定文本後追加文本,並返回結果";s.Msg.TEXT_APPEND_TEXT_MESSAGE0="%1 追加文本 %2";s.Msg.CHINA_CITY_MESSAGE0="%1 %2";s.Msg.CHINA_CITY_TOWN_MESSAGE0="%1 %2 %3 返回 %4";s.Msg.CHINA_CITY_CNNAME="中文簡稱";s.Msg.CHINA_CITY_PINYIN="拼音";s.Msg.CocoRobo_SENIVERSE_WEATHER_LANGUAGE_1="簡體中文";s.Msg.CocoRobo_SENIVERSE_WEATHER_LANGUAGE_2="正體中文";s.Msg.CocoRobo_SENIVERSE_CITY_WEATHER_HELPURL="";s.Msg.CocoRobo_SENIVERSE_CITY_WEATHER_TOOLTIP="";s.Msg.CocoRobo_SENIVERSE_CITY_WEATHER_MESSAGE0="[心知天氣] %1 信息 %2 地理位置 %3 API私鑰 %4 %5 語言 %6 %7 溫度單位 %8";s.Msg.CocoRobo_SENIVERSE_WEATHER_API_1="天氣實況";s.Msg.CocoRobo_SENIVERSE_WEATHER_API_2="3天天氣預報";s.Msg.CocoRobo_SENIVERSE_WEATHER_API_3="6項生活指數";s.Msg.CocoRobo_SENIVERSE_WEATHER_UNIT_1="攝氏度";s.Msg.CocoRobo_SENIVERSE_WEATHER_UNIT_2="華氏度";s.Msg.CocoRobo_DEFINE_SENIVERSE_WEATHER_HELPURL="";s.Msg.CocoRobo_DEFINE_SENIVERSE_WEATHER_TOOLTIP="";s.Msg.CocoRobo_DEFINE_SENIVERSE_WEATHER_MESSAGE0="設定 %1 為 %2";s.Msg.CocoRobo_GET_SENIVERSE_WEATHER_INFO_HELPURL="";s.Msg.CocoRobo_GET_SENIVERSE_WEATHER_INFO_TOOLTIP="";s.Msg.CocoRobo_GET_SENIVERSE_WEATHER_INFO_MESSAGE0="%1 [心知天氣] 通用字段 %2";s.Msg.CocoRobo_GET_SENIVERSE_WEATHER_INFO1_HELPURL="";s.Msg.CocoRobo_GET_SENIVERSE_WEATHER_INFO1_TOOLTIP="";s.Msg.CocoRobo_GET_SENIVERSE_WEATHER_INFO1_MESSAGE0="%1 [心知天氣] 天氣實況 %2";s.Msg.CocoRobo_GET_SENIVERSE_WEATHER_INFO2_HELPURL="";s.Msg.CocoRobo_GET_SENIVERSE_WEATHER_INFO2_TOOLTIP=`風向角度,範圍0~360
- 風速,單位km/h(當unit=c時)、mph(當unit=f時)`;s.Msg.CocoRobo_GET_SENIVERSE_WEATHER_INFO2_MESSAGE0="%1 [心知天氣] 3天天氣預報 %2 的 %3";s.Msg.CocoRobo_GET_SENIVERSE_WEATHER_INFO3_HELPURL="";s.Msg.CocoRobo_GET_SENIVERSE_WEATHER_INFO3_TOOLTIP="";s.Msg.CocoRobo_GET_SENIVERSE_WEATHER_INFO3_MESSAGE0="%1 [心知天氣] 6項生活指數 %2";s.Msg.CocoRobo_SENIVERSE_WEATHER_city_name="城市名稱";s.Msg.CocoRobo_SENIVERSE_WEATHER_city_id="城市ID";s.Msg.CocoRobo_SENIVERSE_WEATHER_country="國家代碼";s.Msg.CocoRobo_SENIVERSE_WEATHER_path="行政歸屬";s.Msg.CocoRobo_SENIVERSE_WEATHER_timezone="時區";s.Msg.CocoRobo_SENIVERSE_WEATHER_timezone_offset="UTC偏移量";s.Msg.CocoRobo_SENIVERSE_WEATHER_last_update_date="數據更新日期";s.Msg.CocoRobo_SENIVERSE_WEATHER_last_update="數據更新時間";s.Msg.CocoRobo_SENIVERSE_WEATHER_object="原始字典對象";s.Msg.CocoRobo_SENIVERSE_WEATHER_text="天氣現象";s.Msg.CocoRobo_SENIVERSE_WEATHER_code="天氣現象代碼";s.Msg.CocoRobo_SENIVERSE_WEATHER_temperature="溫度";s.Msg.CocoRobo_SENIVERSE_WEATHER_today="今天";s.Msg.CocoRobo_SENIVERSE_WEATHER_tomorrow="明天";s.Msg.CocoRobo_SENIVERSE_WEATHER_the_day_after_tomorrow="後天";s.Msg.CocoRobo_SENIVERSE_WEATHER_date="日期";s.Msg.CocoRobo_SENIVERSE_WEATHER_text_day="白天天氣現象";s.Msg.CocoRobo_SENIVERSE_WEATHER_code_day="白天天氣現象代碼";s.Msg.CocoRobo_SENIVERSE_WEATHER_text_night="晚間天氣現象";s.Msg.CocoRobo_SENIVERSE_WEATHER_code_night="晚間天氣現象代碼";s.Msg.CocoRobo_SENIVERSE_WEATHER_high="當天最高溫度";s.Msg.CocoRobo_SENIVERSE_WEATHER_low="當天最低溫度";s.Msg.CocoRobo_SENIVERSE_WEATHER_wind_direction="風向";s.Msg.CocoRobo_SENIVERSE_WEATHER_wind_direction_degree="風向角度";s.Msg.CocoRobo_SENIVERSE_WEATHER_wind_speed="風速";s.Msg.CocoRobo_SENIVERSE_WEATHER_wind_scale="風力等級";s.Msg.CocoRobo_SENIVERSE_WEATHER_car_washing="洗車指數";s.Msg.CocoRobo_SENIVERSE_WEATHER_dressing="穿衣指數";s.Msg.CocoRobo_SENIVERSE_WEATHER_flu="感冒指數";s.Msg.CocoRobo_SENIVERSE_WEATHER_sport="運動指數";s.Msg.CocoRobo_SENIVERSE_WEATHER_travel="旅遊指數";s.Msg.CocoRobo_SENIVERSE_WEATHER_uv="紫外線指數";s.Msg.CocoRobo_RED="紅";s.Msg.CocoRobo_GREEN="綠";s.Msg.CocoRobo_BLUE="藍";s.Msg.CocoRobo_BLUEBIT_HELPURL="http://wiki.labplus.cn/index.php?title=Bluebit";s.Msg.CocoRobo_BLUEBIT_ULTRASONIC_MESSAGE0="I2C超聲波";s.Msg.CocoRobo_BLUEBIT_ULTRASONIC_TOOLTIP="";s.Msg.CocoRobo_BLUEBIT_ULTRASONIC_HELPURL="http://wiki.labplus.cn/index.php?title=Bluebit";s.Msg.CocoRobo_BLUEBIT_READ_DIGITAL_MESSAGE0="%1 被觸發 腳位%2";s.Msg.CocoRobo_BLUEBIT_READ_DIGITAL_TOOLTIP="";s.Msg.CocoRobo_BLUEBIT_READ_DIGITAL_HELPURL="http://wiki.labplus.cn/index.php?title=Bluebit";s.Msg.CocoRobo_BLUEBIT_READ_ANALOG_MESSAGE0="%1 模擬值 腳位%2";s.Msg.CocoRobo_BLUEBIT_READ_ANALOG_TOOLTIP="";s.Msg.CocoRobo_BLUEBIT_READ_ANALOG_HELPURL="http://wiki.labplus.cn/index.php?title=Bluebit";s.Msg.CocoRobo_BLUEBIT_SET_ANALOG_MESSAGE0="設置LED燈 輸出%1 腳位%2";s.Msg.CocoRobo_BLUEBIT_SET_ANALOG_TOOLTIP="";s.Msg.CocoRobo_BLUEBIT_SET_ANALOG_HELPURL="http://wiki.labplus.cn/index.php?title=Bluebit";s.Msg.CocoRobo_BLUEBIT_LINE_FOLLOWER_MESSAGE0="循跡感應器 檢測為黑 腳位%1";s.Msg.CocoRobo_BLUEBIT_LINE_FOLLOWER_TOOLTIP="";s.Msg.CocoRobo_BLUEBIT_LINE_FOLLOWER_HELPURL="http://wiki.labplus.cn/index.php?title=Bluebit";s.Msg.CocoRobo_BLUEBIT_SET_TRUE_HELPURL="http://wiki.labplus.cn/index.php?title=Bluebit";s.Msg.CocoRobo_BLUEBIT_SET_TRUE_MESSAGE0="打開 %1 腳位 %2";s.Msg.CocoRobo_BLUEBIT_SET_TRUE_TOOLTIP="";s.Msg.CocoRobo_BLUEBIT_SET_FALSE_HELPURL="http://wiki.labplus.cn/index.php?title=Bluebit";s.Msg.CocoRobo_BLUEBIT_SET_FALSE_MESSAGE0="關閉 %1 腳位 %2";s.Msg.CocoRobo_BLUEBIT_SET_FALSE_TOOLTIP="";s.Msg.CocoRobo_BLUEBIT_VOICE_RECORD_ON_HELPURL="http://wiki.labplus.cn/index.php?title=%E8%AF%AD%E9%9F%B3%E5%BD%95%E6%94%BE";s.Msg.CocoRobo_BLUEBIT_VOICE_RECORD_ON_TOOLTIP="";s.Msg.CocoRobo_BLUEBIT_VOICE_RECORD_ON_MESSAGE0="打開錄放器 %1 %2 REC %3 PLAY %4";s.Msg.CocoRobo_BLUEBIT_VOICE_RECORD_OFF_HELPURL="http://wiki.labplus.cn/index.php?title=%E8%AF%AD%E9%9F%B3%E5%BD%95%E6%94%BE";s.Msg.CocoRobo_BLUEBIT_VOICE_RECORD_OFF_TOOLTIP="";s.Msg.CocoRobo_BLUEBIT_VOICE_RECORD_OFF_MESSAGE0="關閉錄放器 %1 REC %2 PLAY %3";s.Msg.CocoRobo_BLUEBIT_VOICE_RECORD_PLAY="播放";s.Msg.CocoRobo_BLUEBIT_VOICE_RECORD_REC="錄音";s.Msg.CocoRobo_BLUEBIT_IR_RECEIVE="紅外探測";s.Msg.CocoRobo_BLUEBIT_SOUND="麥克風";s.Msg.CocoRobo_BLUEBIT_LINE_FOLLOWER="循跡";s.Msg.CocoRobo_BLUEBIT_VIBRATION="震動";s.Msg.CocoRobo_BLUEBIT_RFID="射頻卡";s.Msg.CocoRobo_BLUEBIT_FINGERPRINT_SCANNER="指紋";s.Msg.CocoRobo_BLUEBIT_PIR="人體感應";s.Msg.CocoRobo_BLUEBIT_MAGNETIC="門磁開關";s.Msg.CocoRobo_BLUEBIT_BUTTON="按鍵";s.Msg.CocoRobo_BLUEBIT_FAN="風扇";s.Msg.CocoRobo_BLUEBIT_LASER="激光";s.Msg.CocoRobo_BLUEBIT_NTC_TEMP="熱敏電阻";s.Msg.CocoRobo_BLUEBIT_WATER="水位";s.Msg.CocoRobo_BLUEBIT_SOIL_MOISTURE="土壤濕度";s.Msg.CocoRobo_BLUEBIT_ROTATE_DIMMER="旋鈕電位器";s.Msg.CocoRobo_BLUEBIT_LINEAR_SLIDING_POTENTIOMETER="直滑電位器";s.Msg.CocoRobo_BLUEBIT_ANALOG_LIGHT="模擬光線";s.Msg.CocoRobo_BLUEBIT_LM35_TEMP="LM35溫度";s.Msg.CocoRobo_BLUEBIT_MOTOR_ON_CLOCKWISE="正轉";s.Msg.CocoRobo_BLUEBIT_MOTOR_ON_ANTICLOCKWISE="反轉";s.Msg.CocoRobo_BLUEBIT_MOTOR_ON_HELPURL="http://wiki.labplus.cn/index.php?title=%E7%94%B5%E6%9C%BA%E9%A9%B1%E5%8A%A8";s.Msg.CocoRobo_BLUEBIT_MOTOR_ON_TOOLTIP="速度:-100~100 映射至 -1023~1023";s.Msg.CocoRobo_BLUEBIT_MOTOR_ON_MESSAGE0="打開直流馬達 %1 速度 %2 引腳AIN1 %3 引腳AIN2 %4";s.Msg.CocoRobo_BLUEBIT_MOTOR_OFF_HELPURL="http://wiki.labplus.cn/index.php?title=%E7%94%B5%E6%9C%BA%E9%A9%B1%E5%8A%A8";s.Msg.CocoRobo_BLUEBIT_MOTOR_OFF_TOOLTIP="";s.Msg.CocoRobo_BLUEBIT_MOTOR_OFF_MESSAGE0="停止直流馬達 %1 引腳AIN1 %2 引腳AIN2 %3";s.Msg.CocoRobo_BLUEBIT_SET_FAN_HELPURL="";s.Msg.CocoRobo_BLUEBIT_SET_FAN_TOOLTIP="";s.Msg.CocoRobo_BLUEBIT_SET_FAN_MESSAGE0="擴展板 打開風扇 %1";s.Msg.CocoRobo_BLUEBIT_SET_FAN_OFF_HELPURL="";s.Msg.CocoRobo_BLUEBIT_SET_FAN_OFF_TOOLTIP="";s.Msg.CocoRobo_BLUEBIT_SET_FAN_OFF_MESSAGE0="擴展板 關閉風扇 %1";s.Msg.CocoRobo_BLUEBIT_4BUTTON_HELPURL="http://wiki.CocoRobo_BLUEBIT.hk/index.php?title=%E5%9B%9B%E6%8C%89%E9%94%AE";s.Msg.CocoRobo_BLUEBIT_4BUTTON_TOOLTIP="";s.Msg.CocoRobo_BLUEBIT_4BUTTON_MESSAGE0="四向按鍵模組 腳位 %1 按鍵 %2 被按下";s.Msg.BLUE="A";s.Msg.GREEN="B";s.Msg.RED="C";s.Msg.YELLOW="D";s.Msg.CocoRobo_BLUEBIT_JOYSTICK_HELPURL="";s.Msg.CocoRobo_BLUEBIT_JOYSTICK_TOOLTIP="";s.Msg.CocoRobo_BLUEBIT_JOYSTICK_MESSAGE0="搖桿 引腳A0 %1 引腳A1 %2 %3 軸的值";s.Msg.CocoRobo_BLUEBIT_MOTOR_ON_I2C_HELPURL="";s.Msg.CocoRobo_BLUEBIT_MOTOR_ON_I2C_TOOLTIP="速度:0~100";s.Msg.CocoRobo_BLUEBIT_MOTOR_ON_I2C_MESSAGE0="擴展板 打開直流馬達 %1 %2 速度 %3";s.Msg.CocoRobo_BLUEBIT_BLUEBIT_MOTOR_OFF_I2C_HELPURL="";s.Msg.CocoRobo_BLUEBIT_MOTOR_OFF_I2C_TOOLTIP="速度:0~100";s.Msg.CocoRobo_BLUEBIT_MOTOR_OFF_I2C_MESSAGE0="擴展板 關閉直流馬達";s.Msg.CocoRobo_BLUEBIT_CODED_THREE_MOTOR_ON_I2C_HELPURL="";s.Msg.CocoRobo_BLUEBIT_CODED_THREE_MOTOR_ON_I2C_TOOLTIP="速度:-1023~1023";s.Msg.CocoRobo_BLUEBIT_CODED_THREE_MOTOR_ON_I2C_MESSAGE0="編碼馬達 模式 %1 撥碼 %2 M1速度 %3 M2速度 %4";s.Msg.CocoRobo_BLUEBIT_CODED_STOP_MOTOR_ON_I2C_HELPURL="";s.Msg.CocoRobo_BLUEBIT_CODED_STOP_MOTOR_ON_I2C_TOOLTIP="停止編碼馬達轉動";s.Msg.CocoRobo_BLUEBIT_CODED_STOP_MOTOR_ON_I2C_MESSAGE0="停止編碼馬達轉動 %1";s.Msg.CocoRobo_BLUEBIT_HUM_TEM_HELPURL="";s.Msg.CocoRobo_BLUEBIT_HUM_TEM_TOOLTIP="";s.Msg.CocoRobo_BLUEBIT_HUM_TEM_MESSAGE0="I2C %1";s.Msg.CocoRobo_BLUEBIT_TEMPERATURE="溫度";s.Msg.CocoRobo_BLUEBIT_HUMIDITY="濕度";s.Msg.CocoRobo_BLUEBIT_INIT_MIDI_HELPURL="";s.Msg.CocoRobo_BLUEBIT_INIT_MIDI_MESSAGE0="初始化MIDI TX引腳 %1";s.Msg.CocoRobo_BLUEBIT_INIT_MIDI_TOOLTIP="";s.Msg.CocoRobo_BLUEBIT_MIDI_VOLUME_HELPURL="";s.Msg.CocoRobo_BLUEBIT_MIDI_VOLUME_MESSAGE0="設MIDI音量 %1";s.Msg.CocoRobo_BLUEBIT_MIDI_VOLUME_TOOLTIP="音量 0~127";s.Msg.MIDI_PIANO="平臺鋼琴";s.Msg.MIDI_BRIGHTACOUSTICPIANO="亮音鋼琴";s.Msg.MIDI_ELECTRICGRANDPIANO="電鋼琴";s.Msg.MIDI_HARPSICHORD="大鍵琴";s.Msg.MIDI_CELESTA="鋼片琴";s.Msg.MIDI_GLOCKENSPIEL="鍾琴";s.Msg.MIDI_MUSICALBOX="音樂盒";s.Msg.MIDI_MARIMBA="馬林巴琴";s.Msg.MIDI_XYLOPHONE="木琴";s.Msg.MIDI_TUBULARBELL="管鐘";s.Msg.MIDI_DULCIMER="洋琴";s.Msg.MIDI_VIBRAPHONE="顫音琴";s.Msg.MIDI_ORGAN="音栓風琴";s.Msg.MIDI_ACOUSTIC_GUITAR="木吉他";s.Msg.MIDI_ELECTRIC_GUITAR="電吉他";s.Msg.MIDI_ACOUSTIC_BASS="民謠貝斯";s.Msg.MIDI_STRING_ENSEMBLE="弦樂合奏";s.Msg.MIDI_VIOLIN="小提琴";s.Msg.MIDI_TRUMPET="小號";s.Msg.MIDI_SAX="薩克斯";s.Msg.MIDI_STEEL_DRUMS="鋼鼓";s.Msg.MIDI_LEAD="合成音主旋律";s.Msg.MIDI_PAD="合成音襯底";s.Msg.CocoRobo_BLUEBIT_MIDI_INSTRUMENT_HELPURL="";s.Msg.CocoRobo_BLUEBIT_MIDI_INSTRUMENT_MESSAGE0="設MIDI樂器 %1";s.Msg.CocoRobo_BLUEBIT_MIDI_INSTRUMENT_TOOLTIP="";s.Msg.CocoRobo_BLUEBIT_MIDI_PLAY_HELPURL="";s.Msg.CocoRobo_BLUEBIT_MIDI_PLAY_MESSAGE0="MIDI %1 音調 %2";s.Msg.CocoRobo_BLUEBIT_MIDI_PLAY_TOOLTIP="";s.Msg.CocoRobo_BLUEBIT_MATRIX_BRIGHTNESS_HELPURL="";s.Msg.CocoRobo_BLUEBIT_MATRIX_BRIGHTNESS_MESSAGE0="設點陣亮度等級 %1";s.Msg.CocoRobo_BLUEBIT_MATRIX_BRIGHTNESS_TOOLTIP="亮度等級 0~15";s.Msg.CocoRobo_BLUEBIT_MATRIX_FILL_HELPURL="";s.Msg.CocoRobo_BLUEBIT_MATRIX_FILL_MESSAGE0="點陣 %1";s.Msg.CocoRobo_BLUEBIT_MATRIX_FILL_TOOLTIP="";s.Msg.CocoRobo_BLUEBIT_MATRIX_BITMAP_HELPURL="";s.Msg.CocoRobo_BLUEBIT_MATRIX_BITMAP_MESSAGE0="設置點陣 %1 %2 %3 %4 %5 %6 %7 %8 %9 %10 %11 %12 %13 %14 %15 %16 %17 %18 %19 %20 %21 %22 %23 %24 %25 %26 %27 %28 %29 %30 %31 %32 %33 %34 %35 %36 %37 %38 %39 %40 %41 %42 %43 %44 %45 %46 %47 %48 %49 %50 %51 %52 %53 %54 %55 %56 %57 %58 %59 %60 %61 %62 %63 %64 %65 %66 %67 %68 %69 %70 %71 %72";s.Msg.CocoRobo_BLUEBIT_MATRIX_BITMAP_TOOLTIP="";s.Msg.CocoRobo_BLUEBIT_MATRIX_SHOW_HELPURL="";s.Msg.CocoRobo_BLUEBIT_MATRIX_SHOW_MESSAGE0="點陣設置生效";s.Msg.CocoRobo_BLUEBIT_MATRIX_SHOW_TOOLTIP="";s.Msg.CocoRobo_BLUEBIT_MP3_VOLUME_HELPURL="";s.Msg.CocoRobo_BLUEBIT_MP3_VOLUME_MESSAGE0="設MP3音量 %1";s.Msg.CocoRobo_BLUEBIT_MP3_VOLUME_TOOLTIP="音量:0~30";s.Msg.CocoRobo_BLUEBIT_MP3_INIT_HELPURL="";s.Msg.CocoRobo_BLUEBIT_MP3_INIT_MESSAGE0="初始化MP3 TX引腳 %1";s.Msg.CocoRobo_BLUEBIT_MP3_INIT_TOOLTIP="教科板的 tx 引腳連接音樂模組的 RXI 腳位";s.Msg.CocoRobo_BLUEBIT_MP3_VOLUME_PLUS_HELPURL="";s.Msg.CocoRobo_BLUEBIT_MP3_VOLUME_PLUS_MESSAGE0="MP3 音量 %1";s.Msg.CocoRobo_BLUEBIT_MP3_VOLUME_PLUS_TOOLTIP="";s.Msg.CocoRobo_PLUS_1="加1";s.Msg.CocoRobo_MINUS_1="減1";s.Msg.CocoRobo_BLUEBIT_MP3_PLAY_SONG_HELPURL="";s.Msg.CocoRobo_BLUEBIT_MP3_PLAY_SONG_MESSAGE0="MP3 播放第 %1 首歌";s.Msg.CocoRobo_BLUEBIT_MP3_PLAY_SONG_TOOLTIP="";s.Msg.CocoRobo_BLUEBIT_MP3_CMD_HELPURL="";s.Msg.CocoRobo_BLUEBIT_MP3_CMD_MESSAGE0="MP3 播放 %1";s.Msg.CocoRobo_BLUEBIT_MP3_CMD_TOOLTIP="";s.Msg.CocoRobo_BLUEBIT_MP3_SINGLELOOP_HELPURL="";s.Msg.CocoRobo_BLUEBIT_MP3_SINGLELOOP_MESSAGE0="Mp3 單曲循環 %1";s.Msg.CocoRobo_BLUEBIT_MP3_SINGLELOOP_TOOLTIP="";s.Msg.CocoRobo_BLUEBIT_EXTIO_IOMODE_HELPURL="";s.Msg.CocoRobo_BLUEBIT_EXTIO_IOMODE_MESSAGE0="設擴展端口 IO %2 為 %1";s.Msg.CocoRobo_BLUEBIT_EXTIO_IOMODE_TOOLTIP="IO: 0~7";s.Msg.CocoRobo_BLUEBIT_EXTIO_READIO_HELPURL="";s.Msg.CocoRobo_BLUEBIT_EXTIO_READIO_MESSAGE0="擴展端口值 IO %1";s.Msg.CocoRobo_BLUEBIT_EXTIO_READIO_TOOLTIP="";s.Msg.CocoRobo_BLUEBIT_EXTIO_WRITEIO_HELPURL="";s.Msg.CocoRobo_BLUEBIT_EXTIO_WRITEIO_MESSAGE0="設擴展端口 IO %2 為 %1";s.Msg.CocoRobo_BLUEBIT_EXTIO_WRITEIO_TOOLTIP="";s.Msg.CocoRobo_LCD_OBJECT_HELPURL="";s.Msg.CocoRobo_LCD_OBJECT_MESSAGE0="LCD1602 初始化";s.Msg.CocoRobo_LCD_OBJECT_TOOLTIP="";s.Msg.CocoRobo_LCD_PRINT_HELPURL="";s.Msg.CocoRobo_LCD_PRINT_MESSAGE0="LCD1602 顯示 %1";s.Msg.CocoRobo_LCD_PRINT_TOOLTIP="";s.Msg.CocoRobo_LCD_HOME_HELPURL="";s.Msg.CocoRobo_LCD_HOME_MESSAGE0="LCD1602 光標 回到原點";s.Msg.CocoRobo_LCD_HOME_TOOLTIP="";s.Msg.CocoRobo_LCD_CURSOR_HELPURL="";s.Msg.CocoRobo_LCD_CURSOR_MESSAGE0="LCD1602 光標 %1";s.Msg.CocoRobo_LCD_CURSOR_TOOLTIP="";s.Msg.CocoRobo_LCD_SET_CURSOR_HELPURL="";s.Msg.CocoRobo_LCD_SET_CURSOR_MESSAGE0="LCD1602 起始點 欄 %2 列 %1";s.Msg.CocoRobo_LCD_SET_CURSOR_TOOLTIP="欄列從0開始計數";s.Msg.CocoRobo_LCD_CLEAR_HELPURL="";s.Msg.CocoRobo_LCD_CLEAR_MESSAGE0="LCD1602 清屏";s.Msg.CocoRobo_LCD_CLEAR_TOOLTIP="";s.Msg.CocoRobo_LCD_CURSOR_BLINK="閃爍";s.Msg.CocoRobo_LCD_CURSOR_NO_BLINK="不閃爍";s.Msg.CocoRobo_RIGHT_TO_LEFT="從右向左";s.Msg.CocoRobo_LEFT_TO_RIGHT="從左向右";s.Msg.CocoRobo_LCD_TEXT_DIRECTION_HELPURL="";s.Msg.CocoRobo_LCD_TEXT_DIRECTION_MESSAGE0="LCD1602 文字方向 %1";s.Msg.CocoRobo_LCD_TEXT_DIRECTION_TOOLTIP="";s.Msg.CocoRobo_LCD_MOVE_HELPURL="";s.Msg.CocoRobo_LCD_MOVE_MESSAGE0="LCD1602 向 %1 滾動壹格";s.Msg.CocoRobo_LCD_MOVE_TOOLTIP="";s.Msg.CocoRobo_IR_TRANS_HELPURL="";s.Msg.CocoRobo_IR_TRANS_MESSAGE0="紅外發送 單字節字串 %1 tx 腳位 %2";s.Msg.CocoRobo_IR_TRANS_TOOLTIP=`
- 單字節字串:
- 'A', 'b', '1'等
- `;s.Msg.OUTPUT_PIN_HELPURL="";s.Msg.OUTPUT_PIN_MESSAGE0="%1";s.Msg.OUTPUT_PIN_TOOLTIP="";s.Msg.INPUT_PIN_HELPURL="";s.Msg.INPUT_PIN_MESSAGE0="%1";s.Msg.INPUT_PIN_TOOLTIP="";s.Msg.READ_ANALOG_PIN_HELPURL="";s.Msg.READ_ANALOG_PIN_MESSAGE0="%1";s.Msg.READ_ANALOG_PIN_TOOLTIP="";s.Msg.SET_DIGITAL_HELPURL="";s.Msg.SET_DIGITAL_MESSAGE0="%1";s.Msg.SET_DIGITAL_TOOLTIP="";s.Msg.SET_ANALOG_HELPURL="";s.Msg.SET_ANALOG_MESSAGE0="%1";s.Msg.SET_ANALOG_TOOLTIP="";s.Msg.ALL_PIN_HELPURL="";s.Msg.ALL_PIN_MESSAGE0="%1";s.Msg.ALL_PIN_TOOLTIP="";s.Msg.PWM_PIN_HELPURL="";s.Msg.PWM_PIN_MESSAGE0="%1";s.Msg.PWM_PIN_TOOLTIP="";s.Msg.DH11_HUM_TEM_PIN_HELPURL="";s.Msg.DH11_HUM_TEM_PIN_MESSAGE0="%1";s.Msg.DH11_HUM_TEM_PIN_TOOLTIP="";s.Msg.UART_TX_PIN_HELPURL="";s.Msg.UART_TX_PIN_MESSAGE0="%1";s.Msg.UART_TX_PIN_TOOLTIP="";s.Msg.UART_RX_PIN_HELPURL="";s.Msg.UART_RX_PIN_MESSAGE0="%1";s.Msg.UART_RX_PIN_TOOLTIP="";s.Msg.I2C_PIN_HELPURL="";s.Msg.I2C_PIN_MESSAGE0="%1";s.Msg.I2C_PIN_TOOLTIP="";s.Msg.MQTT_COMMON_SETUP_HELPURL="https://CocoRobo.readthedocs.io/zh/master/library/cocorobo/umqtt.simple.html?highlight=mqtt#MQTTClient";s.Msg.MQTT_COMMON_SETUP_MESSAGE0="MQTT %1 client_id %2 server %3 port %4 user %5 password %6 keepalive %7";s.Msg.MQTT_COMMON_SETUP_TOOLTIP="";s.Msg.MQTT_TENCENT_SETUP_HELPURL="https://CocoRobo.readthedocs.io/zh/master/library/cocorobo/umqtt.simple.html?highlight=mqtt#MQTTClient";s.Msg.MQTT_TENCENT_SETUP_MESSAGE0="MQTT 騰訊物聯網 %1 服務器 %2 Port %3 AppId %4 Device %5 -- 傳出參數 -- %6 ReportTopic %7 ControlTopic %8";s.Msg.MQTT_TENCENT_SETUP_TOOLTIP="";s.Msg.MQTT_TENCENT_SETUPS_HELPURL="https://CocoRobo.readthedocs.io/zh/master/library/cocorobo/umqtt.simple.html?highlight=mqtt#MQTTClient";s.Msg.MQTT_TENCENT_SETUPS_MESSAGE0="MQTT 騰訊物聯網 %1 服務器 %2 Port %3 AppId %4 Device %5 -- 傳出參數 -- %6 ReportTopic %7 ControlTopic %8";s.Msg.MQTT_TENCENT_SETUPS_TOOLTIP="";s.Msg.MQTT_SETUP_HELPURL="https://CocoRobo.readthedocs.io/zh/master/tutorials/advance/iot/mqtt.html#id2";s.Msg.MQTT_SETUP_MESSAGE0="MQTT-Easy IoT %1 服務器 %2 Client ID %5 Iot_id %3 Iot_pwd %4";s.Msg.MQTT_SETUP_TOOLTIP="";s.Msg.MQTT_CONNECT_HELPURL="https://CocoRobo.readthedocs.io/zh/master/tutorials/advance/iot/mqtt.html#id2";s.Msg.MQTT_CONNECT_MESSAGE0="連接 MQTT";s.Msg.MQTT_CONNECT_TOOLTIP="";s.Msg.MQTT_PUBLISH_HELPURL="https://CocoRobo.readthedocs.io/zh/master/tutorials/advance/iot/mqtt.html#id2";s.Msg.MQTT_PUBLISH_MESSAGE0="發佈 %1 至 主題 %2";s.Msg.MQTT_PUBLISH_TOOLTIP="";s.Msg.MQTT_REC_FROM_TOPIC_HELPURL="https://CocoRobo.readthedocs.io/zh/master/tutorials/advance/iot/mqtt.html#id2";s.Msg.MQTT_REC_FROM_TOPIC_MESSAGE0="當從主題 %1 接收到 %2 時";s.Msg.MQTT_REC_FROM_TOPIC_TOOLTIP="";s.Msg.MQTT_RECEIVE_HELPURL="https://CocoRobo.readthedocs.io/zh/master/tutorials/advance/iot/mqtt.html#id2";s.Msg.MQTT_RECEIVE_MESSAGE0="當從主題 %1 接收到 %2 時";s.Msg.MQTT_RECEIVE_TOOLTIP='參數"主題"只接受變量';s.Msg.MQTT_WAIT_MSG_HELPURL="https://CocoRobo.readthedocs.io/zh/master/tutorials/advance/iot/mqtt.html#id2";s.Msg.MQTT_WAIT_MSG_MESSAGE0="等待主題消息 以 %1 模式";s.Msg.MQTT_WAIT_MSG_TOOLTIP="建議放在'壹直重複'中運行";s.Msg.MQTT_DISCONNECT_HELPURL="https://CocoRobo.readthedocs.io/zh/master/tutorials/advance/iot/mqtt.html#id2";s.Msg.MQTT_DISCONNECT_MESSAGE0="MQTT 斷開連接";s.Msg.MQTT_DISCONNECT_TOOLTIP="";s.Msg.MQTT_LAST_WILL_HELPURL="https://CocoRobo.readthedocs.io/zh/master/library/cocorobo/umqtt.simple.html?highlight=mqtt#MQTTClient.set_last_will";s.Msg.MQTT_LAST_WILL_MESSAGE0="設置 MQTT 主題 %2 離綫消息 %1";s.Msg.MQTT_LAST_WILL_TOOLTIP="設置 MQTT last will 消息。應該在 connect() 之前調用。";s.Msg.CocoRobo_IR_RECV_HELPURL="";s.Msg.CocoRobo_IR_RECV_MESSAGE0="紅外接收 整型 rx 腳位 %1";s.Msg.CocoRobo_IR_RECV_TOOLTIP="首次接收總爲空";s.Msg.CocoRobo_BLUEBIT_OLCD_PRINT_HELPURL="";s.Msg.CocoRobo_BLUEBIT_OLCD_PRINT_MESSAGE0="bluebit LCD 顯示 %1 x %2 y %3";s.Msg.CocoRobo_BLUEBIT_OLCD_PRINT_TOOLTIP="";s.Msg.CocoRobo_BLUEBIT_OLCD_INIT_HELPURL="";s.Msg.CocoRobo_BLUEBIT_OLCD_INIT_MESSAGE0="bluebit LCD 初始化 tx %1 rx %2";s.Msg.CocoRobo_BLUEBIT_OLCD_INIT_TOOLTIP="";s.Msg.CocoRobo_BLUEBIT_OLCD_CLEAR_HELPURL="";s.Msg.CocoRobo_BLUEBIT_OLCD_CLEAR_MESSAGE0="bluebit LCD 清空";s.Msg.CocoRobo_BLUEBIT_OLCD_CLEAR_TOOLTIP="";s.Msg.CocoRobo_BLUEBIT_OLCD_BMP_HELPURL="";s.Msg.CocoRobo_BLUEBIT_OLCD_BMP_MESSAGE0="bluebit LCD 顯示圖像 x %1 y %2 寬 %3 高 %4 16進制圖像數據 %5";s.Msg.CocoRobo_BLUEBIT_OLCD_BMP_TOOLTIP="";s.Msg.CocoRobo_bme280_hum_tem_pre_MESSAGE0="氣象 %1";s.Msg.CocoRobo_bme280_hum_tem_pre_TOOLTIP="氣壓單位Pa, 溫度單位攝氏度, 環境濕度單位%";s.Msg.CocoRobobox_sound_MESSAGE0="聲音值";s.Msg.CocoRobobox_sound_TOOLTIP="採樣數據,為0~4095。";s.Msg.CocoRobobox_sound_HELPURL="https://CocoRobo.readthedocs.io/zh/doc_CocoRobobox/CocoRoboBox/lib/CocoRobo.html";s.Msg.CocoRoboBOX_SLIDER_HELPURL="https://CocoRobo.readthedocs.io/zh/doc_CocoRobobox/CocoRoboBox/lib/CocoRobo_box.html#CocoRobo-box";s.Msg.CocoRoboBOX_SLIDER_MESSAGE0="滑桿";s.Msg.CocoRoboBOX_SLIDER_TOOLTIP="返回滑桿電阻採樣值。範圍0~4095。";s.Msg.CocoRoboBOX_5BUTTON_HELPURL="https://CocoRobo.readthedocs.io/zh/doc_CocoRobobox/CocoRoboBox/lib/CocoRobo_box.html#CocoRobo-box";s.Msg.CocoRoboBOX_5BUTTON_MESSAGE0="五向按鍵%1";s.Msg.CocoRoboBOX_5BUTTON_TOOLTIP="";s.Msg.CocoRoboBOX_MOTOR_HELPURL="https://CocoRobo.readthedocs.io/zh/doc_CocoRobobox/CocoRoboBox/lib/CocoRobo_box.html#CocoRobo-box";s.Msg.CocoRoboBOX_MOTOR_MESSAGE0="馬達 速度%1";s.Msg.CocoRoboBOX_MOTOR_TOOLTIP="馬達速度,範圍±100。正值表示正轉,負值則反。";s.Msg.CocoRoboBOX_ULTRASONIC_HELPURL="https://CocoRobo.readthedocs.io/zh/doc_CocoRobobox/CocoRoboBox/lib/CocoRobo_box.html#CocoRobo_box.get_key";s.Msg.CocoRoboBOX_ULTRASONIC_MESSAGE0="超聲波";s.Msg.CocoRoboBOX_ULTRASONIC_TOOLTIP="超聲波測距,獲取超聲波感應器測距值,組織cm。範圍3~340CM";s.Msg.CocoRoboBOX_THEHUMANBODYINFRARE_HELPURL="https://CocoRobo.readthedocs.io/zh/doc_CocoRobobox/CocoRoboBox/lib/CocoRobo_box.html#CocoRobo_box.get_key";s.Msg.CocoRoboBOX_THEHUMANBODYINFRARE_MESSAGE0="人體紅外";s.Msg.CocoRoboBOX_THEHUMANBODYINFRARE_TOOLTIP="返回人體紅外觸發值。當為1時,表示已觸發;當為0時,表示未觸發。";s.Msg.CocoRoboBOX_RGB_pixel_HELPURL="";s.Msg.CocoRoboBOX_RGB_pixel_MESSAGE0="設定第 %1列 %2欄 R%3 G%4 B%5";s.Msg.CocoRoboBOX_RGB_pixel_TOOLTIP="設定第多少列,欄的RGB顏色";s.Msg.CocoRoboBOX_RGB_get_pixel_HELPURL="";s.Msg.CocoRoboBOX_RGB_get_pixel_MESSAGE0="返回 第%1列 %2欄 RGB顏色";s.Msg.CocoRoboBOX_RGB_get_pixel_TOOLTIP="返回第多少列,欄位置的RGB顏色";s.Msg.CocoRoboBOX_RGB_ImageText_HELPURL="";s.Msg.CocoRoboBOX_RGB_ImageText_MESSAGE0="滾動顯示文本%1 速度%2";s.Msg.CocoRoboBOX_RGB_ImageText_TOOLTIP="滾動顯示文字,亮度為0不亮,9最亮";s.Msg.CocoRoboBOX_RGB_Image_HELPURL="";s.Msg.CocoRoboBOX_RGB_Image_MESSAGE0="顯示影像%1";s.Msg.CocoRoboBOX_RGB_Image_TOOLTIP="顯示影像";s.Msg.CocoRoboBOX_RGB_SetImage_HELPURL="";s.Msg.CocoRoboBOX_RGB_SetImage_MESSAGE0="創建影像 %1 首個欄%2第二欄%3第三欄%4第四欄%5第五欄%6";s.Msg.CocoRoboBOX_RGB_SetImage_TOOLTIP="創建新影像,每欄每位數代表第幾比特燈,默認紅色;亮度為0不亮,9最亮。";s.Msg.CocoRoboBOX_RGB_SHOW_IMAGE_MESSAGE0="顯示影像/文本 %1";s.Msg.CocoRoboBOX_RGB_SHOW_IMAGE_TOOLTIP="顯示影像或文字消息。";s.Msg.CocoRoboBOX_RGB_SHOW_IMAGE_HELPURL="";s.Msg.CocoRoboBOX_RGB_SHOW_IMAGEImport_MESSAGE0="顯示影像 %1";s.Msg.CocoRoboBOX_RGB_SHOW_IMAGEImport_TOOLTIP="顯示影像。";s.Msg.CocoRoboBOX_RGB_SHOW_IMAGEImport_HELPURL="";s.Msg.CocoRoboBOX_RGB_SHOW_IMAGE_Copy_MESSAGE0="複製影像 %1";s.Msg.CocoRoboBOX_RGB_SHOW_IMAGE_Copy_TOOLTIP="複製影像。";s.Msg.CocoRoboBOX_RGB_SHOW_IMAGE_Copy_HELPURL="";s.Msg.CocoRoboBOX_RGB_ImageCot_HELPURL="";s.Msg.CocoRoboBOX_RGB_ImageCot_MESSAGE0="切剪影像%1 列%2 欄%3 寬%4 高%5";s.Msg.CocoRoboBOX_RGB_ImageCot_TOOLTIP="切剪影像";s.Msg.CocoRoboBOX_RGB_IMAGE_BUILTINS_MESSAGE0="內寘影像 %1";s.Msg.CocoRoboBOX_RGB_IMAGE_BUILTINS_TOOLTIP="選擇一個內寘的影像。";s.Msg.CocoRoboBOX_RGB_IMAGE_BUILTINS_HELPURL="";s.Msg.CocoRoboBOX_RGB_IMAGE_SHIFT_MESSAGE0="平移影像 %1 %2 %3 位";s.Msg.CocoRoboBOX_RGB_IMAGE_SHIFT_TOOLTIP="向特定方向移動影像,並返回移動後的結果。";s.Msg.CocoRoboBOX_RGB_IMAGE_SHIFT_HELPURL="";s.Msg.CocoRoboBOX_RGB_clear_HELPURL="";s.Msg.CocoRoboBOX_RGB_clear_MESSAGE0="關閉所有 RGB 燈";s.Msg.CocoRoboBOX_RGB_clear_TOOLTIP="";s.Msg.CocoRoboBOX_RGB_pixel_return_HELPURL="";s.Msg.CocoRoboBOX_RGB_pixel_return_MESSAGE0="返回第 %1列 %2欄 顏色";s.Msg.CocoRoboBOX_RGB_pixel_return_TOOLTIP="返回第多少列,欄的RGB顏色";s.Msg.CocoRoboBOX_TRIAXIAL_ACCELERATION_HELPURL="https://CocoRobo.readthedocs.io/zh/doc_CocoRobobox/CocoRobo_classroom_kit/lib/CocoRobo.html";s.Msg.CocoRoboBOX_TRIAXIAL_ACCELERATION_MESSAGE0="%1軸加速度";s.Msg.CocoRoboBOX_TRIAXIAL_ACCELERATION_TOOLTIP="單位g,範圍-2~+2g。";s.Msg.CocoRoboBOX_TRIAXIAL_AUGULAR_VELOCITY_HELPURL="https://CocoRobo.readthedocs.io/zh/doc_CocoRobobox/CocoRobo_classroom_kit/lib/CocoRobo.html";s.Msg.CocoRoboBOX_TRIAXIAL_AUGULAR_VELOCITY_MESSAGE0="%1軸角速度";s.Msg.CocoRoboBOX_TRIAXIAL_AUGULAR_VELOCITY_TOOLTIP="範圍±500°/秒";s.Msg.CocoRoboBOX_EULER_ANGLE_HELPURL="https://CocoRobo.readthedocs.io/zh/doc_CocoRobobox/CocoRobo_classroom_kit/lib/CocoRobo.html";s.Msg.CocoRoboBOX_EULER_ANGLE_MESSAGE0="%1歐拉角";s.Msg.CocoRoboBOX_EULER_ANGLE_TOOLTIP="返回當前歐拉角(Pitch,Roll,Yaw),單位角度";s.Msg.CocoRoboBOX_QUATERNION_HELPURL="https://CocoRobo.readthedocs.io/zh/doc_CocoRobobox/CocoRobo_classroom_kit/lib/CocoRobo.html";s.Msg.CocoRoboBOX_QUATERNION_MESSAGE0="%1四元數";s.Msg.CocoRoboBOX_QUATERNION_TOOLTIP="返回當前四元數(w,x,y,z)";s.Msg.LIST_FIRST_INDEX_HELPURL="";s.Msg.LIST_FIRST_INDEX_MESSAGE0="項 %1 在陣列 %2 %3 出現的位置";s.Msg.LIST_FIRST_INDEX_TOOLTIP="返回指定字串在陣列中%3出現的位置";s.Msg.CocoRobo_AI_LCD_INIT_HELPURL="https://CocoRobo.readthedocs.io/zh/doc_CocoRobobox/CocoRobo_classroom_kit/lib/CocoRobo_classroom_kit.html#CocoRobo_classroom_kit.lcd.init";s.Msg.CocoRobo_AI_LCD_INIT_MESSAGE0="螢幕 初始化 ";s.Msg.CocoRobo_AI_LCD_INIT_TOOLTIP="初始化 螢幕顯示";s.Msg.CocoRobo_AI_SENSOR_RESET_HELPURL="https://maixpy.sipeed.com/zh/libs/machine_vision/sensor.html#%E5%8D%95%E7%9B%AE%E6%91%84%E5%83%8F%E5%A4%B4%E9%87%8D%E7%BD%AE%E5%87%BD%E6%95%B0";s.Msg.CocoRobo_AI_SENSOR_RESET_MESSAGE0="攝像頭 初始化";s.Msg.CocoRobo_AI_SENSOR_RESET_TOOLTIP="初始化單目攝像頭";s.Msg.CocoRobo_AI_SENSOR_ENABLE_HELPURL="https://maixpy.sipeed.com/zh/libs/machine_vision/sensor.html#%E8%8E%B7%E5%8F%96%E5%9B%BE%E5%83%8F";s.Msg.CocoRobo_AI_SENSOR_ENABLE_MESSAGE0="攝像頭%1";s.Msg.CocoRobo_AI_SENSOR_ENABLE_TOOLTIP="獲取影像";s.Msg.CocoRobo_AI_LCD_TEXT_HELPURL="https://maixpy.sipeed.com/zh/libs/machine_vision/lcd.html#%E4%BE%8B%E7%A8%8B-1%EF%BC%9A-%E6%98%BE%E7%A4%BA%E8%8B%B1%E6%96%87";s.Msg.CocoRobo_AI_LCD_TEXT_MESSAGE0="顯示文字 x %1 y %2 內容 %3";s.Msg.CocoRobo_AI_LCD_TEXT_TOOLTIP="僅支持字母和數字";s.Msg.CocoRobo_AI_SENSOR_SKIP_HELPURL="https://maixpy.sipeed.com/zh/libs/machine_vision/sensor.html#%E8%B7%B3%E5%B8%A7";s.Msg.CocoRobo_AI_SENSOR_SKIP_MESSAGE0="攝像頭 跳過幀數%1 毫秒%2內的影像";s.Msg.CocoRobo_AI_SENSOR_SKIP_TOOLTIP="攝像頭跳過指定幀數或者跳過指定時間內的影像";s.Msg.CocoRobo_AI_SENSOR_RETURN_HELPURL="https://maixpy.sipeed.com/zh/libs/machine_vision/sensor.html#%E5%88%86%E8%BE%A8%E7%8E%87%E5%AE%BD%E5%BA%A6";s.Msg.CocoRobo_AI_SENSOR_RETURN_MESSAGE0="測 攝像頭 獲取%1";s.Msg.CocoRobo_AI_SENSOR_RETURN_TOOLTIP="(AI)攝像頭返回參數(寬高,圖像幀的格式,圖像幀的大小)";s.Msg.CocoRobo_AI_SENSOR_SETS_HELPURL="https://maixpy.sipeed.com/zh/libs/machine_vision/sensor.html#%E8%AE%BE%E7%BD%AE%E5%AF%B9%E6%AF%94%E5%BA%A6";s.Msg.CocoRobo_AI_SENSOR_SETS_MESSAGE0="攝像頭 設置%1 爲%2";s.Msg.CocoRobo_AI_SENSOR_SETS_TOOLTIP="設置攝像頭對比度,亮度,飽和度範圍爲[-2,+2]";s.Msg.CocoRobo_AI_SENSOR_AUTO_GAIN_HELPURL="https://maixpy.sipeed.com/zh/libs/machine_vision/sensor.html#%E8%AE%BE%E7%BD%AE%E8%87%AA%E5%8A%A8%E5%A2%9E%E7%9B%8A";s.Msg.CocoRobo_AI_SENSOR_AUTO_GAIN_MESSAGE0="攝像頭 自動增益%1";s.Msg.CocoRobo_AI_SENSOR_AUTO_GAIN_TOOLTIP="1開啟攝像頭自動增益0關閉攝像頭自動增益";s.Msg.CocoRobo_AI_SENSOR_AUTO_WHITEBAL_HELPURL="https://maixpy.sipeed.com/zh/libs/machine_vision/sensor.html#%E8%AE%BE%E7%BD%AE%E8%87%AA%E5%8A%A8%E5%A2%9E%E7%9B%8A";s.Msg.CocoRobo_AI_SENSOR_AUTO_WHITEBAL_MESSAGE0="攝像頭 白平衡%1";s.Msg.CocoRobo_AI_SENSOR_AUTO_WHITEBAL_TOOLTIP="設定攝像自動白平衡模式,默認打開。True為打開,False為關閉自動白平衡。若您想追跡顏色,則需關閉白平衡。";s.Msg.CocoRobo_AI_SENSOR_LEVEL_MI_HELPURL="https://maixpy.sipeed.com/zh/libs/machine_vision/sensor.html#%E8%AE%BE%E7%BD%AE%E6%B0%B4%E5%B9%B3%E9%95%9C%E5%83%8F";s.Msg.CocoRobo_AI_SENSOR_LEVEL_MI_MESSAGE0="攝像頭 %1 %2";s.Msg.CocoRobo_AI_SENSOR_LEVEL_MI_TOOLTIP="1表示開啟水準鏡像 0表示關閉水準鏡像";s.Msg.CocoRobo_AI_LCD_DISPLAY_HELPURL="https://CocoRobo.readthedocs.io/zh/doc_CocoRobobox/CocoRobo_classroom_kit/lib/CocoRobo_classroom_kit.html#CocoRobo_classroom_kit.lcd.display";s.Msg.CocoRobo_AI_LCD_DISPLAY_MESSAGE0="螢幕 顯示生效";s.Msg.CocoRobo_AI_LCD_DISPLAY_TOOLTIP="可以在液晶屏上顯示";s.Msg.CocoRobo_AI_LCD_DISPLAY_SIZE_HELPURL="https://CocoRobo.readthedocs.io/zh/doc_CocoRobobox/CocoRobo_classroom_kit/lib/CocoRobo_classroom_kit.html#CocoRobo_classroom_kit.lcd.display";s.Msg.CocoRobo_AI_LCD_DISPLAY_SIZE_MESSAGE0="圖像 顯示生效 x%1 y%2 寬%3 高%4";s.Msg.CocoRobo_AI_LCD_DISPLAY_SIZE_TOOLTIP="可以在液晶屏上顯示壹張圖片";s.Msg.CocoRobo_AI_SENSOR_IMAGES_HELPURL="https://maixpy.sipeed.com/zh/libs/machine_vision/sensor.html#%E8%8E%B7%E5%8F%96%E5%9B%BE%E5%83%8F";s.Msg.CocoRobo_AI_SENSOR_IMAGES_MESSAGE0="攝像頭 獲取影像";s.Msg.CocoRobo_AI_SENSOR_IMAGES_TOOLTIP="控制攝像頭捕捉影像";s.Msg.CocoRobo_AI_IMAGE_FACEDETECT_HELPURL="https://maixpy.sipeed.com/zh/libs/Maix/kpu.html#%E8%BF%90%E8%A1%8Cyolo2%E7%BD%91%E7%BB%9C";s.Msg.CocoRobo_AI_IMAGE_FACEDETECT_MESSAGE0="人臉檢測";s.Msg.CocoRobo_AI_IMAGE_FACEDETECT_TOOLTIP="";s.Msg.CocoRobo_AI_LCD_SHOW_REC_HELPURL="https://CocoRobo.readthedocs.io/zh/doc_CocoRobobox/CocoRobo_classroom_kit/lib/CocoRobo_classroom_kit.html#CocoRobo_classroom_kit.image.draw_rectangle";s.Msg.CocoRobo_AI_LCD_SHOW_REC_MESSAGE0="矩形%1 x%3 y%4 寬%5 高%6 顏色爲 R%7 G%8 B%9 加粗%2";s.Msg.CocoRobo_AI_LCD_SHOW_REC_TOOLTIP="在影像上繪製矩形";s.Msg.CocoRobo_AI_LCD_SHOW_STRING_MESSAGE0="線條 x1%1 y1%2 到x2%3 y2%4 顏色爲R%5 G%6 B%7 加粗%8";s.Msg.CocoRobo_AI_LCD_SHOW_STRING_TOOLTIP="在影像上繪製線條";s.Msg.CocoRobo_AI_LCD_SHOW_STRING_HELPURL="https://CocoRobo.readthedocs.io/zh/doc_CocoRobobox/CocoRobo_classroom_kit/lib/CocoRobo_classroom_kit.html#CocoRobo_classroom_kit.image.draw_rectangle";s.Msg.CocoRobo_AI_LCD_CLEAR_ALL_MESSAGE0="螢幕 顯示清空";s.Msg.CocoRobo_AI_LCD_CLEAR_ALL_TOOLTIP="將液晶屏清空為黑色或者指定的顏色";s.Msg.CocoRobo_AI_LCD_CLEAR_ALL_HELPURL="https://CocoRobo.readthedocs.io/zh/doc_CocoRobobox/CocoRobo_classroom_kit/lib/CocoRobo_classroom_kit.html#CocoRobo_classroom_kit.image.draw_rectangle";s.Msg.CocoRobo_AI_LCD_return_colour_MESSAGE0="LCD 返回 x%1 y%2 顏色";s.Msg.CocoRobo_AI_LCD_return_colour_TOOLTIP="返回某個座標點的顏色";s.Msg.CocoRobo_AI_LCD_return_colour_HELPURL="https://CocoRobo.readthedocs.io/zh/doc_CocoRobobox/CocoRobo_classroom_kit/lib/CocoRobo_classroom_kit.html#CocoRobo_classroom_kit.image.draw_rectangle";s.Msg.CocoRobo_AI_LCD_SHOW_CIRCLE_MESSAGE0="圓形%1 x%2 y%3 半徑%4 顏色爲 R%5 G%6 B%7 加粗%8";s.Msg.CocoRobo_AI_LCD_SHOW_CIRCLE_TOOLTIP="在影像上繪製圓形";s.Msg.CocoRobo_AI_LCD_SHOW_CIRCLE_HELPURL="https://CocoRobo.readthedocs.io/zh/doc_CocoRobobox/CocoRobo_classroom_kit/lib/CocoRobo_classroom_kit.html#CocoRobo_classroom_kit.image.draw_rectangle";s.Msg.CocoRobo_AI_LCD_TEXT_MOST_HELPURL="https://CocoRobo.readthedocs.io/zh/doc_CocoRobobox/CocoRobo_classroom_kit/lib/CocoRobo_classroom_kit.html#CocoRobo_classroom_kit.image.draw_rectangle";s.Msg.CocoRobo_AI_LCD_TEXT_MOST_MESSAGE0="顯示文字 x %1 y %2 內容 %3 顏色爲R%4 G%5 B%6 字號%7";s.Msg.CocoRobo_AI_LCD_TEXT_MOST_TOOLTIP="僅支持字母和數字";s.Msg.CocoRobo_AI_LCD_SHOW_TEN_STRING_MESSAGE0="十字線 x%1 y%2 顏色爲R%3 G%4 B%5 尺寸%6 加粗%7";s.Msg.CocoRobo_AI_LCD_SHOW_TEN_STRING_TOOLTIP="在影像上繪製十字線";s.Msg.CocoRobo_AI_LCD_SHOW_TEN_STRING_HELPURL="https://CocoRobo.readthedocs.io/zh/doc_CocoRobobox/CocoRobo_classroom_kit/lib/CocoRobo_classroom_kit.html#CocoRobo_classroom_kit.image.draw_rectangle";s.Msg.CocoRobo_AI_LCD_SHOW_ARROWS_MESSAGE0="箭頭 x1%1 y1%2 到x2%3 y2%4 顏色爲R%5 G%6 B%7 加粗%8";s.Msg.CocoRobo_AI_LCD_SHOW_ARROWS_TOOLTIP="在影像上繪製一個箭頭";s.Msg.CocoRobo_AI_LCD_SHOW_ARROWS_HELPURL="https://CocoRobo.readthedocs.io/zh/doc_CocoRobobox/CocoRobo_classroom_kit/lib/CocoRobo_classroom_kit.html#CocoRobo_classroom_kit.image.draw_rectangle";s.Msg.CocoRobo_AI_LCD_SHOW_IMAGE_PIRCTURE_HELPURL=".https://CocoRobo.readthedocs.io/zh/doc_CocoRobobox/CocoRobo_classroom_kit/lib/CocoRobo_classroom_kit.html#CocoRobo_classroom_kit.lcd.display";s.Msg.CocoRobo_AI_LCD_SHOW_IMAGE_PIRCTURE_MESSAGE0="顯示影像 路徑%1";s.Msg.CocoRobo_AI_LCD_SHOW_IMAGE_PIRCTURE_TOOLTIP="顯示影像";s.Msg.CocoRobo_AI_LCD_SHOW_IMAGE_HEAT_HELPURL="https://CocoRobo.readthedocs.io/zh/doc_CocoRobobox/CocoRobo_classroom_kit/lib/CocoRobo_classroom_kit.html#CocoRobo_classroom_kit.image.invert";s.Msg.CocoRobo_AI_LCD_SHOW_IMAGE_HEAT_MESSAGE0="圖像轉換為%1";s.Msg.CocoRobo_AI_LCD_SHOW_IMAGE_HEAT_TOOLTIP="黑白翻轉是將二進位影像0(黑色)變為1(白色),1(白色)變為0(黑色),非常快速地翻轉二進位影像中的所有點數值。";s.Msg.CocoRobo_AI_LCD_SHOW_IMAGE_DESCARTES_HELPURL="https://CocoRobo.readthedocs.io/zh/doc_CocoRobobox/CocoRobo_classroom_kit/lib/CocoRobo_classroom_kit.html#CocoRobo_classroom_kit.image.linpolar";s.Msg.CocoRobo_AI_LCD_SHOW_IMAGE_DESCARTES_MESSAGE0="影像 從笛卡爾座標到%1 座標重新投影 反向%2";s.Msg.CocoRobo_AI_LCD_SHOW_IMAGE_DESCARTES_TOOLTIP="";s.Msg.CocoRobo_AI_LCD_SHOW_IMAGE_EROSION_HELPURL="https://CocoRobo.readthedocs.io/zh/doc_CocoRobobox/CocoRobo_classroom_kit/lib/CocoRobo_classroom_kit.html#CocoRobo_classroom_kit.image.dilate";s.Msg.CocoRobo_AI_LCD_SHOW_IMAGE_EROSION_MESSAGE0="影像 膨脹 級別%1";s.Msg.CocoRobo_AI_LCD_SHOW_IMAGE_EROSION_TOOLTIP="膨脹就是對影像高亮部分進行“領域擴張”,效果圖擁有比原圖更大的高亮區域。";s.Msg.CocoRobo_AI_LCD_SHOW_IMAGE_MIDDLE_HELPURL="https://CocoRobo.readthedocs.io/zh/doc_CocoRobobox/CocoRobo_classroom_kit/lib/CocoRobo_classroom_kit.html#CocoRobo_classroom_kit.image.midpoint";s.Msg.CocoRobo_AI_LCD_SHOW_IMAGE_MIDDLE_MESSAGE0="影像 中點濾波 級別%1 濾波%2";s.Msg.CocoRobo_AI_LCD_SHOW_IMAGE_MIDDLE_TOOLTIP="控制影像混合的最小/最大程度。0只適用於最小濾波,1僅用於最大濾波。";s.Msg.CocoRobo_AI_LCD_SHOW_IMAGE_MODE_HELPURL="https://CocoRobo.readthedocs.io/zh/doc_CocoRobobox/CocoRobo_classroom_kit/lib/CocoRobo_classroom_kit.html#CocoRobo_classroom_kit.image.modehttps://CocoRobo.readthedocs.io/zh/doc_CocoRobobox/CocoRobo_classroom_kit/lib/CocoRobo_classroom_kit.html#CocoRobo_classroom_kit.image.mode";s.Msg.CocoRobo_AI_LCD_SHOW_IMAGE_MODE_MESSAGE0="影像 眾數濾波 級別%1";s.Msg.CocoRobo_AI_LCD_SHOW_IMAGE_MODE_TOOLTIP="在影像上運行眾數濾波,用相鄰點數的模式替換每個點數。";s.Msg.CocoRobo_AI_LCD_SHOW_IMAGE_INDISTINCT_HELPURL="https://CocoRobo.readthedocs.io/zh/doc_CocoRobobox/CocoRobo_classroom_kit/lib/CocoRobo_classroom_kit.html#CocoRobo_classroom_kit.image.mean";s.Msg.CocoRobo_AI_LCD_SHOW_IMAGE_INDISTINCT_MESSAGE0="影像 模糊濾波 級別%1";s.Msg.CocoRobo_AI_LCD_SHOW_IMAGE_INDISTINCT_TOOLTIP="使用盒式濾波器的標準平均值模糊濾波。";s.Msg.CocoRobo_AI_LCD_SHOW_IMAGE_CARTOON_HELPURL="https://CocoRobo.readthedocs.io/zh/doc_CocoRobobox/CocoRobo_classroom_kit/lib/CocoRobo_classroom_kit.html#CocoRobo_classroom_kit.image.cartoon";s.Msg.CocoRobo_AI_LCD_SHOW_IMAGE_CARTOON_MESSAGE0="影像 卡通化 級別%1 起始點數差異%2 相鄰點數差異%3";s.Msg.CocoRobo_AI_LCD_SHOW_IMAGE_CARTOON_TOOLTIP="使圖像卡通化";s.Msg.CocoRobo_AI_LCD_SHOW_IMAGE_3D_HELPURL="https://CocoRobo.readthedocs.io/zh/doc_CocoRobobox/CocoRobo_classroom_kit/lib/CocoRobo_classroom_kit.html#CocoRobo_classroom_kit.image.rotation_corr";s.Msg.CocoRobo_AI_LCD_SHOW_IMAGE_3D_MESSAGE0="影像 3D旋轉 上下旋轉%1 左右旋轉%2 度數%3 左右移動%4 上下移動%5 縮放%6";s.Msg.CocoRobo_AI_LCD_SHOW_IMAGE_3D_TOOLTIP="透過執行幀緩衝區的3D旋轉來糾正影像中的透視問題。";s.Msg.CocoRobo_AI_LCD_SHOW_ECTYPE_HELPURL="https://CocoRobo.readthedocs.io/zh/doc_CocoRobobox/CocoRobo_classroom_kit/lib/CocoRobo_classroom_kit.html#CocoRobo_classroom_kit.image.copy";s.Msg.CocoRobo_AI_LCD_SHOW_ECTYPE_MESSAGE0="將影像的副本保存到SD卡 圖像名%1 影像顯示區域 x%2 y%3 寬%4 高%5";s.Msg.CocoRobo_AI_LCD_SHOW_ECTYPE_TOOLTIP="將影像的副本保存到SD卡";s.Msg.CocoRobo_AI_LCD_SHOW_ECTYPE_SHOW_HELPURL="https://CocoRobo.readthedocs.io/zh/doc_CocoRobobox/CocoRobo_classroom_kit/lib/CocoRobo_classroom_kit.html#CocoRobo_classroom_kit.image.save";s.Msg.CocoRobo_AI_LCD_SHOW_ECTYPE_SHOW_MESSAGE0="創建一個影像對象的副本 複製影像區域 x%1 y%2 寬%3 高%4";s.Msg.CocoRobo_AI_LCD_SHOW_ECTYPE_SHOW_TOOLTIP="創建一個影像對象的副本";s.Msg.CocoRobo_AI2_NUMBER_DISCERN_HELPURL="https://CocoRobo.readthedocs.io/zh/doc_CocoRobobox/CocoRobo_classroom_kit/lib/CocoRobo_classroom_kit.html#CocoRobo_classroom_kit.model.select_model";s.Msg.CocoRobo_AI2_NUMBER_DISCERN_MESSAGE0="手寫數字識別";s.Msg.CocoRobo_AI2_NUMBER_DISCERN_TOOLTIP="手寫數字識別";s.Msg.CocoRobo_AI_LCD_PIXEL_COLOUR_HELPURL="https://CocoRobo.readthedocs.io/zh/doc_CocoRobobox/CocoRobo_classroom_kit/lib/CocoRobo_classroom_kit.html?highlight=get_pixel#CocoRobo_classroom_kit.image.set_pixel";s.Msg.CocoRobo_AI_LCD_PIXEL_COLOUR_MESSAGE0="螢幕 x%1 y%2 顯示顏色 R%3 G%4 B%5";s.Msg.CocoRobo_AI_LCD_PIXEL_COLOUR_TOOLTIP="螢幕顯示顏色";s.Msg.CocoRobo_AI_LCD_COLOUR_HELPURL="https://CocoRobo.readthedocs.io/zh/doc_CocoRobobox/CocoRobo_classroom_kit/lib/CocoRobo_classroom_kit.html#CocoRobo_classroom_kit.lcd.clear";s.Msg.CocoRobo_AI_LCD_COLOUR_MESSAGE0="螢幕 初始化 顯示顏色 R%1 G%2 B%3";s.Msg.CocoRobo_AI_LCD_COLOUR_TOOLTIP="螢幕顯示顏色";s.Msg.CocoRobo_AI_SENSOR_PATTERN_HELPURL="https://CocoRobo.readthedocs.io/zh/doc_CocoRobobox/CocoRobo_classroom_kit/lib/CocoRobo_classroom_kit.html#CocoRobo_classroom_kit.camera.set_pixformat";s.Msg.CocoRobo_AI_SENSOR_PATTERN_MESSAGE0="攝像頭 初始化 點數模式 %1";s.Msg.CocoRobo_AI_SENSOR_PATTERN_TOOLTIP="用於設定攝像頭點數模式,有黑白和rgb彩色";s.Msg.CocoRobo_AI_TRACE_CILOR_DISPLAYTEN_HELPURL="";s.Msg.CocoRobo_AI_TRACE_CILOR_DISPLAYTEN_MESSAGE0="追跡色塊 顯示%1";s.Msg.CocoRobo_AI_TRACE_CILOR_DISPLAYTEN_TOOLTIP="";s.Msg.CocoRobo_AI2_FACE_TRACKING_HELPURL="https://CocoRobo.readthedocs.io/zh/doc_CocoRobobox/CocoRobo_classroom_kit/lib/CocoRobo_classroom_kit.html#CocoRobo_classroom_kit.model.select_model";s.Msg.CocoRobo_AI2_FACE_TRACKING_MESSAGE0="選擇訓練模型 人臉";s.Msg.CocoRobo_AI2_FACE_TRACKING_TOOLTIP="可以識別並且追蹤人臉,顯示人臉大小等";s.Msg.CocoRobo_AI2_PHOTOGRAPH_TRACKING_HELPURL="https://CocoRobo.readthedocs.io/zh/doc_CocoRobobox/CocoRobo_classroom_kit/lib/CocoRobo_classroom_kit.html#CocoRobo_classroom_kit.model.select_model";s.Msg.CocoRobo_AI2_PHOTOGRAPH_TRACKING_MESSAGE0="調用攝像頭進行 人臉檢測";s.Msg.CocoRobo_AI2_PHOTOGRAPH_TRACKING_TOOLTIP="調用攝像頭進行 人臉檢測";s.Msg.CocoRobo_AI2_RESULT_FACE_HELPURL="https://CocoRobo.readthedocs.io/zh/doc_CocoRobobox/CocoRobo_classroom_kit/lib/CocoRobo_classroom_kit.html#CocoRobo_classroom_kit.model.select_model";s.Msg.CocoRobo_AI2_RESULT_FACE_MESSAGE0="獲取識別後人臉的 所有參數";s.Msg.CocoRobo_AI2_RESULT_FACE_TOOLTIP="獲取識別後人臉的 所有參數";s.Msg.CocoRobo_AI2_RESULT_FACE_X_HELPURL="https://CocoRobo.readthedocs.io/zh/doc_CocoRobobox/CocoRobo_classroom_kit/lib/CocoRobo_classroom_kit.html#CocoRobo_classroom_kit.model.select_model";s.Msg.CocoRobo_AI2_RESULT_FACE_X_MESSAGE0="獲取識別後人臉的 x座標";s.Msg.CocoRobo_AI2_RESULT_FACE_X_TOOLTIP="獲取識別後人臉的 x座標";s.Msg.CocoRobo_AI2_RESULT_FACE_Y_HELPURL="https://CocoRobo.readthedocs.io/zh/doc_CocoRobobox/CocoRobo_classroom_kit/lib/CocoRobo_classroom_kit.html#CocoRobo_classroom_kit.model.select_model";s.Msg.CocoRobo_AI2_RESULT_FACE_Y_MESSAGE0="獲取識別後人臉的 y座標";s.Msg.CocoRobo_AI2_RESULT_FACE_Y_TOOLTIP="獲取識別後人臉的 y座標";s.Msg.CocoRobo_AI2_RESULT_FACE_W_HELPURL="https://CocoRobo.readthedocs.io/zh/doc_CocoRobobox/CocoRobo_classroom_kit/lib/CocoRobo_classroom_kit.html#CocoRobo_classroom_kit.model.select_model";s.Msg.CocoRobo_AI2_RESULT_FACE_W_MESSAGE0="獲取識別後人臉的 寬度";s.Msg.CocoRobo_AI2_RESULT_FACE_W_TOOLTIP="獲取識別後人臉的 寬度";s.Msg.CocoRobo_AI2_RESULT_FACE_H_HELPURL="https://CocoRobo.readthedocs.io/zh/doc_CocoRobobox/CocoRobo_classroom_kit/lib/CocoRobo_classroom_kit.html#CocoRobo_classroom_kit.model.select_model";s.Msg.CocoRobo_AI2_RESULT_FACE_H_MESSAGE0="獲取識別後人臉的 高度";s.Msg.CocoRobo_AI2_RESULT_FACE_H_TOOLTIP="獲取識別後人臉的 高度";s.Msg.CocoRobo_AI2_RESULT_FACE_VALUE_HELPURL="https://CocoRobo.readthedocs.io/zh/doc_CocoRobobox/CocoRobo_classroom_kit/lib/CocoRobo_classroom_kit.html#CocoRobo_classroom_kit.model.select_model";s.Msg.CocoRobo_AI2_RESULT_FACE_VALUE_MESSAGE0="獲取識別後人臉的 置信度";s.Msg.CocoRobo_AI2_RESULT_FACE_VALUE_TOOLTIP="獲取識別後人臉的 置信度";s.Msg.CocoRobo_AI2_RESULT_FACE_OBJNUM_HELPURL="https://CocoRobo.readthedocs.io/zh/doc_CocoRobobox/CocoRobo_classroom_kit/lib/CocoRobo_classroom_kit.html#CocoRobo_classroom_kit.model.select_model";s.Msg.CocoRobo_AI2_RESULT_FACE_OBJNUM_MESSAGE0="獲取識別後人臉的 數量";s.Msg.CocoRobo_AI2_RESULT_FACE_OBJNUM_TOOLTIP="獲取識別後人臉的 數量";s.Msg.CocoRobo_AI2_20class_TRACKING_HELPURL="https://CocoRobo.readthedocs.io/zh/doc_CocoRobobox/CocoRobo_classroom_kit/lib/CocoRobo_classroom_kit.html#CocoRobo_classroom_kit.model.select_model";s.Msg.CocoRobo_AI2_20class_TRACKING_MESSAGE0="選擇訓練模型 20類";s.Msg.CocoRobo_AI2_20class_TRACKING_TOOLTIP="可以識別20個類型,分別是0-19爲飛機,自行車,鳥,船,瓶子,公交車,汽車,貓,椅子,奶牛,餐桌,狗,屋子,摩托車,人,盆栽,羊,沙發,火車,電視";s.Msg.CocoRobo_AI2_PHOTOGRAPH_20TRACKING_HELPURL="https://CocoRobo.readthedocs.io/zh/doc_CocoRobobox/CocoRobo_classroom_kit/lib/CocoRobo_classroom_kit.html#CocoRobo_classroom_kit.model.select_model";s.Msg.CocoRobo_AI2_PHOTOGRAPH_20TRACKING_MESSAGE0="調用攝像頭進行 20類識別";s.Msg.CocoRobo_AI2_PHOTOGRAPH_20TRACKING_TOOLTIP="調用攝像頭進行 20類識別";s.Msg.CocoRobo_AI2_RESULT_20CLASS_HELPURL="https://CocoRobo.readthedocs.io/zh/doc_CocoRobobox/CocoRobo_classroom_kit/lib/CocoRobo_classroom_kit.html#CocoRobo_classroom_kit.model.select_model";s.Msg.CocoRobo_AI2_RESULT_20CLASS_MESSAGE0="獲取識別後20類的 所有參數";s.Msg.CocoRobo_AI2_RESULT_20CLASS_TOOLTIP="獲取識別後20類的 所有參數";s.Msg.CocoRobo_AI2_RESULT_20CLASS_X_HELPURL="https://CocoRobo.readthedocs.io/zh/doc_CocoRobobox/CocoRobo_classroom_kit/lib/CocoRobo_classroom_kit.html#CocoRobo_classroom_kit.model.select_model";s.Msg.CocoRobo_AI2_RESULT_20CLASS_X_MESSAGE0="獲取識別後20類的 x座標";s.Msg.CocoRobo_AI2_RESULT_20CLASS_X_TOOLTIP="獲取識別後20類的 x座標";s.Msg.CocoRobo_AI2_RESULT_20CLASS_Y_HELPURL="https://CocoRobo.readthedocs.io/zh/doc_CocoRobobox/CocoRobo_classroom_kit/lib/CocoRobo_classroom_kit.html#CocoRobo_classroom_kit.model.select_model";s.Msg.CocoRobo_AI2_RESULT_20CLASS_Y_MESSAGE0="獲取識別後20類的 y座標";s.Msg.CocoRobo_AI2_RESULT_20CLASS_Y_TOOLTIP="獲取識別後20類的 y座標";s.Msg.CocoRobo_AI2_RESULT_20CLASS_W_HELPURL="https://CocoRobo.readthedocs.io/zh/doc_CocoRobobox/CocoRobo_classroom_kit/lib/CocoRobo_classroom_kit.html#CocoRobo_classroom_kit.model.select_model";s.Msg.CocoRobo_AI2_RESULT_20CLASS_W_MESSAGE0="獲取識別後20類的 寬度";s.Msg.CocoRobo_AI2_RESULT_20CLASS_W_TOOLTIP="獲取識別後20類的 寬度";s.Msg.CocoRobo_AI2_RESULT_20CLASS_H_HELPURL="https://CocoRobo.readthedocs.io/zh/doc_CocoRobobox/CocoRobo_classroom_kit/lib/CocoRobo_classroom_kit.html#CocoRobo_classroom_kit.model.select_model";s.Msg.CocoRobo_AI2_RESULT_20CLASS_H_MESSAGE0="獲取識別後20類的 高度";s.Msg.CocoRobo_AI2_RESULT_20CLASS_H_TOOLTIP="獲取識別後20類的 高度";s.Msg.CocoRobo_AI2_RESULT_20CLASS_VALUE_HELPURL="https://CocoRobo.readthedocs.io/zh/doc_CocoRobobox/CocoRobo_classroom_kit/lib/CocoRobo_classroom_kit.html#CocoRobo_classroom_kit.model.select_model";s.Msg.CocoRobo_AI2_RESULT_20CLASS_VALUE_MESSAGE0="獲取識別後20類的 置信度";s.Msg.CocoRobo_AI2_RESULT_20CLASS_VALUE_TOOLTIP="獲取識別後20類的 置信度";s.Msg.CocoRobo_AI2_RESULT_20CLASS_OBJNUM_HELPURL="https://CocoRobo.readthedocs.io/zh/doc_CocoRobobox/CocoRobo_classroom_kit/lib/CocoRobo_classroom_kit.html#CocoRobo_classroom_kit.model.select_model";s.Msg.CocoRobo_AI2_RESULT_20CLASS_OBJNUM_MESSAGE0="獲取識別後20類的 數量";s.Msg.CocoRobo_AI2_RESULT_20CLASS_OBJNUM_TOOLTIP="獲取識別後20類的 數量";s.Msg.CocoRobo_AI2_RESULT_20CLASS_CLASSID_HELPURL="https://CocoRobo.readthedocs.io/zh/doc_CocoRobobox/CocoRobo_classroom_kit/lib/CocoRobo_classroom_kit.html#CocoRobo_classroom_kit.model.select_model";s.Msg.CocoRobo_AI2_RESULT_20CLASS_CLASSID_MESSAGE0="獲取識別後20類的 類型";s.Msg.CocoRobo_AI2_RESULT_20CLASS_CLASSID_TOOLTIP="可以識別20個類型,分別是0-19爲飛機,自行車,鳥,船,瓶子,公交車,汽車,貓,椅子,奶牛,餐桌,狗,屋子,摩托車,人,盆栽,羊,沙發,火車,電視";s.Msg.CocoRobo_AI2_RESULT_20CLASS_INDEX_HELPURL="https://CocoRobo.readthedocs.io/zh/doc_CocoRobobox/CocoRobo_classroom_kit/lib/CocoRobo_classroom_kit.html#CocoRobo_classroom_kit.model.select_model";s.Msg.CocoRobo_AI2_RESULT_20CLASS_INDEX_MESSAGE0="獲取識別後20類的 類型數量";s.Msg.CocoRobo_AI2_RESULT_20CLASS_INDEX_TOOLTIP="獲取識別後20類的 類型數量";s.Msg.CocoRobo_AI2_NUMBER_DISCERN_HELPURL="https://CocoRobo.readthedocs.io/zh/doc_CocoRobobox/CocoRobo_classroom_kit/lib/CocoRobo_classroom_kit.html#CocoRobo_classroom_kit.model.select_model";s.Msg.CocoRobo_AI2_NUMBER_DISCERN_MESSAGE0="選擇訓練模型 手寫數字";s.Msg.CocoRobo_AI2_NUMBER_DISCERN_TOOLTIP="選擇訓練模型 手寫數字";s.Msg.CocoRobo_AI2_RESULT_NUMBER_DISCERN_HELPURL="https://CocoRobo.readthedocs.io/zh/doc_CocoRobobox/CocoRobo_classroom_kit/lib/CocoRobo_classroom_kit.html#CocoRobo_classroom_kit.model.select_model";s.Msg.CocoRobo_AI2_RESULT_NUMBER_DISCERN_MESSAGE0="調用攝像頭進行 手寫數字識別";s.Msg.CocoRobo_AI2_RESULT_NUMBER_DISCERN_TOOLTIP="調用攝像頭進行 手寫數字識別";s.Msg.CocoRobo_AI2_NUMBER_DETECT_ALL_HELPURL="https://CocoRobo.readthedocs.io/zh/doc_CocoRobobox/CocoRobo_classroom_kit/lib/CocoRobo_classroom_kit.html#id2";s.Msg.CocoRobo_AI2_NUMBER_DETECT_ALL_MESSAGE0="獲取識別後手寫數字的 所有參數";s.Msg.CocoRobo_AI2_NUMBER_DETECT_ALL_TOOLTIP="獲取識別後手寫數字的 所有參數";s.Msg.CocoRobo_AI2_NUMBER_DETECT_NUMBER_HELPURL="https://CocoRobo.readthedocs.io/zh/doc_CocoRobobox/CocoRobo_classroom_kit/lib/CocoRobo_classroom_kit.html#id2";s.Msg.CocoRobo_AI2_NUMBER_DETECT_NUMBER_MESSAGE0="獲取識別後手寫數字的 數字";s.Msg.CocoRobo_AI2_NUMBER_DETECT_NUMBER_TOOLTIP="獲取識別後手寫數字的 數字";s.Msg.CocoRobo_AI2_NUMBER_DETECT_ADIENCE_HELPURL="https://CocoRobo.readthedocs.io/zh/doc_CocoRobobox/CocoRobo_classroom_kit/lib/CocoRobo_classroom_kit.html#id2";s.Msg.CocoRobo_AI2_NUMBER_DETECT_ADIENCE_MESSAGE0="獲取識別後手寫數字的 置信度";s.Msg.CocoRobo_AI2_NUMBER_DETECT_ADIENCE_TOOLTIP="獲取識別後手寫數字的 置信度";s.Msg.CocoRobo_AI_TRACE_COLOR_HELPURL="https://CocoRobo.readthedocs.io/zh/doc_CocoRobobox/CocoRobo_classroom_kit/lib/CocoRobo_classroom_kit.html#CocoRobo_classroom_kit.image.find_blobs";s.Msg.CocoRobo_AI_TRACE_COLOR_MESSAGE0="追蹤色塊 LAB顏色%1 邊界框小於%2 畫素小於%3 過濾";s.Msg.CocoRobo_AI_TRACE_COLOR_TOOLTIP="追蹤色塊";s.Msg.CocoRobo_AI_TRACE_CILOR_DISPLAYTEN_HELPURL="";s.Msg.CocoRobo_AI_TRACE_CILOR_DISPLAYTEN_MESSAGE0="追蹤色塊 顯示%1";s.Msg.CocoRobo_AI_TRACE_CILOR_DISPLAYTEN_TOOLTIP="";s.Msg.CocoRobo_AI_BLOB_ALL_HELPURL="https://CocoRobo.readthedocs.io/zh/doc_CocoRobobox/CocoRobo_classroom_kit/lib/CocoRobo_classroom_kit.html#blob";s.Msg.CocoRobo_AI_BLOB_ALL_MESSAGE0="獲取識別後色塊的 所有參數";s.Msg.CocoRobo_AI_BLOB_ALL_TOOLTIP="返回blob 類 -- 色塊對象";s.Msg.CocoRobo_AI_BLOB_X_HELPURL="https://CocoRobo.readthedocs.io/zh/doc_CocoRobobox/CocoRobo_classroom_kit/lib/CocoRobo_classroom_kit.html#blob";s.Msg.CocoRobo_AI_BLOB_X_MESSAGE0="獲取識別後色塊的 x座標";s.Msg.CocoRobo_AI_BLOB_X_TOOLTIP="返回blob 類 -- 色塊對象";s.Msg.CocoRobo_AI_BLOB_Y_HELPURL="https://CocoRobo.readthedocs.io/zh/doc_CocoRobobox/CocoRobo_classroom_kit/lib/CocoRobo_classroom_kit.html#blob";s.Msg.CocoRobo_AI_BLOB_Y_MESSAGE0="獲取識別後色塊的 y座標";s.Msg.CocoRobo_AI_BLOB_Y_TOOLTIP="返回blob 類 -- 色塊對象";s.Msg.CocoRobo_AI_BLOB_W_HELPURL="https://CocoRobo.readthedocs.io/zh/doc_CocoRobobox/CocoRobo_classroom_kit/lib/CocoRobo_classroom_kit.html#blob";s.Msg.CocoRobo_AI_BLOB_W_MESSAGE0="獲取識別後色塊的 寬度";s.Msg.CocoRobo_AI_BLOB_W_TOOLTIP="返回blob 類 -- 色塊對象";s.Msg.CocoRobo_AI_BLOB_H_HELPURL="https://CocoRobo.readthedocs.io/zh/doc_CocoRobobox/CocoRobo_classroom_kit/lib/CocoRobo_classroom_kit.html#blob";s.Msg.CocoRobo_AI_BLOB_H_MESSAGE0="獲取識別後色塊的 高度";s.Msg.CocoRobo_AI_BLOB_H_TOOLTIP="返回blob 類 -- 色塊對象";s.Msg.CocoRobo_AI_BLOB_NUMBER_HELPURL="https://CocoRobo.readthedocs.io/zh/doc_CocoRobobox/CocoRobo_classroom_kit/lib/CocoRobo_classroom_kit.html#blob";s.Msg.CocoRobo_AI_BLOB_NUMBER_MESSAGE0="獲取識別後色塊的 數量";s.Msg.CocoRobo_AI_BLOB_NUMBER_TOOLTIP="返回blob 類 -- 色塊對象";s.Msg.CocoRobo_AI_BLOB_CENTER_X_HELPURL="https://CocoRobo.readthedocs.io/zh/doc_CocoRobobox/CocoRobo_classroom_kit/lib/CocoRobo_classroom_kit.html#blob";s.Msg.CocoRobo_AI_BLOB_CENTER_X_MESSAGE0="獲取識別後色塊的 中心x座標";s.Msg.CocoRobo_AI_BLOB_CENTER_X_TOOLTIP="返回blob 類 -- 色塊對象";s.Msg.CocoRobo_AI_BLOB_CENTER_Y_HELPURL="https://CocoRobo.readthedocs.io/zh/doc_CocoRobobox/CocoRobo_classroom_kit/lib/CocoRobo_classroom_kit.html#blob";s.Msg.CocoRobo_AI_BLOB_CENTER_Y_MESSAGE0="獲取識別後色塊的 中心y座標";s.Msg.CocoRobo_AI_BLOB_CENTER_Y_TOOLTIP="返回blob 類 -- 色塊對象";s.Msg.CocoRobo_AI_BLOB_ORTHOGON_HELPURL="https://CocoRobo.readthedocs.io/zh/doc_CocoRobobox/CocoRobo_classroom_kit/lib/CocoRobo_classroom_kit.html#blob";s.Msg.CocoRobo_AI_BLOB_ORTHOGON_MESSAGE0="獲取識別後色塊的 矩形";s.Msg.CocoRobo_AI_BLOB_ORTHOGON_TOOLTIP="返回blob 類 -- 色塊對象";s.Msg.CocoRobo_DRILL_WEIGHT_MESSAGE0="初始化 訓練 %1";s.Msg.CocoRobo_DRILL_WEIGHT_TOOLTIP="";s.Msg.CocoRobo_DRILL_WEIGHT_HELPURL="";s.Msg.CocoRobo_DRILL_LINEAR_REGRESSION_HELPURL="";s.Msg.CocoRobo_DRILL_LINEAR_REGRESSION_MESSAGE0="實例化 線性迴歸直線";s.Msg.CocoRobo_DRILL_LINEAR_REGRESSION_TOOLTIP="";s.Msg.CocoRobo_DRILL_TITLE_HELPURL="";s.Msg.CocoRobo_DRILL_TITLE_MESSAGE0="標題%1 字號%2";s.Msg.CocoRobo_DRILL_TITLE_TOOLTIP="";s.Msg.CocoRobo_DRILL_LABEL_HELPURL="";s.Msg.CocoRobo_DRILL_LABEL_MESSAGE0="標籤%1 標題%2 字號%3";s.Msg.CocoRobo_DRILL_LABEL_TOOLTIP="";s.Msg.CocoRobo_DRILL_DRILL_REALITY_HELPURL="";s.Msg.CocoRobo_DRILL_DRILL_REALITY_MESSAGE0="真實數據 符號標記%1 顏色爲 r%2 g%3 b%4 標題%5";s.Msg.CocoRobo_DRILL_DRILL_REALITY_TOOLTIP="";s.Msg.CocoRobo_DRILL_PREDICTED_REALITY_HELPURL="";s.Msg.CocoRobo_DRILL_PREDICTED_REALITY_MESSAGE0="預測線性迴歸直線 符號標記%1 顏色爲 r%2 g%3 b%4 標題%5";s.Msg.CocoRobo_DRILL_PREDICTED_REALITY_TOOLTIP="";s.Msg.CocoRobo_DRILL_LEGEND_HELPURL="";s.Msg.CocoRobo_DRILL_LEGEND_MESSAGE0="展示圖例";s.Msg.CocoRobo_DRILL_LEGEND_TOOLTIP="";s.Msg.CocoRobo_DRILL_SHOW_HELPURL="";s.Msg.CocoRobo_DRILL_SHOW_MESSAGE0="顯示圖片";s.Msg.CocoRobo_DRILL_SHOW_TOOLTIP="";s.Msg.CocoRobo_DRILL_DRILL_PRINT_HELPURL="";s.Msg.CocoRobo_DRILL_DRILL_PRINT_MESSAGE0="返回對應鍵值%1";s.Msg.CocoRobo_DRILL_DRILL_PRINT_TOOLTIP="";s.Msg.CocoRobo_DRILL_DRILL_full_line="實線";s.Msg.CocoRobo_DRILL_DRILL_dash_line="破折線";s.Msg.CocoRobo_DRILL_DRILL_chain_line="點劃線";s.Msg.CocoRobo_DRILL_DRILL_imaginary_line="虛線";s.Msg.CocoRobo_DRILL_DRILL_dot="點";s.Msg.CocoRobo_DRILL_DRILL_pixel="畫素";s.Msg.CocoRobo_DRILL_DRILL_solid_rim="實心圈";s.Msg.CocoRobo_DRILL_DRILL_down_triangle="下三角";s.Msg.CocoRobo_DRILL_DRILL_up_triangle="上三角";s.Msg.CocoRobo_DRILL_DRILL_right_triangle="右三角";s.Msg.CocoRobo_DRILL_DRILL_left_triangle="左三角";s.Msg.CocoRobo_DRILL_DRILL_down_flower_triangle="下花三角";s.Msg.CocoRobo_DRILL_DRILL_up_flower_triangle="上花三角";s.Msg.CocoRobo_DRILL_DRILL_right_flower_triangle="右花三角";s.Msg.CocoRobo_DRILL_DRILL_left_flower_triangle="左花三角";s.Msg.CocoRobo_DRILL_DRILL_solid_square="實心方形";s.Msg.CocoRobo_DRILL_DRILL_solid_pentagon="實心五角";s.Msg.CocoRobo_DRILL_DRILL_star="星形";s.Msg.CocoRobo_DRILL_DRILL_vertical_hexagon="豎六邊形";s.Msg.CocoRobo_DRILL_DRILL_across_hexagon="橫六邊形";s.Msg.CocoRobo_DRILL_DRILL_cross="十字";s.Msg.CocoRobo_DRILL_DRILL_X="X";s.Msg.CocoRobo_DRILL_DRILL_rhombus="菱形";s.Msg.CocoRobo_DRILL_DRILL_thin_rhombus="瘦菱形";s.Msg.CocoRobo_DRILL_DRILL_vertical_line="垂直線";s.Msg.CocoRoboS_FLOWER_DE_LUCE_INITIALIZE_HELPURL="";s.Msg.CocoRoboS_FLOWER_DE_LUCE_INITIALIZE_MESSAGE0="初始化 鳶尾花數據集";s.Msg.CocoRoboS_FLOWER_DE_LUCE_INITIALIZE_TOOLTIP="採用Python的Sklearn機器學習庫中自帶的數據集——鳶尾花數據集。簡單分析數據集之間特徵的關係圖,根據花瓣長度,花瓣寬度,花萼長度,花萼寬度四個特徵進行繪圖虹膜植物數據集可以從龍骨數據集數據集網站獲取,也可以直接從Sklearn。數據集機器學習包得到。數據集共包含4個特徵變量,1個類別變量,共150個有樣本。類別變量分別對應鳶尾花的三個亞屬,分別是山鳶尾(Iris-setosa),變色鳶尾(Iris-versicolor)和維吉尼亞鳶尾(Iris-virginica)分別用(0,1,2)來做映射";s.Msg.CocoRoboS_FLOWER_DE_LUCE_PCA_HELPURL="";s.Msg.CocoRoboS_FLOWER_DE_LUCE_PCA_MESSAGE0="鳶尾花 主成分分析";s.Msg.CocoRoboS_FLOWER_DE_LUCE_PCA_TOOLTIP="";s.Msg.CocoRoboS_FLOWER_DE_LUCE_FA3D_HELPURL="";s.Msg.CocoRoboS_FLOWER_DE_LUCE_FA3D_MESSAGE0="鳶尾花 因子分析 3D";s.Msg.CocoRoboS_FLOWER_DE_LUCE_FA3D_TOOLTIP="";s.Msg.CocoRoboS_FLOWER_DE_LUCE_FA_HELPURL="";s.Msg.CocoRoboS_FLOWER_DE_LUCE_FA_MESSAGE0="鳶尾花 因子分析";s.Msg.CocoRoboS_FLOWER_DE_LUCE_FA_TOOLTIP="";s.Msg.CocoRoboS_FLOWER_DE_LUCE_PCA_DISPLAY_HELPURL="";s.Msg.CocoRoboS_FLOWER_DE_LUCE_PCA_DISPLAY_MESSAGE0="預測圖示 鳶尾花類型%1 呈現內容 x%3 y%4 呈現種類%2 顏色爲 r%5 g%6 b%7 標題%8 向上合併%9";s.Msg.CocoRoboS_FLOWER_DE_LUCE_PCA_DISPLAY_TOOLTIP="";s.Msg.CocoRoboS_FLOWER_DE_LUCE_DATA_HELPURL="";s.Msg.CocoRoboS_FLOWER_DE_LUCE_DATA_MESSAGE0="預測圖示 呈現內容 x%1 y%2 呈現種類%3 顏色爲 r%4 g%5 b%6 標題%7";s.Msg.CocoRoboS_FLOWER_DE_LUCE_DATA_TOOLTIP="";s.Msg.CocoRoboS_FLOWER_DE_LUCE_DATA3D_HELPURL="";s.Msg.CocoRoboS_FLOWER_DE_LUCE_DATA3D_MESSAGE0="3D 預測圖示 呈現內容 x朝向%1 y朝向%2 z朝向%3 顏色爲 r%4 g%5 b%6 標題%7";s.Msg.CocoRoboS_FLOWER_DE_LUCE_DATA3D_TOOLTIP="";s.Msg.CocoRoboS_FLOWER_DE_LUCE_TITLE_HELPURL="";s.Msg.CocoRoboS_FLOWER_DE_LUCE_TITLE_MESSAGE0="標題%1 字號%2";s.Msg.CocoRoboS_FLOWER_DE_LUCE_TITLE_TOOLTIP="";s.Msg.CocoRoboS_FLOWER_DE_LUCE_LABEL_HELPURL="";s.Msg.CocoRoboS_FLOWER_DE_LUCE_LABEL_MESSAGE0="標籤%1 標題%2 字號%3";s.Msg.CocoRoboS_FLOWER_DE_LUCE_LABEL_TOOLTIP="";s.Msg.CocoRoboS_FLOWER_DE_LUCE_TITLE3D_HELPURL="";s.Msg.CocoRoboS_FLOWER_DE_LUCE_TITLE3D_MESSAGE0="3D 標題%1 字號%2";s.Msg.CocoRoboS_FLOWER_DE_LUCE_TITLE3D_TOOLTIP="";s.Msg.CocoRoboS_FLOWER_DE_LUCE_LABEL3D_HELPURL="";s.Msg.CocoRoboS_FLOWER_DE_LUCE_LABEL3D_MESSAGE0="3D 標籤%1 標題%2 字號%3";s.Msg.CocoRoboS_FLOWER_DE_LUCE_LABEL3D_TOOLTIP="";s.Msg.CocoRoboS_FLOWER_DE_LUCE_LEGEND_HELPURL="";s.Msg.CocoRoboS_FLOWER_DE_LUCE_LEGEND_MESSAGE0="展示圖例";s.Msg.CocoRoboS_FLOWER_DE_LUCE_LEGEND_TOOLTIP="";s.Msg.CocoRoboS_FLOWER_DE_LUCE_SHOW_HELPURL="";s.Msg.CocoRoboS_FLOWER_DE_LUCE_SHOW_MESSAGE0="顯示圖片";s.Msg.CocoRoboS_FLOWER_DE_LUCE_SHOW_TOOLTIP="";s.Msg.CocoRoboS_FLOWER_DE_LUCE_LOAD_IRIS_HELPURL="";s.Msg.CocoRoboS_FLOWER_DE_LUCE_LOAD_IRIS_MESSAGE0="花萼和花瓣的x, y座標";s.Msg.CocoRoboS_FLOWER_DE_LUCE_LOAD_IRIS_TOOLTIP="共150條記錄,分別代表50條山鳶尾(Iris-setosa),變色鳶尾(Iris-versicolor),維吉尼亞鳶尾(Iris-virginica)";s.Msg.CocoRoboS_FLOWER_DE_LUCE_Iris_setosa="山鳶尾";s.Msg.CocoRoboS_FLOWER_DE_LUCE_Iris_versicolor="變色鳶尾";s.Msg.CocoRoboS_FLOWER_DE_LUCE_Iris_virginica="維吉尼亞鳶尾";s.Msg.CocoRoboS_FLOWER_DE_LUCE_scatter_diagram="散點圖";s.Msg.CocoRoboS_FLOWER_DE_LUCE_kde_diagram="kde圖";s.Msg.CocoRoboS_FLOWER_DE_LUCE_box_diagram="箱圖";s.Msg.CocoRoboS_FLOWER_DE_LUCE_merge="合並";s.Msg.CocoRoboS_FLOWER_DE_LUCE_not_merge="不合並";s.Msg.CocoRoboS_FLOWER_DE_LUCE_calyx_length="花萼長度";s.Msg.CocoRoboS_FLOWER_DE_LUCE_calyx_width="花萼寬度";s.Msg.CocoRoboS_FLOWER_DE_LUCE_petal_length="花瓣長度";s.Msg.CocoRoboS_FLOWER_DE_LUCE_petal_width="花瓣寬度";s.Msg.CocoRoboS_CONVERT_PICTURE_HELPURL="";s.Msg.CocoRoboS_CONVERT_PICTURE_MESSAGE0="將圖片轉換爲28²二值圖%1 待處理的圖片存儲路徑%2 處理後的圖片存儲路徑%3 格式%4";s.Msg.CocoRoboS_CONVERT_PICTURE_TOOLTIP="教科板透過串口把WIF傳給語音助手";s.Msg.CocoRoboS_NUMBER_REPERTOIRE_HELPURL="";s.Msg.CocoRoboS_NUMBER_REPERTOIRE_MESSAGE0="查找解析 手寫數字數 據存儲路徑%1";s.Msg.CocoRoboS_NUMBER_REPERTOIRE_TOOLTIP="使用手寫數字字元庫";s.Msg.CocoRoboS_SHOW_NUMBER_PATH_HELPURL="";s.Msg.CocoRoboS_SHOW_NUMBER_PATH_MESSAGE0="手寫數字圖像 存儲路徑%1";s.Msg.CocoRoboS_SHOW_NUMBER_PATH_TOOLTIP="";s.Msg.CocoRoboS_SHOW_NUMBER_HELPURL="";s.Msg.CocoRoboS_SHOW_NUMBER_MESSAGE0="顯示手寫數字圖像";s.Msg.CocoRoboS_SHOW_NUMBER_TOOLTIP="";s.Msg.CocoRoboS_NUMBER_RECOGNITION_HELPURL="";s.Msg.CocoRoboS_NUMBER_RECOGNITION_MESSAGE0="識別手寫數字圖像 存儲路徑%1";s.Msg.CocoRoboS_NUMBER_RECOGNITION_TOOLTIP="";s.Msg.CocoRoboS_NUMBER_PLACEHOLDER_HELPURL="";s.Msg.CocoRoboS_NUMBER_PLACEHOLDER_MESSAGE0="創建變量%1 初始化 神經網絡張量 變量名%2";s.Msg.CocoRoboS_NUMBER_PLACEHOLDER_TOOLTIP="";s.Msg.CocoRobo_DRILL_RESHAPE_MESSAGE0="創建變量%1 將輸入照片變量%2 轉換爲 神經網絡輸出張量%3";s.Msg.CocoRobo_DRILL_RESHAPE_TOOLTIP="";s.Msg.CocoRobo_DRILL_RESHAPE_HELPURL="";s.Msg.CocoRobo_NUMBER_CONV_WEIGHT_MESSAGE0="創建變量%1 共享變量%2 初始化模式%3";s.Msg.CocoRobo_NUMBER_CONV_WEIGHT_TOOLTIP="";s.Msg.CocoRobo_NUMBER_CONV_WEIGHT_HELPURL="";s.Msg.CocoRobo_NUMBER_INITIALIZER_MESSAGE0="產生截斷正態分佈隨機數 輸出張量%1 標準差%2";s.Msg.CocoRobo_NUMBER_INITIALIZER_TOOLTIP="";s.Msg.CocoRobo_NUMBER_INITIALIZER_HELPURL="";s.Msg.CocoRobo_NUMBER_CONSTANT_MESSAGE0="創建常量 數值%1 輸出張量%2";s.Msg.CocoRobo_NUMBER_CONSTANT_TOOLTIP="";s.Msg.CocoRobo_NUMBER_CONSTANT_HELPURL="";s.Msg.CocoRobo_NUMBER_CONV2D_MESSAGE0="神經網絡輸出張量%1 共享變量%2 長度%3 填充%4";s.Msg.CocoRobo_NUMBER_CONV2D_TOOLTIP="";s.Msg.CocoRobo_NUMBER_CONV2D_HELPURL="";s.Msg.CocoRobo_NUMBER_CONV_BIASES_MESSAGE0="張量%1";s.Msg.CocoRobo_NUMBER_CONV_BIASES_TOOLTIP="";s.Msg.CocoRobo_NUMBER_CONV_BIASES_HELPURL="";s.Msg.CocoRobo_NUMBER_CONV_CONV2D_MESSAGE0="卷積二維層 變量%1 %2";s.Msg.CocoRobo_NUMBER_CONV_CONV2D_TOOLTIP="";s.Msg.CocoRobo_NUMBER_CONV_CONV2D_HELPURL="";s.Msg.CocoRobo_NUMBER_RELU_MESSAGE0="創建變量%1 Relu正向激勵函數 卷積二維層%2";s.Msg.CocoRobo_NUMBER_RELU_TOOLTIP="";s.Msg.CocoRobo_NUMBER_RELU_HELPURL="";s.Msg.CocoRobo_NUMBER_MAX_POOL_MESSAGE0="池化二維層 變量%1 卷積層%2 池化窗口%3 長度%4 填充%5";s.Msg.CocoRobo_NUMBER_MAX_POOL_TOOLTIP="";s.Msg.CocoRobo_NUMBER_MAX_POOL_HELPURL="";s.Msg.CocoRobo_NUMBER_MATMUL_MESSAGE0="兩個參數的對應元素各自相乘 x%1 y%2";s.Msg.CocoRobo_NUMBER_MATMUL_TOOLTIP="";s.Msg.CocoRobo_NUMBER_MATMUL_HELPURL="";s.Msg.CocoRobo_NUMBER_ADD_MESSAGE0="全連接層 變量%1 兩個參數的元素相加 x%2 y%3";s.Msg.CocoRobo_NUMBER_ADD_TOOLTIP="";s.Msg.CocoRobo_NUMBER_ADD_HELPURL="";s.Msg.CocoRobo_NUMBER_SOFTMAX_MESSAGE0="創建變量%1 預測模型準確度 變量名%2";s.Msg.CocoRobo_NUMBER_SOFTMAX_TOOLTIP="";s.Msg.CocoRobo_NUMBER_SOFTMAX_HELPURL="";s.Msg.CocoRobo_NUMBER_REDUCE_MEAN_MESSAGE0="創建變量%1 損失函數%2";s.Msg.CocoRobo_NUMBER_REDUCE_MEAN_TOOLTIP="";s.Msg.CocoRobo_NUMBER_REDUCE_MEAN_HELPURL="";s.Msg.CocoRobo_NUMBER_LOG_MESSAGE0="自然對數 %1";s.Msg.CocoRobo_NUMBER_LOG_TOOLTIP="";s.Msg.CocoRobo_NUMBER_LOG_HELPURL="";s.Msg.CocoRobo_NUMBER_REDUCE_SUM_MESSAGE0="壓縮求和%1 維度%2";s.Msg.CocoRobo_NUMBER_REDUCE_SUM_TOOLTIP="因爲日誌函數是單調遞增的,所以logP (Y | X)也會達到最大值,因此在前面加上負號之後,最大化P (Y | X)就等價於最小化了。";s.Msg.CocoRobo_NUMBER_REDUCE_SUM_HELPURL="https://www.cnblogs.com/guoyaohua/p/9217206.html";s.Msg.CocoRobo_NUMBER_TRAIN_MESSAGE0="優化學習速率 %1";s.Msg.CocoRobo_NUMBER_TRAIN_TOOLTIP="";s.Msg.CocoRobo_NUMBER_TRAIN_HELPURL="";s.Msg.CocoRobo_NUMBER_MINIMIZE_MESSAGE0="創建變量%1 優化張量%2";s.Msg.CocoRobo_NUMBER_MINIMIZE_TOOLTIP="";s.Msg.CocoRobo_NUMBER_MINIMIZE_HELPURL="";s.Msg.CocoRobo_NUMBER_INIT_MESSAGE0="初始化模型 完成";s.Msg.CocoRobo_NUMBER_INIT_TOOLTIP="";s.Msg.CocoRobo_NUMBER_INIT_HELPURL="";s.Msg.CocoRobo_NUMBER_TRAIN_TEST_MESSAGE0="選擇 手寫數字集%1 數量%2";s.Msg.CocoRobo_NUMBER_TRAIN_TEST_TOOLTIP="";s.Msg.CocoRobo_NUMBER_TRAIN_TEST_HELPURL="";s.Msg.CocoRobo_NUMBER_SESSION_RUN_MESSAGE0="啓動數據流圖會話進行計算 會話%1 圖片%2 標籤%3";s.Msg.CocoRobo_NUMBER_SESSION_RUN_TOOLTIP="";s.Msg.CocoRobo_NUMBER_SESSION_RUN_HELPURL="";s.Msg.CocoRobo_NUMBER_SESSION_RUN2_MESSAGE0="啓動數據流圖會話進行計算 會話%1 圖片%2 標籤%3";s.Msg.CocoRobo_NUMBER_SESSION_RUN2_TOOLTIP="";s.Msg.CocoRobo_NUMBER_SESSION_RUN2_HELPURL="";s.Msg.CocoRobo_NUMBER_SESSION_RUN3_MESSAGE0="預測模型%1 擬合度%2 會話%3";s.Msg.CocoRobo_NUMBER_SESSION_RUN3_TOOLTIP="";s.Msg.CocoRobo_NUMBER_SESSION_RUN3_HELPURL="";s.Msg.CocoRobo_NUMBER_EQUAL_MESSAGE0="兩個張量的每壹維是否相等 x%1 y%2";s.Msg.CocoRobo_NUMBER_EQUAL_TOOLTIP="";s.Msg.CocoRobo_NUMBER_EQUAL_HELPURL="";s.Msg.CocoRobo_NUMBER_ARGMAX_MESSAGE0="張量%1 按%2比較返回最大值的索引";s.Msg.CocoRobo_NUMBER_ARGMAX_TOOLTIP="";s.Msg.CocoRobo_NUMBER_ARGMAX_HELPURL="";s.Msg.CocoRobo_NUMBER_CAST_MESSAGE0="轉爲浮點型 %1";s.Msg.CocoRobo_NUMBER_CAST_TOOLTIP="";s.Msg.CocoRobo_NUMBER_CAST_HELPURL="";s.Msg.CocoRoboS_NUMBER_SAVER_SAVE_HELPURL="";s.Msg.CocoRoboS_NUMBER_SAVER_SAVE_MESSAGE0="手寫數字識別模型 變量名%1 存儲路徑%2";s.Msg.CocoRoboS_NUMBER_SAVER_SAVE_TOOLTIP="MNIST手寫數字識別模型保存路徑";s.Msg.CocoRoboS_NUMBER_SAVER_RESTORE_HELPURL="";s.Msg.CocoRoboS_NUMBER_SAVER_RESTORE_MESSAGE0="加載模型%1 存儲路徑%2";s.Msg.CocoRoboS_NUMBER_SAVER_RESTORE_TOOLTIP="";s.Msg.CocoRoboS_NUMBER_SAME="包含邊界";s.Msg.CocoRoboS_NUMBER_VALID="不包含邊界";s.Msg.CocoRoboS_NUMBER_train="訓練";s.Msg.CocoRoboS_NUMBER_test="測試";s.Msg.CocoRoboS_NUMBER_row="欄";s.Msg.CocoRoboS_NUMBER_rank="列";s.Msg.CocoRoboS_FACE_RECOGNITION_CAMERA_HELPURL="";s.Msg.CocoRoboS_FACE_RECOGNITION_CAMERA_MESSAGE0="調用攝像頭 %1";s.Msg.CocoRoboS_FACE_RECOGNITION_CAMERA_TOOLTIP="調用筆記本內置攝像頭,所以參數爲0,如果有其他的攝像頭可以調整參數爲1,2";s.Msg.CocoRoboS_FACE_RECOGNITION_CAMERA_OFF_HELPURL="";s.Msg.CocoRoboS_FACE_RECOGNITION_CAMERA_OFF_MESSAGE0="關閉攝像頭";s.Msg.CocoRoboS_FACE_RECOGNITION_CAMERA_OFF_TOOLTIP="";s.Msg.CocoRoboS_FACE_RECOGNITION_WINDOWS_DELETE_HELPURL="";s.Msg.CocoRoboS_FACE_RECOGNITION_WINDOWS_DELETE_MESSAGE0="刪除所有窗口";s.Msg.CocoRoboS_FACE_RECOGNITION_WINDOWS_DELETE_TOOLTIP="";s.Msg.CocoRoboS_FACE_RECOGNITION_IMPORT_MODEL_SITE_HELPURL="";s.Msg.CocoRoboS_FACE_RECOGNITION_IMPORT_MODEL_SITE_MESSAGE0="加載模型 存儲路徑%1";s.Msg.CocoRoboS_FACE_RECOGNITION_IMPORT_MODEL_SITE_TOOLTIP="";s.Msg.CocoRoboS_FACE_RECOGNITION_READ_IMAGES_HELPURL="";s.Msg.CocoRoboS_FACE_RECOGNITION_READ_IMAGES_MESSAGE0="從攝像頭讀取圖片";s.Msg.CocoRoboS_FACE_RECOGNITION_READ_IMAGES_TOOLTIP="ret如果有讀取圖片就真的,否則假;第二個參數是框架,是當前截取壹幀的圖片。";s.Msg.CocoRoboS_FACE_RECOGNITION_GRAY_IMAGES_HELPURL="";s.Msg.CocoRoboS_FACE_RECOGNITION_GRAY_IMAGES_MESSAGE0="轉爲灰度圖片";s.Msg.CocoRoboS_FACE_RECOGNITION_GRAY_IMAGES_TOOLTIP="";s.Msg.CocoRoboS_FACE_RECOGNITION_DETECTION_FACES_HELPURL="";s.Msg.CocoRoboS_FACE_RECOGNITION_DETECTION_FACES_MESSAGE0="檢測人臉 每次圖像尺寸減小比例%1";s.Msg.CocoRoboS_FACE_RECOGNITION_DETECTION_FACES_TOOLTIP="";s.Msg.CocoRoboS_FACE_DISPLAY_RECOGNITION_ORTHOGON_HELPURL="";s.Msg.CocoRoboS_FACE_DISPLAY_RECOGNITION_ORTHOGON_MESSAGE0="人臉區域顯示矩形框 顏色爲 紅%1 綠%2 藍%3";s.Msg.CocoRoboS_FACE_DISPLAY_RECOGNITION_ORTHOGON_TOOLTIP="";s.Msg.CocoRoboS_FACE_RECOGNITIONR_PSTORAGE_PICTURE_HELPURL="";s.Msg.CocoRoboS_FACE_RECOGNITIONR_PSTORAGE_PICTURE_MESSAGE0="保存圖像 位置%1 ID%2 編號%3";s.Msg.CocoRoboS_FACE_RECOGNITIONR_PSTORAGE_PICTURE_TOOLTIP="";s.Msg.CocoRoboS_FACE_RECOGNITIONR_PRESERVE_PICTURE_HELPURL="";s.Msg.CocoRoboS_FACE_RECOGNITIONR_PRESERVE_PICTURE_MESSAGE0="窗口中顯示圖像 文件名%1";s.Msg.CocoRoboS_FACE_RECOGNITIONR_PRESERVE_PICTURE_TOOLTIP="";s.Msg.CocoRoboS_FACE_RECOGNITIONR_ESC_HELPURL="";s.Msg.CocoRoboS_FACE_RECOGNITIONR_ESC_MESSAGE0="透過esc鍵 退出";s.Msg.CocoRoboS_FACE_RECOGNITIONR_ESC_TOOLTIP="在窗口置頂時使用纔有效果";s.Msg.CocoRoboS_FACE_RECOGNITIONR_HELPURL="";s.Msg.CocoRoboS_FACE_RECOGNITIONR_MESSAGE0="獲得人臉在圖像中的座標值 人臉%1";s.Msg.CocoRoboS_FACE_RECOGNITIONR_TOOLTIP="";s.Msg.CocoRoboS_FACE_RECOGNITION_JUDGE_FACES_HELPURL="";s.Msg.CocoRoboS_FACE_RECOGNITION_JUDGE_FACES_MESSAGE0="是否讀取圖片";s.Msg.CocoRoboS_FACE_RECOGNITION_JUDGE_FACES_TOOLTIP="";s.Msg.CocoRoboS_FACE_RECOGNITION_JUDGE_CAMERA_HELPURL="";s.Msg.CocoRoboS_FACE_RECOGNITION_JUDGE_CAMERA_MESSAGE0="是否打開攝像頭";s.Msg.CocoRoboS_FACE_RECOGNITION_JUDGE_CAMERA_TOOLTIP="";s.Msg.CocoRoboS_FACE_RECOGNITION_ACQUIRE_ID_PICTURE_HELPURL="";s.Msg.CocoRoboS_FACE_RECOGNITION_ACQUIRE_ID_PICTURE_MESSAGE0="獲取照片及id 照片存儲路徑%1";s.Msg.CocoRoboS_FACE_RECOGNITION_ACQUIRE_ID_PICTURE_TOOLTIP="";s.Msg.CocoRoboS_FACE_RECOGNITION_INITIALIZE_TRANI_MODEL_HELPURL="";s.Msg.CocoRoboS_FACE_RECOGNITION_INITIALIZE_TRANI_MODEL_MESSAGE0="初始化訓練模型";s.Msg.CocoRoboS_FACE_RECOGNITION_INITIALIZE_TRANI_MODEL_TOOLTIP="";s.Msg.CocoRoboS_FACE_RECOGNITION_START_DRILL_HELPURL="";s.Msg.CocoRoboS_FACE_RECOGNITION_START_DRILL_MESSAGE0="開始訓練模型";s.Msg.CocoRoboS_FACE_RECOGNITION_START_DRILL_TOOLTIP="";s.Msg.CocoRoboS_FACE_RECOGNITION_STORAGE_DRILL_MODEL_HELPURL="";s.Msg.CocoRoboS_FACE_RECOGNITION_STORAGE_DRILL_MODEL_MESSAGE0="%1訓練模型 存儲路徑%2";s.Msg.CocoRoboS_FACE_RECOGNITION_STORAGE_DRILL_MODEL_TOOLTIP="";s.Msg.CocoRoboS_FACE_RECOGNITION_DRILL_NUMBERS_HELPURL="";s.Msg.CocoRoboS_FACE_RECOGNITION_DRILL_NUMBERS_MESSAGE0="人臉模型訓練 數目";s.Msg.CocoRoboS_FACE_RECOGNITION_DRILL_NUMBERS_TOOLTIP="";s.Msg.CocoRoboS_FACE_RECOGNITION_FONT_HELPURL="";s.Msg.CocoRoboS_FACE_RECOGNITION_FONT_MESSAGE0="窗口顯示 識別的名字%1 設置字體爲%2 顏色爲 紅%3 綠%4 藍%5";s.Msg.CocoRoboS_FACE_RECOGNITION_FONT_TOOLTIP="";s.Msg.CocoRoboS_FACE_RECOGNITION_PERCENT_HELPURL="";s.Msg.CocoRoboS_FACE_RECOGNITION_PERCENT_MESSAGE0="窗口顯示 識別的置信度%1 設置字體爲%2 顏色爲 紅%3 綠%4 藍%5";s.Msg.CocoRoboS_FACE_RECOGNITION_PERCENT_TOOLTIP="";s.Msg.CocoRoboS_FACE_RECOGNITION_FORECAST_FACE_INITIALIZE_HELPURL="";s.Msg.CocoRoboS_FACE_RECOGNITION_FORECAST_FACE_INITIALIZE_MESSAGE0="預測人臉 名字%1 置信度%2";s.Msg.CocoRoboS_FACE_RECOGNITION_FORECAST_FACE_INITIALIZE_TOOLTIP="";s.Msg.CocoRoboS_FACE_RECOGNITION_FORECAST_Write="寫入";s.Msg.CocoRoboS_FACE_RECOGNITION_FORECAST_Read="讀取";s.Msg.FIRST="首次";s.Msg.LAST="最後一次";s.Msg.CocoRobo_USOCKET_BLOCK="阻塞";s.Msg.CocoRobo_USOCKET_UNBLOCK="非阻塞";s.Msg.CocoRobo_USOCKET_SETSOCKOPT_HELPURL="http://docs.micropython.org/en/latest/library/usocket.html#usocket.socket";s.Msg.CocoRobo_USOCKET_SETSOCKOPT_MESSAGE0="設定socket %1 地址 %2 類型 %3";s.Msg.CocoRobo_USOCKET_SETSOCKOPT_TOOLTIP="設定給定通訊端選項的值。所需的符號常數在通訊端模組中定義(SO_ *等)。該值可以是整數或表示緩衝區的類位元組對象。";s.Msg.CocoRobo_USOCKET_READLINE_HELPURL="http://docs.micropython.org/en/latest/library/usocket.html#usocket.socket.accept";s.Msg.CocoRobo_USOCKET_READLINE_MESSAGE0="socket %1 接收壹欄數據,遇分欄符號結束並返回接收數據的對象";s.Msg.CocoRobo_USOCKET_READLINE_TOOLTIP="接收壹欄數據,遇分欄符號結束,並返回接收數據的對象";s.Msg.CocoRobo_USOCKET_READ_HELPURL="http://docs.micropython.org/en/latest/library/usocket.html#usocket.socket.read";s.Msg.CocoRobo_USOCKET_READ_MESSAGE0="從socket %1 讀取 %2 字節並返回字節對象";s.Msg.CocoRobo_USOCKET_READ_TOOLTIP="若未給定讀取數量 ,則按照類似 socket.readall() 的模式運行";s.Msg.CocoRobo_USOCKET_SETBLOCKING_HELPURL="http://docs.micropython.org/en/latest/library/usocket.html#usocket.socket.setblocking";s.Msg.CocoRobo_USOCKET_SETBLOCKING_MESSAGE0="設socket %1 為 %2 模式";s.Msg.CocoRobo_USOCKET_SETBLOCKING_TOOLTIP="";s.Msg.CocoRobo_USOCKET_SETTIMEOUT_HELPURL="http://docs.micropython.org/en/latest/library/usocket.html#usocket.socket.settimeout";s.Msg.CocoRobo_USOCKET_SETTIMEOUT_MESSAGE0="socket %1 設超時時間 %2 秒";s.Msg.CocoRobo_USOCKET_SETTIMEOUT_TOOLTIP="";s.Msg.CocoRobo_USOCKET_RECV_HELPURL="http://docs.micropython.org/en/latest/library/usocket.html#usocket.socket.recv";s.Msg.CocoRobo_USOCKET_RECV_MESSAGE0="socket %1 接收並返回接收到的數據對象 最大數據量為 %2";s.Msg.CocoRobo_USOCKET_RECV_TOOLTIP="";s.Msg.CocoRobo_USOCKET_RECVFROM_HELPURL="http://docs.micropython.org/en/latest/library/usocket.html#usocket.socket.recvfrom";s.Msg.CocoRobo_USOCKET_RECVFROM_MESSAGE0="socket %1 接收並返回接收到的數據元組 最大數據量為 %2";s.Msg.CocoRobo_USOCKET_RECVFROM_TOOLTIP="元組格式 (bytes, address)";s.Msg.CocoRobo_USOCKET_SENDALL_HELPURL="http://docs.micropython.org/en/latest/library/usocket.html#usocket.socket.send";s.Msg.CocoRobo_USOCKET_SENDALL_MESSAGE0="socket %1 連續發送%2 並返回發送的位元組數";s.Msg.CocoRobo_USOCKET_SENDALL_TOOLTIP="將所有數據發送到通訊端。通訊端必須連接到遠程通訊端。與send()此不同,此方法將嘗試透過連續發送數據塊來發送所有數據。";s.Msg.CocoRobo_USOCKET_SENDS_HELPURL="http://docs.micropython.org/en/latest/library/usocket.html#usocket.socket.send";s.Msg.CocoRobo_USOCKET_SENDS_MESSAGE0="socket %1 發送 %2 並返回發送的字節數";s.Msg.CocoRobo_USOCKET_SENDS_TOOLTIP="將數據發送到通訊端。通訊端必須連接到遠程通訊端。返回發送的位元組數,可能小於數據長度(“short write”)。";s.Msg.CocoRobo_USOCKET_SEND_HELPURL="http://docs.micropython.org/en/latest/library/usocket.html#usocket.socket.send";s.Msg.CocoRobo_USOCKET_SEND_MESSAGE0="socket %1 發送 %2 並返回發送的字節數";s.Msg.CocoRobo_USOCKET_SEND_TOOLTIP="Send data to the socket. The socket must be connected to a remote socket. Returns number of bytes sent, which may be smaller than the length of data (“short write”).";s.Msg.CocoRobo_TEXT_ESC_HELPURL="";s.Msg.CocoRobo_TEXT_ESC_MESSAGE0="文本轉義字元 %1 ";s.Msg.CocoRobo_TEXT_ESC_TOOLTIP="文本轉義字元";s.Msg.CocoRobo_USOCKET_SENDTO_HELPURL="http://docs.micropython.org/en/latest/library/usocket.html#usocket.socket.sendto";s.Msg.CocoRobo_USOCKET_SENDTO_MESSAGE0="socket %1 發送 %2 到地址 %3";s.Msg.CocoRobo_USOCKET_SENDTO_TOOLTIP="Send data to the socket. The socket should not be connected to a remote socket, since the destination socket is specified by address.";s.Msg.CocoRobo_USOCKET_CONNECT_HELPURL="http://docs.micropython.org/en/latest/library/usocket.html#usocket.socket.connect";s.Msg.CocoRobo_USOCKET_CONNECT_MESSAGE0="socket %1 連接 host %2 端口 %3";s.Msg.CocoRobo_USOCKET_CONNECT_TOOLTIP="";s.Msg.CocoRobo_USOCKET_GETADDRINFO_HELPURL="http://docs.micropython.org/en/latest/library/usocket.html#usocket.socket.getaddrinfo";s.Msg.CocoRobo_USOCKET_GETADDRINFO_MESSAGE0="解析 host %1 端口 %2 並返回 ip";s.Msg.CocoRobo_USOCKET_GETADDRINFO_TOOLTIP="需聯網";s.Msg.CocoRobo_USOCKET_ACCEPT_HELPURL="http://docs.micropython.org/en/latest/library/usocket.html#usocket.socket.accept";s.Msg.CocoRobo_USOCKET_ACCEPT_MESSAGE0="socket %1 接受連接請求並返回socket元組";s.Msg.CocoRobo_USOCKET_ACCEPT_TOOLTIP=`接收連接請求。socket需要指定地址並監聽連接。返回值是 (conn, address)。
- conn:新的socket對象,可以用來收發消息
- address:連接到服務器的客戶端地址`;s.Msg.CocoRobo_USOCKET_LISTEN_HELPURL="http://docs.micropython.org/en/latest/library/usocket.html#usocket.socket.listen";s.Msg.CocoRobo_USOCKET_LISTEN_MESSAGE0="監聽socket %1 backlog個數 %2";s.Msg.CocoRobo_USOCKET_LISTEN_TOOLTIP="backlog :接受套接字的最大個數,至少爲0,如果沒有指定,則默認一個合理值。";s.Msg.CocoRobo_USOCKET_BIND_HELPURL="http://docs.micropython.org/en/latest/library/usocket.html#usocket.socket.bind";s.Msg.CocoRobo_USOCKET_BIND_MESSAGE0="socket %1 綁定地址 %2 端口 %3";s.Msg.CocoRobo_USOCKET_BIND_TOOLTIP="";s.Msg.CocoRobo_USOCKET_CLOSE_HELPURL="http://docs.micropython.org/en/latest/library/usocket.html#usocket.socket.close";s.Msg.CocoRobo_USOCKET_CLOSE_MESSAGE0="socket %1 關閉";s.Msg.CocoRobo_USOCKET_CLOSE_TOOLTIP="";s.Msg.CocoRobo_USOCKET_INIT_HELPURL="http://docs.micropython.org/en/latest/library/usocket.html#usocket.socket";s.Msg.CocoRobo_USOCKET_INIT_MESSAGE0="創建 socket %1 地址 %2 類型 %3";s.Msg.CocoRobo_USOCKET_INIT_TOOLTIP=`AF_INET:=2 — TCP/IP – IPv4
- AF_INET6 :=10 — TCP/IP – IPv6
- SOCK_STREAM:=1 — TCP流
- SOCK_DGRAM:=2 — UDP數據報
- SOCK_RAW :=3 — 原始套接字
- SO_REUSEADDR : =4 — socket可重用
- `;s.Msg.CocoRobo_GET_POST_HELPURL="";s.Msg.CocoRobo_GET_POST_MESSAGE0="%1 請求網址 %2 提交字段 %3";s.Msg.CocoRobo_GET_POST_TOOLTIP="";s.Msg.CocoRobo_UREQUESTS_GET_POST_HELPURL="";s.Msg.CocoRobo_UREQUESTS_GET_POST_TOOLTIP="";s.Msg.CocoRobo_UREQUESTS_GET_POST_MESSAGE0="%1 請求網址 %2 提交字段 %3";s.Msg.CocoRobo_UREQUESTS_POST_FILE_HELPURL="";s.Msg.CocoRobo_UREQUESTS_POST_FILE_TOOLTIP="";s.Msg.CocoRobo_UREQUESTS_POST_FILE_MESSAGE0="Post 提交文件 %1 請求網址 %2 文件路徑 %3 Mime類型 %4 附加字段 %5";s.Msg.CocoRobo_RESPONSE_HELPURL="";s.Msg.CocoRobo_RESPONSE_MESSAGE0="響應內容 格式 %1";s.Msg.CocoRobo_RESPONSE_TOOLTIP="";s.Msg.STRING="字串";s.Msg._BYTE="二進制";s.Msg.TEXT="文本";s.Msg.CocoRobo_RESPONSE_ATTRIBUTE_HELPURL="";s.Msg.CocoRobo_RESPONSE_ATTRIBUTE_MESSAGE0="響應屬性 %1";s.Msg.CocoRobo_RESPONSE_ATTRIBUTE_TOOLTIP="";s.Msg.CocoRobo_SETS_PIN_MODE_HELPURL="https://CocoRobo.readthedocs.io/zh/master/board/hardware.html#CocoRobopindesc";s.Msg.CocoRobo_SETS_PIN_MODE_TOOLTIP="右鍵幫助,查看引腳宣告";s.Msg.CocoRobo_SETS_PIN_MODE_MESSAGE0="設置引腳 %1 為 %2 模式 %3 並設置值為 %4";s.Msg.CocoRobo_SET_PIN_IN="輸入";s.Msg.CocoRobo_SET_PIN_PUSH_PULL_OUT="推挽輸出";s.Msg.CocoRobo_SET_PIN_LEAKY_OUT="開漏輸出";s.Msg.CocoRobo_SET_PIN_NO_PULL="無上下拉";s.Msg.CocoRobo_SET_PIN_DOWN_PULL="下拉";s.Msg.CocoRobo_SET_PIN_UP_PULL="上拉";s.Msg.CocoRobo_LOCK_OBJECT_ACQUIRE_LOCK_HELPURL="";s.Msg.CocoRobo_LOCK_OBJECT_ACQUIRE_LOCK_MESSAGE0="綫程鎖對象 %1 請求鎖";s.Msg.CocoRobo_LOCK_OBJECT_ACQUIRE_LOCK_TOOLTIP="";s.Msg.CocoRobo_START_NEW_THREAD_HELPURL="";s.Msg.CocoRobo_START_NEW_THREAD_MESSAGE0="子綫程 %1";s.Msg.CocoRobo_START_NEW_THREAD_TOOLTIP="";s.Msg.CocoRobo_UART_INIT_HELPURL="";s.Msg.CocoRobo_UART_INIT_MESSAGE0="串口 %4 初始化 波特率 %1 tx %2 rx %3";s.Msg.CocoRobo_UART_INIT_TOOLTIP="教科板支持3組串口。0用於REPL,剩下1,2兩組串口可用。所有引腳皆可作爲串口的輸入RX,除 P2、P3 、P4 、P10 只能作爲輸出,其餘所有的引腳理論上都可作爲輸出 TX。";s.Msg.CocoRobo_UART_DEINIT_HELPURL="";s.Msg.CocoRobo_UART_DEINIT_MESSAGE0="關閉串口 %1";s.Msg.CocoRobo_UART_DEINIT_TOOLTIP="關閉 UART 總線";s.Msg.CocoRobo_UART_WRITE_STR_HELPURL="";s.Msg.CocoRobo_UART_WRITE_STR_MESSAGE0="串口 %1 寫入文本 %2 %3";s.Msg.CocoRobo_UART_WRITE_STR_TOOLTIP=`將文本寫入總線。
- 返回值:寫入或 None 超時的字節數。`;s.Msg.CocoRobo_UART_WRITE_HEX_HELPURL="";s.Msg.CocoRobo_UART_WRITE_HEX_MESSAGE0="串口 %1 發送16進制字串 %2 %3";s.Msg.CocoRobo_UART_WRITE_HEX_TOOLTIP="";s.Msg.CocoRobo_UART_HAS_DATA_HELPURL="";s.Msg.CocoRobo_UART_HAS_DATA_MESSAGE0="串口 %1 有可讀數據";s.Msg.CocoRobo_UART_HAS_DATA_TOOLTIP=`返回一個整數,計算可以無阻塞地讀取的字元數。
- 如果沒有可用字元,它將返回0,如果有字元,則返回正數。
- 即使有多個可讀的字元,該方法也可以返回1。`;s.Msg.CocoRobo_UART_READLINE_HELPURL="";s.Msg.CocoRobo_UART_READLINE_MESSAGE0="串口 %1 讀取壹欄數據";s.Msg.CocoRobo_UART_READLINE_TOOLTIP=`讀壹欄,以換欄符結尾。
- 返回值:讀取欄或 None 超時。`;s.Msg.CocoRobo_UART_READ_HELPURL="";s.Msg.CocoRobo_UART_READ_MESSAGE0="串口 %1 讀取數據";s.Msg.CocoRobo_UART_READ_TOOLTIP=`讀取盡可能多的串口數據
- 返回值:包含讀入字節的字節陣列。若讀取超時則返回 None。`;s.Msg.CocoRobo_UART_READ_LENGTH_HELPURL="";s.Msg.CocoRobo_UART_READ_LENGTH_MESSAGE0="串口 %1 讀取數據 長度 %2";s.Msg.CocoRobo_UART_READ_LENGTH_TOOLTIP=`讀取指定長度字節數據
- 返回值:包含讀入字節的字節陣列。若讀取超時則返回 None。`;s.Msg.CocoRobo_UART_WRITE_BYTE_HELPURL="";s.Msg.CocoRobo_UART_WRITE_BYTE_MESSAGE0="串口 %1 寫入單字節 %2";s.Msg.CocoRobo_UART_WRITE_BYTE_TOOLTIP=`參數為 0~255 的整數
- 將字節寫入總線。
- 返回值:寫入或 None 超時的字節數。`;s.Msg.CocoRobo_UART_WRITE_BYTES_HELPURL="";s.Msg.CocoRobo_UART_WRITE_BYTES_MESSAGE0="串口 %1 寫入字節陣列 %2";s.Msg.CocoRobo_UART_WRITE_BYTES_TOOLTIP=`將字節陣列寫入總線。
- 返回值:寫入或 None 超時的字節數。`;s.Msg.TEXT_FORMAT_MESSAGE0="格式化字串 %1 % %2";s.Msg.TEXT_FORMAT_TOOLTIP='使用"%"的方式格式化字元串,並返回結果';s.Msg.TEXT_FORMAT_HELPURL="";s.Msg.TEXT_FORMAT2_MESSAGE0="格式化字串 %1 format %2";s.Msg.TEXT_FORMAT2_TOOLTIP='使用"format"的方式格式化字元串,並返回結果';s.Msg.TEXT_FORMAT2_HELPURL="";s.Msg.CocoRobo_BAUDRATE_HELPURL="";s.Msg.CocoRobo_BAUDRATE_MESSAGE0="%1";s.Msg.CocoRobo_BAUDRATE_TOOLTIP="";s.Msg.CocoRobo_HIGH_LOW_HELPURL="";s.Msg.CocoRobo_HIGH_LOW_MESSAGE0="%1";s.Msg.CocoRobo_HIGH_LOW_TOOLTIP="";s.Msg.CocoRobo_TEN_CONVERT_TO_HELPURL="";s.Msg.CocoRobo_TEN_CONVERT_TO_MESSAGE0="10進制整數 %1 轉化為 %2 字串";s.Msg.CocoRobo_TEN_CONVERT_TO_TOOLTIP="將10進制整數轉化爲%2字元串,並返回結果";s.Msg.CocoRobo_BIN="二進制";s.Msg.CocoRobo_OCT="八進制";s.Msg.CocoRobo_HEX="十六進制";s.Msg.CocoRobo_CONVERT_TO_TEN_HELPURL="";s.Msg.CocoRobo_CONVERT_TO_TEN_MESSAGE0="%1 字串 %2 轉 10進制整數";s.Msg.CocoRobo_CONVERT_TO_TEN_TOOLTIP="將%2字元串轉化爲10進制整數,並返回結果";s.Msg.CocoRobo_TEN_CONVERTED_TO_BYTES_HELPURL="";s.Msg.CocoRobo_TEN_CONVERTED_TO_BYTES_MESSAGE0="10進制整數 %2 轉 %1 字節";s.Msg.CocoRobo_TEN_CONVERTED_TO_BYTES_TOOLTIP="將10進制整數轉爲%1字節,並返回結果";s.Msg.CocoRobo_INT_TO_CHR_HELPURL="";s.Msg.CocoRobo_INT_TO_CHR_MESSAGE0="整型 %1 轉 ASCII 單字元";s.Msg.CocoRobo_INT_TO_CHR_TOOLTIP="ASCII:基於拉丁字母的壹套電腦編碼系統,主要用於顯示現代英語和其他西歐語言";s.Msg.CocoRobo_CHR_TO_INT_HELPURL="";s.Msg.CocoRobo_CHR_TO_INT_MESSAGE0="ASCII 單字元 %1 轉 整型";s.Msg.CocoRobo_CHR_TO_INT_TOOLTIP="ASCII:基於拉丁字母的壹套電腦編碼系統,主要用於顯示現代英語和其他西歐語言。";s.Msg.CocoRobo_STR_TO_HEX_HELPURL="";s.Msg.CocoRobo_STR_TO_HEX_MESSAGE0="字串 %1 轉 十六進制 字節";s.Msg.CocoRobo_STR_TO_HEX_TOOLTIP="返回結果中用空格分隔兩個十六進制數";s.Msg.CocoRobo_HEX_TO_BIN_STR_HELPURL="";s.Msg.CocoRobo_HEX_TO_BIN_STR_MESSAGE0="十六進制字串 %1 轉 二進制 字節";s.Msg.CocoRobo_HEX_TO_BIN_STR_TOOLTIP="十六進制字元串轉二進制字節,並返回結果";s.Msg.CocoRobo_DATA_TO_BASE64_HELPURL="";s.Msg.CocoRobo_DATA_TO_BASE64_MESSAGE0="%1 以 base64 格式編碼 返回字節對象";s.Msg.CocoRobo_DATA_TO_BASE64_TOOLTIP="";s.Msg.CocoRobo_BASE64_TO_DATA_HELPURL="";s.Msg.CocoRobo_BASE64_TO_DATA_MESSAGE0="解碼 base64 數據 %1 返回字節對象";s.Msg.CocoRobo_BASE64_TO_DATA_TOOLTIP="";s.Msg.CocoRobo_UJSON_DUMPS_HELPURL="";s.Msg.CocoRobo_UJSON_DUMPS_MESSAGE0="%1 轉 json 字串";s.Msg.CocoRobo_UJSON_DUMPS_TOOLTIP="JSON 格式的 key 必須是字串 ,value 可以是合法的 JSON 數據類型(字串, 數字, 對象, 陣列, 布爾值或 none)";s.Msg.CocoRobo_UJSON_LOADS_HELPURL="";s.Msg.CocoRobo_UJSON_LOADS_MESSAGE0="解析 json 字串 %1 返回對象";s.Msg.CocoRobo_UJSON_LOADS_TOOLTIP="JSON 格式的 key 必須是字串 ,value 可以是合法的 JSON 數據類型(字串, 數字, 對象, 陣列, 布爾值或 none)";s.Msg.CocoRobo_code_annotation_HELPURL="";s.Msg.CocoRobo_code_annotation_MESSAGE0="註釋 # %1";s.Msg.CocoRobo_code_annotation_TOOLTIP="生成代碼註釋";s.Msg.CocoRobo_BLYNK_TERMINAL_WIDGET_VPIN_HELPURL="";s.Msg.CocoRobo_BLYNK_TERMINAL_WIDGET_VPIN_MESSAGE0="自定義終端部件 Terminal 虛擬管腳 V %1";s.Msg.CocoRobo_BLYNK_TERMINAL_WIDGET_VPIN_TOOLTIP="";s.Msg.CocoRobo_BLYNK_SYNC_VIRTUAL_HELPURL="";s.Msg.CocoRobo_BLYNK_SYNC_VIRTUAL_MESSAGE0="同步虛擬管腳狀態 V %1";s.Msg.CocoRobo_BLYNK_SYNC_VIRTUAL_TOOLTIP="";s.Msg.CocoRobo_BLYNK_ON_DISCONNECTED_HELPURL="";s.Msg.CocoRobo_BLYNK_ON_DISCONNECTED_MESSAGE0="當 Blynk 斷開連接時";s.Msg.CocoRobo_BLYNK_ON_DISCONNECTED_TOOLTIP="";s.Msg.CocoRobo_BLYNK_ON_CONNECTED_HELPURL="";s.Msg.CocoRobo_BLYNK_ON_CONNECTED_MESSAGE0="當 Blynk 連接時";s.Msg.CocoRobo_BLYNK_ON_CONNECTED_TOOLTIP="";s.Msg.CocoRobo_BLYNKTIMER_RUN_HELPURL="";s.Msg.CocoRobo_BLYNKTIMER_RUN_MESSAGE0="運行 Blynk 定時器進程";s.Msg.CocoRobo_BLYNKTIMER_RUN_TOOLTIP="建議放在 '一直重複' 中循環執行";s.Msg.CocoRobo_BLYNK_RUN_HELPURL="";s.Msg.CocoRobo_BLYNK_RUN_MESSAGE0="運行 Blynk 進程";s.Msg.CocoRobo_BLYNK_RUN_TOOLTIP="建議放在 '一直重複' 中循環執行";s.Msg.CocoRobo_BLYNK_APP_NOTIFY_HELPURL="";s.Msg.CocoRobo_BLYNK_APP_NOTIFY_MESSAGE0="Blynk APP 顯示通知 %1";s.Msg.CocoRobo_BLYNK_APP_NOTIFY_TOOLTIP="";s.Msg.CocoRobo_BLYNKTIMER_HELPURL="";s.Msg.CocoRobo_BLYNKTIMER_MESSAGE0="Blynk 定時器 %1 %2 周期 %3 秒";s.Msg.CocoRobo_BLYNKTIMER_TOOLTIP=`註意:
- 定時器序號為自動獲取,自上而下,從0開始且連續,不可"定時器0,定時器2",此處暴露參數為方便查看!
- 參數:
- no_timers_err=False - 如果所有定時器都停止,禁用異常觸發`;s.Msg.CocoRobo_BLYNK_GET_TIMERS_HELPURL="";s.Msg.CocoRobo_BLYNK_GET_TIMERS_MESSAGE0="可用的 Blynk 定時器";s.Msg.CocoRobo_BLYNK_GET_TIMERS_TOOLTIP="";s.Msg.CocoRobo_BLYNK_STOP_TIMERS_HELPURL="";s.Msg.CocoRobo_BLYNK_STOP_TIMERS_MESSAGE0="停止 Blynk 定時器 %1";s.Msg.CocoRobo_BLYNK_STOP_TIMERS_TOOLTIP=`註意:
- 定時器序號為自動獲取,自上而下,從0開始且連續,不可"定時器0,定時器2",此處暴露參數為方便查看!
- 參數:
- no_timers_err=False - 如果所有定時器都停止,禁用異常觸發`;s.Msg.CocoRobo_UART_INPUT_HELPURL="";s.Msg.CocoRobo_UART_INPUT_MESSAGE0="從串口獲取文本 提示語句 %1";s.Msg.CocoRobo_UART_INPUT_TOOLTIP="";s.Msg.INT_TO_CHR_HELPURL="";s.Msg.INT_TO_CHR_MESSAGE0="整數 %1 轉 ASCII 單字元";s.Msg.INT_TO_CHR_TOOLTIP="";s.Msg.CocoRobo_BLYNK_SET_PROPERTY_HELPURL="";s.Msg.CocoRobo_BLYNK_SET_PROPERTY_MESSAGE0="給虛擬管腳添加 屬性 %1 值 %2";s.Msg.CocoRobo_BLYNK_SET_PROPERTY_TOOLTIP="放於 read 或 write 事件中,虛擬管腳由事件決定,與該管腳綁定的組件會擁有添加的屬性";s.Msg.CocoRobo_BLYNK_EMAIL_HELPURL="";s.Msg.CocoRobo_BLYNK_EMAIL_MESSAGE0="向預設郵箱發郵件 %1 主題 %2 正文 %3";s.Msg.CocoRobo_BLYNK_EMAIL_TOOLTIP="";s.Msg.CocoRobo_BLYNK_SENSOR_DATA_TO_APP_HELPURL="";s.Msg.CocoRobo_BLYNK_SENSOR_DATA_TO_APP_MESSAGE0="發送數據 %1 到 Blynk APP 的 虛擬管腳 V %2";s.Msg.CocoRobo_BLYNK_SENSOR_DATA_TO_APP_TOOLTIP="虛擬管腳:V0 ~ V255";s.Msg.CocoRobo_BLYNK_SETUP_HELPURL="";s.Msg.CocoRobo_BLYNK_SETUP_MESSAGE0="Blynk 設置 %1 服務器 %2 端口 %3 授權碼 %4";s.Msg.CocoRobo_BLYNK_SETUP_TOOLTIP=`服務器可填 blynk-cloud.com 或者 blynk.cocorobo.hk
- 默認端口為 8080
- 註意:手機APP訪問端口為 9443`;s.Msg.CocoRobo_BLYNK_APP_DATA_HELPURL="";s.Msg.CocoRobo_BLYNK_APP_DATA_MESSAGE0="當 從 Blynk APP 收到 虛擬管腳 V %1 的值 %2 時";s.Msg.CocoRobo_BLYNK_APP_DATA_TOOLTIP="虛擬管腳:V0 ~ V255";s.Msg.CocoRobo_ONENET_DISCONNECT_MESSAGE0="OneNET 斷開連接";s.Msg.CocoRobo_ONENET_DISCONNECT_TOOLTIP="";s.Msg.CocoRobo_ONENET_DISCONNECT_HELPURL="";s.Msg.CocoRobo_ONENET_RECV_MESSAGE0="當 從 OneNET 收到消息 %1 時";s.Msg.CocoRobo_ONENET_RECV_TOOLTIP="";s.Msg.CocoRobo_ONENET_RECV_HELPURL="";s.Msg.CocoRobo_ONENET_RECV_MSG_MESSAGE0="當 從 OneNET 收到特定消息 %1 時";s.Msg.CocoRobo_ONENET_RECV_MSG_TOOLTIP="";s.Msg.CocoRobo_ONENET_RECV_MSG_HELPURL="";s.Msg.CocoRobo_ONENET_PUB_VALUE_MESSAGE0="向 OneNET 發送數據流 名稱 %1 值 %2";s.Msg.CocoRobo_ONENET_PUB_VALUE_TOOLTIP="";s.Msg.CocoRobo_ONENET_PUB_VALUE_HELPURL="";s.Msg.CocoRobo_ONENET_PUB_DICT_MESSAGE0="向 OneNET 發送數據流 %1";s.Msg.CocoRobo_ONENET_PUB_DICT_TOOLTIP="";s.Msg.CocoRobo_ONENET_PUB_DICT_HELPURL="";s.Msg.CocoRobo_ONENET_PUB_VALUE2_MESSAGE0="向 小程序 發送數據流 名稱 %1 值 %2";s.Msg.CocoRobo_ONENET_PUB_VALUE2_TOOLTIP="";s.Msg.CocoRobo_ONENET_PUB_VALUE2_HELPURL="";s.Msg.CocoRobo_HCSR04_DISTANCE_HELPURL="https://CocoRobo-lib.readthedocs.io/zh/master/hcsr04/index.html#hcsr04";s.Msg.CocoRobo_HCSR04_DISTANCE_MESSAGE0="%1 hcsr04 超聲波距離 測量單位 %2";s.Msg.CocoRobo_HCSR04_DISTANCE_TOOLTIP="";s.Msg.CocoRobo_HCSR04_DISTANCE_MM_HELPURL="https://CocoRobo-lib.readthedocs.io/zh/master/hcsr04/index.html#hcsr04";s.Msg.CocoRobo_HCSR04_DISTANCE_MM_MESSAGE0="%1 hcsr04 超聲波(mm)";s.Msg.CocoRobo_HCSR04_DISTANCE_MM_TOOLTIP="";s.Msg.CocoRobo_HCSR04_OBJ_HELPURL="https://CocoRobo-lib.readthedocs.io/zh/master/hcsr04/index.html#hcsr04";s.Msg.CocoRobo_HCSR04_OBJ_MESSAGE0="hcsr04 超聲波初始化 名稱 %1 trigger %2 echo %3";s.Msg.CocoRobo_HCSR04_OBJ_TOOLTIP="";s.Msg.CocoRobo_PM2_5_MIC_HELPURL="";s.Msg.CocoRobo_PM2_5_MIC_MESSAGE0="rx引腳%1 PM值濃度%2";s.Msg.CocoRobo_PM2_5_MIC_TOOLTIP="";s.Msg.CocoRobo_PM2_5_LitresAir_HELPURL="";s.Msg.CocoRobo_PM2_5_LitresAir_MESSAGE0="rx引腳%1 0.1昇空氣中直徑在%2 顆颗物個數";s.Msg.CocoRobo_PM2_5_LitresAir_TOOLTIP="";s.Msg.CocoRobo_IR_REMOTE_RECV_MESSAGE0="紅外接收 %1 回調地址 %2 回調命令 %3";s.Msg.CocoRobo_IR_REMOTE_RECV_HELPURL="";s.Msg.CocoRobo_IR_REMOTE_RECV_TOOLTIP="";s.Msg.CocoRobo_IR_REMOTE_SEND_MESSAGE0="紅外發送 %1 地址 %2 命令 %3";s.Msg.CocoRobo_IR_REMOTE_SEND_HELPURL="";s.Msg.CocoRobo_IR_REMOTE_SEND_TOOLTIP="";s.Msg.CocoRobo_ONENET_ACCEPT_MESSAGE="收到消息";s.Msg.CocoRobo_ONENET="OneNET 設置";s.Msg.CocoRobo_ONENET_WECHAT_APP="小程序 設置";s.Msg.CocoRobo_ONENET_OPTION_BOARDS="可選教科板";s.Msg.CocoRobo_ONENET_TITLE="OneNET";s.Msg.CocoRobo_SERVER="服務器";s.Msg.CocoRobo_DEVICE_ID="設備ID";s.Msg.CocoRobo_PRODUCT_ID="產品ID";s.Msg.CocoRobo_API_KEY="產品APIKey";s.Msg.CocoRobo_ONENET_CALLBACK="回調函數";s.Msg.CocoRobo_TOPIC="主題";s.Msg.CocoRobo_ONENET_CALLBACK_TITLE="OneNET回調函數";s.Msg.CocoRobo_ONENET_OPTION_BOARDS_HELPURL="";s.Msg.CocoRobo_ONENET_OPTION_BOARDS_MESSAGE0="小程序 選擇教科板應用 %1";s.Msg.CocoRobo_ONENET_OPTION_BOARDS_TOOLTIP="";s.Msg.TEXT_TO_BYTE_MESSAGE0="轉字節 %1";s.Msg.TEXT_TO_BYTE_TOOLTIP="支持數據類型:string";s.Msg.TEXT_TO_BYTE_HELPURL="";s.Msg.OTHER_TO_BYTE_MESSAGE0="非文本轉字節 %1";s.Msg.OTHER_TO_BYTE_TOOLTIP="";s.Msg.OTHER_TO_BYTE_HELPURL="";s.Msg.CocoRobo_BYTES_DECODE_HELPURL="";s.Msg.CocoRobo_BYTES_DECODE_MESSAGE0="字節 %1 轉 字串";s.Msg.CocoRobo_BYTES_DECODE_TOOLTIP="返回指定字節轉字串的結果";s.Msg.CocoRobo_ONENET_TOOLTIP="創建OneNET連接";s.Msg.CocoRobo_ONENET_INIT_WIFI_MESSAGE0="物聯網 確保連接到 Wi-Fi 名稱 %1 密碼 %2";s.Msg.CocoRobo_ONENET_INIT_WIFI_TOOLTIP="";s.Msg.CocoRobo_ONENET_INIT_WIFI_HELPURL="";s.Msg.CocoRobo_ONENET_RECV_FROM_WECHAT_APP_HELPURL="";s.Msg.CocoRobo_ONENET_RECV_FROM_WECHAT_APP_MESSAGE0="儅從小程序收到消息 %1 和 %2 時";s.Msg.CocoRobo_ONENET_RECV_FROM_WECHAT_APP_TOOLTIP="";s.Msg.CocoRobo_MAC_ADDRESS_HELPURL="";s.Msg.CocoRobo_MAC_ADDRESS_MESSAGE0="MAC 地址";s.Msg.CocoRobo_MAC_ADDRESS_TOOLTIP="";s.Msg.CocoRobo_RADIO_REC_HELPURL="";s.Msg.CocoRobo_RADIO_REC_MESSAGE0="無綫廣播 接收消息";s.Msg.CocoRobo_RADIO_REC_TOOLTIP="所接收為字節型";s.Msg.CocoRobo_RADIO_SEND_HELPURL="";s.Msg.CocoRobo_RADIO_SEND_MESSAGE0="無綫廣播 發送 %1";s.Msg.CocoRobo_RADIO_SEND_TOOLTIP="頻道: 1~13";s.Msg.CocoRobo_RADIO_CHANNEL_HELPURL="";s.Msg.CocoRobo_RADIO_CHANNEL_MESSAGE0="設無綫廣播 頻道為 %1";s.Msg.CocoRobo_RADIO_CHANNEL_TOOLTIP="頻道: 1~13";s.Msg.CocoRobo_RADIO_ON_OFF_HELPURL="";s.Msg.CocoRobo_RADIO_ON_OFF_MESSAGE0="%1 無綫廣播";s.Msg.CocoRobo_RADIO_ON_OFF_TOOLTIP="頻道: 1~13";s.Msg.CocoRobo_RADIO_RECV_MESSAGE0="當 收到無線廣播消息 %1 時";s.Msg.CocoRobo_RADIO_RECV_TOOLTIP="頻道: 1~13";s.Msg.CocoRobo_RADIO_RECV_HELPURL="";s.Msg.CocoRobo_RADIO_RECV_MSG_MESSAGE0="當 收到特定無線廣播消息 %1 時";s.Msg.CocoRobo_RADIO_RECV_MSG_TOOLTIP="頻道: 1~13";s.Msg.CocoRobo_RADIO_RECV_MSG_HELPURL="";s.Msg.CocoRobo_AUDIO_SET_VOLUME_HELPURL="";s.Msg.CocoRobo_AUDIO_SET_VOLUME_MESSAGE0="設音頻音量 %1";s.Msg.CocoRobo_AUDIO_SET_VOLUME_TOOLTIP="";s.Msg.CocoRobo_DISPCHAR_MODE_1="普通";s.Msg.CocoRobo_DISPCHAR_MODE_2="反轉";s.Msg.CocoRobo_DISPCHAR_MODE_3="透明";s.Msg.CocoRobo_AUDIO_XUNFEI_TTS_HELPURL="";s.Msg.CocoRobo_AUDIO_XUNFEI_TTS_MESSAGE0="TTS 語音播放 %1";s.Msg.CocoRobo_AUDIO_XUNFEI_TTS_TOOLTIP="需要在 訊飛開放平臺 www.xfyun.cn 上開通“在線語音合成”服務";s.Msg.CocoRobo_AUDIO_XUNFEI_TTS_CONFIG_HELPURL="https://CocoRobo.readthedocs.io/zh/master/extboard/tutorials/tutorials_parrot.html#id3";s.Msg.CocoRobo_AUDIO_XUNFEI_TTS_CONFIG_MESSAGE0="TTS 語音配置 APPID %1 APIKey %2";s.Msg.CocoRobo_AUDIO_XUNFEI_TTS_CONFIG_TOOLTIP=`輸入在 訊飛開放平臺 www.xfyun.cn 獲取的 APPID 與 APIKey
- 註意:要設置IP白名單`;s.Msg.CocoRobo_AUDIO_PLAY_HELPURL="";s.Msg.CocoRobo_AUDIO_PLAY_MESSAGE0="音頻 播放 %1";s.Msg.CocoRobo_AUDIO_PLAY_TOOLTIP=`需要有源音箱
- P8 左聲道
- P9 右聲道
- GND 接地
- 播放參數:
- 網絡 MP3 的 url 或已上載至教科板的 MP3, 如'music_1.mp3' `;s.Msg.CocoRobo_AUDIO_DEINIT_HELPURL="";s.Msg.CocoRobo_AUDIO_DEINIT_MESSAGE0="音頻 釋放緩存";s.Msg.CocoRobo_AUDIO_DEINIT_TOOLTIP="";s.Msg.CocoRobo_AUDIO_CMD_HELPURL="";s.Msg.CocoRobo_AUDIO_CMD_MESSAGE0="音頻 %1";s.Msg.CocoRobo_AUDIO_CMD_TOOLTIP="";s.Msg.CocoRobo_AUDIO_INIT_HELPURL="";s.Msg.CocoRobo_AUDIO_INIT_MESSAGE0="音頻 初始化";s.Msg.CocoRobo_AUDIO_INIT_TOOLTIP="為音頻解碼開闢緩存";s.Msg.CocoRobo_RECORD_INIT_HELPURL="";s.Msg.CocoRobo_RECORD_INIT_MESSAGE0="測試 -- 錄音 初始化";s.Msg.CocoRobo_RECORD_INIT_TOOLTIP=`錄音初始化。
- 此功能測試中,需要教科板v1.1以上硬件版本。`;s.Msg.CocoRobo_RECORD_DEINIT_HELPURL="";s.Msg.CocoRobo_RECORD_DEINIT_MESSAGE0="測試 -- 錄音 釋放資源";s.Msg.CocoRobo_RECORD_DEINIT_TOOLTIP=`錄音結束後釋放資源。
- 此功能測試中,需要教科板v1.1以上硬件版本。`;s.Msg.CocoRobo_RECORD_WAV_HELPURL="";s.Msg.CocoRobo_RECORD_WAV_MESSAGE0="測試 -- 錄制音頻 存儲路徑 %1 時長 %2 秒";s.Msg.CocoRobo_RECORD_WAV_TOOLTIP=`錄制音頻,並以 WAV 格式存儲。
- 此功能測試中,需要教科板v1.1以上硬件版本。`;s.Msg.CocoRobo_ASR_HELPURL="";s.Msg.CocoRobo_ASR_MESSAGE0="測試 -- 識別語音,並返回結果";s.Msg.CocoRobo_ASR_TOOLTIP=`語音指令需要在2秒內完成。
- 此功能測試中,需要教科板v1.1以上硬件版本。`;s.Msg.CocoRobo_HELPURL="https://CocoRobox.readthedocs.io/zh_CN/latest/CocoRoboX.html";s.Msg.CocoRobo_button_A="P5(按鍵A)";s.Msg.CocoRobo_button_B="P11(按鍵B)";s.Msg.CocoRobo_PIN7_RGB="P7(板載RGB)";s.Msg.CocoRobo_PWM_PIN_P7="P7 (教科板)";s.Msg.CocoRobo_PWM_PIN_P9="P9 (掌控實驗箱)";s.Msg.CocoRobo_tem="溫度";s.Msg.CocoRobo_hum="濕度";s.Msg.CocoRobo_pre="氣壓";s.Msg.CocoRobo_left_right="左右";s.Msg.CocoRobo_LEFT="左";s.Msg.CocoRobo_RIGHT="右";s.Msg.CocoRobo_front_back="前後";s.Msg.CocoRobo_vertical="垂直";s.Msg.CocoRobo_horizontal="水平";s.Msg.CocoRobo_run_in_back="後臺運行";s.Msg.CocoRobo_run_in_front="前臺運行";s.Msg.CocoRobo_draw="繪制";s.Msg.CocoRobo_clear="清除";s.Msg.CocoRobo_s="秒";s.Msg.CocoRobo_ms="毫秒";s.Msg.CocoRobo_us="微秒";s.Msg.CocoRobo_year="年";s.Msg.CocoRobo_month="月";s.Msg.CocoRobo_date="日";s.Msg.CocoRobo_hour="時";s.Msg.CocoRobo_minute="分";s.Msg.CocoRobo_week="星期數";s.Msg.CocoRobo_days="天數";s.Msg.CocoRobo_ORDER="第";s.Msg.CocoRobo_REVERSE_ORDER="倒數第";s.Msg.MATH_RANDOM_RANDRANGE_HELPURL="https://CocoRobox.readthedocs.io/zh_CN/latest/CocoRoboX.html";s.Msg.MATH_RANDOM_RANDRANGE_TOOLTIP="返回指定遞增基數集合中的一個隨機數,基數缺省值為1";s.Msg.MATH_RANDOM_RANDRANGE_MESSAGE0="隨機數 從遞增區間 [%1 ,%2) 遞增長度%3";s.Msg.MATH_KEEP_DECIMAL_HELPURL="";s.Msg.MATH_KEEP_DECIMAL_TOOLTIP="返回指定值保留小數點的結果";s.Msg.MATH_KEEP_DECIMAL_MESSAGE0="%1 保留 %2 位小數";s.Msg.CocoRobo_MIN="最小值";s.Msg.CocoRobo_MAX="最大值";s.Msg.CocoRobo_LENTH="長度";s.Msg.TUPLE_MIN_MAX_LEN_HELPURL="https://CocoRobox.readthedocs.io/zh_CN/latest/CocoRoboX.html";s.Msg.TUPLE_MIN_MAX_LEN_TOOLTIP="返回元組的%2";s.Msg.TUPLE_MIN_MAX_LEN_MESSAGE0="元組 %1 %2";s.Msg.TUPLE_ITEM_EXIST_HELPURL="https://CocoRobox.readthedocs.io/zh_CN/latest/CocoRoboX.html";s.Msg.TUPLE_ITEM_EXIST_TOOLTIP="判斷是否包含指定值,並返回True或False";s.Msg.TUPLE_ITEM_EXIST_MESSAGE0="元組%1 包含%2";s.Msg.LIST_ITEM_EXIST_HELPURL="https://CocoRobox.readthedocs.io/zh_CN/latest/CocoRoboX.html";s.Msg.LIST_ITEM_EXIST_TOOLTIP="陣列包含特定的字串";s.Msg.LIST_ITEM_EXIST_MESSAGE0="陣列%1 包含%2";s.Msg.PARTS_OF_TUPLE_HELPURL="https://CocoRobox.readthedocs.io/zh_CN/latest/CocoRoboX.html";s.Msg.PARTS_OF_TUPLE_TOOLTIP="正序計數從0開始,倒序計數從1開始";s.Msg.PARTS_OF_TUPLE_MESSAGE0="返回元組%1 取第%2 項到尾項";s.Msg.PARTS_OF_TUPLE2_HELPURL="https://CocoRobox.readthedocs.io/zh_CN/latest/CocoRoboX.html";s.Msg.PARTS_OF_TUPLE2_TOOLTIP=`遞增順序取項
- 舉例:
- 倒數第5到倒數第2;
- 第0到第5`;s.Msg.PARTS_OF_TUPLE2_MESSAGE0="返回元組%1 取%2 %3 項到 %4 %5 項";s.Msg.PARTS_OF_LIST_HELPURL="https://CocoRobox.readthedocs.io/zh_CN/latest/CocoRoboX.html";s.Msg.PARTS_OF_LIST_TOOLTIP=`遞增順序取項
- 舉例:
- 倒數第5到倒數第2;
- 第0到第5`;s.Msg.PARTS_OF_LIST_MESSAGE0="返回陣列%1 取%2 %3 項到 %4 %5 項";s.Msg.LIST_TO_TUPLE_HELPURL="https://CocoRobox.readthedocs.io/zh_CN/latest/CocoRoboX.html";s.Msg.LIST_TO_TUPLE_TOOLTIP="陣列轉元組";s.Msg.LIST_TO_TUPLE_MESSAGE0="陣列%1 轉元組";s.Msg.tuple_create_with_MESSAGE0="定義元組 %1 = %2 ";s.Msg.tuple_create_with_TOOLTIP="只包含一個元素時,需要在元素後面添加逗號";s.Msg.tuple_create_with_HELPURL="https://CocoRobox.readthedocs.io/zh_CN/latest/CocoRoboX.html";s.Msg.tuple_order_item_MESSAGE0="元組%1 %2 %3 項";s.Msg.tuple_order_item_TOOLTIP="正序計數從0開始,倒序計數從1開始";s.Msg.tuple_order_item_HELPURL="https://CocoRobox.readthedocs.io/zh_CN/latest/CocoRoboX.html";s.Msg.LIST_ORDER_ITEM_MESSAGE0="陣列%1 %2 %3 項";s.Msg.LIST_ORDER_ITEM_TOOLTIP="正序計數從0開始,倒序計數從1開始";s.Msg.LIST_ORDER_ITEM_HELPURL="https://CocoRobox.readthedocs.io/zh_CN/latest/CocoRoboX.html";s.Msg.SET_LIST_ORDER_ITEM_MESSAGE0="設陣列%1 %2 %3 項為%4";s.Msg.SET_LIST_ORDER_ITEM_TOOLTIP="正序計數從0開始,倒序計數從1開始";s.Msg.SET_LIST_ORDER_ITEM_HELPURL="https://CocoRobox.readthedocs.io/zh_CN/latest/CocoRoboX.html";s.Msg.INSERT_LIST_ORDER_ITEM_MESSAGE0="插入陣列%1 %2 %3 項為%4";s.Msg.INSERT_LIST_ORDER_ITEM_TOOLTIP="正序計數從0開始,倒序計數從1開始";s.Msg.INSERT_LIST_ORDER_ITEM_HELPURL="https://CocoRobox.readthedocs.io/zh_CN/latest/CocoRoboX.html";s.Msg.SET_TUPLE_ORDER_ITEM_MESSAGE0="設元組%1 %2 %3 項為%4";s.Msg.SET_TUPLE_ORDER_ITEM_TOOLTIP="正序計數從0開始,倒序計數從1開始";s.Msg.SET_TUPLE_ORDER_ITEM_HELPURL="https://CocoRobox.readthedocs.io/zh_CN/latest/CocoRoboX.html";s.Msg.DICT_CREATE_WITH_HELPURL="https://CocoRobox.readthedocs.io/zh_CN/latest/CocoRoboX.html";s.Msg.DICT_CREATE_WITH_TOOLTIP="定義一個字典";s.Msg.DICT_CREATE_WITH_MESSAGE0="定義字典 %1 = %2";s.Msg.SET_CREATE_WITH_HELPURL="https://CocoRobox.readthedocs.io/zh_CN/latest/CocoRoboX.html";s.Msg.SET_CREATE_WITH_TOOLTIP="定義集合";s.Msg.SET_CREATE_WITH_MESSAGE0="定義集合 %1 = %2";s.Msg.SET_UPDATE_WITH_HELPURL="https://CocoRobox.readthedocs.io/zh_CN/latest/CocoRoboX.html";s.Msg.SET_UPDATE_WITH_TOOLTIP="添加參數可為字串、陣列、元組、集合、字典(只添加key),已有元素則不進行操作";s.Msg.SET_UPDATE_WITH_MESSAGE0="集合 %1 添加 %2";s.Msg.INTERSECTION_OF_SETS_HELPURL="https://CocoRobox.readthedocs.io/zh_CN/latest/CocoRoboX.html";s.Msg.INTERSECTION_OF_SETS_TOOLTIP="返回兩集合的%1";s.Msg.INTERSECTION_OF_SETS_MESSAGE0="取 %1 集合 %2 集合 %3";s.Msg.CocoRobo_INTERSECTION="交集";s.Msg.CocoRobo_UNION="並集";s.Msg.CocoRobo_DIFFERENCE="差集";s.Msg.SETS_UPDATE_WAYS_HELPURL="https://CocoRobox.readthedocs.io/zh_CN/latest/CocoRoboX.html";s.Msg.SETS_UPDATE_WAYS_TOOLTIP="集合更新爲與指定集合的%3";s.Msg.SETS_UPDATE_WAYS_MESSAGE0="集合 %1 更新為 與集合 %2 的 %3";s.Msg.SUBSET_SUPERSET_HELPURL="https://CocoRobox.readthedocs.io/zh_CN/latest/CocoRoboX.html";s.Msg.SUBSET_SUPERSET_TOOLTIP="集合爲集合的%3";s.Msg.SUBSET_SUPERSET_MESSAGE0="集合 %1 為集合 %2 的 %3";s.Msg.CocoRobo_SUBSET="子集";s.Msg.CocoRobo_SUPERSET="超集";s.Msg.LEN_OF_SETS_HELPURL="https://CocoRobox.readthedocs.io/zh_CN/latest/CocoRoboX.html";s.Msg.LEN_OF_SETS_TOOLTIP="返回指定集合的長度";s.Msg.LEN_OF_SETS_MESSAGE0="集合 %1 長度";s.Msg.GET_SETS_POP_HELPURL="https://CocoRobox.readthedocs.io/zh_CN/latest/CocoRoboX.html";s.Msg.GET_SETS_POP_TOOLTIP="返回移除隨機項後的集合";s.Msg.GET_SETS_POP_MESSAGE0="返回隨機項並移除之 從集合 %1";s.Msg.CREATE_EMPTY_SET_HELPURL="https://CocoRobox.readthedocs.io/zh_CN/latest/CocoRoboX.html";s.Msg.CREATE_EMPTY_SET_TOOLTIP="";s.Msg.CREATE_EMPTY_SET_MESSAGE0="創建空集合 %1";s.Msg.BIT_INVERSION_HELPURL="https://CocoRobox.readthedocs.io/zh_CN/latest/CocoRoboX.html";s.Msg.BIT_INVERSION_TOOLTIP="對數據的每個二進制位取反";s.Msg.BIT_INVERSION_MESSAGE0="二進制取反 %1";s.Msg.TUPLE_CREATE_WITH_ITEMS_INSERT_HELPURL="https://CocoRobox.readthedocs.io/zh_CN/latest/CocoRoboX.html";s.Msg.TUPLE_CREATE_WITH_ITEMS_INSERT_TOOLTIP="正序計數從0開始,倒序計數從1開始";s.Msg.SET_CREATE_WITH_ITEMS_INSERT_HELPURL="https://CocoRobox.readthedocs.io/zh_CN/latest/CocoRoboX.html";s.Msg.SET_CREATE_WITH_ITEMS_INSERT_TOOLTIP="項可為字串、已賦值變量、元組";s.Msg.DICT_CREATE_WITH_ITEMS_INSERT_HELPURL="https://CocoRobox.readthedocs.io/zh_CN/latest/CocoRoboX.html";s.Msg.DICT_CREATE_WITH_ITEMS_INSERT_TOOLTIP="初始化字典";s.Msg.DICT_KEY_VALUE_HELPURL="https://CocoRobox.readthedocs.io/zh_CN/latest/CocoRoboX.html";s.Msg.DICT_KEY_VALUE_TOOLTIP="返回字典指定鍵的值";s.Msg.DICT_KEY_VALUE_MESSAGE0="字典%1 鍵%2 的值";s.Msg.ADD_DICT_KEY_VALUE_HELPURL="https://CocoRobox.readthedocs.io/zh_CN/latest/CocoRoboX.html";s.Msg.ADD_DICT_KEY_VALUE_TOOLTIP="已有該鍵則更新該鍵";s.Msg.ADD_DICT_KEY_VALUE_MESSAGE0="字典%1 添加鍵%2 值%3";s.Msg.DICT_LENGTH_HELPURL="https://CocoRobox.readthedocs.io/zh_CN/latest/CocoRoboX.html";s.Msg.DICT_LENGTH_TOOLTIP="返回字典的長度";s.Msg.DICT_LENGTH_MESSAGE0="字典%1 長度";s.Msg.DICT_KEY_EXIST_HELPURL="https://CocoRobox.readthedocs.io/zh_CN/latest/CocoRoboX.html";s.Msg.DICT_KEY_EXIST_TOOLTIP="判斷字典中是否包含指定鍵,並返回True或False";s.Msg.DICT_KEY_EXIST_MESSAGE0="字典%1 包含鍵%2";s.Msg.DICT_KEY_OR_VAL_LIST_HELPURL="https://CocoRobox.readthedocs.io/zh_CN/latest/CocoRoboX.html";s.Msg.DICT_KEY_OR_VAL_LIST_TOOLTIP="返回字典%2的陣列";s.Msg.DICT_KEY_OR_VAL_LIST_MESSAGE0="字典%1 %2的陣列";s.Msg.DICT_KEYS="鍵";s.Msg.DICT_VALUES="值";s.Msg.CocoRobo_lists_append_MESSAGE0="陣列%1 末尾添加項%2";s.Msg.CocoRobo_lists_append_TOOLTIP="陣列末尾添加項";s.Msg.CocoRobo_lists_append_HELPURL="https://CocoRobox.readthedocs.io/zh_CN/latest/CocoRoboX.html";s.Msg.CocoRobo_lists_extend_MESSAGE0="陣列%1 追加陣列%2";s.Msg.CocoRobo_lists_extend_TOOLTIP="在陣列中追加陣列";s.Msg.CocoRobo_lists_extend_HELPURL="https://CocoRobox.readthedocs.io/zh_CN/latest/CocoRoboX.html";s.Msg.CocoRobo_lists_clear_MESSAGE0="陣列%1 清空";s.Msg.CocoRobo_lists_clear_TOOLTIP="清空陣列";s.Msg.CocoRobo_lists_clear_HELPURL="https://CocoRobox.readthedocs.io/zh_CN/latest/CocoRoboX.html";s.Msg.CocoRobo_Timer_value_MESSAGE0="定時器 %1 的計數值";s.Msg.CocoRobo_Timer_value_TOOLTIP="獲取並返回計時器當前計數值";s.Msg.CocoRobo_Timer_deinit_MESSAGE0="清除 定時器/事件 %1";s.Msg.CocoRobo_Timer_deinit_TOOLTIP="取消定時器的初始化。停止計時器,並禁用計時器外圍設備";s.Msg.CocoRobo_Interrupt_AB_HELPURL="https://CocoRobo.readthedocs.io/zh/latest/tutorials/basics/buttons.html#id3";s.Msg.CocoRobo_Interrupt_AB_TOOLTIP="";s.Msg.CocoRobo_Interrupt_AB_MESSAGE0="當按鍵 %1 被 %2 時";s.Msg.CocoRobo_Interrupt_pin_HELPURL="https://CocoRobo.readthedocs.io/zh/latest/tutorials/basics/io/digital_io.html#id3";s.Msg.CocoRobo_Interrupt_pin_TOOLTIP="上升沿觸發:由低電平到高電平;下降沿觸發:由高電平到低電平";s.Msg.CocoRobo_Interrupt_pin_MESSAGE0="當引腳 %1 電位 %2 時";s.Msg.CocoRobo_Interrupt_pin_IRQ_FALLING="↘ 從高到低";s.Msg.CocoRobo_Interrupt_pin_IRQ_RISING="↗ 從低到高";s.Msg.CocoRobo_IRQ_FALLING="按下";s.Msg.CocoRobo_IRQ_RISING="松開";s.Msg.CocoRobo_PERIODIC="重複執行";s.Msg.CocoRobo_ONE_SHOT="延時執行";s.Msg.CocoRobo_IS_SHAKED_MESSAGE0="教科板 %1";s.Msg.CocoRobo_IS_SHAKED_HELPURL="";s.Msg.CocoRobo_IS_SHAKED_TOOLTIP="";s.Msg.CocoRobo_IS_SHAKED="被搖晃";s.Msg.CocoRobo_IS_THROWN="被拋起";s.Msg.CocoRobo_SHAKE_DETECTOR_MESSAGE0="當教科板 %1 時";s.Msg.CocoRobo_SHAKE_DETECTOR_HELPURL="";s.Msg.CocoRobo_SHAKE_DETECTOR_TOOLTIP="";s.Msg.CocoRobo_IS_TILTED_MESSAGE0="教科板 %1";s.Msg.CocoRobo_IS_TILTED_HELPURL="";s.Msg.CocoRobo_IS_TILTED_TOOLTIP="";s.Msg.CocoRobo_TILT_DETECTOR_MESSAGE0="當教科板 %1 時";s.Msg.CocoRobo_TILT_DETECTOR_HELPURL="";s.Msg.CocoRobo_TILT_DETECTOR_TOOLTIP="";s.Msg.CocoRobo_DIRECTION_FORWARD="向前傾斜";s.Msg.CocoRobo_DIRECTION_BACK="向後傾斜";s.Msg.CocoRobo_DIRECTION_RIGHT="向右傾斜";s.Msg.CocoRobo_DIRECTION_LEFT="向左傾斜";s.Msg.CocoRobo_DIRECTION_NONE="平放";s.Msg.CocoRobo_TOUCH_EVENT_MESSAGE0="當觸摸鍵 %1 被 %2 時";s.Msg.CocoRobo_TOUCH_EVENT_HELPURL="";s.Msg.CocoRobo_TOUCH_EVENT_TOOLTIP="";s.Msg.CocoRobo_TOUCH_EVENT_PRESSED="觸摸";s.Msg.CocoRobo_TOUCH_EVENT_UNPRESSED="釋放";s.Msg.CocoRobo_CUSTOM_EVENT_MESSAGE0="事件 %1 : 當 %2 時";s.Msg.CocoRobo_CUSTOM_EVENT_HELPURL="";s.Msg.CocoRobo_CUSTOM_EVENT_TOOLTIP=`自定義事件與定時器共用 1/2/4/7/8/9/10,不可同時占用一個端口。
- 最大同時創建4個事件/定時器,如果存在沖突,請嘗試換一個編號。`;s.Msg.CocoRobo_music_HELPURL="https://CocoRobox.readthedocs.io/zh_CN/latest/CocoRoboX.html";s.Msg.CocoRobo_music_range_pitch_TOOLTIP="時長為單個頻率的時長";s.Msg.CocoRobo_music_range_pitch_MESSAGE0="播放音調 從%1 到%2 長度%3 時長%4 毫秒 腳位 %5";s.Msg.CocoRobo_neopixel_init_HELPURL="https://CocoRobox.readthedocs.io/zh_CN/latest/CocoRoboX.html";s.Msg.CocoRobo_neopixel_init_TOOLTIP="";s.Msg.CocoRobo_neopixel_init_MESSAGE0="燈帶初始化 名稱%1 腳位%2 數量%3";s.Msg.CocoRobo_NEOPIXEL_RAINBOW_HELPURL="https://CocoRobox.readthedocs.io/zh_CN/latest/CocoRoboX.html";s.Msg.CocoRobo_NEOPIXEL_RAINBOW_TOOLTIP="";s.Msg.CocoRobo_NEOPIXEL_RAINBOW_MESSAGE0="彩虹燈效 燈帶%1 數量 %2 亮度 %3 偏移 %4";s.Msg.CocoRobo_NEOPIXEL_BRIGHTNESS_HELPURL="https://CocoRobo.readthedocs.io/zh/master/library/micropython/neopixel.html#NeoPixel.brightness";s.Msg.CocoRobo_NEOPIXEL_BRIGHTNESS_TOOLTIP="亮度調節, 範圍 0 ~ 100";s.Msg.CocoRobo_NEOPIXEL_BRIGHTNESS_MESSAGE0="燈帶 %1 設置亮度為 %2";s.Msg.CocoRobo_neopixel_single_TOOLTIP="";s.Msg.CocoRobo_neopixel_single_MESSAGE0="燈帶%1 %2號 紅%3 綠%4 藍%5";s.Msg.CocoRobo_neopixel_single_gui_MESSAGE0="燈帶 %1 %2號 顏色為 %3";s.Msg.CocoRobo_neopixel_single_gui_TOOLTIP="";s.Msg.CocoRobo_neopixel_show_TOOLTIP="";s.Msg.CocoRobo_neopixel_show_MESSAGE0="燈帶%1 設置生效";s.Msg.CocoRobo_neopixel_off_TOOLTIP="";s.Msg.CocoRobo_neopixel_off_MESSAGE0="燈帶%1 關閉";s.Msg.CocoRobo_neopixel_all_TOOLTIP="";s.Msg.CocoRobo_neopixel_all_MESSAGE0="燈帶%1 全亮 紅%2 綠%3 藍%4";s.Msg.CocoRobo_neopixel_all_gui_TOOLTIP="";s.Msg.CocoRobo_neopixel_all_gui_MESSAGE0="燈帶%1 全亮 顏色%2";s.Msg.CocoRobo_image_to_lcd_MESSAGE0="打開圖片 %1 寬 %2 高 %3";s.Msg.CocoRobo_image_to_lcd_TOOLTIP="";s.Msg.CocoRobo_time_localtime_MESSAGE0="本地時間 %1";s.Msg.CocoRobo_time_localtime_TOOLTIP=`星期數:返回0~6,周壹為0,周日為6
- 天數:獲取當前日期是壹年中的第幾天
- 建議先連接wifi並獲取網絡時間`;s.Msg.CocoRobo_WiFi_config_MESSAGE0="Wi-Fi 配置信息 %1";s.Msg.CocoRobo_WiFi_config_TOOLTIP="netmask-子網掩碼;gateway-網關";s.Msg.CocoRobo_time_ticks_HELPURL="https://CocoRobox.readthedocs.io/zh_CN/latest/CocoRoboX.html";s.Msg.CocoRobo_time_ticks_MESSAGE0="運行時間 %1";s.Msg.CocoRobo_time_ticks_TOOLTIP="";s.Msg.CocoRobo_Timer_MESSAGE0="設置定時器 %1 %2 周期 %3 毫秒";s.Msg.CocoRobo_Timer_TOOLTIP=`創建定時器n,n=1-14。
- 最大同時創建4個定時器,如果存在沖突,請嘗試換一個編號。
- 3用於內部程序,
- 5/6用於伺服系統和ADC,
- 11用於搖晃檢測,
- 12用於觸摸鍵檢測,
- 13用於Radio和DHT11/DHT22定時取值(共用),
- 14用於OneNET和傾斜檢測(共用),
- 其余端口與自定義事件共用。`;s.Msg.CocoRobo_Timer_HELPURL="https://CocoRobox.readthedocs.io/zh_CN/latest/blocks/index.html";s.Msg.CocoRobo_bme280_hum_tem_pre_MESSAGE0="BME280 %1";s.Msg.CocoRobo_bme280_hum_tem_pre_TOOLTIP="氣壓單位Pa, 溫度單位攝氏度, 環境濕度單位%";s.Msg.CocoRobo_sway_xyz_MESSAGE0="%1 搖晃教科板";s.Msg.CocoRobo_sway_xyz_TOOLTIP="教科板正面朝上,觸摸鍵 'python' 靠近使用者,開始左右或前後搖晃教科板";s.Msg.CocoRobo_init_bluetooth_MESSAGE0="初始化 藍牙名稱%1";s.Msg.CocoRobo_init_bluetooth_TOOLTIP="初始化 藍牙名稱";s.Msg.CocoRobo_OnOff_bluetooth_MESSAGE0="藍牙設備%1廣播";s.Msg.CocoRobo_OnOff_bluetooth_TOOLTIP="藍牙設備 開啟或關閉廣播";s.Msg.CocoRobo_HID_consumer_bluetooth_MESSAGE0="消費類設備%1 狀態%2";s.Msg.CocoRobo_HID_consumer_bluetooth_TOOLTIP="類比HID消費類設備的控制器,如藍牙遙控器";s.Msg.CocoRobo_HID_release_keyboard_bluetooth_MESSAGE0="鍵盤 釋放按鍵";s.Msg.CocoRobo_HID_release_keyboard_bluetooth_TOOLTIP="HID鍵盤設備";s.Msg.CocoRobo_HID_mouse_bluetooth_MESSAGE0="鼠標%1";s.Msg.CocoRobo_HID_mouse_bluetooth_TOOLTIP="鼠標設備";s.Msg.CocoRobo_HID_release_mouse_bluetooth_MESSAGE0="鼠標 釋放按鍵";s.Msg.CocoRobo_HID_release_mouse_bluetooth_TOOLTIP="鼠標設備";s.Msg.CocoRobo_HID_keyboard_bluetooth_MESSAGE0="鍵盤 按鍵%1";s.Msg.CocoRobo_HID_keyboard_bluetooth_TOOLTIP="鍵盤設備";s.Msg.CocoRobo_HID_keyboard_group_bluetooth_MESSAGE0="HID設備按鍵 %1 組合按鍵%2";s.Msg.CocoRobo_HID_keyboard_group_bluetooth_TOOLTIP="如果想使用多個按鍵組合指令,可以用“|”或運算";s.Msg.CocoRobo_HID_mouse_pointer_bluetooth_MESSAGE0="滑鼠 指標移動 x%2 y%1";s.Msg.CocoRobo_HID_mouse_pointer_bluetooth_TOOLTIP="鼠標坐標x,y軸的相對位移,範圍-1023 ~ 1023";s.Msg.CocoRobo_HID_keyboard_group_bluetooth_MESSAGE0="設備 按鍵 %1 組合按鍵%2";s.Msg.CocoRobo_HID_keyboard_group_bluetooth_TOOLTIP="鍵盤設備";s.Msg.CocoRobo_HID_keyboard_part_bluetooth_MESSAGE0="鍵盤 組合設備%1";s.Msg.CocoRobo_HID_keyboard_part_bluetooth_TOOLTIP="如果想使用多個按鍵組合指令,可以用“|”或運算";s.Msg.CocoRobo_HID_keyboard_part_bluetooth_HELPURL="";s.Msg.CocoRobo_init_wifi_MESSAGE0="連接 Wi-Fi 名稱 %1 密碼 %2";s.Msg.CocoRobo_init_wifi_TOOLTIP="讓教科板接入Wi-Fi環境";s.Msg.CocoRobo_dis_WiFi_MESSAGE0="斷開 Wi-Fi 連接";s.Msg.CocoRobo_dis_WiFi_TOOLTIP="";s.Msg.CocoRobo_ENABLE_APWIFI_HELPURL="https://CocoRobo.readthedocs.io/zh/master/tutorials/basics/network/network_basics.html#ap";s.Msg.CocoRobo_ENABLE_APWIFI_TOOLTIP=`密碼可以為空,或者8位以上的字母或數字。
- AP模式僅用於教科板之間的相互通信,不可以作為熱點,令其它設備上網。`;s.Msg.CocoRobo_ENABLE_APWIFI_MESSAGE0="開啟 AP模式 名稱 %1 密碼 %2 信道 %3";s.Msg.CocoRobo_disable_APWiFi_MESSAGE0="關閉 AP模式";s.Msg.CocoRobo_disable_APWiFi_TOOLTIP="";s.Msg.CocoRobo_ntptime_settime_MESSAGE0="同步網絡時間";s.Msg.CocoRobo_ntptime_settime_TOOLTIP="NTP時間同步是壹種時間同步網絡技術";s.Msg.CocoRobo_ntptime_timezone_E1="東1區";s.Msg.CocoRobo_ntptime_timezone_E2="東2區";s.Msg.CocoRobo_ntptime_timezone_E3="東3區";s.Msg.CocoRobo_ntptime_timezone_E4="東4區";s.Msg.CocoRobo_ntptime_timezone_E5="東5區";s.Msg.CocoRobo_ntptime_timezone_E6="東6區";s.Msg.CocoRobo_ntptime_timezone_E7="東7區";s.Msg.CocoRobo_ntptime_timezone_E8="東8區";s.Msg.CocoRobo_ntptime_timezone_E9="東9區";s.Msg.CocoRobo_ntptime_timezone_E10="東10區";s.Msg.CocoRobo_ntptime_timezone_E11="東11區";s.Msg.CocoRobo_ntptime_timezone_E12="東12區";s.Msg.CocoRobo_ntptime_timezone_0="中時區";s.Msg.CocoRobo_ntptime_timezone_W1="西1區";s.Msg.CocoRobo_ntptime_timezone_W2="西2區";s.Msg.CocoRobo_ntptime_timezone_W3="西3區";s.Msg.CocoRobo_ntptime_timezone_W4="西4區";s.Msg.CocoRobo_ntptime_timezone_W5="西5區";s.Msg.CocoRobo_ntptime_timezone_W6="西6區";s.Msg.CocoRobo_ntptime_timezone_W7="西7區";s.Msg.CocoRobo_ntptime_timezone_W8="西8區";s.Msg.CocoRobo_ntptime_timezone_W9="西9區";s.Msg.CocoRobo_ntptime_timezone_W10="西10區";s.Msg.CocoRobo_ntptime_timezone_W11="西11區";s.Msg.CocoRobo_ntptime_timezone_W12="西12區";s.Msg.FILE_TO_LIST_HELPURL="";s.Msg.FILE_TO_LIST_TOOLTIP="讀出指定路徑的文本文件內容(僅限utf-8格式),並轉為陣列形式,以分隔符分隔。";s.Msg.FILE_TO_LIST_MESSAGE0="讀取文本文件 %1 為陣列 ,以 %2 分隔";s.Msg.FILE_TO_BIN_HELPURL="";s.Msg.FILE_TO_BIN_TOOLTIP="以二進制格式讀出指定路徑的文件內容。";s.Msg.FILE_TO_BIN_MESSAGE0="讀取文件 %1 的二進制內容";s.Msg.CocoRobo_INIT_FILE_HELPURL="";s.Msg.CocoRobo_INIT_FILE_TOOLTIP="初始化一個文本文件,如果文件不存在則創建文件,如果文件存在則清空內容。";s.Msg.CocoRobo_INIT_FILE_MESSAGE0="初始化文本文件 %1";s.Msg.CocoRobo_WRITE_FILE_HELPURL="";s.Msg.CocoRobo_WRITE_FILE_TOOLTIP="向指定路徑的文本文件寫入內容,如果文件不存在則創建文件。";s.Msg.CocoRobo_WRITE_FILE_MESSAGE0="向文本文件 %1 寫入內容 %2 ,以 %3 分隔";s.Msg.CocoRobo_SDCARD_INIT_HELPURL="https://CocoRobo.readthedocs.io/zh/master/library/cocorobo/sdcard.html#sdcard.SDCard";s.Msg.CocoRobo_SDCARD_INIT_TOOLTIP=`sck: P13
- mosi: P15
- miso: P14
- sdcard: P16
- 須確保 SPI 總線的引腳與 micro SD 卡物理連接正確,並預先使用 FAT 或 FAT32 文件系統格式化 micro SD 卡。`;s.Msg.CocoRobo_SDCARD_INIT_MESSAGE0="初始化 SD 卡";s.Msg.CocoRobo_SDCARD_MOUNT_HELPURL="https://CocoRobo.readthedocs.io/zh/master/library/cocorobo/sdcard.html#sdcard.SDCard";s.Msg.CocoRobo_SDCARD_MOUNT_TOOLTIP="掛載 SDCard 到指定路徑。";s.Msg.CocoRobo_SDCARD_MOUNT_MESSAGE0="掛載 SD 卡到路徑 %1";s.Msg.CocoRobo_ENTER="回車";s.Msg.CocoRobo_COMMA="逗號";s.Msg.CocoRobo_SEMICOLON="分號";s.Msg.CocoRobo_SPACE="空格";s.Msg.CocoRobo_wifi_clock_MESSAGE0="Wi-Fi 模擬時鐘 x %1 y %2 半徑 %3";s.Msg.CocoRobo_wifi_clock_TOOLTIP="需連接 Wi-Fi 使用";s.Msg.CocoRobo_def_clock_MESSAGE0="初始化時鐘%1 x %2 y %3 半徑 %4";s.Msg.CocoRobo_def_clock_TOOLTIP="";s.Msg.CocoRobo_settime_clock_MESSAGE0="時鐘%1 讀取時間";s.Msg.CocoRobo_settime_clock_TOOLTIP="";s.Msg.CocoRobo_draw_clear_clock_MESSAGE0="%1 時鐘 %2";s.Msg.CocoRobo_draw_clear_clock_TOOLTIP="";s.Msg.CocoRobo_tinywebio_start_MESSAGE0="啟動 TinyWebIO 服務 %1";s.Msg.CocoRobo_tinywebio_start_TOOLTIP="啟動該服務需連接Wi-Fi,TinyWebIO服務為App Inventor應用提供遠程控制接口的教科板工具包";s.Msg.CocoRobo_tinywebio_client_setup_HELPURL="";s.Msg.CocoRobo_tinywebio_client_setup_TOOLTIP=`向服務器發布的數據項(逗號分隔)
- buttona/b 按鍵狀態
- touchpadp/y/t/h/o/n 觸摸按鍵值
- light 光線值
- sound 聲音值
- accelerometer 三軸加速度值
- id 教科板標識
- time 時間戳
- pind<n> 數字IO引腳
- pina<n> 模擬IO引腳
- ----------
- 從服務器讀取的數據項(逗號分隔)
- rgb0/1/2 RGB燈珠
- oled OLCD顯示屏
- music 音樂
- servo<n> 伺服馬達
- pind<n> 數字IO引腳
- pina<n> 模擬IO引腳`;s.Msg.CocoRobo_tinywebio_client_setup_MESSAGE0="設置 TinyWebIO 客戶端參數 %1 TinyWebDB服務器地址 %2 向服務器發布的數據項 %3 從服務器讀取的數據項 %4 存取服務器的時間間隔(ms) %5";s.Msg.CocoRobo_tinywebio_client_action_HELPURL="";s.Msg.CocoRobo_tinywebio_client_action_TOOLTIP="";s.Msg.CocoRobo_tinywebio_client_action_MESSAGE0="%1 TinyWebIO 客戶端";s.Msg.CocoRobo_tinywebio_client_action_start="啟動";s.Msg.CocoRobo_tinywebio_client_action_stop="停止";s.Msg.CocoRobo_CUSTOM_CODE_HELPURL="";s.Msg.CocoRobo_CUSTOM_CODE_TOOLTIP="";s.Msg.CocoRobo_CUSTOM_CODE_MESSAGE0="%1 自定義代碼 %2 %3";s.Msg.CocoRobo_CUSTOM_TYPE_IMPORT="置頂";s.Msg.CocoRobo_CUSTOM_TYPE_NORMAL="普通";s.Msg.CocoRobo_servo_angle0_MESSAGE0="設置伺服馬達 %1 角度為 %2";s.Msg.CocoRobo_servo_angle_MESSAGE0="設置伺服馬達 %1 角度為 %2 脈寬從 %3 到 %4 最大角度 %5";s.Msg.CocoRobo_servo_angle_TOOLTIP="電源線Vcc(紅色)連接擴展板電源口V,地線GND(棕色)連接擴展板地線口G,控制信號線(橙色)連接所選的擴展板引腳";s.Msg.CocoRobo_dh11_hum_tem_HELPURL="https://CocoRobo.readthedocs.io/zh/latest/classic/dht11.html?highlight=DHT";s.Msg.CocoRobo_dh11_hum_tem_MESSAGE0="DHT11 %1 %2";s.Msg.CocoRobo_dh11_hum_tem_TOOLTIP="DHT11上的 + 連接擴展板的電源口 V ,- 連接擴展板的地線口 G ,out 連接擴展板的引腳 0(即選引腳)";s.Msg.CocoRobo_DH22_HUM_TEM_MESSAGE0="DHT22 %1 %2";s.Msg.CocoRobo_DH22_HUM_TEM_TOOLTIP="";s.Msg.CocoRobo_DH22_HUM_TEM_HELPURL="https://CocoRobo.readthedocs.io/zh/latest/classic/dht11.html?highlight=DHT";s.Msg.CocoRobo_music_note_MESSAGE0="音符 %1 %2 : %3";s.Msg.CocoRobo_music_note_TOOLTIP="音符,如C4:4";s.Msg.CocoRobo_return_list_MESSAGE0="定義陣列 %1 = %2";s.Msg.CocoRobo_return_list_TOOLTIP="定義一個陣列";s.Msg.CocoRobo_display_Show_MESSAGE0="LCD 顯示生效";s.Msg.CocoRobo_display_Show_TOOLTIP="";s.Msg.CocoRobo_display_DispChar_MESSAGE0="顯示文本 x %1 y %2 內容 %3 模式 %4";s.Msg.CocoRobo_display_DispChar_TOOLTIP="OLCD解析度128x64";s.Msg.CocoRobo_display_DispChar_HELPURL="https://CocoRobo.readthedocs.io/zh/master/library/cocorobo/CocoRobo.html?highlight=lcd#lcd.DispChar";s.Msg.CocoRobo_display_DispChar_5lines_MESSAGE0="LCD 第%1 欄顯示 %2 模式 %3";s.Msg.CocoRobo_display_DispChar_5lines_TOOLTIP="OLCD解析度128x64";s.Msg.CocoRobo_line1="1";s.Msg.CocoRobo_line2="2";s.Msg.CocoRobo_line3="3";s.Msg.CocoRobo_line4="4";s.Msg.CocoRobo_line5="5";s.Msg.CocoRobo_CLEAR_DISPCHAR_5LINES_MESSAGE0="LCD 清除第 %1 欄";s.Msg.CocoRobo_CLEAR_DISPCHAR_5LINES_TOOLTIP="OLCD解析度128x64";s.Msg.CocoRobo_CLEAR_DISPCHAR_5LINES_HELPURL="";s.Msg.CocoRobo_display_fill_O="初始化";s.Msg.CocoRobo_display_fill_0="清空";s.Msg.CocoRobo_display_fill_1="全亮";s.Msg.CocoRobo_display_invert_0="黑底";s.Msg.CocoRobo_display_invert_1="白底";s.Msg.CocoRobo_display_show="生效";s.Msg.CocoRobo_display_fill_MESSAGE0="LCD 螢幕初始化";s.Msg.GLCDD="獲取LCD顯示器 %1";s.Msg.CocoRobo_display_fill_TOOLTIP="";s.Msg.CocoRobo_display_pixel_0="暗";s.Msg.CocoRobo_display_pixel_1="亮";s.Msg.CocoRobo_display_pixel_MESSAGE0="描點 x %1 y %2 為 %3";s.Msg.CocoRobo_display_pixel_TOOLTIP="";s.Msg.CocoRobo_display_hline_0="擦除";s.Msg.CocoRobo_display_hline_1="繪制";s.Msg.CocoRobo_display_hline_MESSAGE0="%1 水平線%2 x%3 y%4 長度%5";s.Msg.CocoRobo_display_hline_TOOLTIP="";s.Msg.CocoRobo_ProgressBar_MESSAGE0="進度條%1 x%2 y%3 寬%4 高%5 進度%6";s.Msg.CocoRobo_ProgressBar_TOOLTIP="";s.Msg.CocoRobo_stripBar_MESSAGE0="柱狀條%1 x%2 y%3 寬%4 高%5 進度%6";s.Msg.CocoRobo_stripBar_TOOLTIP="";s.Msg.CocoRobo_QR_CODE_HELPURL="https://CocoRobo.readthedocs.io/zh/master/library/cocorobo/gui.html#gui.UI.qr_code";s.Msg.CocoRobo_QR_CODE_TOOLTIP="";s.Msg.CocoRobo_QR_CODE_MESSAGE0="在坐標 x %1 y %2 繪制二維碼 %3 尺寸 %4";s.Msg.CocoRobo_DISPLAY_MODE_0="擦除";s.Msg.CocoRobo_DISPLAY_MODE_1="繪制";s.Msg.CocoRobo_DISPLAY_HOLLOW="空心";s.Msg.CocoRobo_DISPLAY_SOLID="實心";s.Msg.CocoRobo_DISPLAY_HVLINE_MESSAGE0="%1 %2 線 %3 x %4 y %5 長度 %6";s.Msg.CocoRobo_DISPLAY_HVLINE_TOOLTIP="";s.Msg.CocoRobo_DISPLAY_SHAPE_RECT_MESSAGE0="%1 %2 矩形 %3 x %4 y %5 寬 %6 高 %7";s.Msg.CocoRobo_DISPLAY_SHAPE_RECT_TOOLTIP="";s.Msg.CocoRobo_DISPLAY_SHAPE_CIRCLE_MESSAGE0="%1 %2 圓 %3 x %4 y %5 半徑 %6";s.Msg.CocoRobo_DISPLAY_SHAPE_CIRCLE_TOOLTIP="";s.Msg.CocoRobo_DISPLAY_SHAPE_TRIANGLE_MESSAGE0="%1 %2 三角 %3 x1 %4 y1 %5 x2 %6 y2 %7 x3 %8 y3 %9";s.Msg.CocoRobo_DISPLAY_SHAPE_TRIANGLE_TOOLTIP="";s.Msg.CocoRobo_RGB_0="0 #";s.Msg.CocoRobo_RGB_1="1 #";s.Msg.CocoRobo_RGB_2="2 #";s.Msg.CocoRobo_RGB_ALL="所有";s.Msg.CocoRobo_SET_RGB_LIST_COLOR_MESSAGE0="設置 %1 RGB 燈顏色為 %2";s.Msg.CocoRobo_SET_RGB_LIST_COLOR_TOOLTIP="原生亮度的 1/30 能較好顯示色差";s.Msg.CocoRobo_SET_RGB_LIST_NUMBER_MESSAGE0="設置 %1 RGB 燈顏色為 R %2 G %3 B %4";s.Msg.CocoRobo_SET_RGB_LIST_NUMBER_TOOLTIP="原生亮度的 1/30 能較好顯示色差";s.Msg.CocoRobo_OFF_RGB_LIST_MESSAGE0="關閉 %1 RGB 燈";s.Msg.CocoRobo_OFF_RGB_LIST_TOOLTIP="";s.Msg.CocoRobo_MUSIC_PLAY_MESSAGE0="播放音樂 %1 腳位 %2";s.Msg.CocoRobo_MUSIC_PLAY_TOOLTIP="播放內置的音樂";s.Msg.CocoRobo_MUSIC_PLAY_UNTIL_END_MESSAGE0="播放音樂 %1 直到完成 , 腳位 %2";s.Msg.CocoRobo_MUSIC_PLAY_UNTIL_END_TOOLTIP="播放內置的音樂";s.Msg.CocoRobo_MUSIC_GE_CHANG_ZU_GUO="歌唱祖國";s.Msg.CocoRobo_MUSIC_DONG_FANG_HONG="東方紅";s.Msg.CocoRobo_MUSIC_CAI_YUN_ZHUI_YUE="彩雲追月";s.Msg.CocoRobo_MUSIC_ZOU_JIN_XIN_SHI_DAI="走進新時代";s.Msg.CocoRobo_MUSIC_MO_LI_HUA="茉莉花";s.Msg.CocoRobo_MUSIC_YI_MENG_SHAN_XIAO_DIAO="沂蒙山小調";s.Msg.CocoRobo_display_vline_MESSAGE0="%1 垂直線%2 x%3 y%4 長度%5";s.Msg.CocoRobo_display_vline_TOOLTIP="";s.Msg.CocoRobo_display_line_MESSAGE0="%1 線%2 x1 %3 y1 %4 到 x2 %5 y2 %6";s.Msg.CocoRobo_display_line_TOOLTIP="";s.Msg.CocoRobo_display_rect_MESSAGE0="%1 邊框%2 x %3 y %4 寬 %5 高 %6";s.Msg.CocoRobo_display_rect_TOOLTIP="";s.Msg.CocoRobo_display_RoundRect_MESSAGE0="%1 弧角邊框%2 x %3 y %4 寬 %5 高 %6 半徑%7";s.Msg.CocoRobo_display_RoundRect_TOOLTIP="";s.Msg.CocoRobo_display_fill_rect_MESSAGE0="%1 矩形%2 x %3 y %4 寬 %5 高 %6 ";s.Msg.CocoRobo_display_fill_rect_TOOLTIP="";s.Msg.CocoRobo_display_fill_circle_MESSAGE0="%1 實心圓%2 x %3 y %4 半徑 %5";s.Msg.CocoRobo_display_fill_circle_TOOLTIP="";s.Msg.CocoRobo_display_circle_MESSAGE0="%1 空心圓%2 x %3 y %4 半徑 %5";s.Msg.CocoRobo_display_circle_TOOLTIP="";s.Msg.CocoRobo_display_triangle_MESSAGE0="%1 空心三角%2 x%3 y%4 x2%5 y2%6 x3%7 y3%8";s.Msg.CocoRobo_display_triangle_TOOLTIP="";s.Msg.CocoRobo_display_fill_triangle_MESSAGE0="%1 實心三角%2 x%3 y%4 x2%5 y2%6 x3%7 y3%8";s.Msg.CocoRobo_display_fill_triangle_TOOLTIP="";s.Msg.CocoRobo_display_Bitmap_MESSAGE0="%1 圖像 x%2 y%3 寬%4 高%5 16進制圖像數據 %6";s.Msg.CocoRobo_display_Bitmap_TOOLTIP="將16進制圖像數據顯示在OLCD屏的指定位置";s.Msg.CocoRobo_GET_PBM_DATA_MESSAGE0="獲取內置圖像 %1 模式%2";s.Msg.CocoRobo_GET_PBM_DATA_TOOLTIP="支持*.pbm 或 *.bmp格式的單色圖像文件,獲取指定路徑的圖像文件數據,返回一個元組對象。";s.Msg.CocoRobo_GET_PBM_DATA_HELPURL="https://CocoRobo.readthedocs.io/zh/master/library/cocorobo/gui.html#image";s.Msg.CocoRobo_GET_PBM_DATA_CUSTOM_MESSAGE0="獲取自定義圖像 %1 模式%2";s.Msg.CocoRobo_DISPLAY_PBM_DATA_MESSAGE0="在坐標 x %1 y %2 顯示圖像 %3";s.Msg.CocoRobo_DISPLAY_PBM_DATA_TOOLTIP="支持*.pbm 或 *.bmp格式的單色圖像文件";s.Msg.CocoRobo_DISPLAY_PBM_DATA_HELPURL="https://CocoRobo.readthedocs.io/zh/master/library/cocorobo/gui.html#image";s.Msg.CocoRobo_BITMAP_FROM_FILE_MESSAGE0="在坐標 x %1 y %2 顯示圖像 %5 寬 %3 高 %4";s.Msg.CocoRobo_BITMAP_FROM_FILE_TOOLTIP="";s.Msg.CocoRobo_BITMAP_FROM_FILE_HELPURL="";s.Msg.CocoRobo_horizontal="水平";s.Msg.CocoRobo_vertical="垂直";s.Msg.CocoRobo_display_FrameBuffer_MESSAGE0="構建幀 陣列 %1 長 %2 寬 %3 掃描模式 %4";s.Msg.CocoRobo_display_FrameBuffer_TOOLTIP="用圖像模除後數據的陣列 ,創建128x64的幀緩存區,以儲存圖片幀";s.Msg.CocoRobo_FONT_DIGIFACE_11="仿數碼管 11畫素";s.Msg.CocoRobo_FONT_DIGIFACE_16="仿數碼管 16畫素";s.Msg.CocoRobo_FONT_DIGIFACE_21="仿數碼管 21畫素";s.Msg.CocoRobo_FONT_DIGIFACE_30="仿數碼管 30畫素";s.Msg.CocoRobo_FONT_DIGIFACE_44="仿數碼管 44畫素";s.Msg.CocoRobo_FONT_DIGIFACE_IT_30="仿數碼管 斜體 30畫素";s.Msg.CocoRobo_FONT_DIGIFACE_IT_42="仿數碼管 斜體 42畫素";s.Msg.CocoRobo_FONT_DVSM_12="DejaVu Sans Mono 12畫素";s.Msg.CocoRobo_FONT_DVSM_16="DejaVu Sans Mono 16畫素";s.Msg.CocoRobo_FONT_DVSM_21="DejaVu Sans Mono 21畫素";s.Msg.CocoRobo_FONT_DVSMB_12="DejaVu Sans Mono 黑體 12畫素";s.Msg.CocoRobo_FONT_DVSMB_16="DejaVu Sans Mono 黑體 16畫素";s.Msg.CocoRobo_FONT_DVSMB_21="DejaVu Sans Mono 黑體 21畫素";s.Msg.CocoRobo_FONT_WRAP="自動換欄";s.Msg.CocoRobo_FONT_NO_WRAP="不換欄";s.Msg.CocoRobo_FACE_1="心形";s.Msg.CocoRobo_FACE_2="心形(小)";s.Msg.CocoRobo_FACE_3="高興";s.Msg.CocoRobo_FACE_4="笑臉";s.Msg.CocoRobo_FACE_5="傷心";s.Msg.CocoRobo_FACE_6="困惑";s.Msg.CocoRobo_FACE_7="生氣";s.Msg.CocoRobo_FACE_8="睡著";s.Msg.CocoRobo_FACE_9="驚訝";s.Msg.CocoRobo_FACE_10="愚蠢";s.Msg.CocoRobo_FACE_11="極妙";s.Msg.CocoRobo_FACE_12="無聊";s.Msg.CocoRobo_FACE_ROCK="石頭";s.Msg.CocoRobo_FACE_PAPER="布";s.Msg.CocoRobo_FACE_SCISSORS="剪刀";s.Msg.CocoRobo_FACE_ROCK_S="石頭(小)";s.Msg.CocoRobo_FACE_PAPER_S="布(小)";s.Msg.CocoRobo_FACE_SCISSORS_S="剪刀(小)";s.Msg.CocoRobo_DISPLAY_FONT_MESSAGE0="在坐標 x %1 y %2 顯示 %3 以 %4 字體 %5";s.Msg.CocoRobo_DISPLAY_FONT_TOOLTIP="";s.Msg.CocoRobo_DISPLAY_FONT_HELPURL="";s.Msg.CocoRobo_front="正向";s.Msg.CocoRobo_reverse="反轉";s.Msg.CocoRobo_display_blit_MESSAGE0="顯示幀 坐標x %1 y %2";s.Msg.CocoRobo_display_blit_TOOLTIP="";s.Msg.CocoRobo_front_reverse_MESSAGE0="畫素點bit %1";s.Msg.CocoRobo_front_reverse_TOOLTIP="用於顯示之前";s.Msg.CocoRobo_images_append_MESSAGE0="動圖顯示 幀數%1 周期%2 長%3 寬%4";s.Msg.CocoRobo_images_append_TOOLTIP="上載至教科板的pbm圖片需命名為IMAGE.數字,後綴為pbm。如:IMAGE.1.pbm。幀數為7則數字為1至7";s.Msg.CocoRobo_button_is_pressed_MESSAGE0="按鍵%1 被按下";s.Msg.CocoRobo_button_is_pressed_TOOLTIP="";s.Msg.CocoRobo_button_both_pressed_MESSAGE0="AB按鍵都按下";s.Msg.CocoRobo_button_both_pressed_TOOLTIP="";s.Msg.CocoRobo_touchPad_value_MESSAGE0="按鍵%1 被觸摸";s.Msg.CocoRobo_touchPad_value_TOOLTIP="";s.Msg.CocoRobo_touchPad_value_num_MESSAGE0="按鍵%1 觸摸值";s.Msg.CocoRobo_touchPad_value_num_TOOLTIP="";s.Msg.CocoRobo_read_digital_MESSAGE0="讀取引腳 %1 數字值";s.Msg.CocoRobo_read_digital_TOOLTIP="";s.Msg.CocoRobo_read_DS18B20_MESSAGE0="DS18B20 防水溫度感應器 腳位 %1";s.Msg.CocoRobo_read_DS18B20_TOOLTIP="";s.Msg.CocoRobo_read_DS18B20_HELPURL="http://docs.micropython.org/en/latest/esp32/quickref.html?highlight=onewire#onewire-driver";s.Msg.CocoRobo_set_digital_MESSAGE0="設置引腳 %2 數字值為 %1";s.Msg.CocoRobo_set_digital_TOOLTIP="";s.Msg.CocoRobo_read_analog_MESSAGE0="讀取引腳 %1 模擬值";s.Msg.CocoRobo_read_analog_TOOLTIP="";s.Msg.CocoRobo_set_analog_MESSAGE0="設置引腳 %2 模擬值(PWM)為 %1";s.Msg.CocoRobo_set_analog_TOOLTIP="模擬輸出是透過IO引腳輸出脈寬調制信號,輸出指定的電壓值,簡稱PWM。";s.Msg.CocoRobo_set_RGB_MESSAGE0="設置 %1 號 RGB 燈顏色為 R %2 G %3 B %4";s.Msg.CocoRobo_set_RGB_TOOLTIP="原生亮度的 1/30 能較好顯示色差";s.Msg.CocoRobo_set_RGB_color_MESSAGE0="設置 %1 號 RGB 燈顏色為 %2";s.Msg.CocoRobo_set_RGB_color_TOOLTIP="原生亮度的 1/30 能較好顯示色差";s.Msg.CocoRobo_set_RGB_all_MESSAGE0="設置所有 RGB 燈顏色為 R %1 G %2 B %3";s.Msg.CocoRobo_set_RGB_all_TOOLTIP="原生亮度的 1/30 能較好顯示色差";s.Msg.CocoRobo_set_RGB_color_all_MESSAGE0="設置所有 RGB 燈顏色為 %1";s.Msg.CocoRobo_set_RGB_color_all_TOOLTIP="原生亮度的 1/30 能較好顯示色差";s.Msg.CocoRobo_fresh_RGB_MESSAGE0="RGB 燈設置生效";s.Msg.CocoRobo_fresh_RGB_TOOLTIP="";s.Msg.CocoRobo_off_RGB_MESSAGE0="關閉 RGB 燈";s.Msg.CocoRobo_off_RGB_TOOLTIP="";s.Msg.CocoRobo_buzz_state_MESSAGE0="停止播放音樂";s.Msg.CocoRobo_buzz_state_TOOLTIP="";s.Msg.CocoRobo_buzz_freq_MESSAGE0="播放連續音調 %1 腳位 %2";s.Msg.CocoRobo_buzz_freq_TOOLTIP="";s.Msg.CocoRobo_buzz_tone_MESSAGE0="播放音調 %1";s.Msg.CocoRobo_buzz_tone_TOOLTIP="";s.Msg.CocoRobo_MUSIC_TONE_TEMPO_HELPURL="";s.Msg.CocoRobo_MUSIC_TONE_TEMPO_TOOLTIP="默認是教科板的P6引腳";s.Msg.CocoRobo_MUSIC_TONE_TEMPO_MESSAGE0="播放音符 %1 腳位 %2";s.Msg.CocoRobo_MUSIC_TONE_HELPURL="";s.Msg.CocoRobo_MUSIC_TONE_TOOLTIP="";s.Msg.CocoRobo_MUSIC_TONE_MESSAGE0="音調 %1";s.Msg.CocoRobo_MUSIC_MUSICAL_NOTE_HELPURL="";s.Msg.CocoRobo_MUSIC_MUSICAL_NOTE_TOOLTIP="";s.Msg.CocoRobo_MUSIC_MUSICAL_NOTE_MESSAGE0="音符 %1 節拍 %2";s.Msg.CocoRobo_MUSIC_TICK_HELPURL="";s.Msg.CocoRobo_MUSIC_TICK_TOOLTIP="";s.Msg.CocoRobo_MUSIC_TICK_MESSAGE0="節拍 %1";s.Msg.CocoRobo_4_LINES_HELPURL="";s.Msg.CocoRobo_4_LINES_TOOLTIP="";s.Msg.CocoRobo_4_LINES_MESSAGE0="%1";s.Msg.NUMBER_1="1";s.Msg.NUMBER_1_2="1/2";s.Msg.NUMBER_1_4="1/4";s.Msg.NUMBER_2="2";s.Msg.NUMBER_4="4";s.Msg.CocoRobo_read_sound_MESSAGE0="聲音值";s.Msg.CocoRobo_read_sound_TOOLTIP="";s.Msg.CocoRobo_read_light_MESSAGE0="光線值";s.Msg.CocoRobo_read_light_TOOLTIP="";s.Msg.CocoRobo_accelerometer_get_MESSAGE0="%1 軸加速度";s.Msg.CocoRobo_accelerometer_get_TOOLTIP="";s.Msg.CocoRobo_accelerometer_get_z_MESSAGE0="z軸加速度";s.Msg.CocoRobo_accelerometer_get_z_TOOLTIP="";s.Msg.CocoRobo_accelerometer_get_y_MESSAGE0="y軸加速度";s.Msg.CocoRobo_accelerometer_get_y_TOOLTIP="";s.Msg.CocoRobo_accelerometer_get_x_MESSAGE0="x軸加速度";s.Msg.CocoRobo_accelerometer_get_x_TOOLTIP="";s.Msg.CocoRobo_ACCELEROMETER_RANGE_2G="±2g";s.Msg.CocoRobo_ACCELEROMETER_RANGE_4G="±4g";s.Msg.CocoRobo_ACCELEROMETER_RANGE_8G="±8g";s.Msg.CocoRobo_ACCELEROMETER_RANGE_16G="±16g";s.Msg.CocoRobo_ACCELEROMETER_RES_10_BIT="10bits";s.Msg.CocoRobo_ACCELEROMETER_RES_12_BIT="12bits";s.Msg.CocoRobo_ACCELEROMETER_RES_14_BIT="14bits";s.Msg.CocoRobo_ACCELEROMETER_SET_RANGE_TOOLTIP="設置加速度範圍,默認為 ±2g。";s.Msg.CocoRobo_ACCELEROMETER_SET_RANGE_MESSAGE0="設置加速度範圍為 %1";s.Msg.CocoRobo_ACCELEROMETER_SET_RESOLUSTION_TOOLTIP="設置加速度解析度,默認為 10bits。";s.Msg.CocoRobo_ACCELEROMETER_SET_RESOLUSTION_MESSAGE0="設置加速度解析度為 %1";s.Msg.CocoRobo_ACCELEROMETER_SET_OFFSET_TOOLTIP=`校準加速度計的3個軸(x,y,z)的加速值偏差。
- 壹般情況下無需校準,只有遇到加速度偏差較大時才要校準。
- x , y , z 為調整偏差值,可修正範圍為 ±1g。
- 註意:校準數據斷電後不會保存。`;s.Msg.CocoRobo_ACCELEROMETER_SET_OFFSET_MESSAGE0="校準加速度值 %1 X軸偏差 %2 Y軸偏差 %3 Z軸偏差 %4";s.Msg.CocoRobo_COMPASS_GET_AXIS_TOOLTIP="僅適用於教科板2.0及以上版本";s.Msg.CocoRobo_COMPASS_GET_AXIS_MESSAGE0="%1 軸 磁力";s.Msg.CocoRobo_COMPASS_GET_ANGLE_TOOLTIP="僅適用於教科板2.0及以上版本";s.Msg.CocoRobo_COMPASS_GET_ANGLE_MESSAGE0="指南針方向";s.Msg.CocoRobo_TILT_ANGLE_HELPURL="";s.Msg.CocoRobo_TILT_ANGLE_TOOLTIP="";s.Msg.CocoRobo_TILT_ANGLE_MESSAGE0="%1 軸傾斜角";s.Msg.CocoRobo_random_choice_MESSAGE0="返回隨機項%1";s.Msg.CocoRobo_random_choice_TOOLTIP="以String格式,返回陣列或字串中的隨機項";s.Msg.CocoRobo_i2c_init_MESSAGE0="初始化I2C 波特率%1";s.Msg.CocoRobo_i2c_init_TOOLTIP="SCL引腳19,SDA引腳20,與內部的OLCD和加速度感應器共享I2C總線";s.Msg.MACHINE_TIME_PULSE_US_HELPURL="https://CocoRobo.readthedocs.io/zh/master/library/micropython/machine/machine.html?highlight=machine.time_pulse_us#machine.time_pulse_us";s.Msg.MACHINE_TIME_PULSE_US_MESSAGE0="%1 外部 %2 電平持續時間(微秒)";s.Msg.MACHINE_TIME_PULSE_US_TOOLTIP="";s.Msg.BYTES="字節";s.Msg.CocoRobo_dev_i2c_init_MESSAGE0="初始化I2C SCL %2 SDA %3 波特率 %1";s.Msg.CocoRobo_dev_i2c_init_TOOLTIP="";s.Msg.CocoRobo_dev_i2c_init_HELPURL="https://CocoRobo.readthedocs.io/zh/master/library/micropython/machine/machine.I2C.html#machine.I2C";s.Msg.CocoRobo_i2c_read_write_MESSAGE0="I2C 地址 %1 寫入 %2";s.Msg.CocoRobo_i2c_read_write_TOOLTIP=`地址:Number
- 寫入:Number、String`;s.Msg.CocoRobo_i2c_readfrom_MESSAGE0="I2C 地址 %1 讀取bytes數量 %2";s.Msg.CocoRobo_i2c_readfrom_TOOLTIP=`地址:Number
- 返回:讀取數據的 bytes 對象的字串`;s.Msg.CocoRobo_print_MESSAGE0="調試輸出 %1";s.Msg.CocoRobo_print_TOOLTIP="透過串口調試,輸出字串";s.Msg.CocoRobo_PRINT_TO_CHART_TOOLTIP="";s.Msg.CocoRobo_PRINT_TO_CHART_EMPTY_TITLE="打印數據到圖表";s.Msg.CocoRobo_PRINT_TO_CHART_INPUT_WITH="打印數據到圖表";s.Msg.CocoRobo_PRINT_TO_CHART_ITEM_TITLE="數據";s.Msg.CocoRobo_PRINT_TO_CHART_ITEM_TOOLTIP="";s.Msg.CocoRobo_PRINT_TO_CHART_CONTAINER_TITLE_ADD="數據內容";s.Msg.CocoRobo_PRINT_TO_CHART_CONTAINER_TOOLTIP="";s.Msg.CocoRobo_INIT_CHART_TOOLTIP="";s.Msg.CocoRobo_INIT_CHART_EMPTY_TITLE="初始化圖表列標題";s.Msg.CocoRobo_INIT_CHART_INPUT_WITH="初始化圖表列標題";s.Msg.CocoRobo_INIT_CHART_ITEM_TITLE="標題";s.Msg.CocoRobo_INIT_CHART_ITEM_TOOLTIP="";s.Msg.CocoRobo_INIT_CHART_CONTAINER_TITLE_ADD="數據列標題";s.Msg.CocoRobo_INIT_CHART_CONTAINER_TOOLTIP="";s.Msg.MICROBIT_ACCELEROMETER_GET_X_MESSAGE0="加速度計 X 軸";s.Msg.MICROBIT_ACCELEROMETER_GET_X_TOOLTIP="獲取加速度感應器 X 軸參數。";s.Msg.MICROBIT_ACCELEROMETER_GET_X_HELPURL="https://microbit-micropython.readthedocs.io/en/latest/accelerometer.html#microbit.accelerometer.get_x";s.Msg.MICROBIT_ACCELEROMETER_GET_Y_MESSAGE0="加速度計 Y 軸";s.Msg.MICROBIT_ACCELEROMETER_GET_Y_TOOLTIP="獲取加速度感應器 Y 軸參數。";s.Msg.MICROBIT_ACCELEROMETER_GET_Y_HELPURL="https://microbit-micropython.readthedocs.io/en/latest/accelerometer.html#microbit.accelerometer.get_y";s.Msg.MICROBIT_ACCELEROMETER_GET_Z_MESSAGE0="加速度計 Z 軸";s.Msg.MICROBIT_ACCELEROMETER_GET_Z_TOOLTIP="獲取加速度感應器 Z 軸參數。";s.Msg.MICROBIT_ACCELEROMETER_GET_Z_HELPURL="https://microbit-micropython.readthedocs.io/en/latest/accelerometer.html#microbit.accelerometer.get_z";s.Msg.MICROBIT_ACCELEROMETER_WAS_GESTURE_MESSAGE0="發生過手勢 %1";s.Msg.MICROBIT_ACCELEROMETER_WAS_GESTURE_TOOLTIP="透過返回 “真” 或者 “假” 提示自從上次檢查後是否發生過指定的手勢。";s.Msg.MICROBIT_ACCELEROMETER_WAS_GESTURE_HELPURL="https://microbit-micropython.readthedocs.io/en/latest/accelerometer.html#microbit.accelerometer.was_gesture";s.Msg.MICROBIT_ACCELEROMETER_IS_GESTURE_MESSAGE0="發生手勢 %1";s.Msg.MICROBIT_ACCELEROMETER_IS_GESTURE_TOOLTIP="透過返回 “真” 或者 “假” 表示自從現在發生指定的手勢。";s.Msg.MICROBIT_ACCELEROMETER_IS_GESTURE_HELPURL="https://microbit-micropython.readthedocs.io/en/latest/accelerometer.html#microbit.accelerometer.is_gesture";s.Msg.MICROBIT_ACCELEROMETER_GET_GESTURES_MESSAGE0="獲取手勢";s.Msg.MICROBIT_ACCELEROMETER_GET_GESTURES_TOOLTIP="返回發生過的手勢,同時清除以前的手勢。";s.Msg.MICROBIT_ACCELEROMETER_GET_GESTURES_HELPURL="https://microbit-micropython.readthedocs.io/en/latest/accelerometer.html#microbit.accelerometer.get_gestures";s.Msg.MICROBIT_ACCELEROMETER_CURRENT_GESTURE_MESSAGE0="當前手勢";s.Msg.MICROBIT_ACCELEROMETER_CURRENT_GESTURE_TOOLTIP="返回當前手勢名稱。";s.Msg.MICROBIT_ACCELEROMETER_CURRENT_GESTURE_HELPURL="https://microbit-micropython.readthedocs.io/en/latest/accelerometer.html#microbit.accelerometer.current_gesture";s.Msg.MICROBIT_BUTTON_IS_PRESSED_MESSAGE0="按鍵 %1 已經按下";s.Msg.MICROBIT_BUTTON_IS_PRESSED_TOOLTIP="如果指定按鍵按下返回 “真”,否則返回 “假”。";s.Msg.MICROBIT_BUTTON_IS_PRESSED_HELPURL="https://microbit-micropython.readthedocs.io/en/latest/button.html#Button.is_pressed";s.Msg.MICROBIT_BUTTON_WAS_PRESSED_MESSAGE0="按鍵 %1 曾經按下";s.Msg.MICROBIT_BUTTON_WAS_PRESSED_TOOLTIP="如果按鍵曾經按下過返回 “真”,否則返回 “假”。";s.Msg.MICROBIT_BUTTON_WAS_PRESSED_HELPURL="https://microbit-micropython.readthedocs.io/en/latest/button.html#Button.was_pressed";s.Msg.MICROBIT_BUTTON_GET_PRESSES_MESSAGE0="按鍵 %1 按下過的次數";s.Msg.MICROBIT_BUTTON_GET_PRESSES_TOOLTIP="返回按鍵按下的總次數,然後清除計數。";s.Msg.MICROBIT_BUTTON_GET_PRESSES_HELPURL="https://microbit-micropython.readthedocs.io/en/latest/button.html#Button.get_presses";s.Msg.MICROBIT_COMPASS_CALIBRATE_HELPURL="https://microbit-micropython.readthedocs.io/en/latest/compass.html#microbit.compass.calibrate";s.Msg.MICROBIT_COMPASS_CALIBRATE_MESSAGE0="校正指南針";s.Msg.MICROBIT_COMPASS_CALIBRATE_TOOLTIP="開始校正指南針,提高精度。";s.Msg.MICROBIT_COMPASS_IS_CALIBRATED_MESSAGE0="指南針已經校正";s.Msg.MICROBIT_COMPASS_IS_CALIBRATED_TOOLTIP="如果指南針已經校正返回 “真”,否則返回 “假”。";s.Msg.MICROBIT_COMPASS_IS_CALIBRATED_HELPURL="https://microbit-micropython.readthedocs.io/en/latest/compass.html#microbit.compass.is_calibrated";s.Msg.MICROBIT_COMPASS_HEADING_MESSAGE0="指南針方向";s.Msg.MICROBIT_COMPASS_HEADING_TOOLTIP="返回指南針的數值,0 - 360 度,順時針方向,正北方是 0。";s.Msg.MICROBIT_COMPASS_HEADING_HELPURL="https://microbit-micropython.readthedocs.io/en/latest/compass.html#microbit.compass.heading";s.Msg.MICROBIT_COMPASS_GET_FIELD_STRENGTH_MESSAGE0="指南針磁場強度";s.Msg.MICROBIT_COMPASS_GET_FIELD_STRENGTH_TOOLTIP="返回設備周圍磁場的強度。";s.Msg.MICROBIT_COMPASS_GET_FIELD_STRENGTH_HELPURL="https://microbit-micropython.readthedocs.io/en/latest/compass.html#microbit.compass.get_field_strength";s.Msg.MICROBIT_COMPASS_X_MESSAGE0="磁力 X軸";s.Msg.MICROBIT_COMPASS_X_TOOLTIP="返回X軸方向的磁力數值。";s.Msg.MICROBIT_COMPASS_X_HELPURL="https://microbit-micropython.readthedocs.io/en/latest/compass.html#microbit.compass.get_x";s.Msg.MICROBIT_COMPASS_Y_MESSAGE0="磁力 Y軸";s.Msg.MICROBIT_COMPASS_Y_TOOLTIP="返回Y軸方向的磁力數值。";s.Msg.MICROBIT_COMPASS_Y_HELPURL="https://microbit-micropython.readthedocs.io/en/latest/compass.html#microbit.compass.get_y";s.Msg.MICROBIT_COMPASS_Z_MESSAGE0="磁力 Z軸";s.Msg.MICROBIT_COMPASS_Z_TOOLTIP="返回Z軸方向的磁力數值。";s.Msg.MICROBIT_COMPASS_Z_HELPURL="https://microbit-micropython.readthedocs.io/en/latest/compass.html#microbit.compass.get_z";s.Msg.MICROBIT_DISPLAY_GET_PIXEL_MESSAGE0="獲取第 %1 列 %2 欄 位置的亮度";s.Msg.MICROBIT_DISPLAY_GET_PIXEL_TOOLTIP="獲取第 X 列和 Y 欄位置 LED 的亮度。 0 (不亮), 9 (最亮)。";s.Msg.MICROBIT_DISPLAY_GET_PIXEL_HELPURL="https://microbit-micropython.readthedocs.io/en/latest/display.html#microbit.display.get_pixel";s.Msg.MICROBIT_DISPLAY_SET_PIXEL_MESSAGE0="設第 %1 列 %2 欄 LED 的亮度到 %3";s.Msg.MICROBIT_DISPLAY_SET_PIXEL_TOOLTIP="設置第 X 列 Y 欄處 LED 的亮度。0 (不亮),9 (最亮)。";s.Msg.MICROBIT_DISPLAY_SET_PIXEL_HELPURL="https://microbit-micropython.readthedocs.io/en/latest/display.html#microbit.display.set_pixel";s.Msg.MICROBIT_DISPLAY_CLEAR_HELPURL="https://microbit-micropython.readthedocs.io/en/latest/display.html#microbit.display.clear";s.Msg.MICROBIT_DISPLAY_CLEAR_MESSAGE0="清除顯示內容";s.Msg.MICROBIT_DISPLAY_CLEAR_TOOLTIP="清除全部顯示的內容 - 設置所有 LED 亮度為 0 (不亮)。";s.Msg.MICROBIT_DISPLAY_SHOW_IMAGE_MESSAGE0="顯示圖像/文本 %1";s.Msg.MICROBIT_DISPLAY_SHOW_IMAGE_TOOLTIP="顯示圖像或文本消息。";s.Msg.MICROBIT_DISPLAY_SHOW_IMAGE_HELPURL="https://microbit-micropython.readthedocs.io/en/latest/display.html#microbit.display.show";s.Msg.MICROBIT_DISPLAY_SHOW_IMAGE_WITH_BRI_MESSAGE0="以亮度 ( %1 / %2 ) 顯示圖像 %3";s.Msg.MICROBIT_DISPLAY_SHOW_IMAGE_WITH_BRI_TOOLTIP="以指定亮度顯示圖像。";s.Msg.MICROBIT_DISPLAY_SHOW_ANIMATION_MESSAGE0="動畫顯示圖像 %1 延時 %2 毫秒。%3 等待 %4 %5 循環 %6 %7 清除 %8";s.Msg.MICROBIT_DISPLAY_SHOW_ANIMATION_TOOLTIP="動畫方式顯示圖像陣列,每兩個圖像之間延時壹段時間。還可以設置等待模式、循環模式以及完成後清除螢幕。";s.Msg.MICROBIT_DISPLAY_SHOW_ANIMATION_HELPURL="https://microbit-micropython.readthedocs.io/en/latest/display.html#microbit.display.show";s.Msg.MICROBIT_DISPLAY_SCROLL_MESSAGE0="滾動消息 %1";s.Msg.MICROBIT_DISPLAY_SCROLL_TOOLTIP="滾動方式顯示文字。";s.Msg.MICROBIT_DISPLAY_SCROLL_HELPURL="https://microbit-micropython.readthedocs.io/en/latest/display.html#microbit.display.scroll";s.Msg.MICROBIT_DISPLAY_SCROLL_ANIMATION_MESSAGE0="滾動消息 %1 延時 %2 毫秒。%3 等待 %4 %5 循環 %6 %7 等寬字體 %8";s.Msg.MICROBIT_DISPLAY_SCROLL_ANIMATION_TOOLTIP="滾動方式顯示文字。還可以設置等待模式、循環模式以及字體等寬。";s.Msg.MICROBIT_DISPLAY_SCROLL_ANIMATION_HELPURL="https://microbit-micropython.readthedocs.io/en/latest/display.html#microbit.display.scroll";s.Msg.MICROBIT_DISPLAY_ON_HELPURL="https://microbit-micropython.readthedocs.io/en/latest/display.html#microbit.display.on";s.Msg.MICROBIT_DISPLAY_ON_MESSAGE0="打開螢幕";s.Msg.MICROBIT_DISPLAY_ON_TOOLTIP="打開螢幕顯示。";s.Msg.MICROBIT_DISPLAY_OFF_HELPURL="https://microbit-micropython.readthedocs.io/en/latest/display.html#microbit.display.off";s.Msg.MICROBIT_DISPLAY_OFF_MESSAGE0="關閉螢幕";s.Msg.MICROBIT_DISPLAY_OFF_TOOLTIP="關閉螢幕顯示。";s.Msg.MICROBIT_DISPLAY_IS_ON_MESSAGE0="顯示已經打開";s.Msg.MICROBIT_DISPLAY_IS_ON_TOOLTIP="螢幕已經打開就返回 “真”,否則返回 “假”";s.Msg.MICROBIT_DISPLAY_IS_ON_HELPURL="https://microbit-micropython.readthedocs.io/en/latest/display.html#microbit.display.is_on";s.Msg.MICROBIT_IMAGE_BUILTINS_MESSAGE0="內置圖像 %1";s.Msg.MICROBIT_IMAGE_BUILTINS_TOOLTIP="選擇一個內置的圖像。";s.Msg.MICROBIT_IMAGE_BUILTINS_HELPURL="https://microbit-micropython.readthedocs.io/en/latest/image.html#attributes";s.Msg.MICROBIT_IMAGE_COPY_MESSAGE0="復制圖像 %1";s.Msg.MICROBIT_IMAGE_COPY_TOOLTIP="創建參考圖像副本。";s.Msg.MICROBIT_IMAGE_COPY_HELPURL="https://microbit-micropython.readthedocs.io/en/latest/image.html#microbit.Image.copy";s.Msg.MICROBIT_IMAGE_INVERT_MESSAGE0="反顯圖像 %1";s.Msg.MICROBIT_IMAGE_INVERT_TOOLTIP="反顯圖像(負片效果)。";s.Msg.MICROBIT_IMAGE_INVERT_HELPURL="https://microbit-micropython.readthedocs.io/en/latest/image.html#microbit.Image.invert";s.Msg.MICROBIT_IMAGE_CREATE_MESSAGE0="創建圖像 %1 %2 %3 %4 %5 %6 %7 %8 %9 %10 %11 %12 %13 %14 %15 %16 %17 %18 %19 %20 %21 %22 %23 %24 %25 %26 %27 %28 %29 %30";s.Msg.MICROBIT_IMAGE_CREATE_TOOLTIP="創建新圖像。";s.Msg.MICROBIT_IMAGE_CREATE_HELPURL="https://microbit-micropython.readthedocs.io/en/latest/image.html#microbit.Image";s.Msg.MICROBIT_IMAGE_CREATE1_MESSAGE0="創建圖像 %1 首個欄%2第二欄%3第三欄%4第四欄%5第五欄%6";s.Msg.MICROBIT_IMAGE_CREATE1_TOOLTIP="創建新圖像。";s.Msg.MICROBIT_IMAGE_CREATE1_HELPURL="";s.Msg.MICROBIT_IMAGE_SHIFT_MESSAGE0="平移圖像 %1 %2 %3 位";s.Msg.MICROBIT_IMAGE_SHIFT_TOOLTIP="向特定方向移動圖像,並返回移動後的結果。";s.Msg.MICROBIT_IMAGE_SHIFT_HELPURL="https://microbit-micropython.readthedocs.io/en/latest/image.html#microbit.Image.shift_left";s.Msg.MICROBIT_IMAGE_SHIFT_LEFT="左移";s.Msg.MICROBIT_IMAGE_SHIFT_RIGHT="右移";s.Msg.MICROBIT_IMAGE_SHIFT_UP="上移";s.Msg.MICROBIT_IMAGE_SHIFT_DOWN="下移";s.Msg.MICROBIT_MICROBIT_PANIC_MESSAGE0="錯誤狀態碼 %1";s.Msg.MICROBIT_MICROBIT_PANIC_TOOLTIP="進入錯誤模式,提示程序存在錯誤。需要重新啟動。用一個數字表示狀態碼。";s.Msg.MICROBIT_MICROBIT_PANIC_HELPURL="https://microbit-micropython.readthedocs.io/en/latest/microbit.html#microbit.panic";s.Msg.MICROBIT_MICROBIT_RESET_HELPURL="https://microbit-micropython.readthedocs.io/en/latest/microbit.html#microbit.reset";s.Msg.MICROBIT_MICROBIT_RESET_MESSAGE0="復位 micro:bit";s.Msg.MICROBIT_MICROBIT_RESET_TOOLTIP="復位 micro:bit,重新運行";s.Msg.MICROBIT_MICROBIT_SLEEP_MESSAGE0="等待 %1 %2";s.Msg.CocoRobo_MS="毫秒";s.Msg.CocoRobo_US="微秒";s.Msg.CocoRobo_TIME_DIFFERENCE_HELPURL="";s.Msg.CocoRobo_TIME_DIFFERENCE_MESSAGE0="返回運行時間差 開始時間 %1 結束時間 %2";s.Msg.CocoRobo_TIME_DIFFERENCE_TOOLTIP="測量連續調用ticks_ms()、ticks_us()間的周期";s.Msg.CocoRobo_TYPE_HELPURL="";s.Msg.CocoRobo_TYPE_MESSAGE0="值 %1 的類型";s.Msg.CocoRobo_TYPE_TOOLTIP="返回當前值的類型";s.Msg.CocoRobo_TYPE_IS_HELPURL="";s.Msg.CocoRobo_TYPE_IS_MESSAGE0="值 %1 的類型為 %2";s.Msg.CocoRobo_TYPE_IS_TOOLTIP="設置當前值的類型爲%2,並返回結果";s.Msg.CocoRobo_EVAL_HELPURL="";s.Msg.CocoRobo_EVAL_MESSAGE0="計算運算式 %1 的結果";s.Msg.CocoRobo_EVAL_TOOLTIP="計算字串運算式,並返回結果";s.Msg.CocoRobo_RETURN_HELPURL="";s.Msg.CocoRobo_RETURN_MESSAGE0="返回 %1";s.Msg.CocoRobo_RETURN_TOOLTIP="返回一個值";s.Msg.CocoRobo_BLUEBIT_GET_MOTORPEED_HELPURL="";s.Msg.CocoRobo_BLUEBIT_GET_MOTORPEED_MESSAGE0="擴展板 馬達速度 %1";s.Msg.CocoRobo_BLUEBIT_GET_MOTORPEED_TOOLTIP="";s.Msg.CocoRobo_M1M2_LED_ON_HELPURL="";s.Msg.CocoRobo_M1M2_LED_ON_MESSAGE0="擴展板 設燈 %1 亮度 %2";s.Msg.CocoRobo_M1M2_LED_ON_TOOLTIP="";s.Msg.CocoRobo_M1M2_LED_OFF_HELPURL="";s.Msg.CocoRobo_M1M2_LED_OFF_MESSAGE0="擴展板 關燈 %1";s.Msg.CocoRobo_M1M2_LED_OFF_TOOLTIP="";s.Msg.CocoRobo_BLUEBIT_AMBIENTLIGHT_HELPURL="";s.Msg.CocoRobo_BLUEBIT_AMBIENTLIGHT_MESSAGE0="I2C數字光綫";s.Msg.CocoRobo_BLUEBIT_AMBIENTLIGHT_TOOLTIP="";s.Msg.CocoRobo_BLUEBIT_GET_COLOR_HELPURL="";s.Msg.CocoRobo_BLUEBIT_GET_COLOR_MESSAGE0="I2C RGB 顔色 %1";s.Msg.CocoRobo_BLUEBIT_GET_COLOR_TOOLTIP="";s.Msg.CocoRobo_BLUEBIT_GET_ALL_COLOR_HELPURL="";s.Msg.CocoRobo_BLUEBIT_GET_ALL_COLOR_MESSAGE0="I2C RGB 顔色";s.Msg.CocoRobo_BLUEBIT_GET_ALL_COLOR_TOOLTIP="以陣列形式返回";s.Msg.CocoRobo_BLUEBIT_GET_COLOR_HSV_HELPURL="";s.Msg.CocoRobo_BLUEBIT_GET_COLOR_HSV_MESSAGE0="I2C HSV 顔色 %1";s.Msg.CocoRobo_BLUEBIT_GET_COLOR_HSV_TOOLTIP="色調(H),飽和度(S),明度(V)";s.Msg.CocoRobo_BLUEBIT_GET_ALL_COLOR_HSV_HELPURL="";s.Msg.CocoRobo_BLUEBIT_GET_ALL_COLOR_HSV_MESSAGE0="I2C HSV 顔色";s.Msg.CocoRobo_BLUEBIT_GET_ALL_COLOR_HSV_TOOLTIP="色調(H),飽和度(S),明度(V)";s.Msg.CocoRobo_BLUEBIT_GET_FORCE_MEASURE_HELPURL="";s.Msg.CocoRobo_BLUEBIT_GET_FORCE_MEASURE_MESSAGE0="I2C力感應器 撥碼 %1";s.Msg.CocoRobo_BLUEBIT_GET_FORCE_MEASURE_TOOLTIP="I2C地址與編碼開關的需要對應";s.Msg.CocoRobo_BLUEBIT_GET_ELECTRICITY_MEASURE_HELPURL="";s.Msg.CocoRobo_BLUEBIT_GET_ELECTRICITY_MEASURE_MESSAGE0="I2C電流感應器 撥碼 %1";s.Msg.CocoRobo_BLUEBIT_GET_ELECTRICITY_MEASURE_TOOLTIP="I2C地址與編碼開關的需要對應";s.Msg.CocoRobo_BLUEBIT_GET_VOLTAGE_MEASURE_HELPURL="";s.Msg.CocoRobo_BLUEBIT_GET_VOLTAGE_MEASURE_MESSAGE0="I2C電壓感應器 撥碼 %1";s.Msg.CocoRobo_BLUEBIT_GET_VOLTAGE_MEASURE_TOOLTIP="I2C地址與編碼開關的需要對應";s.Msg.CocoRobo_BLUEBIT_GET_MAGNETIC_MEASURE_HELPURL="";s.Msg.CocoRobo_BLUEBIT_GET_MAGNETIC_MEASURE_MESSAGE0="I2C磁場感應器 撥碼 %1";s.Msg.CocoRobo_BLUEBIT_GET_MAGNETIC_MEASURE_TOOLTIP="I2C地址與編碼開關的需要對應";s.Msg.CocoRobo_BLUEBIT_GET_PH_MEASURE_HELPURL="";s.Msg.CocoRobo_BLUEBIT_GET_PH_MEASURE_MESSAGE0="I2C PH感應器 撥碼 %1";s.Msg.CocoRobo_BLUEBIT_GET_PH_MEASURE_TOOLTIP="I2C地址與編碼開關的需要對應";s.Msg.CocoRobo_BLUEBIT_GET_TDS_MEASURE_HELPURL="";s.Msg.CocoRobo_BLUEBIT_GET_TDS_MEASURE_MESSAGE0="I2C電匯率感應器 撥碼 %1";s.Msg.CocoRobo_BLUEBIT_GET_TDS_MEASURE_TOOLTIP="I2C地址與編碼開關的需要對應";s.Msg.CocoRobo_BLUEBIT_GET_PRESSURE_MEASURE_HELPURL="";s.Msg.CocoRobo_BLUEBIT_GET_PRESSURE_MEASURE_MESSAGE0="I2C氣壓感應器 撥碼 %1";s.Msg.CocoRobo_BLUEBIT_GET_PRESSURE_MEASURE_TOOLTIP="I2C地址與編碼開關的需要對應";s.Msg.CocoRobo_BLUEBIT_GET_PHOTOGATE_TIMER_MEASURE_HELPURL="";s.Msg.CocoRobo_BLUEBIT_GET_PHOTOGATE_TIMER_MEASURE_MESSAGE0="I2C光電門感應器 撥碼 %1";s.Msg.CocoRobo_BLUEBIT_GET_PHOTOGATE_TIMER_MEASURE_TOOLTIP="I2C地址與編碼開關的需要對應";s.Msg.CocoRobo_WIFI_ALL_CONFIG_HELPURL="";s.Msg.CocoRobo_WIFI_ALL_CONFIG_MESSAGE0="WI-FI配置信息";s.Msg.CocoRobo_WIFI_ALL_CONFIG_TOOLTIP="以元組形式返回所有wifi配置信息";s.Msg.CocoRobo_WIFI_ISCONNECTED_HELPURL="";s.Msg.CocoRobo_WIFI_ISCONNECTED_MESSAGE0="已連接到 WI-FI";s.Msg.CocoRobo_WIFI_ISCONNECTED_TOOLTIP="";s.Msg.CocoRobo_INIT_ASSISTANT_WIFI_HELPURL="";s.Msg.CocoRobo_INIT_ASSISTANT_WIFI_MESSAGE0="Wi-Fi連接 語音助手 Wi-Fi 名稱 %1 密碼 %2";s.Msg.CocoRobo_INIT_ASSISTANT_WIFI_TOOLTIP="教科板透過串口把WIF傳給語音助手";s.Msg.CocoRobo_INIT_ASSISTANT_PROFILE_HELPURL="";s.Msg.CocoRobo_INIT_ASSISTANT_PROFILE_TOOLTIP="需要先在檔案系統將文件上載到板";s.Msg.CocoRobo_INIT_ASSISTANT_PROFILE_MESSAGE0="讀取 語音助手 文字檔 %1";s.Msg.CocoRobo_BLUEBIT_SEG_DISPLAY_HELPURL="";s.Msg.CocoRobo_BLUEBIT_SEG_DISPLAY_MESSAGE0="數碼管顯示 %1";s.Msg.CocoRobo_BLUEBIT_SEG_DISPLAY_TOOLTIP="-999~9999";s.Msg.CocoRobo_MACHINE_RESET_HELPURL="";s.Msg.CocoRobo_MACHINE_RESET_MESSAGE0="復位";s.Msg.CocoRobo_MACHINE_RESET_TOOLTIP="與按下外部RESET按鍵效果壹樣";s.Msg.CocoRobo_BLUEBIT_SEG_CLEAR_HELPURL="";s.Msg.CocoRobo_BLUEBIT_SEG_CLEAR_MESSAGE0="清空數碼管";s.Msg.CocoRobo_BLUEBIT_SEG_CLEAR_TOOLTIP="";s.Msg.CocoRobo_MUSIC_PIN_P6="默認";s.Msg.CocoRobo_MUSIC_PIN_P6_HELPURL="";s.Msg.CocoRobo_MUSIC_PIN_P6_MESSAGE0="%1";s.Msg.CocoRobo_MUSIC_PIN_P6_TOOLTIP="";s.Msg.MICROBIT_MICROBIT_SLEEP_TOOLTIP=`在進行下一個命令前,等待設定的時間。
- 1秒(s) = 1,000毫秒(ms)
- 1秒(s) = 1,000,000微秒(μs)
- 毫秒,符號ms(millisecond)
- 微秒,符號μs(microsecond)`;s.Msg.MICROBIT_MICROBIT_SLEEP_HELPURL="https://microbit-micropython.readthedocs.io/en/latest/microbit.html#microbit.sleep";s.Msg.MICROBIT_MICROBIT_RUNNING_TIME_MESSAGE0="運行時間";s.Msg.MICROBIT_MICROBIT_RUNNING_TIME_TOOLTIP="獲取開機或復位後的運行時間(毫秒)。";s.Msg.MICROBIT_MICROBIT_RUNNING_TIME_HELPURL="https://microbit-micropython.readthedocs.io/en/latest/microbit.html#microbit.running_time";s.Msg.MICROBIT_MICROBIT_TEMPERATURE_MESSAGE0="溫度";s.Msg.MICROBIT_MICROBIT_TEMPERATURE_TOOLTIP="獲取 micro:bit 的溫度(℃)。";s.Msg.MICROBIT_MICROBIT_TEMPERATURE_HELPURL="https://microbit-micropython.readthedocs.io/en/latest/microbit.html#microbit.temperature";s.Msg.MICROBIT_MUSIC_PLAY_BUILT_IN_MESSAGE0="播放音樂 %1 等待 %2 循環 %3 腳位 %4";s.Msg.MICROBIT_MUSIC_PLAY_BUILT_IN_TOOLTIP="播放內置的音樂,可以設置等待模式和循環播放。";s.Msg.MICROBIT_MUSIC_PLAY_BUILT_IN_HELPURL="https://microbit-micropython.readthedocs.io/en/latest/music.html#built-in-melodies";s.Msg.MICROBIT_MUSIC_PITCH_MESSAGE0="播放音調 %1 %2 延時 %3 毫秒 腳位 %4";s.Msg.MICROBIT_MUSIC_PITCH_TOOLTIP="在設定的時間長度裏播放音調。";s.Msg.MICROBIT_MUSIC_PITCH_HELPURL="https://microbit-micropython.readthedocs.io/en/latest/music.html#music.pitch";s.Msg.MICROBIT_MUSIC_PLAY_LIST_OF_NOTES_MESSAGE0="腳位 %5 播放音符陣列 %1 等待 %2 %3 循環 %4";s.Msg.MICROBIT_MUSIC_PLAY_LIST_OF_NOTES_TOOLTIP="播放音符陣列,如C4:4、G4:8等,音符為字串形式。默認是教科板的P6引腳";s.Msg.MICROBIT_MUSIC_PLAY_LIST_OF_NOTES_HELPURL="https://CocoRobo.readthedocs.io/zh/latest/tutorials/basics/buzz.html";s.Msg.MICROBIT_MUSIC_RESET_HELPURL="https://microbit-micropython.readthedocs.io/en/latest/music.html#music.reset";s.Msg.MICROBIT_MUSIC_RESET_MESSAGE0="恢復音樂設置";s.Msg.MICROBIT_MUSIC_RESET_TOOLTIP="將所有音樂設置 (當前節拍, 音階和周期) 恢復成默認值。";s.Msg.MICROBIT_MUSIC_STOP_HELPURL="https://microbit-micropython.readthedocs.io/en/latest/music.html#music.stop";s.Msg.MICROBIT_MUSIC_STOP_MESSAGE0="停止播放音樂 腳位 %1";s.Msg.MICROBIT_MUSIC_STOP_TOOLTIP="默認是教科板的P6引腳";s.Msg.MICROBIT_MUSIC_SET_TEMPO_MESSAGE0="設置每壹拍等同 %1 分音符,每分鐘節拍數 %2";s.Msg.MICROBIT_MUSIC_SET_TEMPO_TOOLTIP="設置回放速度 (節拍)。壹定數量的滴答代表壹拍,每拍每分鐘播放次數 (BPM 每分鐘節拍)。";s.Msg.MICROBIT_MUSIC_SET_TEMPO_HELPURL="https://microbit-micropython.readthedocs.io/en/latest/music.html#music.set_tempo";s.Msg.MICROBIT_MUSIC_SET_TEMPO_SPEED_MESSAGE0="設置播放速度為 %1 倍";s.Msg.MICROBIT_MUSIC_SET_TEMPO_SPEED_TOOLTIP="4分音符為1拍,每分鐘節拍數默認120,為1倍的播放速度";s.Msg.MICROBIT_MUSIC_SET_TEMPO_SPEED_HELPURL="https://microbit-micropython.readthedocs.io/en/latest/music.html#music.set_tempo";s.Msg.MICROBIT_MUSIC_GET_TEMPO_MESSAGE0="獲取當前節拍";s.Msg.MICROBIT_MUSIC_GET_TEMPO_TOOLTIP="獲取當前節拍: 每節拍滴答數, 每分鐘節拍 (BPM)。";s.Msg.MICROBIT_MUSIC_GET_TEMPO_HELPURL="https://microbit-micropython.readthedocs.io/en/latest/music.html#music.get_tempo";s.Msg.MICROBIT_NEOPIXEL_INITIALISE_MESSAGE0="使用 腳位 %1 控制, neopixel 彩燈數 %2 ";s.Msg.MICROBIT_NEOPIXEL_INITIALISE_TOOLTIP="控制 neopixels 彩燈。需要設定 neopixels 彩燈數量和控制腳。";s.Msg.MICROBIT_NEOPIXEL_INITIALISE_HELPURL="https://microbit-micropython.readthedocs.io/en/latest/neopixel.html#neopixel.NeoPixel";s.Msg.MICROBIT_NEOPIXEL_CLEAR_MESSAGE0="清除 neopixels 彩燈 %1";s.Msg.MICROBIT_NEOPIXEL_CLEAR_TOOLTIP="清除所有 neopixels 彩燈";s.Msg.MICROBIT_NEOPIXEL_CLEAR_HELPURL="https://microbit-micropython.readthedocs.io/en/latest/neopixel.html#neopixel.NeoPixel.clear";s.Msg.MICROBIT_NEOPIXEL_SHOW_MESSAGE0="顯示 neopixels 彩燈 %1";s.Msg.MICROBIT_NEOPIXEL_SHOW_TOOLTIP="顯示 / 更新全部 neopixels 彩燈。";s.Msg.MICROBIT_NEOPIXEL_SHOW_HELPURL="https://microbit-micropython.readthedocs.io/en/latest/neopixel.html#neopixel.NeoPixel.show";s.Msg.MICROBIT_NEOPIXEL_SET_MESSAGE0="neopixels 彩燈控制 %1 設置位置 %2 紅色 %3 綠色 %4 藍色 %5";s.Msg.MICROBIT_NEOPIXEL_SET_TOOLTIP="更新指定的 neopixel 彩燈的紅、綠、藍 (RGB) 顏色";s.Msg.MICROBIT_NEOPIXEL_SET_HELPURL="https://microbit-micropython.readthedocs.io/en/latest/neopixel.html#using-neopixels";s.Msg.MICROBIT_PIN_TOUCHED_MESSAGE0="腳位 %1 被觸摸";s.Msg.MICROBIT_PIN_TOUCHED_TOOLTIP="如果引腳被觸摸將返回 “真”。";s.Msg.MICROBIT_PIN_TOUCHED_HELPURL="https://microbit-micropython.readthedocs.io/en/latest/pin.html#microbit.MicroBitTouchPin.is_touched";s.Msg.MICROBIT_PIN_WAS_PRESSED_MESSAGE0="腳位 %1 曾經被觸摸";s.Msg.MICROBIT_PIN_WAS_PRESSED_TOOLTIP="如果引腳曾經被觸摸將返回 “真”。";s.Msg.MICROBIT_PIN_WAS_PRESSED_HELPURL="https://microbit-micropython.readthedocs.io/en/latest/pin.html#microbit.MicroBitTouchPin.was_pressed";s.Msg.MICROBIT_PIN_GET_PRESSES_MESSAGE0="腳位 %1 被觸摸的次數";s.Msg.MICROBIT_PIN_GET_PRESSES_TOOLTIP="返回被觸摸的次數,然後清零。";s.Msg.MICROBIT_PIN_GET_PRESSES_HELPURL="https://microbit-micropython.readthedocs.io/en/latest/pin.html#microbit.MicroBitTouchPin.get_presses";s.Msg.MICROBIT_PIN_READ_ANALOG_MESSAGE0="讀取引腳 %1 模擬電壓";s.Msg.MICROBIT_PIN_READ_ANALOG_TOOLTIP="讀取引腳的模擬輸入電壓。";s.Msg.MICROBIT_PIN_READ_ANALOG_HELPURL="https://microbit-micropython.readthedocs.io/en/latest/pin.html#microbit.MicroBitAnalogDigitalPin.read_analog";s.Msg.MICROBIT_PIN_WRITE_ANALOG_MESSAGE0="設置模擬量 %1 到引腳 %2";s.Msg.MICROBIT_PIN_WRITE_ANALOG_TOOLTIP="寫入模擬參數到指定引腳上。";s.Msg.MICROBIT_PIN_WRITE_ANALOG_HELPURL="https://microbit-micropython.readthedocs.io/en/latest/pin.html#microbit.MicroBitAnalogDigitalPin.write_analog";s.Msg.MICROBIT_PIN_READ_DIGITAL_MESSAGE0="讀取引腳 %1 的數字輸入";s.Msg.MICROBIT_PIN_READ_DIGITAL_TOOLTIP="讀取引腳的數字輸入 (真 或 假)。";s.Msg.MICROBIT_PIN_READ_DIGITAL_HELPURL="https://microbit-micropython.readthedocs.io/en/latest/pin.html#microbit.MicroBitDigitalPin.read_digital";s.Msg.MICROBIT_PIN_WRITE_DIGITAL_MESSAGE0="設置數字輸出 %1 到引腳 %2";s.Msg.MICROBIT_PIN_WRITE_DIGITAL_TOOLTIP="寫入數字量 (真 或 假) 到指定引腳。";s.Msg.MICROBIT_PIN_WRITE_DIGITAL_HELPURL="https://microbit-micropython.readthedocs.io/en/latest/pin.html#microbit.MicroBitDigitalPin.write_digital";s.Msg.MICROBIT_RADIO_ON_HELPURL="https://microbit-micropython.readthedocs.io/en/latest/radio.html#radio.on";s.Msg.MICROBIT_RADIO_ON_MESSAGE0="打開無線廣播";s.Msg.MICROBIT_RADIO_ON_TOOLTIP="打開無線廣播。需要明確宣告調用,因為它會消耗更多功率和占用更多記憶體。";s.Msg.MICROBIT_RADIO_OFF_HELPURL="https://microbit-micropython.readthedocs.io/en/latest/radio.html#radio.off";s.Msg.MICROBIT_RADIO_OFF_MESSAGE0="關閉無線廣播";s.Msg.MICROBIT_RADIO_OFF_TOOLTIP="關閉無線廣播,節省功耗和記憶體。";s.Msg.MICROBIT_RADIO_CONFIG_MESSAGE0="配置無線廣播消息長度 %1 %2 最大隊列數量 %3 %4 信道 %5 %6 廣播功率 %7 %8 地址 %9 %10 組 %11 %12 數據速率 %13";s.Msg.MICROBIT_RADIO_CONFIG_TOOLTIP=`配置無線廣播。
- 長度指單個消息的最大長度;
- 隊列指可以存放在消息隊列中消息的數量;
- 信道指無線廣播使用的無線頻率;
- 功率指發射廣播信號的強度;
- 地址:32位值;
- 組:8位值(0-255);
- 數據速率指數據傳輸的速度。`;s.Msg.MICROBIT_RADIO_CONFIG_HELPURL="https://microbit-micropython.readthedocs.io/en/latest/radio.html#radio.config";s.Msg.MICROBIT_RADIO_RESET_HELPURL="https://microbit-micropython.readthedocs.io/en/latest/radio.html#radio.reset";s.Msg.MICROBIT_RADIO_RESET_MESSAGE0="復位無線廣播";s.Msg.MICROBIT_RADIO_RESET_TOOLTIP="恢復無線廣播到默認設置。";s.Msg.MICROBIT_RADIO_SEND_STRING_MESSAGE0="發送消息 %1";s.Msg.MICROBIT_RADIO_SEND_STRING_TOOLTIP="廣播文字消息。";s.Msg.MICROBIT_RADIO_SEND_STRING_HELPURL="https://microbit-micropython.readthedocs.io/en/latest/radio.html#radio.send";s.Msg.MICROBIT_RADIO_SEND_BYTES_MESSAGE0="發送字節 %1";s.Msg.MICROBIT_RADIO_SEND_BYTES_TOOLTIP="廣播字節。";s.Msg.MICROBIT_RADIO_SEND_BYTES_HELPURL="https://microbit-micropython.readthedocs.io/en/latest/radio.html#radio.send";s.Msg.MICROBIT_RADIO_RECEIVE_MESSAGE0="接收消息";s.Msg.MICROBIT_RADIO_RECEIVE_TOOLTIP="接收消息。";s.Msg.MICROBIT_RADIO_RECEIVE_HELPURL="https://microbit-micropython.readthedocs.io/en/latest/radio.html#radio.receive";s.Msg.MICROBIT_RADIO_RECEIVE_BYTES_MESSAGE0="接收字節";s.Msg.MICROBIT_RADIO_RECEIVE_BYTES_TOOLTIP="接收字節。";s.Msg.MICROBIT_RADIO_RECEIVE_BYTES_HELPURL="https://microbit-micropython.readthedocs.io/en/latest/radio.html#radio.receive";s.Msg.MICROBIT_SPEECH_SAY_MESSAGE0="說 %1";s.Msg.MICROBIT_SPEECH_SAY_TOOLTIP="嘗試說英語";s.Msg.MICROBIT_SPEECH_SAY_HELPURL="https://microbit-micropython.readthedocs.io/en/latest/speech.html#speech.say";s.Msg.MICROBIT_SPEECH_PRONOUNCE_MESSAGE0="讀 %1";s.Msg.MICROBIT_SPEECH_PRONOUNCE_TOOLTIP="精確發音。";s.Msg.MICROBIT_SPEECH_PRONOUNCE_HELPURL="https://microbit-micropython.readthedocs.io/en/latest/speech.html#phonemes";s.Msg.MICROBIT_SPEECH_SING_MESSAGE0="唱 %1";s.Msg.MICROBIT_SPEECH_SING_TOOLTIP="象機器人壹樣唱歌。";s.Msg.MICROBIT_SPEECH_SING_HELPURL="https://microbit-micropython.readthedocs.io/en/latest/speech.html#singing";s.Msg.MICROBIT_GESTURE_SHAKE="搖晃";s.Msg.MICROBIT_GESTURE_UP="上";s.Msg.MICROBIT_GESTURE_DOWN="下";s.Msg.MICROBIT_GESTURE_LEFT="左";s.Msg.MICROBIT_GESTURE_RIGHT="右";s.Msg.MICROBIT_GESTURE_FACE_UP="朝上";s.Msg.MICROBIT_GESTURE_FACE_DOWN="朝下";s.Msg.MICROBIT_GESTURE_FREEFAIL="自由下落";s.Msg.MICROBIT_IMAGE_HEART="心形";s.Msg.MICROBIT_IMAGE_HEART_SMALL="心(小)";s.Msg.MICROBIT_IMAGE_HAPPY="高興";s.Msg.MICROBIT_IMAGE_SMILE="笑臉";s.Msg.MICROBIT_IMAGE_SAD="傷心";s.Msg.MICROBIT_IMAGE_CONFUSED="困惑";s.Msg.MICROBIT_IMAGE_ANGRY="生氣";s.Msg.MICROBIT_IMAGE_ASLEEP="睡著";s.Msg.MICROBIT_IMAGE_SUPRISED="驚訝";s.Msg.MICROBIT_IMAGE_SILLY="愚蠢";s.Msg.MICROBIT_IMAGE_FABULOUS="極妙";s.Msg.MICROBIT_IMAGE_MEH="無聊";s.Msg.MICROBIT_IMAGE_YES="是";s.Msg.MICROBIT_IMAGE_NO="否";s.Msg.MICROBIT_IMAGE_CLOCK12="12點";s.Msg.MICROBIT_IMAGE_CLOCK11="11點";s.Msg.MICROBIT_IMAGE_CLOCK10="10點";s.Msg.MICROBIT_IMAGE_CLOCK9="9點";s.Msg.MICROBIT_IMAGE_CLOCK8="8點";s.Msg.MICROBIT_IMAGE_CLOCK7="7點";s.Msg.MICROBIT_IMAGE_CLOCK6="6點";s.Msg.MICROBIT_IMAGE_CLOCK5="5點";s.Msg.MICROBIT_IMAGE_CLOCK4="4點";s.Msg.MICROBIT_IMAGE_CLOCK3="3點";s.Msg.MICROBIT_IMAGE_CLOCK2="2點";s.Msg.MICROBIT_IMAGE_CLOCK1="1點";s.Msg.MICROBIT_IMAGE_ARROW_N="箭頭-北";s.Msg.MICROBIT_IMAGE_ARROW_NE="箭頭-東北";s.Msg.MICROBIT_IMAGE_ARROW_E="箭頭-東";s.Msg.MICROBIT_IMAGE_ARROW_SE="箭頭-東南";s.Msg.MICROBIT_IMAGE_ARROW_S="箭頭-南";s.Msg.MICROBIT_IMAGE_ARROW_SW="箭頭-西南";s.Msg.MICROBIT_IMAGE_ARROW_W="箭頭-西";s.Msg.MICROBIT_IMAGE_ARROW_NW="箭頭-西北";s.Msg.MICROBIT_IMAGE_TRIANGLE="三角形";s.Msg.MICROBIT_IMAGE_TRIANGLE_LEFT="左三角形";s.Msg.MICROBIT_IMAGE_CHESSBOARD="棋盤";s.Msg.MICROBIT_IMAGE_DIAMOND="菱形";s.Msg.MICROBIT_IMAGE_DIAMOND_SMALL="菱形(小)";s.Msg.MICROBIT_IMAGE_SQUARE="方形";s.Msg.MICROBIT_IMAGE_SQUARE_SMALL="方形(小)";s.Msg.MICROBIT_IMAGE_RABBIT="兔子";s.Msg.MICROBIT_IMAGE_COW="牛";s.Msg.MICROBIT_IMAGE_MUSIC_CROTCHET="四分音符";s.Msg.MICROBIT_IMAGE_MUSIC_QUAVER="八分音符";s.Msg.MICROBIT_IMAGE_MUSIC_QUAVERS="顫音";s.Msg.MICROBIT_IMAGE_PITCHFORK="叉子";s.Msg.MICROBIT_IMAGE_XMAS="聖誕樹";s.Msg.MICROBIT_IMAGE_PACMAN="吃豆人";s.Msg.MICROBIT_IMAGE_TARGET="目標";s.Msg.MICROBIT_IMAGE_TSHIRT="T恤衫";s.Msg.MICROBIT_IMAGE_ROLLERSKATE="輪滑";s.Msg.MICROBIT_IMAGE_DUCK="鴨子";s.Msg.MICROBIT_IMAGE_HOUSE="房子";s.Msg.MICROBIT_IMAGE_TORTOISE="烏龜";s.Msg.MICROBIT_IMAGE_BUTTERFLY="蝴蝶";s.Msg.MICROBIT_IMAGE_STICKFIGURE="線條畫";s.Msg.MICROBIT_IMAGE_GHOST="幽靈";s.Msg.MICROBIT_IMAGE_SWORD="寶劍";s.Msg.MICROBIT_IMAGE_GIRAFFE="長頸鹿";s.Msg.MICROBIT_IMAGE_SKULL="頭";s.Msg.MICROBIT_IMAGE_UMBRELLA="傘";s.Msg.MICROBIT_IMAGE_SNAKE="蛇";s.Msg.MICROBIT_IMAGE_ALL_CLOCKS="所有時鐘";s.Msg.MICROBIT_IMAGE_ALL_ARROWS="所有箭頭";s.Msg.MICROBIT_PIN_SET_SERVO_HELPURL="http://wiki.labplus.cn/index.php?title=%E8%88%B5%E6%9C%BA";s.Msg.MICROBIT_PIN_SET_SERVO_TOOLTIP="設置伺服馬達角度,範圍為 0 ~ 180度";s.Msg.MICROBIT_PIN_SET_SERVO_MESSAGE0="設置伺服馬達 腳位 %1 角度為 %2";s.Msg.MICROBIT_PIN_SET_MODE_HELPURL="";s.Msg.MICROBIT_PIN_SET_MODE_TOOLTIP="引腳模式有三種:懸空、上拉、下拉";s.Msg.MICROBIT_PIN_SET_MODE_MESSAGE0="設置引腳 %1 模式為 %2";s.Msg.MICROBIT_PIN_MODE_NO="懸空";s.Msg.MICROBIT_PIN_MODE_UP="上拉";s.Msg.MICROBIT_PIN_MODE_DOWN="下拉";s.Msg.MICROBIT_UART_INIT_MESSAGE0="初始化串口波特率為 %3 TX為 %1 RX為 %2";s.Msg.MICROBIT_UART_INIT_TOOLTIP="";s.Msg.MICROBIT_UART_INIT_HELPURL="https://microbit-micropython.readthedocs.io/en/latest/uart.html";s.Msg.MICROBIT_UART_ANY_MSG_RECEIVED_HELPURL="https://microbit-micropython.readthedocs.io/en/latest/uart.html";s.Msg.MICROBIT_UART_ANY_MSG_RECEIVED_TOOLTIP="";s.Msg.MICROBIT_UART_ANY_MSG_RECEIVED_MESSAGE0="串口接收到數據";s.Msg.MICROBIT_UART_READ_MSG_HELPURL="https://microbit-micropython.readthedocs.io/en/latest/uart.html";s.Msg.MICROBIT_UART_READ_MSG_TOOLTIP="";s.Msg.MICROBIT_UART_READ_MSG_MESSAGE0="讀取串口 %1 字節";s.Msg.MICROBIT_UART_READ_MSG_TO_HELPURL="https://microbit-micropython.readthedocs.io/en/latest/uart.html";s.Msg.MICROBIT_UART_READ_MSG_TO_TOOLTIP="";s.Msg.MICROBIT_UART_READ_MSG_TO_MESSAGE0="讀取串口 %1 字節存至 %2";s.Msg.MICROBIT_UART_WRITE_MSG_HELPURL="https://microbit-micropython.readthedocs.io/en/latest/uart.html";s.Msg.MICROBIT_UART_WRITE_MSG_TOOLTIP="";s.Msg.MICROBIT_UART_WRITE_MSG_MESSAGE0="串口發送數據 %1";s.Msg.MICROBIT_ALL_BYTES="全部";s.Msg.MICROBIT_ALINE_BYTES="壹欄";s.Msg.LABPLUS_BUTTON_IS_PRESSED_MESSAGE0="腳位 %1 被觸發";s.Msg.LABPLUS_BUTTON_IS_PRESSED_TOOLTIP="如果指定按鍵按下返回 “真”,否則返回 “假”。";s.Msg.LABPLUS_BUTTON_IS_PRESSED_HELPURL="https://microbit-micropython.readthedocs.io/en/latest/button.html#Button.is_pressed";s.Msg.LABPLUS_BUTTON_WAS_PRESSED_MESSAGE0="腳位 %1 曾經被觸發";s.Msg.LABPLUS_BUTTON_WAS_PRESSED_TOOLTIP="如果按鍵曾經按下過返回 “真”,否則返回 “假”。";s.Msg.LABPLUS_BUTTON_WAS_PRESSED_HELPURL="https://microbit-micropython.readthedocs.io/en/latest/button.html#Button.was_pressed";s.Msg.LABPLUS_BUTTON_GET_PRESSES_MESSAGE0="腳位 %1 被觸發過的次數";s.Msg.LABPLUS_BUTTON_GET_PRESSES_TOOLTIP="返回按鍵按下的總次數,然後清除計數。";s.Msg.LABPLUS_BUTTON_GET_PRESSES_HELPURL="https://microbit-micropython.readthedocs.io/en/latest/button.html#Button.get_presses";s.Msg.LABPLUS_LED_MESSAGE0="設置LED燈 腳位 %2 輸出 %1";s.Msg.LABPLUS_LED_TOOLTIP="";s.Msg.LABPLUS_LED_HELPURL="http://wiki.labplus.cn/index.php?title=LED";s.Msg.LABPLUS_INFRARED_IS_TRIGGERED_MESSAGE0="紅外探測 腳位 %1 被觸發";s.Msg.LABPLUS_INFRARED_IS_TRIGGERED_TOOLTIP="";s.Msg.LABPLUS_INFRARED_IS_TRIGGERED_HELPURL="http://wiki.labplus.cn/index.php?title=%E7%BA%A2%E5%A4%96%E6%8E%A2%E6%B5%8B";s.Msg.LABPLUS_HEAT_SENSITIVE_DETECTOR_MESSAGE0="熱敏感應器 腳位 %1 的值";s.Msg.LABPLUS_HEAT_SENSITIVE_DETECTOR_TOOLTIP="";s.Msg.LABPLUS_HEAT_SENSITIVE_DETECTOR_HELPURL="http://wiki.labplus.cn/index.php?title=%E7%83%AD%E6%95%8F%E7%94%B5%E9%98%BB";s.Msg.LABPLUS_I2C_LIGHT_SENSOR_MESSAGE0="I2C數字光線感應器的值(lux)";s.Msg.LABPLUS_I2C_LIGHT_SENSOR_TOOLTIP="";s.Msg.LABPLUS_I2C_LIGHT_SENSOR_HELPURL="http://wiki.labplus.cn/index.php?title=%E6%95%B0%E5%AD%97%E5%85%89%E7%BA%BF";s.Msg.LABPLUS_WATER_LEVEL_DETECTOR_MESSAGE0="水位感應器 腳位 %1 的值";s.Msg.LABPLUS_WATER_LEVEL_DETECTOR_TOOLTIP="";s.Msg.LABPLUS_WATER_LEVEL_DETECTOR_HELPURL="http://wiki.labplus.cn/index.php?title=%E6%B0%B4%E4%BD%8D";s.Msg.LABPLUS_SMOKE_DETECTOR_IS_TRIGGERED_MESSAGE0="煙霧探測器 腳位 %1 被觸發";s.Msg.LABPLUS_SMOKE_DETECTOR_IS_TRIGGERED_TOOLTIP="";s.Msg.LABPLUS_SMOKE_DETECTOR_IS_TRIGGERED_HELPURL="http://wiki.labplus.cn/index.php?title=%E7%83%9F%E9%9B%BE";s.Msg.LABPLUS_BUZZER_FOR_HELPURL="http://wiki.labplus.cn/index.php?title=%E8%9C%82%E9%B8%A3%E5%99%A8";s.Msg.LABPLUS_BUZZER_FOR_TOOLTIP="";s.Msg.LABPLUS_BUZZER_FOR_MESSAGE0="以頻率 %1 激活蜂鳴器 引腳0 %2 毫秒";s.Msg.LABPLUS_BUZZER_ON_HELPURL="http://wiki.labplus.cn/index.php?title=%E8%9C%82%E9%B8%A3%E5%99%A8";s.Msg.LABPLUS_BUZZER_ON_TOOLTIP="";s.Msg.LABPLUS_BUZZER_ON_MESSAGE0="以頻率 %1 激活蜂鳴器 引腳0";s.Msg.LABPLUS_BUZZER_OFF_HELPURL="http://wiki.labplus.cn/index.php?title=%E8%9C%82%E9%B8%A3%E5%99%A8";s.Msg.LABPLUS_BUZZER_OFF_TOOLTIP="";s.Msg.LABPLUS_BUZZER_OFF_MESSAGE0="關閉蜂鳴器 引腳0";s.Msg.LABPLUS_TM_HM_SENSOR_MESSAGE0="I2C溫濕度感應器的 %1 值";s.Msg.LABPLUS_TM_HM_SENSOR_TOOLTIP="";s.Msg.LABPLUS_TM_HM_SENSOR_HELPURL="http://wiki.labplus.cn/index.php?title=%E6%B8%A9%E6%B9%BF%E5%BA%A6";s.Msg.LABPLUS_TM_HM_SENSOR_TM="溫度";s.Msg.LABPLUS_TM_HM_SENSOR_HM="濕度";s.Msg.LABPLUS_SET_SERVO_HELPURL="http://wiki.labplus.cn/index.php?title=%E8%88%B5%E6%9C%BA";s.Msg.LABPLUS_SET_SERVO_TOOLTIP="";s.Msg.LABPLUS_SET_SERVO_MESSAGE0="設置伺服馬達 腳位 %1 角度為 %2";s.Msg.LABPLUS_FINGERPRINT_SENSOR_MESSAGE0="指紋感應器 腳位 %1 驗證透過";s.Msg.LABPLUS_FINGERPRINT_SENSOR_TOOLTIP="";s.Msg.LABPLUS_FINGERPRINT_SENSOR_HELPURL="http://wiki.labplus.cn/index.php?title=%E6%8C%87%E7%BA%B9";s.Msg.LABPLUS_SET_MOTOR_HELPURL="";s.Msg.LABPLUS_SET_MOTOR_TOOLTIP="";s.Msg.LABPLUS_SET_MOTOR_MESSAGE0="設置馬達 %1 方向 %2 速度 %3";s.Msg.LABPLUS_SET_MOTOR_CLOCKWISE="正轉";s.Msg.LABPLUS_SET_MOTOR_ANTI_CLOCKWISE="反轉";s.Msg.LABPLUS_STOP_MOTOR_HELPURL="";s.Msg.LABPLUS_STOP_MOTOR_TOOLTIP="";s.Msg.LABPLUS_STOP_MOTOR_MESSAGE0="停止馬達";s.Msg.LABPLUS_GET_RFID_ID_MESSAGE0="射頻卡 腳位 %1 驗證透過";s.Msg.LABPLUS_GET_RFID_ID_TOOLTIP="";s.Msg.LABPLUS_GET_RFID_ID_HELPURL="http://wiki.labplus.cn/index.php?title=RFID";s.Msg.LABPLUS_GET_RFID_VALUE_MESSAGE0="電子錢包 腳位 %1 余額";s.Msg.LABPLUS_GET_RFID_VALUE_TOOLTIP="";s.Msg.LABPLUS_GET_RFID_VALUE_HELPURL="";s.Msg.LABPLUS_SET_RFID_VALUE_MESSAGE0="設置電子錢包 腳位 %1 余額 %2 %3";s.Msg.LABPLUS_SET_RFID_VALUE_TOOLTIP="";s.Msg.LABPLUS_SET_RFID_VALUE_HELPURL="";s.Msg.LABPLUS_SET_RFID_ADD="增加";s.Msg.LABPLUS_SET_RFID_MINUS="減少";s.Msg.LABPLUS_SOUND_IS_TRIGGERED_MESSAGE0="聲音感應器 腳位 %1 被觸發";s.Msg.LABPLUS_SOUND_IS_TRIGGERED_TOOLTIP="";s.Msg.LABPLUS_SOUND_IS_TRIGGERED_HELPURL="http://wiki.labplus.cn/index.php?title=%E9%BA%A6%E5%85%8B%E9%A3%8E";s.Msg.LABPLUS_USB_SWITCH_HELPURL="";s.Msg.LABPLUS_USB_SWITCH_TOOLTIP="";s.Msg.LABPLUS_USB_SWITCH_MESSAGE0="%1 USB開關 腳位 %2";s.Msg.LABPLUS_USB_SWITCH_ON="打開";s.Msg.LABPLUS_USB_SWITCH_OFF="關閉";s.Msg.LABPLUS_VOICE_RECORD_HELPURL="";s.Msg.LABPLUS_VOICE_RECORD_TOOLTIP="";s.Msg.LABPLUS_VOICE_RECORD_MESSAGE0="%1 語音錄放器 腳位 %2";s.Msg.LABPLUS_VOICE_RECORD_ON="打開";s.Msg.LABPLUS_VOICE_RECORD_OFF="關閉";s.Msg.LABPLUS_RGB_INITIALISE_MESSAGE0="使用 腳位 %1 控制,RGB 彩燈數 %2 ";s.Msg.LABPLUS_RGB_INITIALISE_TOOLTIP="控制 RGB 彩燈。需要設定 neopixels 彩燈數量和控制腳。";s.Msg.LABPLUS_RGB_INITIALISE_HELPURL="https://microbit-micropython.readthedocs.io/en/latest/neopixel.html#neopixel.NeoPixel";s.Msg.LABPLUS_RGB_CLEAR_MESSAGE0="清除 RGB 彩燈 %1";s.Msg.LABPLUS_RGB_CLEAR_TOOLTIP="清除所有 RGB 彩燈";s.Msg.LABPLUS_RGB_CLEAR_HELPURL="https://microbit-micropython.readthedocs.io/en/latest/neopixel.html#neopixel.NeoPixel.clear";s.Msg.LABPLUS_RGB_SHOW_MESSAGE0="顯示 RGB 彩燈 %1";s.Msg.LABPLUS_RGB_SHOW_TOOLTIP="顯示 / 更新全部 RGB 彩燈。";s.Msg.LABPLUS_RGB_SHOW_HELPURL="https://microbit-micropython.readthedocs.io/en/latest/neopixel.html#neopixel.NeoPixel.show";s.Msg.LABPLUS_RGB_SET_MESSAGE0="RGB 彩燈控制 %1 設置位置 %2 紅色 %3 綠色 %4 藍色 %5";s.Msg.LABPLUS_RGB_SET_TOOLTIP="更新指定的 RGB 彩燈的紅、綠、藍 (RGB) 顏色";s.Msg.LABPLUS_RGB_SET_HELPURL="https://microbit-micropython.readthedocs.io/en/latest/neopixel.html#using-neopixels";s.Msg.LABPLUS_COMPITITION_INIT_EXTENDED_PINS_MESSAGE0="設置擴展端口 IO %1 為 %2";s.Msg.LABPLUS_COMPITITION_INIT_EXTENDED_PINS_TOOLTIP="0表示輸出引腳,1表示輸入引腳";s.Msg.LABPLUS_COMPITITION_INIT_EXTENDED_PINS_HELPURL="http://wiki.labplus.cn/index.php?title=%E7%AB%AF%E5%8F%A3%E6%89%A9%E5%B1%95";s.Msg.LABPLUS_COMPITITION_INIT_EXTENDED_PINS_INPUT="輸入";s.Msg.LABPLUS_COMPITITION_INIT_EXTENDED_PINS_OUTPUT="輸出";s.Msg.LABPLUS_READ_EXTENDED_PIN_HELPURL="http://wiki.labplus.cn/index.php?title=%E7%AB%AF%E5%8F%A3%E6%89%A9%E5%B1%95";s.Msg.LABPLUS_READ_EXTENDED_PIN_TOOLTIP="";s.Msg.LABPLUS_READ_EXTENDED_PIN_MESSAGE0="讀取擴展端口值 IO %1";s.Msg.LABPLUS_WRITE_EXTENDED_PIN_HELPURL="http://wiki.labplus.cn/index.php?title=%E7%AB%AF%E5%8F%A3%E6%89%A9%E5%B1%95";s.Msg.LABPLUS_WRITE_EXTENDED_PIN_TOOLTIP="";s.Msg.LABPLUS_WRITE_EXTENDED_PIN_MESSAGE0="設置擴展端口 IO %1 值為 %2";s.Msg.LABPLUS_I2C_ULTRASONIC_HELPURL="http://wiki.labplus.cn/index.php?title=%E8%B6%85%E5%A3%B0%E6%B3%A2";s.Msg.LABPLUS_I2C_ULTRASONIC_TOOLTIP="";s.Msg.LABPLUS_I2C_ULTRASONIC_MESSAGE0="I2C超聲波感應器的值";s.Msg.MICROBIT_SET_MUSIC_PIN_HELPURL="";s.Msg.MICROBIT_SET_MUSIC_PIN_TOOLTIP="";s.Msg.MICROBIT_SET_MUSIC_PIN_MESSAGE0="設置默認蜂鳴器引腳為 %1";s.Msg.LABPLUS_HUMAN_DETECTOR_IS_TRIGGERED_HELPURL="http://wiki.labplus.cn/index.php?title=%E4%BA%BA%E4%BD%93%E6%84%9F%E5%BA%94";s.Msg.LABPLUS_HUMAN_DETECTOR_IS_TRIGGERED_TOOLTIP="";s.Msg.LABPLUS_HUMAN_DETECTOR_IS_TRIGGERED_MESSAGE0="人體感應 腳位 %1 被觸發";s.Msg.LABPLUS_MAGNETIC_SWITCH_IS_TRIGGERED_HELPURL="http://wiki.labplus.cn/index.php?title=%E9%97%A8%E7%A3%81%E5%BC%80%E5%85%B3";s.Msg.LABPLUS_MAGNETIC_SWITCH_IS_TRIGGERED_TOOLTIP="";s.Msg.LABPLUS_MAGNETIC_SWITCH_IS_TRIGGERED_MESSAGE0="門磁開關 腳位 %1 被觸發";s.Msg.LABPLUS_SOUND_LEVEL_SENSOR_HELPURL="";s.Msg.LABPLUS_SOUND_LEVEL_SENSOR_TOOLTIP="";s.Msg.LABPLUS_SOUND_LEVEL_SENSOR_MESSAGE0="聲音感應器 腳位 %1 的值";s.Msg.LABPLUS_SMOKE_SENSOR_HELPURL="http://wiki.labplus.cn/index.php?title=%E7%83%9F%E9%9B%BE";s.Msg.LABPLUS_SMOKE_SENSOR_TOOLTIP="";s.Msg.LABPLUS_SMOKE_SENSOR_MESSAGE0="煙霧感應器 腳位 %1 的值";s.Msg.LABPLUS_SOIL_MOISTURE_SENSOR_HELPURL="http://wiki.labplus.cn/index.php?title=%E5%9C%9F%E5%A3%A4%E6%B9%BF%E5%BA%A6";s.Msg.LABPLUS_SOIL_MOISTURE_SENSOR_TOOLTIP="";s.Msg.LABPLUS_SOIL_MOISTURE_SENSOR_MESSAGE0="土壤濕度感應器 腳位 %1 的值";s.Msg.LABPLUS_FAN_SWITCH_HELPURL="http://wiki.labplus.cn/index.php?title=%E6%8E%92%E9%A3%8E%E6%89%87";s.Msg.LABPLUS_FAN_SWITCH_TOOLTIP="";s.Msg.LABPLUS_FAN_SWITCH_MESSAGE0="%1 風扇 腳位 %2";s.Msg.LABPLUS_VOICE_RECORD_ON_HELPURL="http://wiki.labplus.cn/index.php?title=%E8%AF%AD%E9%9F%B3%E5%BD%95%E6%94%BE";s.Msg.LABPLUS_VOICE_RECORD_ON_TOOLTIP="";s.Msg.LABPLUS_VOICE_RECORD_ON_MESSAGE0="打開錄放器 %1 腳位 %2";s.Msg.LABPLUS_VOICE_RECORD_PLAY="播放";s.Msg.LABPLUS_VOICE_RECORD_REC="錄音";s.Msg.LABPLUS_VOICE_RECORD_OFF_HELPURL="http://wiki.labplus.cn/index.php?title=%E8%AF%AD%E9%9F%B3%E5%BD%95%E6%94%BE";s.Msg.LABPLUS_VOICE_RECORD_OFF_TOOLTIP="";s.Msg.LABPLUS_VOICE_RECORD_OFF_MESSAGE0="關閉錄放器 腳位 %1";s.Msg.LABPLUS_MOTOR_ON_HELPURL="http://wiki.labplus.cn/index.php?title=%E7%94%B5%E6%9C%BA%E9%A9%B1%E5%8A%A8";s.Msg.LABPLUS_MOTOR_ON_TOOLTIP="";s.Msg.LABPLUS_MOTOR_ON_MESSAGE0="打開直流馬達 %1 速度 %2 腳位 %3";s.Msg.LABPLUS_MOTOR_ON_CLOCKWISE="正轉";s.Msg.LABPLUS_MOTOR_ON_ANTICLOCKWISE="反轉";s.Msg.LABPLUS_MOTOR_OFF_HELPURL="http://wiki.labplus.cn/index.php?title=%E7%94%B5%E6%9C%BA%E9%A9%B1%E5%8A%A8";s.Msg.LABPLUS_MOTOR_OFF_TOOLTIP="";s.Msg.LABPLUS_MOTOR_OFF_MESSAGE0="停止直流馬達 腳位 %1";s.Msg.LABPLUS_READ_COLOR_FROM_I2C_HELPURL="http://wiki.labplus.cn/index.php?title=%E9%A2%9C%E8%89%B2";s.Msg.LABPLUS_READ_COLOR_FROM_I2C_TOOLTIP="";s.Msg.LABPLUS_READ_COLOR_FROM_I2C_MESSAGE0="I2C顏色感應器讀取並儲存顏色";s.Msg.LABPLUS_RGB_COLOR_HELPURL="http://wiki.labplus.cn/index.php?title=RGB_LED";s.Msg.LABPLUS_RGB_COLOR_TOOLTIP="讀取已儲存的顏色";s.Msg.LABPLUS_RGB_COLOR_MESSAGE0="RGB顏色 %1";s.Msg.LABPLUS_SET_I2C_DIGITS_HELPURL="http://wiki.labplus.cn/index.php?title=%E6%95%B0%E7%A0%81%E7%AE%A1";s.Msg.LABPLUS_SET_I2C_DIGITS_TOOLTIP="";s.Msg.LABPLUS_SET_I2C_DIGITS_MESSAGE0="設置I2C數碼管的值為 %1";s.Msg.LABPLUS_TURN_OFF_I2C_DIGITS_HELPURL="http://wiki.labplus.cn/index.php?title=%E6%95%B0%E7%A0%81%E7%AE%A1";s.Msg.LABPLUS_TURN_OFF_I2C_DIGITS_TOOLTIP="";s.Msg.LABPLUS_TURN_OFF_I2C_DIGITS_MESSAGE0="關閉I2C數碼管";s.Msg.LABPLUS_UART_SET_MIDI_MELODIC_HELPURL="http://wiki.labplus.cn/index.php?title=%E7%94%B5%E5%AD%90%E7%90%B4";s.Msg.LABPLUS_UART_SET_MIDI_MELODIC_TOOLTIP="";s.Msg.LABPLUS_UART_SET_MIDI_MELODIC_MESSAGE0="設置MIDI模組音調為 %1";s.Msg.LABPLUS_UART_PLAY_MIDI_NOTE_HELPURL="http://wiki.labplus.cn/index.php?title=%E7%94%B5%E5%AD%90%E7%90%B4";s.Msg.LABPLUS_UART_PLAY_MIDI_NOTE_TOOLTIP="";s.Msg.LABPLUS_UART_PLAY_MIDI_NOTE_MESSAGE0="MIDI模組 %2 音符 %1";s.Msg.LABPLUS_UART_PLAY_MIDI_NOTE_Do="Do";s.Msg.LABPLUS_UART_PLAY_MIDI_NOTE_Re="Re";s.Msg.LABPLUS_UART_PLAY_MIDI_NOTE_Mi="Mi";s.Msg.LABPLUS_UART_PLAY_MIDI_NOTE_Fa="Fa";s.Msg.LABPLUS_UART_PLAY_MIDI_NOTE_Sol="Sol";s.Msg.LABPLUS_UART_PLAY_MIDI_NOTE_La="La";s.Msg.LABPLUS_UART_PLAY_MIDI_NOTE_Si="Si";s.Msg.LABPLUS_UART_PLAY_MIDI_NOTE="播放";s.Msg.LABPLUS_UART_OFF_MIDI_NOTE="停止";s.Msg.LABPLUS_UART_OFF_MIDI_NOTE_HELPURL="http://wiki.labplus.cn/index.php?title=%E7%94%B5%E5%AD%90%E7%90%B4";s.Msg.LABPLUS_UART_OFF_MIDI_NOTE_TOOLTIP="";s.Msg.LABPLUS_UART_OFF_MIDI_NOTE_MESSAGE0="MIDI模組停止播放音符 %1";s.Msg.LABPLUS_UART_INIT_MIDI_HELPURL="http://wiki.labplus.cn/index.php?title=%E7%94%B5%E5%AD%90%E7%90%B4";s.Msg.LABPLUS_UART_INIT_MIDI_TOOLTIP="";s.Msg.LABPLUS_UART_INIT_MIDI_MESSAGE0="初始化MIDI模組 %1";s.Msg.LABPLUS_LINE_FOLLOWER_IS_TRIGGERED_HELPURL="http://wiki.labplus.cn/index.php?title=%E5%BE%AA%E8%BF%B9";s.Msg.LABPLUS_LINE_FOLLOWER_IS_TRIGGERED_TOOLTIP="";s.Msg.LABPLUS_LINE_FOLLOWER_IS_TRIGGERED_MESSAGE0="循跡感應器 腳位 %1 檢測為黑";s.Msg.LABPLUS_TEMPERATURE_SENSOR_HELPURL="http://wiki.labplus.cn/index.php?title=LM35%E6%B8%A9%E5%BA%A6";s.Msg.LABPLUS_TEMPERATURE_SENSOR_TOOLTIP="";s.Msg.LABPLUS_TEMPERATURE_SENSOR_MESSAGE0="LM35溫度感應器 腳位 %1 的值";s.Msg.LABPLUS_ROTATE_DIMMER_HELPURL="http://wiki.labplus.cn/index.php?title=%E6%97%8B%E9%92%AE%E7%94%B5%E4%BD%8D%E5%99%A8";s.Msg.LABPLUS_ROTATE_DIMMER_TOOLTIP="";s.Msg.LABPLUS_ROTATE_DIMMER_MESSAGE0="旋轉電位器 腳位 %1 的值";s.Msg.LABPLUS_SHAKE_DETECTOR_IS_TRIGGERED_HELPURL="http://wiki.labplus.cn/index.php?title=%E9%9C%87%E5%8A%A8";s.Msg.LABPLUS_SHAKE_DETECTOR_IS_TRIGGERED_TOOLTIP="";s.Msg.LABPLUS_SHAKE_DETECTOR_IS_TRIGGERED_MESSAGE0="震動感應器 腳位 %1 被觸發";s.Msg.LABPLUS_LASER_SWITCH_HELPURL="http://wiki.labplus.cn/index.php?title=%E6%BF%80%E5%85%89%E5%8F%91%E5%B0%84";s.Msg.LABPLUS_LASER_SWITCH_TOOLTIP="";s.Msg.LABPLUS_LASER_SWITCH_MESSAGE0="%1 激光開關 腳位 %2";s.Msg.LABPLUS_4BUTTON_HELPURL="http://wiki.labplus.cn/index.php?title=%E5%9B%9B%E6%8C%89%E9%94%AE";s.Msg.LABPLUS_4BUTTON_TOOLTIP="";s.Msg.LABPLUS_4BUTTON_MESSAGE0="四向按鍵模組 腳位 %1 按鍵 %2 被按下";s.Msg.BLUE="A";s.Msg.GREEN="B";s.Msg.RED="C";s.Msg.YELLOW="D";s.Msg.LABPLUS_JOYSTICK_HELPURL="";s.Msg.LABPLUS_JOYSTICK_TOOLTIP="";s.Msg.LABPLUS_JOYSTICK_MESSAGE0="搖桿 引腳A0 %1 引腳A1 %2 %3 軸的值";s.Msg.LABPLUS_UART_MP3_PLAY_HELPURL="http://wiki.labplus.cn/index.php?title=%E9%9F%B3%E4%B9%90%E6%92%AD%E6%94%BE";s.Msg.LABPLUS_UART_MP3_PLAY_TOOLTIP="";s.Msg.LABPLUS_UART_MP3_PLAY_MESSAGE0="MP3模組(UART)播放第 %1 首音樂";s.Msg.LABPLUS_UART_MP3_SET_VOLUME_HELPURL="http://wiki.labplus.cn/index.php?title=%E9%9F%B3%E4%B9%90%E6%92%AD%E6%94%BE";s.Msg.LABPLUS_UART_MP3_SET_VOLUME_TOOLTIP="";s.Msg.LABPLUS_UART_MP3_SET_VOLUME_MESSAGE0="設置MP3模組(UART)音量為 %1";s.Msg.LABPLUS_UART_MP3_SET_STATUS_HELPURL="http://wiki.labplus.cn/index.php?title=%E9%9F%B3%E4%B9%90%E6%92%AD%E6%94%BE";s.Msg.LABPLUS_UART_MP3_SET_STATUS_TOOLTIP="";s.Msg.LABPLUS_UART_MP3_SET_STATUS_MESSAGE0="設置MP3模組(UART)狀態為 %1";s.Msg.PAUSE="暫停";s.Msg.STOP="停止";s.Msg.PLAY="繼續播放";s.Msg.PLAYNEXT="下壹首";s.Msg.PLAYPREV="上壹首";s.Msg.LABPLUS_UART_INIT_HELPURL="http://wiki.labplus.cn/index.php?title=Bluebit";s.Msg.LABPLUS_UART_INIT_TOOLTIP="";s.Msg.LABPLUS_UART_INIT_MESSAGE0="初始化串口波特率為 %3 TX為 %1 RX為 %2";s.Msg.LABPLUS_VOICE_RECORD_ON1_HELPURL="http://wiki.labplus.cn/index.php?title=%E8%AF%AD%E9%9F%B3%E5%BD%95%E6%94%BE";s.Msg.LABPLUS_VOICE_RECORD_ON1_TOOLTIP="";s.Msg.LABPLUS_VOICE_RECORD_ON1_MESSAGE0="打開錄放器 %1 %2 引腳REC %3 引腳PLAY %4";s.Msg.LABPLUS_VOICE_RECORD_OFF1_HELPURL="http://wiki.labplus.cn/index.php?title=%E8%AF%AD%E9%9F%B3%E5%BD%95%E6%94%BE";s.Msg.LABPLUS_VOICE_RECORD_OFF1_TOOLTIP="";s.Msg.LABPLUS_VOICE_RECORD_OFF1_MESSAGE0="關閉錄放器 %1 引腳REC %2 引腳PLAY %3";s.Msg.LABPLUS_MOTOR_ON1_HELPURL="http://wiki.labplus.cn/index.php?title=%E7%94%B5%E6%9C%BA%E9%A9%B1%E5%8A%A8";s.Msg.LABPLUS_MOTOR_ON1_TOOLTIP="";s.Msg.LABPLUS_MOTOR_ON1_MESSAGE0="打開直流馬達 %1 速度 %2 引腳AIN1 %3 引腳AIN2 %4";s.Msg.LABPLUS_MOTOR_OFF1_HELPURL="http://wiki.labplus.cn/index.php?title=%E7%94%B5%E6%9C%BA%E9%A9%B1%E5%8A%A8";s.Msg.LABPLUS_MOTOR_OFF1_TOOLTIP="";s.Msg.LABPLUS_MOTOR_OFF1_MESSAGE0="停止直流馬達 %1 引腳AIN1 %2 引腳AIN2 %3";s.Msg.LABPLUS_SET_I2C_LCD1602_CURSOR_HELPURL="http://wiki.labplus.cn/index.php?title=1602_LCD";s.Msg.LABPLUS_SET_I2C_LCD1602_CURSOR_TOOLTIP="";s.Msg.LABPLUS_SET_I2C_LCD1602_CURSOR_MESSAGE0="設置LCD遊標位置%1 X %2 Y %3";s.Msg.LABPLUS_SET_I2C_LCD1602_PRINT_HELPURL="http://wiki.labplus.cn/index.php?title=1602_LCD";s.Msg.LABPLUS_SET_I2C_LCD1602_PRINT_TOOLTIP="";s.Msg.LABPLUS_SET_I2C_LCD1602_PRINT_MESSAGE0="設置LCD顯示 %1";s.Msg.LABPLUS_SET_I2C_LCD1602_SCROLL_HELPURL="http://wiki.labplus.cn/index.php?title=1602_LCD";s.Msg.LABPLUS_SET_I2C_LCD1602_SCROLL_TOOLTIP="配合循環次數使用";s.Msg.LABPLUS_SET_I2C_LCD1602_SCROLL_MESSAGE0="%1滾動LCD顯示內容";s.Msg.LABPLUS_SET_I2C_LCD1602_SCROLL_ALEFT="向左";s.Msg.LABPLUS_SET_I2C_LCD1602_SCROLL_RIGHTWARD="向右";s.Msg.LABPLUS_SET_I2C_LCD1602_CLEAR_HELPURL="http://wiki.labplus.cn/index.php?title=1602_LCD";s.Msg.LABPLUS_SET_I2C_LCD1602_CLEAR_TOOLTIP="";s.Msg.LABPLUS_SET_I2C_LCD1602_CLEAR_MESSAGE0="清除LCD顯示內容";s.Msg.LABPLUS_UART_ANY_MSG_RECEIVED_HELPURL="http://wiki.labplus.cn/index.php?title=Bluebit";s.Msg.LABPLUS_UART_ANY_MSG_RECEIVED_TOOLTIP="";s.Msg.LABPLUS_UART_ANY_MSG_RECEIVED_MESSAGE0="%1 接收到數據";s.Msg.BLUEBIT_UART="串口";s.Msg.BLUEBIT_INFRARED_SIGNAL="紅外信號";s.Msg.BLUEBIT_BLUEBOOTH="藍牙";s.Msg.LABPLUS_UART_READ_MSG_HELPURL="http://wiki.labplus.cn/index.php?title=Bluebit";s.Msg.LABPLUS_UART_READ_MSG_TOOLTIP="";s.Msg.LABPLUS_UART_READ_MSG_MESSAGE0="讀取 %1 數據";s.Msg.LABPLUS_UART_WRITE_MSG_HELPURL="http://wiki.labplus.cn/index.php?title=Bluebit";s.Msg.LABPLUS_UART_WRITE_MSG_TOOLTIP="";s.Msg.LABPLUS_UART_WRITE_MSG_MESSAGE0="%1 發送數據 %2";s.Msg.LABPLUS_SET_I2C_LED_MATRIX_HELPURL="http://wiki.labplus.cn/index.php?title=%E7%82%B9%E9%98%B5";s.Msg.LABPLUS_SET_I2C_LED_MATRIX_TOOLTIP="";s.Msg.LABPLUS_SET_I2C_LED_MATRIX_MESSAGE0="設置點陣 %1 首個欄顯示%2 第二欄顯示%3 第三欄顯示%4 第四欄顯示%5 第五欄顯示%6 第六欄顯示%7 第七欄顯示%8 第八欄顯示%9 ";s.Msg.LABPLUS_SET_I2C_LED_MATRIX_MESSAGE2="設置點陣 %1 %2 %3 %4 %5 %6 %7 %8 %9 %10 %11 %12 %13 %14 %15 %16 %17 %18 %19 %20 %21 %22 %23 %24 %25 %26 %27 %28 %29 %30 %31 %32 %33 %34 %35 %36 %37 %38 %39 %40 %41 %42 %43 %44 %45 %46 %47 %48 %49 %50 %51 %52 %53 %54 %55 %56 %57 %58 %59 %60 %61 %62 %63 %64 %65 %66 %67 %68 %69 %70 %71 %72";s.Msg.LABPLUS_SET_I2C_LED_MATRIX_CLEAR_HELPURL="http://wiki.labplus.cn/index.php?title=%E7%82%B9%E9%98%B5";s.Msg.LABPLUS_SET_I2C_LED_MATRIX_CLEAR_TOOLTIP="";s.Msg.LABPLUS_SET_I2C_LED_MATRIX_CLEAR_MESSAGE0="清空點陣";s.Msg.LABPLUS_UART_SET_OLCD_HELPURL="http://wiki.labplus.cn/index.php?title=LCD";s.Msg.LABPLUS_UART_SET_OLCD_TOOLTIP="";s.Msg.LABPLUS_UART_SET_OLCD_MESSAGE0="設置OLCD屏 %1 X %2 Y %3 顯示文本 %4 字體為 %5";s.Msg.LABPLUS_UART_SET_OLCD_CLEAR_HELPURL="http://wiki.labplus.cn/index.php?title=LCD";s.Msg.LABPLUS_UART_SET_OLCD_CLEAR_TOOLTIP="";s.Msg.LABPLUS_UART_SET_OLCD_CLEAR_MESSAGE0="在OLCD屏上擦除矩陣 %1 X1 %2 Y1 %3 X2 %4 Y2 %5";s.Msg.LABPLUS_UART_SET_OLCD_CLEAR_ALL_MESSAGE0="清空OLCD屏";s.Msg.LABPLUS_UART_SET_OLCD_CLEAR_ALL_HELPURL="http://wiki.labplus.cn/index.php?title=LCD";s.Msg.LABPLUS_UART_SET_OLCD_CLEAR_ALL_TOOLTIP="";s.Msg.LABPLUS_LIGHT_SENSOR_HELPURL="http://wiki.labplus.cn/index.php?title=%E6%A8%A1%E6%8B%9F%E5%85%89%E7%BA%BF";s.Msg.LABPLUS_LIGHT_SENSOR_TOOLTIP="";s.Msg.LABPLUS_LIGHT_SENSOR_MESSAGE0="模擬光線感應器 腳位 %1 的值";s.Msg.LABPLUS_BUTTON_MODULE_IS_PRESSED_HELPURL="https://microbit-micropython.readthedocs.io/en/latest/i2c.html";s.Msg.LABPLUS_BUTTON_MODULE_IS_PRESSED_TOOLTIP="";s.Msg.LABPLUS_BUTTON_MODULE_IS_PRESSED_MESSAGE0="按鍵模組 腳位 %1 被按下";s.Msg.MICROBIT_EXT2_SET_SERVO_HELPURL="http://wiki.labplus.cn/index.php?title=Extend:bit%E2%85%A1";s.Msg.MICROBIT_EXT2_SET_SERVO_TOOLTIP="";s.Msg.MICROBIT_EXT2_SET_SERVO_MESSAGE0="設置伺服馬達 %1 的角度為 %2";s.Msg.MICROBIT_EXT2_SET_MOTOR_HELPURL="http://wiki.labplus.cn/index.php?title=Extend:bit%E2%85%A1";s.Msg.MICROBIT_EXT2_SET_MOTOR_TOOLTIP="";s.Msg.MICROBIT_EXT2_SET_MOTOR_MESSAGE0="設置馬達 %1 方向 %2 速度 %3";s.Msg.MICROBIT_EXT2_STOP_MOTOR_HELPURL="http://wiki.labplus.cn/index.php?title=Extend:bit%E2%85%A1";s.Msg.MICROBIT_EXT2_STOP_MOTOR_TOOLTIP="";s.Msg.MICROBIT_EXT2_STOP_MOTOR_MESSAGE0="停止馬達 %1";s.Msg.MICROBIT_EXT2_SOUND_VALUE_MESSAGE0="聲音感應器的值";s.Msg.MICROBIT_EXT2_SOUND_VALUE_HELPURL="http://wiki.labplus.cn/index.php?title=Extend:bit%E2%85%A1";s.Msg.MICROBIT_EXT2_SOUND_VALUE_TOOLTIP="";s.Msg.MICROBIT_EXT2_LIGHT_VALUE_MESSAGE0="光線感應器的值";s.Msg.MICROBIT_EXT2_LIGHT_VALUE_HELPURL="http://wiki.labplus.cn/index.php?title=Extend:bit%E2%85%A1";s.Msg.MICROBIT_EXT2_LIGHT_VALUE_TOOLTIP="";s.Msg.MICROBIT_INIT_I2C_HELPURL="https://microbit-micropython.readthedocs.io/en/latest/i2c.html";s.Msg.MICROBIT_INIT_I2C_TOOLTIP="";s.Msg.MICROBIT_INIT_I2C_MESSAGE0="初始化I2C 頻率 %1 引腳SDA %2 引腳SCL %3";s.Msg.MICROBIT_I2C_READ_HELPURL="https://microbit-micropython.readthedocs.io/en/latest/i2c.html";s.Msg.MICROBIT_I2C_READ_TOOLTIP="";s.Msg.MICROBIT_I2C_READ_MESSAGE0="I2C讀取從地址 %1 讀取 %2 字節";s.Msg.MICROBIT_I2C_WRITE_HELPURL="https://microbit-micropython.readthedocs.io/en/latest/i2c.html";s.Msg.MICROBIT_I2C_WRITE_TOOLTIP="";s.Msg.MICROBIT_I2C_WRITE_MESSAGE0="I2C寫入 %2 到地址 %1";s.Msg.MICROBIT_CONVERT_BYTEARRAY_HELPURL="https://microbit-micropython.readthedocs.io/en/latest/i2c.html";s.Msg.MICROBIT_CONVERT_BYTEARRAY_TOOLTIP="";s.Msg.MICROBIT_CONVERT_BYTEARRAY_MESSAGE0="轉bytearray %1";s.Msg.BOTBIT_MOTOR_ON_HELPURL="";s.Msg.BOTBIT_MOTOR_ON_TOOLTIP="範圍:-2000~2000";s.Msg.BOTBIT_MOTOR_ON_MESSAGE0="設置機器人 %1 右輪速度為 %2 左輪速度為 %3";s.Msg.BOTBIT_MOTOR_LEFT="左";s.Msg.BOTBIT_MOTOR_RIGHT="右";s.Msg.BOTBIT_SERVO_UP="上方";s.Msg.BOTBIT_SERVO_DOWN="下方";s.Msg.BOTBIT_MOTOR_FORWARD="前進";s.Msg.BOTBIT_MOTOR_BACKWARD="後退";s.Msg.BOTBIT_HOLDBALL_HELPURL="";s.Msg.BOTBIT_HOLDBALL_TOOLTIP="";s.Msg.BOTBIT_HOLDBALL_MESSAGE0="雙臂抱起";s.Msg.BOTBIT_STEERING_ENGINEL_HELPURL="";s.Msg.BOTBIT_STEERING_ENGINEL_TOOLTIP="角度範圍為-45°~45°";s.Msg.BOTBIT_STEERING_ENGINEL_MESSAGE0="獲取 %1臂 速度";s.Msg.BOTBIT_STEERING_ENGINET_MESSAGE0="獲取 %1臂 傾斜角";s.Msg.X="X:";s.Msg.Y="Y:";s.Msg.W="寬:";s.Msg.H="高:";s.Msg.BOTBIT_SERVO_Y="Y軸伺服馬達";s.Msg.BOTBIT_SERVO_X="X軸伺服馬達";s.Msg.BOTBIT_SERVO_Z="Z軸伺服馬達";s.Msg.BOTBIT_STEERING_ENGINE_LEG_HELPURL="";s.Msg.BOTBIT_STEERING_ENGINE_LEG_TOOLTIP="角度範圍為-45°~45°";s.Msg.BOTBIT_STEERING_ENGINE_LEG_MESSAGE0="設置 %1腿 %2伺服馬達的角度為 %3";s.Msg.BOTBIT_UPDATEPOSITION_HELPURL="";s.Msg.BOTBIT_UPDATEPOSITION_TOOLTIP="";s.Msg.BOTBIT_UPDATEPOSITION_MESSAGE0="刷新伺服馬達角度";s.Msg.BOTBIT_ULTRASONIC_HELPURL="";s.Msg.BOTBIT_ULTRASONIC_TOOLTIP="";s.Msg.BOTBIT_ULTRASONIC_MESSAGE0="超聲波感應器的值";s.Msg.BOTBIT_WALKING_HELPURL="";s.Msg.BOTBIT_WALKING_TOOLTIP="周期越短, 速度越快, 推薦1000~2000";s.Msg.BOTBIT_WALKING_MESSAGE0="舞步(walking) 步數%2 周期%3 方向%1 ";s.Msg.BOTBIT_WALKING_FORWARD="前";s.Msg.BOTBIT_WALKING_BACK="後";s.Msg.BOTBIT_MOONWALKER_HELPURL="";s.Msg.BOTBIT_MOONWALKER_TOOLTIP="推薦周期1000~2000, 幅度10~50";s.Msg.BOTBIT_MOONWALKER_MESSAGE0="舞步(moonwalker) 步數%2 周期%3 幅度%4 方向%1 ";s.Msg.BOTBIT_MOONWALKER_L="左";s.Msg.BOTBIT_MOONWALKER_R="右";s.Msg.BOTBIT_CRUSAITO_HELPURL="";s.Msg.BOTBIT_CRUSAITO_TOOLTIP="推薦步數2~10, 幅度10~50";s.Msg.BOTBIT_CRUSAITO_MESSAGE0="舞步(crusaito) 步數%2 周期%3 幅度%4 方向%1";s.Msg.BOTBIT_CRUSAITO_CW="逆時針";s.Msg.BOTBIT_CRUSAITO_ANTICW="順時針";s.Msg.BOTBIT_FLAPPING_HELPURL="";s.Msg.BOTBIT_FLAPPING_TOOLTIP="推薦步數5~15, 幅度10~30, 周期1000~2000";s.Msg.BOTBIT_FLAPPING_MESSAGE0="舞步(flapping) 步數%2 周期%3 幅度%4 方向%1";s.Msg.BOTBIT_FLAPPING_FORWARD="前";s.Msg.BOTBIT_FLAPPING_BACK="後";s.Msg.BOTBIT_HOME_HELPURL="";s.Msg.BOTBIT_HOME_TOOLTIP="";s.Msg.BOTBIT_HOME_MESSAGE0="機器人舞步初始化";s.Msg.LABPLUS_UART_SET_MIDI_VOL_HELPURL="http://wiki.labplus.cn/index.php?title=MIDI(%E7%94%B5%E5%AD%90%E7%90%B4)";s.Msg.LABPLUS_UART_SET_MIDI_VOL_TOOLTIP="";s.Msg.LABPLUS_UART_SET_MIDI_VOL_MESSAGE0="設置MIDI模組音量為 %1";s.Msg.labplus_mapping_MESSAGE0="映射%1 從%2 , %3到%4 , %5";s.Msg.labplus_mapping_TOOLTIP="將0~100中的10映射到0~200中並返回映射值";s.Msg.labplus_mapping_HELPURL="";s.Msg.JOINT_MIDI_PIANO="平臺鋼琴";s.Msg.JOINT_MIDI_BRIGHTACOUSTICPIANO="亮音鋼琴";s.Msg.JOINT_MIDI_ELECTRICGRANDPIANO="電鋼琴";s.Msg.JOINT_MIDI_HARPSICHORD="大鍵琴";s.Msg.JOINT_MIDI_Celesta="鋼片琴";s.Msg.JOINT_MIDI_Glockenspiel="鐘琴";s.Msg.JOINT_MIDI_Musicalbox="音樂盒";s.Msg.JOINT_MIDI_Marimba="馬林巴琴";s.Msg.JOINT_MIDI_Xylophone="木琴";s.Msg.JOINT_MIDI_TubularBell="管鐘";s.Msg.JOINT_MIDI_Dulcimer="洋琴";s.Msg.JOINT_Vibraphone="顫音琴";s.Msg.JOINT_MIDI_ORGAN="音栓風琴";s.Msg.JOINT_Acoustic_Guitar="木吉他";s.Msg.JOINT_Electric_Guitar="電吉他";s.Msg.JOINT_Acoustic_Bass="民謠貝斯";s.Msg.JOINT_String_Ensemble="弦樂合奏";s.Msg.JOINT_Violin="小提琴";s.Msg.JOINT_Trumpet="小號";s.Msg.JOINT_Sax="薩克斯";s.Msg.JOINT_Steel_Drums="鋼鼓";s.Msg.JOINT_Lead="合成音主旋律";s.Msg.JOINT_Pad="合成音襯底";s.Msg.LABPLUS_PLAY_BUZZER_NOTE_HELPURL="http://wiki.labplus.cn/index.php?title=%E8%9C%82%E9%B8%A3%E5%99%A8";s.Msg.LABPLUS_PLAY_BUZZER_NOTE_TOOLTIP="";s.Msg.LABPLUS_PLAY_BUZZER_NOTE_MESSAGE0="播放音調 %1";s.Msg.Carbit_init_MESSAGE0="CarBit初始化";s.Msg.Carbit_init_TOOLTIP="";s.Msg.Carbit_init_HELPURL="http://wiki.labplus.cn/index.php?title=Car:bit";s.Msg.Carbit_setLeftMotor_MESSAGE0="B2馬達速度 %1";s.Msg.Carbit_setLeftMotor_TOOLTIP="範圍:-100~100";s.Msg.Carbit_setLeftMotor_HELPURL="http://wiki.labplus.cn/index.php?title=Car:bit";s.Msg.Carbit_setRightMotor_MESSAGE0="B1馬達速度 %1";s.Msg.Carbit_setRightMotor_TOOLTIP="範圍:-100~100";s.Msg.Carbit_setRightMotor_HELPURL="http://wiki.labplus.cn/index.php?title=Car:bit";s.Msg.Carbit_analog_light_HELPURL="http://wiki.labplus.cn/index.php?title=Car:bit";s.Msg.Carbit_analog_light_TOOLTIP="Q3對應Pin1,Q4對應Pin2";s.Msg.Carbit_analog_light_MESSAGE0="%1 模擬光線的值";s.Msg.Carbit_Speed_U10_HELPURL="http://wiki.labplus.cn/index.php?title=Car:bit";s.Msg.Carbit_Speed_U10_TOOLTIP="對應U10";s.Msg.Carbit_Speed_U10_MESSAGE0="左輪速度";s.Msg.Carbit_Speed_U11_HELPURL="http://wiki.labplus.cn/index.php?title=Car:bit";s.Msg.Carbit_Speed_U11_TOOLTIP="對應U11";s.Msg.Carbit_Speed_U11_MESSAGE0="右輪速度";s.Msg.Carbit_Distance_HELPURL="http://wiki.labplus.cn/index.php?title=Car:bit";s.Msg.Carbit_Distance_TOOLTIP="";s.Msg.Carbit_Distance_MESSAGE0="超聲波的值";s.Msg.Carbit_tracking_HELPURL="http://wiki.labplus.cn/index.php?title=Car:bit";s.Msg.Carbit_tracking_TOOLTIP="";s.Msg.Carbit_tracking_MESSAGE0="循跡參數 %1 直行速度 %2 最大限速 %3 轉彎延時 %5 轉彎速度系數 %4 ";s.Msg.XUNFEI_SPEECH_TTS_HELPURL="";s.Msg.XUNFEI_SPEECH_TTS_TOOLTIP="合成音頻文件格式只能是 *.pcm";s.Msg.XUNFEI_SPEECH_TTS_MESSAGE0="[訊飛語音] 合成音頻 %1 APPID %2 APISecret %3 APIKey %4 文字內容 %5 轉存為音頻文件 %6";s.Msg.XUNFEI_SPEECH_IAT_HELPURL="";s.Msg.XUNFEI_SPEECH_IAT_TOOLTIP="可識別的音頻格式有 *.pcm 與 *.wav";s.Msg.XUNFEI_SPEECH_IAT_MESSAGE0="[訊飛語音] 識別音頻 %1 APPID %2 APISecret %3 APIKey %4 待識別音頻文件 %5";s.Msg.XUNFEI_SPEECH_IAT_RESULT_HELPURL="";s.Msg.XUNFEI_SPEECH_IAT_RESULT_TOOLTIP="";s.Msg.XUNFEI_SPEECH_IAT_RESULT_MESSAGE0="[訊飛語音] 識別結果";s.Msg.CocoRobo_NAME_PYTHON_ENVIRONMENT_HELPURL="";s.Msg.CocoRobo_NAME_PYTHON_ENVIRONMENT_MESSAGE0="宣告python 運行環境";s.Msg.CocoRobo_NAME_PYTHON_ENVIRONMENT_TOOLTIP="";s.Msg.CocoRobo_LARK_GET_ALL_COLOR_MESSAGE0="I2C獲取顔色";s.Msg.CocoRobo_LARK_GET_ALL_COLOR_TOOLTIP="返回陣列";s.Msg.CocoRobo_LARK_GET_COLOR_TOOLTIP="";s.Msg.CocoRobo_LARK_GET_COLOR_MESSAGE0="I2C獲取 %1";s.Msg.CocoRobo_lARK_RED="紅色";s.Msg.CocoRobo__LARK_GREEN="綠色";s.Msg.CocoRobo__LARK_BLUE="藍色";s.Msg.CocoRobo_LARK_GET_ALL_COLOR_HSV_TOOLTIP="HSV(Hue, Saturation, Value)";s.Msg.CocoRobo_LARKT_GET_ALL_COLOR_HSV_MESSAGE0="I2C獲取HSV";s.Msg.CocoRobo_LARK_GET_COLOR_HSV_TOOLTIP="HSV(Hue, Saturation, Value)";s.Msg.CocoRobo_LARK_GET_COLOR_HSV_MESSAGE0="i2C獲取HSV %1";s.Msg.CocoRobo_LARK_GET_COLOR_STRING_TOOLTIP="";s.Msg.CocoRobo_LARK_GET_COLOR_STRING_MESSAGE0="I2C獲取顔色";s.Msg.CocoRobo_LARK_DISCERN_COLOR_TOOLTIP="";s.Msg.CocoRobo_LARK_DISCERN_COLOR_MESSAGE0="獲取 %1";s.Msg.CocoRobo_LARK_RED="紅色";s.Msg.CocoRobo_LARK_GREEN="綠色";s.Msg.CocoRobo_LARK_BLUE="藍色";s.Msg.CocoRobo_LARK_ORANGE="橙色";s.Msg.CocoRobo_LARK_YELLOW="黃色";s.Msg.CocoRobo_LARK_PURPLE="紫色";s.Msg.CocoRobo_LARK_CYAN="青色";s.Msg.CocoRobo_LARK_NONE="無色";s.Msg.CocoRobo_LARK_NULL="無法獲取";s.Msg.CocoRobo_LARK_ULTRASONIC_TOOLTIP="";s.Msg.CocoRobo_LARK_ULTRASONIC_MESSAGE0="I2C超聲波";s.Msg.CocoRobo_LARK_MOTOR_SET_I2C_TOOLTIP="";s.Msg.CocoRobo_LARK_MOTOR_SET_I2C_MESSAGE0="I2C設置 %1 速度 %2";s.Msg.CocoRobo_LARK_GET_LINE_ON_I2C_TOOLTIP="";s.Msg.CocoRobo_LARK_GET_LINE_ON_I2C_MESSAGE0="I2C獲取 %1 巡綫值";s.Msg.CocoRobo_LARK_GET_LINE_RIGHT_ON_I2C="右邊";s.Msg.CocoRobo_LARK_GET_LINE_LEFT_ON_I2C="左邊";s.Msg.CocoRobo_LARK_SEARCH_LINE_ON_I2C_TOOLTIP="";s.Msg.CocoRobo_LARK_SEARCH_LINE_ON_I2C_MESSAGE0="I2C循跡感應器 %1 遇到黑綫";s.Msg.CocoRobo_LARK_SEARCH_LEFT="左邊";s.Msg.CocoRobo_LARK_SEARCH_RIGHT="右邊";s.Msg.CocoRobo_LARK_SEARCH_BOTH="兩邊都";s.Msg.CocoRobo_LARK_SEARCH_NONE="兩邊都無";s.Msg.CocoRobo_LARK__CAR_GET_ALL_COLOR_TOOLTIP="Returns as list";s.Msg.CocoRobo_LARK__CAR_GET_ALL_COLOR_MESSAGE0="千裏馬獲取顔色";s.Msg.CocoRobo_LARK_CAR_GET_COLOR_TOOLTIP="";s.Msg.CocoRobo_LARK_CAR_GET_COLOR_MESSAGE0="千裏馬獲取 %1";s.Msg.CocoRobo_lARK_CAR_RED="紅色";s.Msg.CocoRobo__LARK_CAR_GREEN="綠色";s.Msg.CocoRobo__LARK_CAR_BLUE="藍色";s.Msg.CocoRobo_LARK_CAR_GET_ALL_COLOR_HSV_TOOLTIP="HSV(Hue, Saturation, Value)";s.Msg.CocoRobo_LARKT_CAR_GET_ALL_COLOR_HSV_MESSAGE0="千裏馬獲取HSV";s.Msg.CocoRobo_LARK_CAR_GET_COLOR_HSV_TOOLTIP="HSV(Hue, Saturation, Value)";s.Msg.CocoRobo_LARK_CAR_GET_COLOR_HSV_MESSAGE0="千裏馬HSV %1";s.Msg.CocoRobo_LARK_CAR_GET_COLOR_STRING_TOOLTIP="";s.Msg.CocoRobo_LARK_CAR_GET_COLOR_STRING_MESSAGE0="千裏馬識別顔色";s.Msg.CocoRobo_LARK_CAR_DISCERN_COLOR_TOOLTIP="";s.Msg.CocoRobo_LARK_CAR_DISCERN_COLOR_MESSAGE0="千裏馬獲取 %1";s.Msg.CocoRobo_LARK_CAR_RED="紅色";s.Msg.CocoRobo_LARK_CAR_GREEN="綠色";s.Msg.CocoRobo_LARK_CAR_BLUE="藍色";s.Msg.CocoRobo_LARK_CAR_ORANGE="橙色";s.Msg.CocoRobo_LARK_CAR_YELLOW="黃色";s.Msg.CocoRobo_LARK_CAR_PURPLE="紫色";s.Msg.CocoRobo_LARK_CAR_CYAN="青色";s.Msg.CocoRobo_LARK_CAR_NONE="無識別";s.Msg.CocoRobo_LARK_CAR_NULL="識別錯誤";s.Msg.CocoRobo_LARK_CAR_ULTRASONIC_TOOLTIP="";s.Msg.CocoRobo_LARK_CAR_ULTRASONIC_MESSAGE0="千裏馬獲取超聲波";s.Msg.CocoRobo_LARK_CAR_GET_LINE_ON_I2C_TOOLTIP="";s.Msg.CocoRobo_LARK_CAR_GET_LINE_ON_I2C_MESSAGE0="千裏馬獲取 %1 循跡數值";s.Msg.CocoRobo_LARK_CAR_GET_LINE_RIGHT_ON_I2C="右邊";s.Msg.CocoRobo_LARK_CAR_GET_LINE_LEFT_ON_I2C="左邊";s.Msg.CocoRobo_LARK_CAR_SEARCH_LINE_ON_I2C_TOOLTIP="";s.Msg.CocoRobo_LARK_CAR_SEARCH_LINE_ON_I2C_MESSAGE0="千裏馬循跡 %1 碰到黑綫";s.Msg.CocoRobo_LARK_CAR_SEARCH_LEFT="左邊";s.Msg.CocoRobo_LARK_CAR_SEARCH_RIGHT="右邊";s.Msg.CocoRobo_LARK_CAR_SEARCH_BOTH="兩邊";s.Msg.CocoRobo_LARK_CAR_SEARCH_NONE="兩邊都沒有";s.Msg.CocoRobo_LARK_MOTOR_SET_I2C_TOOLTIP="";s.Msg.CocoRobo_LARK_MOTOR_SET_I2C_MESSAGE0="千裏馬 %1 速度 %2";s.Msg.CocoRobo_LARK_CAR_MOTION_LEFT="左轉";s.Msg.CocoRobo_LARK_CAR_MOTION_RIGHT="右轉";s.Msg.CocoRobo_LARK_CAR_MOTION_FORWARD="前進";s.Msg.CocoRobo_LARK_CAR_MOTION_BACKWARD="後退";s.Msg.CocoRobo_LARK_CAR_MOTION_STOP="停止";s.Msg.Math_Degrad_RAD_TOOLTIP="返回轉換角度爲弧度的結果";s.Msg.Math_Degrad_DEG_TOOLTIP="返回轉換弧度爲角度的結果";s.Msg.Text_Split_String_By_Delimiter_TOOLTIP="將字元串使用分隔符進行拆分並生成陣列";s.Msg.Text_List_TOOLTIP="初始化陣列[0,0,0]";s.Msg.Text_Dict_TOOLTIP="初始化字典";s.Msg.Text_Tuple_TOOLTIP="初始化元組";s.Msg.Text_Set_TOOLTIP="初始化集合";s.Msg.Iot_System_Run_TOOLTIP="運行指定路徑的程序文件";s.Msg.Esp32_Main_Controller_Io_From_Digital_Pin_TOOLTIP="返回%1獲取特定引腳的數字信號數值";s.Msg.Esp32_Main_Controller_Io_Set_Digital_Pin_TOOLTIP="%1設置特定引腳爲指定電平";s.Msg.Esp32_Main_Controller_Io_Set_Analog_Pin_TOOLTIP="IoT模組設置引腳,並控制%1的模擬輸出";s.Msg.Ai_Main_Controller_Io_Set_Analog_Pin_TOOLTIP="A.I.模組設置引腳,並控制%1的模擬輸出";s.Msg.Esp32_Main_Controller_Io_From_Analog_Pin_TOOLTIP="IoT模組獲取特定引腳的模擬信號數值";s.Msg.Esp32_Main_Controller_Io_High_Low_TOOLTIP="返回%1";s.Msg.esp32_main_controller_io_analog_pin_1_TOOLTIP="返回A.I. 模組引腳 #%1";s.Msg.esp32_main_controller_io_analog_pin_2_TOOLTIP="返回IoT 模組引腳 #%1";s.Msg.Iot_System_Create_TOOLTIP="創建指定名字的文本文件";s.Msg.Iot_System_Write_TOOLTIP="創建指定名字的文本文件,並寫入內容,以%1爲分隔符";s.Msg.Iot_System_Input_TOOLTIP="讀取指定名字的文本文件爲列表,並以%1爲分隔符";s.Msg.Esp32_Get_Current_Date_TOOLTIP="獲取本地時間的%1";s.Msg.Esp32_Main_Controller_Time_Timer_Init_TOOLTIP="%1初始化計時器";s.Msg.Esp32_Main_Controller_Time_Timer_Get_Current_TOOLTIP="%1獲取計時器已過時間";s.Msg.Esp32_Main_Controller_Time_Timer_Clear_TOOLTIP="%1清除計時器";s.Msg.Esp32_Main_Controller_Time_Period_Timer_TOOLTIP="%1啓用週期重複計時器,並隔一定的時間運行指定的條件";s.Msg.Esp32_Main_Controller_Time_Period_Timer_Clear_TOOLTIP="%1清除週期重複計時器";s.Msg.serial_Comm_Print_TOOLTIP="串口打印";s.Msg.Serial_Write_Data_TOOLTIP="使用%1透過序列埠傳送資料至其他設備";s.Msg.Serial_Read_Data_Setup_TOOLTIP="使用%1透過序列埠獲取其他設備傳送的資料初始化";s.Msg.Serial_Read_Data_all_TOOLTIP="獲取串口的數據並存儲到serial_data中";s.Msg.Serial_Read_Data_TOOLTIP="從serial_data獲取接收到串列埠資料中的某一位資料";s.Msg.Serial_Send_Data_To_Microbit_TOOLTIP="在%1模組上載送資料至Microbit";s.Msg.Trd_Party_Sensor_Hcsr04_TOOLTIP="%1初始化超聲波感應器";s.Msg.Trd_Party_Sensor_Hcsr04_Read_TOOLTIP="讀取來自特定超聲波感應器的距離檢測數值,並返回";s.Msg.Esp32_Main_Controller_Led_Strip_Setup_TOOLTIP="%1初始化LED燈帶";s.Msg.Esp32_Main_Controller_Led_strip_set_bright_TOOLTIP="設置LED燈帶亮度";s.Msg.Iot_Led_Matrix_Color_Picker_TOOLTIP="將十六進制顏色碼轉換成RGB顏色值,並返回";s.Msg.Led_Strip_Color_Rgb_TOOLTIP="返回RGB顏色值";s.Msg.Esp32_Main_Controller_Led_Strip_Set_TOOLTIP="%1點亮LED燈帶";s.Msg.Led_Strip_Show_Above_TOOLTIP="%1使燈帶顯示以上效果";s.Msg.Esp32_Main_Controller_Button_Read_Pressed_TOOLTIP="當按鈕%1按下時";s.Msg.Esp32_Main_Controller_Button_Read_Released_TOOLTIP="當按鈕%1鬆開時";s.Msg.Esp32_Main_Controller_Button_Read_Value_TOOLTIP="讀取按鈕%1的電平狀態";s.Msg.Esp32_Main_Controller_Touch_Read_Touched_TOOLTIP="當觸摸區域%1被觸摸時";s.Msg.Esp32_Main_Controller_Touch_Read_Untouched_TOOLTIP="當觸摸區域%1未被觸摸時";s.Msg.Esp32_Main_Controller_Touch_Read_Value_TOOLTIP="獲取觸摸區域%1的電容變化數值";s.Msg.Esp32_Main_Controller_Set_Led_Turnon_TOOLTIP="設置點亮指定的LED燈";s.Msg.Esp32_Main_Controller_Set_Led_Turnoff_TOOLTIP="設置關閉指定的LED燈";s.Msg.Esp32_Main_Controller_Set_Led_Drawpixel_On_TOOLTIP="點亮指定的LED燈";s.Msg.Esp32_Main_Controller_Set_Led_Drawpixel_Off_TOOLTIP="熄滅指定的LED燈";s.Msg.Esp32_Main_Controller_Set_Buzzer_TOOLTIP="蜂鳴器設置音調頻率";s.Msg.Esp32_Main_Controller_Turn_Off_Buzzer_TOOLTIP="關閉蜂鳴器";s.Msg.Esp32_Main_Controller_Get_Environmental_Value_TOOLTIP="獲取%1數值(獲取數值時間要大於1秒)";s.Msg.Esp32_Main_Controller_Motion_When_Shaking_STATEMENT_TOOLTIP="當模組%1搖晃狀態時,執行操作";s.Msg.Esp32_Main_Controller_Motion_When_Tilting_STATEMENT_TOOLTIP="當模組%1傾斜時,執行操作";s.Msg.Esp32_Main_Controller_Motion_Acceleration_TOOLTIP="獲取%1軸的加速度";s.Msg.Esp32_Main_Controller_Motion_Rotation_Measurement_TOOLTIP="獲取%1軸的旋轉測量值";s.Msg.Esp32_Main_Controller_Motion_Tilt_Angle_TOOLTIP="獲取%1軸的傾斜角度";s.Msg.Esp32_Main_Controller_Get_Light_TOOLTIP="獲取光線值";s.Msg.Esp32_Main_Controller_Wifi_Connect_Internet_TOOLTIP="連接WiFi網絡";s.Msg.Esp32_Main_Controller_Get_Wifi_Connection_Status_TOOLTIP="獲取WiFi連接狀態";s.Msg.Esp32_Main_Controller_Wifi_Get_Info_TOOLTIP="獲取WiFi配置信息%1";s.Msg.Esp32_Main_Controller_Wifi_Ntptime_TOOLTIP="同步網絡時間";s.Msg.Esp32_Main_Controller_Wifi_Disconnect_TOOLTIP="斷開WiFi連接";s.Msg.Esp32_Main_Controller_Wifi_Enable_Hotspot_Mode_TOOLTIP="創建WiFi熱點";s.Msg.Esp32_Main_Controller_Wifi_Acquiring_Equipment_TOOLTIP="獲取當前已連接的設備陣列";s.Msg.Esp32_Main_Controller_Get_Wifi_Devices_Number_TOOLTIP="獲取當前已連接的設備數量";s.Msg.Esp32_Main_Controller_Wifi_Close_TOOLTIP="關閉WiFi熱點";s.Msg.Esp32_Network_Http_Get_TOOLTIP="發送http get請求";s.Msg.Esp32_Network_Http_Post_TOOLTIP="發送http post請求";s.Msg.CocoRobo_get_TOOLTIP="獲取HTTP響應內容的%1";s.Msg.Esp32_Network_Http_Get_Data_From_Local_Server_TOOLTIP="獲取從本地HTTP伺服器請求得到的數據,數據類型爲%1";s.Msg.Esp32_Network_Http_Server_Setup_TOOLTIP="HTTP伺服器初始化";s.Msg.Esp32_Network_Http_Server_Route_TOOLTIP="當指定路徑被請求時,設定請求屬性爲%1請求,並執行操作";s.Msg.Esp32_Network_Http_Server_Route_Respond_TOOLTIP="HTTP伺服器設置響應內容,並設置返回數據類型爲%1";s.Msg.Esp32_Network_Http_Server_Get_Data_TOOLTIP="HTTP伺服器獲取從客戶端收到的數據,類型爲%1";s.Msg.Esp32_Web_Ws_Setup_Send_TOOLTIP="實時通信發送端初始化";s.Msg.Esp32_Web_Ws_Send_TOOLTIP="透過實時通信發送消息";s.Msg.Esp32_Web_Ws_Setup_Receive_TOOLTIP="實時通信接收端初始化";s.Msg.Esp32_Web_Ws_Receive_Statement_TOOLTIP="當實時通信收到消息時,運行操作";s.Msg.Esp32_Web_Ws_Receive_Get_Data_TOOLTIP="獲取從實時通信接收到的消息,類型爲%1";s.Msg.Iot_Service_Cococloud_TOOLTIP="發送數據至CocoCloud指定事件";s.Msg.Iot_Service_Cococloud_Read_TOOLTIP="獲取CocoCloud指定事件中的數據";s.Msg.Iot_Service_Cococloud_Read_Data_TOOLTIP="獲取CocoCloud事件中指定屬性的數據";s.Msg.Esp32_Main_Controller_Ifttt_Send_Data_TOOLTIP="發送數據到IFTTT Webhooks事件";s.Msg.Esp32_Main_Controller_Ifttt_Touched_TOOLTIP="觸發指定的IFTTT事件";s.Msg.Iot_Service_Thingspeak_TOOLTIP="發送數據至指定ThingSpeak頻道";s.Msg.Iot_Service_Thingspeak_Read_TOOLTIP="查找ThingSpeak指定頻道的數據";s.Msg.Iot_Service_Thingspeak_Read_Total_TOOLTIP="獲取ThingSpeak頻道中的數據總量";s.Msg.Iot_Service_Thingspeak_Read_Specific_TOOLTIP="獲取ThingSpeak頻道中指定數據的指定Field的數值";s.Msg.Iot_System_Restart_TOOLTIP="重啓系統";s.Msg.Iot_System_Get_TOOLTIP="獲模除組內剩餘空間";s.Msg.Iot_System_Mac_TOOLTIP="獲模除組的MAC地址";s.Msg.Iot_System_Get_Cocorobo_Id_TOOLTIP="獲取IoT設備ID";s.Msg.iot_system_get_cocorobo_firmware_version_TOOLTIP="獲取IoT當前固件版本號";s.Msg.iot_system_delete_TOOLTIP="刪除指定名字的文件";s.Msg.ai_system_get_cocorobo_firmware_version_TOOLTIP="獲取AI當前固件版本號";s.Msg.ai_System_Get_TOOLTIP="獲取記憶體內剩餘空間";s.Msg.ai_System_sd_Get_TOOLTIP="獲取SD卡內剩餘空間";s.Msg.ai_system_thread_TOOLTIP="啓用多線程,執行相關操作";s.Msg.Iot_Lcd_Screeninit_TOOLTIP="LCD螢幕初始化";s.Msg.Iot_Lcd_Screen_TOOLTIP="將LCD螢幕填充顏色爲%1";s.Msg.Iot_Lcd_Fill_Screen_With_Rgb_TOOLTIP="將LCD螢幕填充指定顏色";s.Msg.Iot_Lcd_Set_Color_TOOLTIP="將十六進制顏色碼轉換成RGB顏色值,並返回";s.Msg.Iot_Lcd_Rgb_Value_Input_TOOLTIP="返回指定rgb值";s.Msg.Iot_Lcd_Drawpixel_TOOLTIP="螢幕繪製點";s.Msg.Iot_Lcd_Linecarvas_TOOLTIP="螢幕繪製直線";s.Msg.Iot_Lcd_Ractanglecarvas_TOOLTIP="螢幕繪製%1矩形";s.Msg.Iot_Lcd_Textcarvas_TOOLTIP="螢幕繪製文本";s.Msg.Iot_Lcd_Draw_ZedGraph_TOOLTIP="螢幕繪製%1統計圖";s.Msg.iot_lcd_clear_screen_TOOLTIP="清除螢幕";s.Msg.Iot_Led_Matrix_Setup_TOOLTIP="IoT模組初始化LED燈屏";s.Msg.Iot_Led_Matrix_Set_Bright_TOOLTIP="設置燈屏亮度";s.Msg.Iot_Led_Matrix_xy_TOOLTIP="設置欄列";s.Msg.Iot_Led_Matrix_wh_TOOLTIP="設置寬高";s.Msg.Iot_Led_Matrix_Rgb_Value_Input_TOOLTIP="返回指定rgb值";s.Msg.Iot_Led_Matrix_Draw_Pixel_TOOLTIP="IoT模組LED燈屏繪製點";s.Msg.Iot_Led_Matrix_Draw_Rectangle_TOOLTIP="IoT模組LED燈屏繪製矩形";s.Msg.Iot_Led_Matrix_Show_Above_TOOLTIP="IoT模組LED燈屏顯示生效";s.Msg.Esp32_Motor_Setup_TOOLTIP="IoT模組馬達驅動初始化";s.Msg.Esp32_Motor_Run_TOOLTIP="IoT模組設定指定馬達以指定速度進行指定方向的轉動";s.Msg.Esp32_Main_Controller_Servo_Setup_TOOLTIP="IoT模組伺服馬達初始化";s.Msg.Esp32_Main_Controller_Servo_Set_TOOLTIP="IoT模組設置位於指定引腳的伺服馬達轉動至指定角度";s.Msg.x_iot_read_gamepad_button_pressed_TOOLTIP="當遊戲手柄上的按鍵%1按下時";s.Msg.x_iot_read_gamepad_button_released_TOOLTIP="當遊戲手柄上的按鍵%1鬆開時";s.Msg.x_iot_read_gamepad_button_xr_TOOLTIP="獲取遊戲手柄上按鍵%1的電平值";s.Msg.x_iot_read_gamepad_joystick_check_TOOLTIP="當遊戲手柄上的搖桿%1";s.Msg.x_iot_read_gamepad_joystick_TOOLTIP="獲取遊戲手柄上搖桿%1的類比數值";s.Msg.esp32_nbiot_setup_TOOLTIP="在%1模組上NB-IoT模組通信初始化";s.Msg.esp32_nbiot_get_power_status_TOOLTIP="獲取NB-IoT模組啓用狀態";s.Msg.esp32_nbiot_get_network_status_TOOLTIP="獲取NB-IoT模組網絡連接狀態";s.Msg.esp32_nbiot_get_network_ip_TOOLTIP="獲取NB-IoT模組網絡IP地址";s.Msg.iot_service_nbiot_cococloud_TOOLTIP="NB-IoT模組發送數據至CocoCloud";s.Msg.esp32_nbiot_onenet_init_TOOLTIP="NB-IoT模組連接OneNET";s.Msg.esp32_nbiot_onenet_connection_status_TOOLTIP="NB-IoT模組獲取OneNET連接狀態";s.Msg.iot_service_nbiot_onenet_TOOLTIP="NB-IoT模組發送數據至OneNET";s.Msg.esp32_nbiot_onenet_read_value_TOOLTIP="獲取NB-IoT模組從OneNET發送的指令";s.Msg.iot_service_nbiot_onenet_read_TOOLTIP="當NB-IoT模組從OneNET收到消息時,運行操作";s.Msg.esp32_ble_setup_sender_TOOLTIP="BLE(低功耗藍牙)發送端初始化";s.Msg.esp32_ble_send_data_TOOLTIP="BLE發送指定的數據";s.Msg.esp32_ble_setup_receiver_TOOLTIP="BLE(低功耗藍牙)接收端初始化";s.Msg.esp32_ble_get_data_TOOLTIP="返回BLE接收的數據";s.Msg.esp32_ble_sender_connected_TOOLTIP="發送端已經被連接";s.Msg.esp32_ble_receiver_connected_TOOLTIP="接收端已經被連接";s.Msg.ai_k210_button_read_pressed_TOOLTIP="當按鈕%1按下時";s.Msg.ai_k210_button_read_released_TOOLTIP="當按鈕%1鬆開時";s.Msg.ai_k210_led_light_up_TOOLTIP="設定%1點亮";s.Msg.ai_basic_light_up_led_analog_TOOLTIP="設定%1的燈光亮度";s.Msg.ai_k210_led_light_off_TOOLTIP="設定%1熄滅";s.Msg.ai_system_restart_TOOLTIP="重啓系統";s.Msg.ai_system_off_TOOLTIP="關機";s.Msg.ai_system_refresh_TOOLTIP="刷新文件目錄";s.Msg.ai_system_run_TOOLTIP="運行指定路徑的Python程序";s.Msg.ai_mphone_init_TOOLTIP="咪高峰初始化";s.Msg.mphone_audio_spectrum_init_TOOLTIP="開始讀取音頻頻譜";s.Msg.ai_mphone_read_sound_sensitivity_TOOLTIP="獲取麥克風採集的音頻頻譜";s.Msg.ai_mphone_Record_audio_init_TOOLTIP="咪高峰錄製音頻初始化";s.Msg.ai_mphone_Record_audio_start_TOOLTIP="開始錄製音頻並保存";s.Msg.ai_audio_stop_recording_TOOLTIP="停止錄製音頻";s.Msg.ai_img_save_TOOLTIP="將畫布保存至本地,並設置圖像壓縮質量";s.Msg.ai_lcd_invert_color_TOOLTIP="將畫布進行顏色反轉";s.Msg.ai_lcd_resizecanvas_TOOLTIP="將畫布調整至指定的尺寸";s.Msg.ai_lcd_color_scheme_TOOLTIP="將畫布轉換爲%1";s.Msg.ai_lcd_img_cut_TOOLTIP="將畫布進行指定的裁剪處理";s.Msg.ai_vision_color_analyze_TOOLTIP="獲取畫布中指定區域的顏色分析結果";s.Msg.ai_vision_find_blobs_TOOLTIP="從畫布中尋找指定的顏色色塊";s.Msg.ai_vision_get_threshold_default_TOOLTIP="設定獲取用於顏色追蹤的默認顏色爲%1";s.Msg.ai_vision_get_blobs_TOOLTIP="獲取追蹤指定顏色的識別結果";s.Msg.ai_vision_get_statistics_TOOLTIP="獲取對畫布進行顏色信道信息分析的結果";s.Msg.ai_vision_get_histogram_TOOLTIP="獲取從畫布中進行標準化直方圖運算的結果";s.Msg.ai_vision_get_histogram_percentile_TOOLTIP="從直方圖計算結果獲取直方圖頻道的CDF計算值";s.Msg.ai_vision_get_histogram_percentile_detail_TOOLTIP="從直方圖計算結果獲取的百分比值中的%1";s.Msg.ai_vision_lab_rgb_conversion_TOOLTIP="運行顏色制式轉換 %1";s.Msg.ai_vision_rgb_grayscale_conversion_TOOLTIP="運行顏色制式轉換 %1";s.Msg.ai_vision_find_qrcode_TOOLTIP="獲取畫布中QR碼的檢測結果";s.Msg.ai_vision_qrcode_get_info_TOOLTIP="從變量中獲取檢測QR碼的%1";s.Msg.ai_vision_find_apriltag_TOOLTIP="獲取畫布中AprilTag的檢測結果";s.Msg.ai_vision_apriltag_get_info_TOOLTIP="從變量中獲取檢測AprilTag的%1";s.Msg.ai_vision_find_datamatrices_TOOLTIP="獲取畫布中數據矩陣的檢測結果";s.Msg.ai_vision_datamatrices_get_info_TOOLTIP="從變量中獲取檢測數據矩陣的%1";s.Msg.ai_vision_find_barcodes_TOOLTIP="獲取畫布中條形碼的檢測結果";s.Msg.ai_vision_barcodes_get_info_TOOLTIP="從變量中獲取檢測條形碼的%1";s.Msg.ai_vision_find_circles_TOOLTIP="從畫布中尋找圓形";s.Msg.ai_vision_get_circles_TOOLTIP="獲取尋找圓形的結果";s.Msg.ai_vision_find_rects_TOOLTIP="從畫布中尋找矩形";s.Msg.ai_vision_get_rects_TOOLTIP="獲取尋找矩形的結果";s.Msg.ai_vision_find_lines_TOOLTIP="從畫布中尋找直線";s.Msg.ai_vision_get_lines_TOOLTIP="獲取尋找直線的結果";s.Msg.ai_video_set_TOOLTIP="播放視頻要求:視頻文件格式——AVI,視頻編碼格式——MJPG,音頻編碼格式——PCM";s.Msg.ai_video_status_TOOLTIP="獲取視頻播放的狀態";s.Msg.ai_video_stop_play_TOOLTIP="結束視頻文件播放";s.Msg.speech_recognition_new_setup_TOOLTIP="語音識別初始化";s.Msg.speech_recognition_new_recording_sample_start_TOOLTIP="開始錄製語音片段";s.Msg.speech_recognition_new_start_recognition_TOOLTIP="開始進行語音識別";s.Msg.speech_recognition_new_recognition_get_result_TOOLTIP="語音識別的結果爲指定片段";s.Msg.speech_recognition_new_recognition_get_any_result_TOOLTIP="當語音識別獲得任意結果的時候,執行下列操作";s.Msg.speech_recognition_phonetic_to_pinyin_setup_TOOLTIP="語音轉拼音初始化";s.Msg.ai_speech_recognition_phonetic_to_pinyin_get_result_TOOLTIP="獲取語音轉拼音的結果";s.Msg.ai_speech_recognition_phonetic_to_pinyin_set_param_TOOLTIP="設定語音拼音識別參數";s.Msg.speech_recognition_phonetic_to_pinyin_start_recognition_TOOLTIP="開始語音拼音識別";s.Msg.speech_recognition_phonetic_to_pinyin_stop_recognition_TOOLTIP="終止語音拼音識別";s.Msg.speech_recognition_phonetic_to_pinyin_pause_recognition_TOOLTIP="暫停語音拼音識別";s.Msg.ai_model_allinit_TOOLTIP="初始化%1";s.Msg.ai_model_allload_TOOLTIP="加載%1";s.Msg.ai_model_index_mnist_TOOLTIP="獲取手寫數字檢測模型的檢測結果";s.Msg.ai_model_get_TOOLTIP="從變量中獲取檢測到的待測物體的%1";s.Msg.ai_model_look_TOOLTIP="檢測到待測物體";s.Msg.ai_model_look_attribute_TOOLTIP="待測物體屬性";s.Msg.ai_model_xy_TOOLTIP="從變量中獲取檢測到的人臉的%1";s.Msg.ai_model_xy_TOOLTIP="從變量中獲取檢測到的人體的%1";s.Msg.ai_model_face_TOOLTIP="檢測到人臉";s.Msg.ai_model_face_attribute_TOOLTIP="人臉屬性";s.Msg.ai_model_customized_init_setup_definition_TOOLTIP="在自定義模型的程序運行前,進行記憶體的釋放";s.Msg.ai_model_customized_init_setup_TOOLTIP="初始化自定義模型";s.Msg.ai_model_customized_load_setup_TOOLTIP="加載自定義模型";s.Msg.ai_model_customized_if_got_TOOLTIP="識別到了自定義模型的對象";s.Msg.ai_model_customized_attribute_TOOLTIP="自定義模型對象屬性";s.Msg.ai_model_customized_get_result_TOOLTIP="從變量中獲取識別到自定義模型結果的%1";s.Msg.ai_model_face_setup_TOOLTIP="自定義人臉識別初始化";s.Msg.ai_model_face_init_TOOLTIP="自定義初始化人臉識別模型";s.Msg.ai_face_detection_model_TOOLTIP="初始化人臉檢測模型";s.Msg.ai_face_point_detection_model_TOOLTIP="初始化人臉5點關鍵點檢測模型";s.Msg.ai_face_Vitter_eigenvalue_model_TOOLTIP="初始化人臉196維特徵值模型";s.Msg.ai_model_face_load_point_detection_model_TOOLTIP="加載人臉5點關鍵點檢測模型,並進行一定的設定";s.Msg.ai_model_Calculation_of_196_eigenvalues_TOOLTIP="計算運行人臉特徵模型後的196維特徵值";s.Msg.ai_model_class_TOOLTIP="自定義初始化物體識別模型";s.Msg.ai_model_getface_TOOLTIP="識別到了人臉模型的對象";s.Msg.ai_model_getclass_TOOLTIP="識別到了物体模型的對象";s.Msg.ai_model_face_start_recognition_TOOLTIP="加載人臉檢測模型,並設定圖像源";s.Msg.ai_model_face_model_load_finish_TOOLTIP="人臉檢測模型加載完成";s.Msg.ai_model_face_gather_TOOLTIP="採集新的人臉數據並保存人臉數據";s.Msg.ai_model_face_data_load_TOOLTIP="加載已保存的人臉數據";s.Msg.ai_model_face_model_list_TOOLTIP="人臉檢測屬性";s.Msg.ai_model_face_gather_num_judge_TOOLTIP="人臉採集完成";s.Msg.ai_model_face_recognition_TOOLTIP="採集或者加載完成人臉數據並進行人臉識別";s.Msg.ai_model_face_recognition_get_result_TOOLTIP="人臉識別獲得任意結果";s.Msg.ai_model_show_face_TOOLTIP="處理圖像並顯示";s.Msg.ai_model_class_setup_TOOLTIP="自定義物體識別初始化";s.Msg.ai_class_model_TOOLTIP="初始化自定義物體特徵提模除型";s.Msg.ai_class_model_cluster_TOOLTIP="初始化自定義物體聚類參數";s.Msg.ai_model_class_start_load_TOOLTIP="設定圖像源並對圖像進行處理";s.Msg.ai_model_class_gather_TOOLTIP="開始採集物體";s.Msg.ai_model_class_data_load_TOOLTIP="加載物體數據";s.Msg.ai_model_class_gather_load_finish_TOOLTIP="採集或者加載完成物體數據";s.Msg.ai_model_class_cluster_train_TOOLTIP="開始進行物體特徵提取,然後加以聚類訓練";s.Msg.ai_model_class_recognition_TOOLTIP="開始進行物體識別";s.Msg.k210_wifi_enable_disable_TOOLTIP="設定Wi-Fi爲%1";s.Msg.k210_wifi_scan_TOOLTIP="開始掃描附近Wi-Fi熱點";s.Msg.k210_wifi_scan_get_TOOLTIP="獲取Wi-Fi掃描的結果爲列表形式";s.Msg.k210_wifi_connect_hotspot_TOOLTIP="連接指定的Wi-Fi網絡";s.Msg.k210_wifi_get_connection_status_TOOLTIP="獲取Wi-Fi連接的狀態";s.Msg.k210_wifi_get_config_TOOLTIP="獲取Wi-Fi連接的設備指定信息";s.Msg.ai_lcd_screeninit_TOOLTIP="LCD螢幕初始化";s.Msg.ai_lcd_rotation_TOOLTIP="將LCD螢幕方向旋轉指定的角度";s.Msg.ai_lcd_filp_TOOLTIP="是否將LCD螢幕進行鏡面翻轉";s.Msg.ai_lcd_screen_TOOLTIP="將LCD螢幕填充顏色爲%1";s.Msg.ai_lcd_fill_screen_with_rgb_TOOLTIP="將LCD螢幕填充顏色爲指定rgb值";s.Msg.ai_lcd_clear_TOOLTIP="清除螢幕";s.Msg.ai_lcd_rgb_value_input_TOOLTIP="返回指定的rgb值";s.Msg.ai_lcd_XY_TOOLTIP="返回指定的x和y";s.Msg.ai_lcd_WH_TOOLTIP="返回指定的寬與高";s.Msg.ai_lcd_createnonecarvas_TOOLTIP="創建指定尺寸的空白畫布";s.Msg.ai_lcd_fillcanvas_TOOLTIP="將畫布鋪滿指定的顏色";s.Msg.ai_lcd_createcarvas_TOOLTIP="創建圖像畫布";s.Msg.ai_lcd_showcarvas_set_cord_TOOLTIP="設定畫布的起始點座標";s.Msg.ai_lcd_textcarvas_TOOLTIP="在畫布上繪製字串";s.Msg.ai_lcd_characterscarvas_TOOLTIP="在畫布上繪製漢字字元";s.Msg.ai_lcd_linecarvas_TOOLTIP="在畫布上繪製直線";s.Msg.ai_lcd_ractanglecarvas_TOOLTIP="在畫布上繪製%1矩形";s.Msg.ai_lcd_drawcirclecarvas_TOOLTIP="在畫布上繪製%1圓形";s.Msg.ai_lcd_draw_cross_sign_TOOLTIP="在畫布上繪製十字標";s.Msg.ai_lcd_draw_arrow_sign_TOOLTIP="在畫布上繪製箭頭";s.Msg.ai_lcd_draw_image_on_canvas_TOOLTIP="在畫布上繪製圖片";s.Msg.ai_lcd_draw_sensor_image_on_canvas_TOOLTIP="在畫布上繪製相機捕捉的圖像";s.Msg.ai_lcd_showcarvas_set_display_TOOLTIP="顯示畫布";s.Msg.ai_lcd_clearcanvas_TOOLTIP="清除畫布中的所有內容";s.Msg.ai_lcd_qrcode_TOOLTIP="在畫布上繪製二維碼";s.Msg.ai_led_matrix_setup_TOOLTIP="A.I.模組初始化LED燈屏";s.Msg.ai_led_matrix_set_bright_TOOLTIP="設置燈屏亮度";s.Msg.ai_led_matrix_xy_TOOLTIP="設置欄列";s.Msg.ai_led_matrix_wh_TOOLTIP="設置寬高";s.Msg.ai_led_matrix_rgb_value_input_TOOLTIP="返回指定rgb值";s.Msg.ai_led_matrix_draw_pixel_TOOLTIP="A.I.模組LED燈屏繪製點";s.Msg.ai_led_matrix_draw_rectangle_TOOLTIP="A.I.模組LED燈屏繪製矩形";s.Msg.ai_led_matrix_show_above_TOOLTIP="顯示圖案";s.Msg.ai_led_matrix_clear_screen_TOOLTIP="清除燈屏";s.Msg.ai_audio_init_speaker_TOOLTIP="喇叭初始化";s.Msg.ai_audio_play_song_speaker_TOOLTIP="播放音訊檔案(單個循環)";s.Msg.ai_audio_play_song_speaker_list_loop_TOOLTIP="播放音訊檔案(順序播放)";s.Msg.ai_audio_play_music_file_list_random_TOOLTIP="播放音訊檔案(隨機播放)";s.Msg.ai_audio_play_state_speaker_TOOLTIP="獲取音訊檔案播放狀態";s.Msg.ai_audio_play_finish_speaker_TOOLTIP="結束音訊檔案播放";s.Msg.ai_audio_set_speaker_TOOLTIP="設定音訊檔案播放音量";s.Msg.ai_audio_files_list_TOOLTIP="獲取當前路徑的音頻檔案陣列";s.Msg.ai_camera_init_TOOLTIP="相機初始化";s.Msg.ai_camera_fit_to_screen_size_TOOLTIP="設定相機捕捉畫面的尺寸";s.Msg.ai_camera_windows_TOOLTIP="調整相機捕捉的圖像尺寸";s.Msg.ai_camera_snapshot_TOOLTIP="獲取相機捕捉的圖像";s.Msg.ai_camera_lens_corr_TOOLTIP="糾正廣角鏡頭畫面";s.Msg.ai_camera_image_property_change_TOOLTIP="設定攝像頭圖像%1的狀態";s.Msg.ai_camera_bcs_operation_TOOLTIP="設定攝像頭圖像的%1";s.Msg.ai_video_record_setup_TOOLTIP="開始錄製視頻並保存";s.Msg.ai_video_get_TOOLTIP="對畫布進行錄製";s.Msg.ai_video_stop_TOOLTIP="停止錄製影片";s.Msg.ai_motor_setup_TOOLTIP="A.I.模組馬達驅動初始化";s.Msg.ai_motor_run_TOOLTIP="A.I.模組設定指定馬達以指定速度進行指定方向的轉動";s.Msg.extension_servo_setup_on_ai_TOOLTIP="模組伺服馬達初始化";s.Msg.extension_servo_write_on_ai_TOOLTIP="模組設置位於指定引腳的伺服馬達轉動至指定角度";s.Msg.x_ai_read_gamepad_button_pressed_TOOLTIP="當遊戲手柄上的按鍵%1按下時";s.Msg.x_ai_read_gamepad_button_released_TOOLTIP="當遊戲手柄上的按鍵%1鬆開時";s.Msg.x_ai_read_gamepad_button_xr_TOOLTIP="獲取遊戲手柄上按鍵%1的電平值";s.Msg.x_ai_read_gamepad_joystick_check_TOOLTIP="當遊戲手柄上的搖桿%1";s.Msg.x_ai_read_gamepad_joystick_TOOLTIP="獲取遊戲手柄上搖桿%1的類比數值";s.Msg.CocoRobo_try_except_TOOLTIP="檢測try語句塊中的錯誤,從而讓except語句捕獲異常信息並處理";s.Msg.CocoRobo_try_except_finally_TOOLTIP="檢測try語句塊中的錯誤,從而讓except語句捕獲異常信息並處理,並且無論異常是否產生都要執行finally語句";s.Msg.Pedometer_Init_TOOLTIP="初始化計步器";s.Msg.Pedometer_Run_TOOLTIP="運行計步器";s.Msg.Pedometer_Get_TOOLTIP="獲取計數";s.Msg.ai_vision_canvas_area_tuple_TOOLTIP="創建區域元組";s.Msg.ai_vision_lane_tracking_setup_TOOLTIP="道路循線識別初始化";s.Msg.ai_vision_from_canvas_TOOLTIP="運行道路循線識別";s.Msg.ai_vision_lane_tracking_run_get_TOOLTIP="獲取道路循線識別的結果";s.Msg.MLX90614_SETUP_TOOLTIP="%1 MLX90614感應器初始化";s.Msg.MLX90614_READ_AMBIENT_TOOLTIP="從 MLX90614 獲取當前環境溫度";s.Msg.MLX90614_READ_OBJECT_TOOLTIP="從 MLX90614 獲取目標物體溫度";s.Msg.DHT_SETUP_TOOLTIP="%1 DHT感應器初始化";s.Msg.PM25_SETUP_TOOLTIP="%1 PM2.5感應器初始化";s.Msg.PM25_REDD_DATA_TOOLTIP="獲取PM2.5數值";s.Msg.RTC_setup_TOOLTIP="RTC模組初始化";s.Msg.RTC_setDateTime_TOOLTIP="設定日期時間周數";s.Msg.RTC_GETDATE_TOOLTIP="獲取當前日期%1";s.Msg.RTC_GETTIME_TOOLTIP="獲取當前時間%1";s.Msg.RTC_getWeek_TOOLTIP="獲取當前周數";s.Msg.RTC_SETDATE_TOOLTIP="設定當前日期%1為特定值";s.Msg.RTC_SETTIME_TOOLTIP="設定當前時間%1為特定值";s.Msg.RTC_setWeek_TOOLTIP="設定當前周數為特定值";s.Msg.RTC_getDateTime_TOOLTIP="獲取日期時間周數";s.Msg.robot_dog_movement_action_TOOLTIP="語音操控機器狗";s.Msg.robot_dog_phonetic_to_pinyin_get_result_TOOLTIP="獲取語音識別的結果";s.Msg.robot_dog_setup_TOOLTIP="機器狗初始化";s.Msg.robot_dog_action_TOOLTIP="機器狗執行%1指令";s.Msg.robot_dog_servo_movement_TOOLTIP="設定特定腿特定關節伺服馬達轉動至特定的角度";s.Msg.robot_dog_servo_speed_TOOLTIP="設定特定速度為%1";s.Msg.robot_dog_servo_movement_location_TOOLTIP="設定特定腿足尖特定方向的位置為特定值";s.Msg.robot_dog_open_gyroscope_TOOLTIP="%1陀螺儀";s.Msg.robot_dog_open_performance_mode_TOOLTIP="%1機器狗表演模式";s.Msg.robot_dog_open_calibration_mode_TOOLTIP="%1機器狗標定模式";s.Msg.robot_dog_get_power_TOOLTIP="獲取機器狗當前的電量";s.Msg.robot_dog_servo_movement_distance_TOOLTIP="設定機器狗執行%1方向平移運動步長為特定值";s.Msg.robot_dog_servo_movement_rotate_TOOLTIP="設定機器狗執行%1方向旋轉運動轉動速度為特定值";s.Msg.robot_dog_servo_movement_standing_still_TOOLTIP="設定機器狗以特定的抬腿高度以固定頻率執行原地踏步";s.Msg.robot_dog_servo_movement_distance_cycle_TOOLTIP="設定機器狗執行%1方向平移運動步長為特定值持續特定秒";s.Msg.robot_dog_servo_movement_rotate_cycle_TOOLTIP="設定機器狗執行%1方向旋轉運動轉動速度為特定值持續特定秒";s.Msg.robot_dog_servo_movement_standing_still_cycle_TOOLTIP="設定機器狗以特定的抬腿高度以固定頻率執行原地踏步持續特定秒";s.Msg.robot_dog_servo_movement_distance_still_TOOLTIP="設定機器狗%1方向平移特定毫米";s.Msg.robot_dog_servo_movement_distance_still_cycle_TOOLTIP="設定機器狗以特定週期向%1方向往復平移";s.Msg.robot_dog_servo_movement_rotate_still_TOOLTIP="設定機器狗繞%1軸旋轉特定值";s.Msg.robot_dog_servo_movement_rotate_still_cycle_TOOLTIP="設定機器狗以特定週期繞%1軸往復轉動";s.Msg.robot_dog_servo_movement_distance_still_cycle_stop_TOOLTIP="停止機器狗向%1方向週期往復平移";s.Msg.robot_dog_servo_movement_rotate_still_cycle_stop_TOOLTIP="停止機器狗繞%1軸週期往復轉動";s.Msg.robot_dog_get_servo_angle_TOOLTIP="獲取特定腿特定關節伺服馬達的角度";s.Msg.robot_dog_get_rotate_angle_TOOLTIP="獲取陀螺儀%1軸的角度";s.Msg.Take_off_TOOLTIP="設定指定編號無人機的起飛高度爲指定釐米";s.Msg.uav_fly_mode_TOOLTIP="設定指定編號無人機切換指定飛行模式";s.Msg.xy_speed_TOOLTIP="設定指定編號無人機的水平速度爲指定值";s.Msg.z_speed_TOOLTIP="設定指定編號無人機的垂直速度爲指定值";s.Msg.follow_line_TOOLTIP="設定指定編號無人機向指定方向巡線飛行";s.Msg.mobile_distance_TOOLTIP="設定指定編號無人機向指定方向飛行指定距離";s.Msg.move_search_dot_TOOLTIP="並尋找黑色小塊";s.Msg.move_search_tag_TOOLTIP="並尋找指定標籤";s.Msg.move_search_blob_TOOLTIP="並尋找指定色塊";s.Msg.go_to_TOOLTIP="設定指定編號無人機直達指定標籤";s.Msg.go_to_tag_TOOLTIP="並設定指定高度";s.Msg.uav_rotation_TOOLTIP="設定指定編號無人機旋轉指定角度";s.Msg.uav_fly_height_TOOLTIP="設定指定編號無人機的高度";s.Msg.filp_ctrl_TOOLTIP="設定指定編號無人機向指定方向旋轉指定的圈數";s.Msg.led_ctrl_TOOLTIP="設定指定編號無人機的燈光顏色";s.Msg.off_led_ctrl_TOOLTIP="設定指定編號無人機關閉燈光";s.Msg.uav_detection_TOOLTIP="設定指定編號無人機檢測指定物體";s.Msg.mangne_ctrl_TOOLTIP="設定指定編號無人機操作電磁鐵";s.Msg.servo_ctrl_TOOLTIP="設定指定編號無人機的舵機角度爲指定值";s.Msg.role_ctrl_TOOLTIP="設定指定編號無人機的命令爲指定命令";s.Msg.lock_dir_TOOLTIP="設定指定編號無人機管理機頭方向";s.Msg.shoot_crtl_TOOLTIP="設定指定編號無人機發射激光";s.Msg.switch_crtl_TOOLTIP="設定指定編號無人機的狀態爲打開或關閉";s.Msg.ai_crtl_TOOLTIP="設定指定編號無人機AI切換到指定模式";s.Msg.ai_learing_TOOLTIP="設定指定編號無人機學習的ID爲指定值";s.Msg.ai_forget_TOOLTIP="設定指定編號無人機忘記所有學習的數據";s.Msg.ai_set_name_TOOLTIP="設定指定編號無人機指定ID的名字爲指定值";s.Msg.ai_save_img_TOOLTIP="設定指定編號無人機拍照或截圖的照片保存到SD卡上";s.Msg.fly_ctrl_TOOLTIP="設定指定編號無人機的狀態";s.Msg.uav_detection_if_TOOLTIP="指定編號無人機檢測到指定物體";s.Msg.uav_detection_if_line_TOOLTIP="指定編號無人機檢測到指定方向有線";s.Msg.uav_get_distance_of_obstacles_TOOLTIP="獲取指定編號無人機指定方向的障礙物距離";s.Msg.uav_get_value_TOOLTIP="獲取指定編號無人機的指定值";s.Msg.uav_get_AI_value_TOOLTIP="獲取指定編號無人機的AI識別結果";s.Msg.uav_get_electronic_balance_value_TOOLTIP="獲取指定編號無人機的電子秤讀數";s.Msg.uav_get_shooting_value_TOOLTIP="獲取指定編號無人機的射擊數據";s.Msg.uav_get_msg_value_TOOLTIP="獲取指定編號無人機的消息數據";s.Msg.esp32_expand_io_from_digital_pin_TOOLTIP="獲取引腳 #%1的數字信號數值";s.Msg.esp32_expand_io_set_digital_pin_TOOLTIP="設定引腳 #%1為指定電平";s.Msg.esp32_expand_io_set_analog_pin_TOOLTIP="設定引腳 #%1 PWM 輸出指定的值";s.Msg.iot_service_KUJU_setup_TOOLTIP="透過賬號和密碼連接KUJU";s.Msg.iot_service_KUJU_controll_TOOLTIP="傳送資料至KUJU控制智能插座";s.Msg.iot_service_KUJU_get_temperature_humidity_data_TOOLTIP="獲取溫度感應器的特定數值";s.Msg.iot_service_KUJU_get_motion_data_TOOLTIP="獲取移動感應器的特定数值";s.Msg.iot_service_KUJU_get_sensor_data_TOOLTIP="獲取特定感應器的特定数值";s.Msg.wifiServices_WeTech_setup_TOOLTIP="連接WeTech下特定賬戶的特定網關";s.Msg.wifiServices_WeTech_controll_derail_TOOLTIP="發送數據至WeTech控制特定的3掣面掣開關的開與關";s.Msg.wifiServices_WeTech_controll_derail_second_way_TOOLTIP="發送數據至WeTech控制特定的2掣面掣開關的開與關";s.Msg.wifiServices_WeTech_controll_derail_curtain_sensor_TOOLTIP="發送數據至WeTech控制特定的Curtain Sensor (for projector Screen)的狀態";s.Msg.wifiServices_WeTech_controll_derail_air_conditioning_mode_TOOLTIP="發送數據至WeTech控制特定冷氣IR的模式";s.Msg.wifiServices_WeTech_controll_derail_wind_speed_mode_TOOLTIP="發送數據至WeTech控制特定冷氣IR的風速";s.Msg.wifiServices_WeTech_controll_derail_temp_TOOLTIP="發送數據至WeTech控制特定冷氣IR的溫度";s.Msg.wifiServices_WeTech_controll_derail_all_mode_TOOLTIP="發送數據至WeTech控制特定冷氣IR";s.Msg.wifiServices_WeTech_controll_derail_IR_TOOLTIP="發送數據至WeTech控制特定TV IR (for TV and Projector)";s.Msg.wifiServices_WeTech_controll_derail_get_power_meter_TOOLTIP="獲取Power Meter的值";s.Msg.wifiServices_WeTech_controll_derail_get_sensor_number_TOOLTIP="獲取%1的值";s.Msg.iot_service_tuya_TOOLTIP="透過Access ID和Access Secret連接塗鴉";s.Msg.iot_service_tuya_setToken_TOOLTIP="當連接塗鴉獲取到訪問令牌的時候,執行下列操作";s.Msg.iot_service_tuya_controll_light_belt_TOOLTIP="控制智能燈帶爲某一特定狀態";s.Msg.iot_service_tuya_controll_light_belt_color_value_TOOLTIP="控制智能燈帶顏色爲特定值";s.Msg.TURTLE_CREATE_NE_TURTLE_TLTLE_TOOLTIP="創建一個新的海龜";s.Msg.TURTLE_MAKE_TURTLE_MOVE_FORWARD_TOOLTIP="讓海龜往前走指定的值";s.Msg.TURTLE_MAKE_TURTLE_MOVE_BACKWARD_TOOLTIP="讓海龜往後走指定的值";s.Msg.TURTLE_MAKE_TURN_LEFT_TOOLTIP="讓海龜向左轉指定的角度";s.Msg.TURTLE_MAKE_TURN_RIGHT_TOOLTIP="讓海龜向右轉指定的角度";s.Msg.TURTLE_MAKE_TURRLE_COLOR_TOOLTIP="設定海龜畫筆的顏色";s.Msg.TURTLE_MAKE_TURRLE_PEN_TOOLTIP="讓海龜畫筆%1";s.Msg.TURTLE_MAKE_TURTLE_GOTO_LOCATION_X_TOOLTIP="讓海龜去指定的位置";s.Msg.TURTLE_MAKE_TURTLE_SET_POSITION_TOOLTIP="設定海龜畫筆的位置";s.Msg.TURTLE_MAKE_SET_HEADING_TOOLTIP="讓海龜旋轉至指定的角度";s.Msg.TURTLE_RESET_TOOLTIP="重置畫筆的位置";s.Msg.TURTLE_CLEAR_TOOLTIP="清除所有內容";s.Msg.ADD_COMMENT="加入註解";s.Msg.ARD_ANALOGREAD="讀模除擬接口#";s.Msg.ARD_ANALOGREAD_TIP="返回0到1024中的一個值";s.Msg.ARD_ANALOGWRITE="設定模擬接口#";s.Msg.ARD_ANALOGWRITE_TIP="將0到255之間的一個模擬值寫入到特定的脈寬調製端口";s.Msg.ARD_BUILTIN_LED="設定內置LED燈";s.Msg.ARD_BUILTIN_LED_TIP="設定Arduino版上的內置LED燈狀態爲開或者關";s.Msg.ARD_COMPONENT_WARN1="A %1 configuration block with the same %2 name must be added to use this block!";s.Msg.ARD_DEFINE="Define";s.Msg.ARD_DIGITALREAD="讀取數字接口#";s.Msg.ARD_DIGITALREAD_TIP="從壹端口讀取數字值:高電平或低電平";s.Msg.ARD_DIGITALWRITE="設定數字接口#";s.Msg.ARD_DIGITALWRITE_TIP="將數字值高電平或低電平寫入特定端口";s.Msg.ARD_FUN_RUN_LOOP="CocoBlockly不斷執行:";s.Msg.ARD_FUN_RUN_SETUP="CocoBlockly先執行:";s.Msg.ARD_FUN_RUN_TIP="定義Arduino setup() 和 loop() 函數。";s.Msg.ARD_HIGH="高";s.Msg.ARD_HIGHLOW_TIP="Set a pin state logic High or Low.";s.Msg.ARD_LOW="低";s.Msg.ARD_MAP="映射";s.Msg.ARD_MAP_TIP="Re-maps a number from [0-1024] to another.";s.Msg.ARD_MAP_VAL="值從[0-";s.Msg.ARD_NOTONE_PIN="No tone";s.Msg.ARD_NOTONE_PIN_TIP="Stop generating a tone on a pin";s.Msg.ARD_PIN_WARN1="Pin %1 is needed for %2 as pin %3. Already used as %4.";s.Msg.ARD_PULSEON="脈衝從接口#";s.Msg.ARD_PULSEREAD="讀取";s.Msg.ARD_PULSETIMEOUT="超時時間:";s.Msg.ARD_PULSETIMEOUT_MS="";s.Msg.ARD_PULSETIMEOUT_TIP="測量所選接口上脈衝的持續時間,如果其在超時時間內";s.Msg.ARD_PULSE_TIP="測量所選接口上脈衝的持續時間";s.Msg.ARD_PWMWRITE="設定PWM接口#";s.Msg.ARD_SERIAL_AVAILABLE="avalible";s.Msg.ARD_SERIAL_BPS="比特/秒";s.Msg.ARD_SERIAL_PRINT="打印";s.Msg.ARD_SERIAL_PRINT_NEWLINE="添加新欄";s.Msg.ARD_SERIAL_PRINT_TIP="將數據以可讀的ASCII文本形式打印到控制檯或串行端口";s.Msg.ARD_SERIAL_PRINT_WARN="Serial相關的初始化積木需要被添加";s.Msg.ARD_SERIAL_READ="讀取";s.Msg.ARD_SERIAL_SETUP="設定";s.Msg.ARD_SERIAL_SETUP_TIP="選擇特定的串行外設的速度";s.Msg.ARD_SERIAL_SPEED="速度爲";s.Msg.ARD_SERIAL_WRITE="寫出";s.Msg.ARD_SERVO_READ="讀取伺服馬達訊息,設定接口爲PIN#";s.Msg.ARD_SERVO_READ_TIP="讀取伺服馬達的角度";s.Msg.ARD_SERVO_SETUP="伺服馬達初始化";s.Msg.ARD_SERVO_WRITE="定義伺服馬達接口爲";s.Msg.ARD_SERVO_WRITE_DEG_180="度 (0~180)";s.Msg.ARD_SERVO_WRITE_TIP="設定伺服馬達轉動壹定的角度";s.Msg.ARD_SERVO_WRITE_TO="設定其轉動角度爲";s.Msg.ARD_SPI_SETUP="設定";s.Msg.ARD_SPI_SETUP_CONF="配置";s.Msg.ARD_SPI_SETUP_DIVIDE="時鐘分頻";s.Msg.ARD_SPI_SETUP_LSBFIRST="LSBFIRST";s.Msg.ARD_SPI_SETUP_MODE="SPI模式(空 - 邊界)";s.Msg.ARD_SPI_SETUP_MODE0="0 (Low - Falling)";s.Msg.ARD_SPI_SETUP_MODE1="1 (Low - Rising)";s.Msg.ARD_SPI_SETUP_MODE2="2 (High - Falling)";s.Msg.ARD_SPI_SETUP_MODE3="3 (High - Rising)";s.Msg.ARD_SPI_SETUP_MSBFIRST="MSBFIRST";s.Msg.ARD_SPI_SETUP_SHIFT="數據傳輸";s.Msg.ARD_SPI_SETUP_TIP="配置SPI外設";s.Msg.ARD_SPI_TRANSRETURN_TIP="Send a SPI message to an specified slave device and get data back.";s.Msg.ARD_SPI_TRANS_NONE="none";s.Msg.ARD_SPI_TRANS_SLAVE="來控制接口";s.Msg.ARD_SPI_TRANS_TIP="Send a SPI message to an specified slave device.";s.Msg.ARD_SPI_TRANS_VAL="轉換";s.Msg.ARD_SPI_TRANS_WARN1="A setup block for %1 must be added to the workspace to use this block!";s.Msg.ARD_SPI_TRANS_WARN2="Old pin value %1 is no longer available.";s.Msg.ARD_STEPPER_COMPONENT="stepper";s.Msg.ARD_STEPPER_DEFAULT_NAME="MyStepper";s.Msg.ARD_STEPPER_MOTOR="步進馬達";s.Msg.ARD_STEPPER_PIN1="接口1#':";s.Msg.ARD_STEPPER_PIN2="接口2#':";s.Msg.ARD_STEPPER_REVOLVS="每轉有多少步:";s.Msg.ARD_STEPPER_SETUP="設定步進馬達名爲:";s.Msg.ARD_STEPPER_SETUP_TIP="配置步進馬達接口排列和其他設定";s.Msg.ARD_STEPPER_SPEED="設定轉速(轉/分)爲";s.Msg.ARD_STEPPER_STEP="移動步進馬達";s.Msg.ARD_STEPPER_STEPS="步";s.Msg.ARD_STEPPER_STEP_TIP="將步進馬達轉動壹定數量的步數";s.Msg.ARD_TIME_CHRONO_CHECK="當碼錶停至";s.Msg.ARD_TIME_CHRONO_CHECK1="毫秒時";s.Msg.ARD_TIME_CHRONO_ELAPSED="碼錶已過去的時間";s.Msg.ARD_TIME_CHRONO_RESET="重置碼錶";s.Msg.ARD_TIME_CHRONO_SETUP="碼錶初始化";s.Msg.ARD_TIME_DELAY="等待";s.Msg.ARD_TIME_DELAY_MICROS="微秒";s.Msg.ARD_TIME_DELAY_MICRO_TIP="等待壹定的時間(以微秒爲單位)";s.Msg.ARD_TIME_DELAY_TIP="等待壹定的時間(以毫秒爲單位)";s.Msg.ARD_TIME_DELAY_seconds_TIP="等待壹定的時間(以秒爲單位)";s.Msg.ARD_TIME_DELAY_seconds="秒";s.Msg.ARD_TIME_DO="執行";s.Msg.ARD_TIME_DO_MS="執行";s.Msg.ARD_TIME_EVERY="每隔";s.Msg.ARD_TIME_EVERY_MS="每隔";s.Msg.ARD_TIME_INF="永久等待(結束程序)";s.Msg.ARD_TIME_INF_TIP="無限期等待,即停止程序";s.Msg.ARD_TIME_MICROS="當前已過時間(微秒)";s.Msg.ARD_TIME_MICROS_TIP="返回自Arduino版開始執行當前程序以來的微秒數,必須以長整數型儲存";s.Msg.ARD_TIME_MILLIS="當前已過時間(毫秒)";s.Msg.ARD_TIME_MILLIS_TIP="返回自Arduino版開始執行當前程序以來的毫秒數,必須以長整數型儲存";s.Msg.ARD_TIME_MS="毫秒";s.Msg.ARD_TIME_SECOND="秒";s.Msg.ARD_TIME_SECOND_MS="毫秒";s.Msg.ARD_TONE_FREQ="frequency";s.Msg.ARD_TONE_PIN="Tone PIN#";s.Msg.ARD_TONE_PIN_TIP="Generate audio tones on a pin";s.Msg.ARD_TYPE_ARRAY="Array";s.Msg.ARD_TYPE_BOOL="Boolean";s.Msg.ARD_TYPE_CHAR="Character";s.Msg.ARD_TYPE_CHILDBLOCKMISSING="ChildBlockMissing";s.Msg.ARD_TYPE_DECIMAL="Decimal";s.Msg.ARD_TYPE_LONG="Large Number";s.Msg.ARD_TYPE_NULL="Null";s.Msg.ARD_TYPE_NUMBER="Number";s.Msg.ARD_TYPE_SHORT="Short Number";s.Msg.ARD_TYPE_TEXT="Text";s.Msg.ARD_TYPE_UNDEF="Undefined";s.Msg.ARD_VAR_AS="爲";s.Msg.ARD_VAR_AS_TIP="Sets a value to a specific type";s.Msg.ARD_WRITE_TO="爲";s.Msg.AUTH="請授權這個應用程式以保存您的作品並共享。";s.Msg.BASIC_AS="as";s.Msg.BASIC_BLACK_OUT="Black out";s.Msg.BASIC_BRTN="Brightness";s.Msg.BASIC_BUZZER_PLAY="Buzzer plays ";s.Msg.BASIC_BUZZER_SETUP="Buzzer Setup";s.Msg.BASIC_COUNTER_SETTING="按鈕為";s.Msg.BASIC_COUNTER_SETUP="設定一個計數器 ";s.Msg.BASIC_FOR="for";s.Msg.BASIC_FROM="from";s.Msg.BASIC_HZ="Hz";s.Msg.BASIC_IF_SWITCH="If switch ";s.Msg.BASIC_IS=" is ";s.Msg.BASIC_LIGHT_PIN="Light Pin#";s.Msg.BASIC_LIGHT_WARNING="亮度值必須在0到255之間";s.Msg.BASIC_MUTE="Mute";s.Msg.BASIC_NOLCD="關閉在接口%1上的燈光";s.Msg.BASIC_NOTONE="關閉在接口%1上的音調";s.Msg.BASIC_NOTONE_TIP="關閉所選接口上的音調輸出";s.Msg.BASIC_PIN_NUM="Pin#";s.Msg.BASIC_READBUTTON="讀取在接口%1上開關的狀態";s.Msg.BASIC_READCOUNTER="讀取計數器的數值 計數按鈕為%1";s.Msg.BASIC_READKNOB="讀取在接口%1上電位器的數值";s.Msg.BASIC_SET="Set";s.Msg.BASIC_SETANALOGLED="設定在接口%1上的燈光亮度為%2";s.Msg.BASIC_SETDIGITALLED="打開在接口%1上的燈光";s.Msg.BASIC_SETTONE="設定在接口%1上的音調頻率為%2";s.Msg.BASIC_SET_PIN="Set Pin#";s.Msg.BASIC_TO="to";s.Msg.BASIC_TONE_TIP="設定接口上的音調頻率爲31到65535中某個特定頻率";s.Msg.BASIC_TONE_WARNING="頻率值必須在31到65535之間";s.Msg.BLUE="藍";s.Msg.BLUETOOTH_INTERACTION_SET_CONTENT="設定序列埠波特率為:";s.Msg.BLUETOOTH_INTERACTION_TITLE="藍芽模組進入 AT 配置模式";s.Msg.BLUETOOTH_INTERCOMMS_DATA="data";s.Msg.BLUETOOTH_INTERCOMMS_RECEIVEMSG="接收數據";s.Msg.BLUETOOTH_INTERCOMMS_RECEIVEMSG_ISSUCCESS="接收數據成功";s.Msg.BLUETOOTH_INTERCOMMS_RECEIVE_GET_LINE2="獲取第";s.Msg.BLUETOOTH_INTERCOMMS_RECEIVE_GET_LINE2_2="位的數據";s.Msg.BLUETOOTH_INTERCOMMS_RECEIVE_GET_LINE3="位的數據,並設置類型為";s.Msg.BLUETOOTH_INTERCOMMS_RECEIVE_GET_LINE4="";s.Msg.BLUETOOTH_INTERCOMMS_RECEIVE_LINE3="長度為";s.Msg.BLUETOOTH_INTERCOMMS_SENDMSG="發送數據";s.Msg.BLUETOOTH_INTERCOMMS_SETUP="藍牙對藍牙通信";s.Msg.BLUETOOTH_INTERCOMMS_SETUP1="對藍牙通信";s.Msg.BLUETOOTH_INTERCOMMS_SETUP2="初始化";s.Msg.BLUETOOTH_LIST_RECEIVED="已接收到的陣列";s.Msg.BLUETOOTH_LIST_RECEIVED1="中第";s.Msg.BLUETOOTH_LIST_RECEIVED2="位的值";s.Msg.BLUETOOTH_NUMBER_RECEIVED="已接收到的數字";s.Msg.BLUETOOTH_PAIRING_BIND_ADDR="綁定從屬裝置地址:";s.Msg.BLUETOOTH_PAIRING_MASTER="藍芽配對: 主機裝置設定";s.Msg.BLUETOOTH_PAIRING_SETTING_BAUDRATE="設定波特率:";s.Msg.BLUETOOTH_PAIRING_SETTING_TIMEOUT="設定延時:";s.Msg.BLUETOOTH_PAIRING_SLAVE="藍芽配對: 從屬裝置設定";s.Msg.BLUETOOTH_SETUP="儅藍牙接收到";s.Msg.BLUETOOTH_SETUP_DATA_SET="設定";s.Msg.BLUETOOTH_SETUP_DO="並且做";s.Msg.BLUETOOTH_SETUP_LIST_SETTING="長度為";s.Msg.BLUETOOTH_SETUP_OPT1="壹串字串";s.Msg.BLUETOOTH_SETUP_OPT2="一個數字";s.Msg.BLUETOOTH_SETUP_OPT3="一個陣列";s.Msg.BLUETOOTH_SETUP_SET="設定波特率";s.Msg.BLUETOOTH_SETUP_TO="為接收到的訊息";s.Msg.BLUETOOTH_TEXT_RECEIVED="已接收到的字串";s.Msg.BLYNK_AUTH="認證密匙: ";s.Msg.BLYNK_CONNECT="當Blynk連接成功";s.Msg.BLYNK_CREATE_WITH_CONTAINER_TITLE_ADD="Data";s.Msg.BLYNK_CREATE_WITH_ITEM_TITLE="item";s.Msg.BLYNK_DATA="data";s.Msg.BLYNK_GET_DATANAME="從";s.Msg.BLYNK_GET_DATANAME1="獲得";s.Msg.BLYNK_GET_DATANAME2="數據";s.Msg.BLYNK_GET_INDEX="第";s.Msg.BLYNK_GET_INDEX1="位的數據";s.Msg.BLYNK_GET_OF="獲得數據";s.Msg.BLYNK_GET_OF1="獲得";s.Msg.BLYNK_GET_OF2="的數據";s.Msg.BLYNK_GPS_ALTITUDE="高度(海拔)";s.Msg.BLYNK_GPS_LATITUDE="緯度";s.Msg.BLYNK_GPS_LONGITUDE="經度";s.Msg.BLYNK_GPS_SPEED="速度";s.Msg.BLYNK_LOG="BLYNK_LOG";s.Msg.BLYNK_PW="WiFi密碼: ";s.Msg.BLYNK_READ="當Blynk請求";s.Msg.BLYNK_READ1="數據";s.Msg.BLYNK_SELECT="選擇";s.Msg.BLYNK_SETUP="BLYNK初始化";s.Msg.BLYNK_SSID="WiFi名稱: ";s.Msg.BLYNK_TIME_DO="執行";s.Msg.BLYNK_TIME_SECOND="秒";s.Msg.BLYNK_TIME_SETTING="設置計時器: 每隔";s.Msg.BLYNK_VIRTUALWRITE="發送數據到";s.Msg.BLYNK_VIRTUALWRITE_DATA="Data:";s.Msg.BLYNK_WIFI="連接WiFi網絡";s.Msg.BLYNK_WRITE="從";s.Msg.BLYNK_WRITE1="獲取數據";s.Msg.BLYNK_WRITE_VARIABLE="存到";s.Msg.BLYNK_WRITE_VARLENGTH="長度";s.Msg.CHANGE_VALUE_TITLE="修改值:";s.Msg.CHAT="與您的合作者洽談藉由在此框輸入!";s.Msg.CLEAN_UP="整理積木";s.Msg.CLOUDDATA_CREATE_WITH_CONTAINER_TITLE_ADD="key[]";s.Msg.CLOUDDATA_CREATE_WITH_INPUT_WITH="添加";s.Msg.CLOUDDATA_CREATE_WITH_ITEM_TITLE="value";s.Msg.CLOUDDATA_GENERATOR_DATA="生成數據";s.Msg.CLOUDDATA_PARSE_JSON="的數據從";s.Msg.CLOUDDATA_PARSE_KEY="解析得到名爲";s.Msg.CLOUDDATA_PARSE_PRETTYPRINT_DISPLAY="獲得生成的數據";s.Msg.CLOUDDATA_PARSE_SETUP_INIT="數據解析初始化為";s.Msg.CLOUDDATA_PARSE_SETUP_PAYLOAD="解析內容";s.Msg.CLOUDDATA_PARSE_TYPE="類型爲";s.Msg.CO2SENSOR_GET_CO2="獲取二氧化碳濃度數值(單位:ppm)";s.Msg.CO2SENSOR_GET_TVOC="獲取 TVOC(揮發性有機物)數值";s.Msg.CO2SENSOR_SETUP="CCS811 空氣質量感應器初始化";s.Msg.CO2SENSOR_SETUP_SCL="SCL 引腳接在:";s.Msg.CO2SENSOR_SETUP_SDA="SDA 引腳接在:";s.Msg.COCOCLOUD_CREATE_WITH_CONTAINER_TITLE_ADD="LIST";s.Msg.COCOCLOUD_CREATE_WITH_ITEM_TITLE="Event";s.Msg.COCOCLOUD_GET="向項目";s.Msg.COCOCLOUD_GET1="獲取數據";s.Msg.COCOCLOUD_GETPAYLOAD="從項目獲取到的數據";s.Msg.COCOCLOUD_POST="發送到項目";s.Msg.COCOCLOUD_POST_DATA="數據";s.Msg.COCOCLOUD_TIME_DAY="日";s.Msg.COCOCLOUD_TIME_GETDATE="獲取";s.Msg.COCOCLOUD_TIME_GETTIME="獲取";s.Msg.COCOCLOUD_TIME_HOUR="時";s.Msg.COCOCLOUD_TIME_MINUTE="分";s.Msg.COCOCLOUD_TIME_MONTH="月份";s.Msg.COCOCLOUD_TIME_SECOND="秒";s.Msg.COCOCLOUD_TIME_SETUP="世界時間";s.Msg.COCOCLOUD_TIME_YEAR="年份";s.Msg.COCOCLOUD_TITLE="Web服務 CocoCloud";s.Msg.COLLAPSE_ALL="收合積木";s.Msg.COLLAPSE_BLOCK="收合積木";s.Msg.COLOR="顔色";s.Msg.COLORANALYZER_SETUP="顔色分析設定";s.Msg.COLOUR_BLEND_COLOUR1="顏色 1";s.Msg.COLOUR_BLEND_COLOUR2="顏色 2";s.Msg.COLOUR_BLEND_HELPURL="http://meyerweb.com/eric/tools/color-blend/";s.Msg.COLOUR_BLEND_RATIO="比例";s.Msg.COLOUR_BLEND_TITLE="混合";s.Msg.COLOUR_BLEND_TOOLTIP="透過一個比率 (0.0-1.0)來混合兩種顏色。";s.Msg.COLOUR_PICKER_HELPURL="https://zh.wikipedia.org/wiki/顏色";s.Msg.COLOUR_PICKER_TOOLTIP="從調色板中選擇壹種顏色。";s.Msg.COLOUR_RANDOM_HELPURL="http://randomcolour.com";s.Msg.COLOUR_RANDOM_TITLE="隨機顏色";s.Msg.COLOUR_RANDOM_TOOLTIP="隨機選擇壹種顏色。";s.Msg.COLOUR_RGB_BLUE="藍";s.Msg.COLOUR_RGB_GREEN="綠";s.Msg.COLOUR_RGB_HELPURL="http://www.december.com/html/spec/colorper.html";s.Msg.COLOUR_RGB_RED="紅";s.Msg.COLOUR_RGB_TITLE="顏色";s.Msg.COLOUR_RGB_TOOLTIP="透過指定紅、綠、 藍色的值來建立壹種顏色。所有的值必須介於 0 和 100 之間。";s.Msg.CONTROLS_FLOW_STATEMENTS_HELPURL="https://github.com/google/blockly/wiki/Loops#loop-termination-blocks";s.Msg.CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK="停止 迴圈";s.Msg.CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE="繼續下一個 迴圈";s.Msg.CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK="離開當前的 迴圈";s.Msg.CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE="跳過這個迴圈的其餘步驟,並繼續下壹次的迴圈運算。";s.Msg.CONTROLS_FLOW_STATEMENTS_WARNING="警告: 此積木僅可用於迴圈內。";s.Msg.CONTROLS_FOREACH_HELPURL="https://github.com/google/blockly/wiki/Loops#for-each";s.Msg.CONTROLS_FOREACH_TITLE="在陣列 %2 中以 %1 遍歷每個項目";s.Msg.CONTROLS_FOREACH_TOOLTIP="遍歷每個陣列中的項目,將變量 '%1' 設定到該項目中,然後執行某些語句";s.Msg.CONTROLS_FOR_HELPURL="https://github.com/google/blockly/wiki/Loops#count-with";s.Msg.CONTROLS_FOR_TITLE="使用 %1 從範圍 %2 到 %3 每隔 %4";s.Msg.CONTROLS_FOR_TOOLTIP='從起始數到結尾數中取出變量 "%1" 的值,按指定的時間間隔,執行指定的積木。';s.Msg.CONTROLS_IF_ELSEIF_TOOLTIP="將條件添加到'如果'積木。";s.Msg.CONTROLS_IF_ELSE_TOOLTIP="加入一個最終,所有條件下都都執行的區塊到'如果'積木中";s.Msg.CONTROLS_IF_HELPURL="https://github.com/google/blockly/wiki/IfElse";s.Msg.CONTROLS_IF_IF_TOOLTIP="添加、 刪除或重新排列各區塊來此重新配置這個'如果'積木。";s.Msg.CONTROLS_IF_MSG_ELSE="否則";s.Msg.CONTROLS_IF_MSG_ELSEIF="否則如果";s.Msg.CONTROLS_IF_MSG_IF="如果";s.Msg.CONTROLS_IF_TOOLTIP_1="當值為真時,執行壹些語句";s.Msg.CONTROLS_IF_TOOLTIP_2="當值為真時,執行首個語句,否則則執行第二個語句";s.Msg.CONTROLS_IF_TOOLTIP_3="如果首個值為真,則執行首個語句。否則當第二個值為真時,則執行第二個語句";s.Msg.CONTROLS_IF_TOOLTIP_4="如果首個值為真,則執行首個語句。否則當第二個值為真時,則執行第二個語句。如果前幾個敘述都不為真,則執行最後一個語句";s.Msg.CONTROLS_REPEAT_HELPURL="https://zh.wikipedia.org/wiki/For迴圈";s.Msg.CONTROLS_REPEAT_INPUT_DO="執行";s.Msg.CONTROLS_REPEAT_TITLE="重複 %1 次";s.Msg.CONTROLS_REPEAT_TOOLTIP="多次執行壹些語句";s.Msg.CONTROLS_WHILEUNTIL_HELPURL="https://github.com/google/blockly/wiki/Loops#repeat";s.Msg.CONTROLS_WHILEUNTIL_OPERATOR_UNTIL="重複 直到";s.Msg.CONTROLS_WHILEUNTIL_OPERATOR_WHILE="重複 當";s.Msg.CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL="當值為否時,執行壹些語句";s.Msg.CONTROLS_WHILEUNTIL_TOOLTIP_WHILE="當值為真時,執行壹些語句";s.Msg.DELETE_ALL_BLOCKS="刪除共 %1 塊積木?";s.Msg.DELETE_BLOCK="刪除積木";s.Msg.DELETE_X_BLOCKS="刪除 %1 塊積木";s.Msg.DISABLE_BLOCK="停用積木";s.Msg.DUPLICATE_BLOCK="複製";s.Msg.ENABLE_BLOCK="啟用積木";s.Msg.ENCODER_GETROTATIONSPEED="讀取碼盤數值";s.Msg.ENCODER_SETUP="碼盤初始化·";s.Msg.ENCODER_SETUP_1="設定中斷引腳";s.Msg.ENV_AS="as";s.Msg.ENV_BLUE_PIN="藍 從接口";s.Msg.ENV_BUZZER_ALARM="Buzzer Alarm";s.Msg.ENV_CRITICAL_VAL="When the critical value of";s.Msg.ENV_DO="Do";s.Msg.ENV_GREEN_PIN="綠 從接口";s.Msg.ENV_REACHES="reaches";s.Msg.ENV_RED_PIN="紅 從接口 ";s.Msg.ENV_SENSOR_HUMID="讀取濕度的數值從接口 ";s.Msg.ENV_SENSOR_HUMIDITY="濕度";s.Msg.ENV_SENSOR_LIGHT="讀取光照的數值從接口 ";s.Msg.ENV_SENSOR_MIC="讀取聲音的數值從接口 ";s.Msg.ENV_SENSOR_READ="讀取數值從";s.Msg.ENV_SENSOR_READTEMP="讀取溫度的數值從接口 ";s.Msg.ENV_SENSOR_SET_RGB="設定RGB燈光";s.Msg.ENV_SENSOR_SOUND="聲音";s.Msg.ENV_SENSOR_TEMPUNIT="設定單位為";s.Msg.ENV_SENSOR_UNITC="攝氏度";s.Msg.ENV_SENSOR_UNITF="華氏度";s.Msg.ENV_SET="Set";s.Msg.ENV_SETRGB_B="藍 從接口";s.Msg.ENV_SETRGB_G="綠 從接口";s.Msg.ENV_SETRGB_R="紅 從接口 ";s.Msg.ENV_SETUP="環境感應設定";s.Msg.ENV_SET_TEMP="Set temperature as ";s.Msg.ENV_SET_TEMP_UNIT="Set unit as ";s.Msg.EXPAND_ALL="展開積木";s.Msg.EXPAND_BLOCK="展開積木";s.Msg.EXPORTPNG="匯出PNG快照";s.Msg.EXPORTXML="匯出XML文件";s.Msg.EXTERNAL_INPUTS="多欄輸入";s.Msg.Friday="周五";s.Msg.GPS_LATITUDE="獲取緯度";s.Msg.GPS_LONGITUDE="獲取經度";s.Msg.GPS_SETUP="GPS 初始化";s.Msg.GREEN="綠";s.Msg.HELP="說明";s.Msg.HID_KEYBOARD_PRESS="設定鍵盤: 按下";s.Msg.HID_KEYBOARD_RELEASE="設定鍵盤: 釋放";s.Msg.HID_KEYBOARD_RELEASEALL="設定鍵盤: 釋放全部";s.Msg.HID_MOUSE_CLICK="設定鼠標: 點擊";s.Msg.HID_MOUSE_CLICK_LEFT="左鍵";s.Msg.HID_MOUSE_CLICK_RIGHT="右鍵";s.Msg.HID_MOUSE_MOVE="設定鼠標: 向";s.Msg.HID_MOUSE_MOVE_DISTANCE="px";s.Msg.HID_MOUSE_MOVE_FOR="移動";s.Msg.HID_MOUSE_PRESS="設定鼠標: 按下";s.Msg.HID_MOUSE_RELEASE="設定鼠標: 鬆開";s.Msg.HID_SETUP="HID初始化";s.Msg.INFRAREDRAY_RECVAL="接收值";s.Msg.INFRAREDRAY_SETUP="紅外綫接收器設定";s.Msg.INLINE_INPUTS="單欄輸入";s.Msg.ISCOLOR="是否顏色";s.Msg.JSONOBJECT_CREATE="JSON Object";s.Msg.JSONTOOL_ARRAY_SIZE="陣列大小";s.Msg.JSONTOOL_GENERATOR="JSON構造器 ";s.Msg.JSONTOOL_GENERATOR_ARRAY_VALUE="JSON陣列加入: value";s.Msg.JSONTOOL_GENERATOR_JSONOBJECT="Object";s.Msg.JSONTOOL_GENERATOR_KEY="JSON對象加入:Key ";s.Msg.JSONTOOL_GENERATOR_MAIN_JSONNAME="JSONVar";s.Msg.JSONTOOL_GENERATOR_MAIN_TITLE="生成JSON";s.Msg.JSONTOOL_GENERATOR_MAIN_TITLE_NAME="命名為";s.Msg.JSONTOOL_GENERATOR_NESTED_TITLE="嵌套JSON";s.Msg.JSONTOOL_GENERATOR_NESTED_TITLE_NAME="命名為";s.Msg.JSONTOOL_GENERATOR_SETUP="JSON構造器初始化";s.Msg.JSONTOOL_GENERATOR_VALUE="Value";s.Msg.JSONTOOL_OBJECT_SIZE="對象大小";s.Msg.JSONTOOL_PARSE_ARRAY="(JSON陣列)";s.Msg.JSONTOOL_PARSE_BY="獲取";s.Msg.JSONTOOL_PARSE_EACH="從JSON對象";s.Msg.JSONTOOL_PARSE_INDEX="下標為";s.Msg.JSONTOOL_PARSE_ISSUCCESS="是否成功解析";s.Msg.JSONTOOL_PARSE_ISSUCCESS_NAME="對於JSON對象";s.Msg.JSONTOOL_PARSE_JSONOBJECT="Object";s.Msg.JSONTOOL_PARSE_KEY="(JSON對象)key";s.Msg.JSONTOOL_PARSE_KEYVALUE="從JSON Object %1 獲得key %2 的值";s.Msg.JSONTOOL_PARSE_NEST="內嵌";s.Msg.JSONTOOL_PARSE_PRETTYPRINT="打印 JSON ";s.Msg.JSONTOOL_PARSE_PRETTYPRINT_DISPLAY="規範化數據r";s.Msg.JSONTOOL_PARSE_PRETTYPRINT_WAY="按規範方式";s.Msg.JSONTOOL_PARSE_RESPONSE="數據內容";s.Msg.JSONTOOL_PARSE_SETUP="JSON解析器初始化";s.Msg.JSONTOOL_PARSE_TOVAR="獲取數據到";s.Msg.JSONTOOL_PARSE_VARTYPE="";s.Msg.LED_BACKCOLOR="背景";s.Msg.LED_BRIGHTNESS_WARNING="亮度應該在範圍 0 - 255 之間";s.Msg.LED_BRTN="亮度";s.Msg.LED_CLEAR="清除";s.Msg.LED_COLOR="顔色";s.Msg.LED_COORDINATE="座標";s.Msg.LED_DRAW="畫";s.Msg.LED_FONT="字體";s.Msg.LCD_FONT="字體:";s.Msg.SUPER_LARGE="超大";s.Msg.LARGE="大";s.Msg.MIDDLE="中";s.Msg.SMALL="小";s.Msg.LED_FULL="實心";s.Msg.LED_HEIGHT="高";s.Msg.LED_LINE="線";s.Msg.LED_LINE_END="終點";s.Msg.LED_LINE_START="起點";s.Msg.LED_MULTICOM="H";s.Msg.LED_PANELHEIGHT="高(拼接個數)";s.Msg.LED_PANELWIDTH="寬(拼接個數)";s.Msg.LED_PATTERN="圖形";s.Msg.LED_PIN="接口";s.Msg.LED_PIXEL="點";s.Msg.LED_POSITION="位置";s.Msg.LED_RECTANGLE="矩形";s.Msg.LED_SCROLL="滾動";s.Msg.LED_SCROLL_NO="否";s.Msg.LED_SCROLL_SPEED="速度";s.Msg.LED_SCROLL_YES="是";s.Msg.LED_SETUP="LED燈組設定";s.Msg.LED_SET_BRIGHTNESS="設定亮度為";s.Msg.LED_SET_ROTATION="設定 LCD 方向旋轉";s.Msg.LED_SET_ROTATION_DEGREE="度";s.Msg.LED_SHOW_ALL="顯示圖案";s.Msg.LED_SINGLE_SETUP="單個LED燈組設定";s.Msg.LED_SIZE="大小";s.Msg.LED_STRIP_LOCATION="位置";s.Msg.LED_STRIP_PIXEL="繪製畫素";s.Msg.LED_STROKED="空心";s.Msg.LED_TEXT="文本";s.Msg.LED_WIDTH="寬";s.Msg.LED_WORD="單字";s.Msg.LIGHT_BRIGHTNESS="上的燈光亮度為:";s.Msg.LIGHT_PIN="設定";s.Msg.LIGHT_TURNOFF="關閉燈光輸出在";s.Msg.LISTS_CREATE_EMPTY_HELPURL="https://github.com/google/blockly/wiki/Lists#create-empty-list";s.Msg.LISTS_CREATE_EMPTY_TITLE="建立空陣列";s.Msg.LISTS_CREATE_EMPTY_TOOLTIP="返回一個長度為 0 的陣列,不包含任何數據記錄";s.Msg.LISTS_CREATE_LIST_WITH="創建陣列";s.Msg.LISTS_CREATE_WITH_CONTAINER_TITLE_ADD="陣列";s.Msg.LISTS_CREATE_WITH_CONTAINER_TOOLTIP="添加、 刪除或重新排列各區塊來此重新配置這個 陣列 積木。";s.Msg.LISTS_CREATE_WITH_HELPURL="https://github.com/google/blockly/wiki/Lists#create-list-with";s.Msg.LISTS_CREATE_WITH_ITEM_TOOLTIP="將一個項目加入到陣列中。";s.Msg.LISTS_CREATE_WITH_TOOLTIP="建立一個具備任意數量項目的陣列。";s.Msg.LISTS_GETINDEX="從陣列 %1 中獲取第 %2 位的值";s.Msg.LISTS_GET_INDEX_FIRST="首個筆";s.Msg.LISTS_GET_INDEX_FROM_END="倒數第#筆";s.Msg.LISTS_GET_INDEX_FROM_START="#";s.Msg.LISTS_GET_INDEX_GET="取值";s.Msg.LISTS_GET_INDEX_GET_REMOVE="取出並移除";s.Msg.LISTS_GET_INDEX_LAST="最後壹筆";s.Msg.LISTS_GET_INDEX_RANDOM="隨機";s.Msg.LISTS_GET_INDEX_REMOVE="移除";s.Msg.LISTS_GET_INDEX_TAIL="";s.Msg.LISTS_GET_INDEX_TOOLTIP_GET_FIRST="返回陣列中的首個項目";s.Msg.LISTS_GET_INDEX_TOOLTIP_GET_FROM_END="返回在陣列中的指定位置的項目。#1 是最後一個項目。";s.Msg.LISTS_GET_INDEX_TOOLTIP_GET_FROM_START="返回在陣列中的指定位置的項目。#1 是首個項目。";s.Msg.LISTS_GET_INDEX_TOOLTIP_GET_LAST="返回陣列中的最後一個項目";s.Msg.LISTS_GET_INDEX_TOOLTIP_GET_RANDOM="返回陣列中隨機的一個項目";s.Msg.LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST="移除並返回陣列中的首個項目";s.Msg.LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM_END="移除並返回陣列中的指定位置的項目。#1 是最後一個項目。";s.Msg.LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM_START="移除並返回陣列中的指定位置的項目。#1 是首個項目。";s.Msg.LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST="移除並返回陣列中的最後一個項目";s.Msg.LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM="移除並返回陣列中的隨機一個項目";s.Msg.LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST="移除陣列中的首個項目";s.Msg.LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM_END="移除在陣列中的指定位置的項目。#1 是最後一個項目。";s.Msg.LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM_START="移除在陣列中的指定位置的項目。#1 是首個項目。";s.Msg.LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST="移除陣列中的最後一個項目";s.Msg.LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM="移除陣列中隨機的一個項目";s.Msg.LISTS_GET_SUBLIST_END_FROM_END="到 倒數 # 位";s.Msg.LISTS_GET_SUBLIST_END_FROM_START="到 #";s.Msg.LISTS_GET_SUBLIST_END_LAST="到 最後";s.Msg.LISTS_GET_SUBLIST_HELPURL="https://github.com/google/blockly/wiki/Lists#getting-a-sublist";s.Msg.LISTS_GET_SUBLIST_START_FIRST="從 頭 取得子陣列";s.Msg.LISTS_GET_SUBLIST_START_FROM_END="從倒數 # 取得子陣列";s.Msg.LISTS_GET_SUBLIST_START_FROM_START="從 # 取得子陣列";s.Msg.LISTS_GET_SUBLIST_TAIL="";s.Msg.LISTS_GET_SUBLIST_TOOLTIP="複製陣列中指定的部分。";s.Msg.LISTS_INDEX_OF_FIRST="找出 首個 項目出現";s.Msg.LISTS_INDEX_OF_HELPURL="https://github.com/google/blockly/wiki/Lists#getting-items-from-a-list";s.Msg.LISTS_INDEX_OF_LAST="找出 最後一個 項目出現";s.Msg.LISTS_INDEX_OF_TOOLTIP="返回在陣列中的首個/最後一個匹配項目的索引值。如果未找到則返回 0。";s.Msg.LISTS_INLIST="自陣列";s.Msg.LISTS_INT_CREATE_WITH_INPUT_WITH="使用這些值建立陣列";s.Msg.LISTS_ISEMPTY_HELPURL="https://github.com/google/blockly/wiki/Lists#is-empty";s.Msg.LISTS_ISEMPTY_TITLE="%1 值為空";s.Msg.LISTS_ISEMPTY_TOOLTIP="如果該陣列為空,則返回 真。";s.Msg.LISTS_LENGTH_HELPURL="https://github.com/google/blockly/wiki/Lists#length-of";s.Msg.LISTS_LENGTH_TITLE="長度 %1";s.Msg.LISTS_LENGTH_TOOLTIP="返回陣列的長度。";s.Msg.LISTS_REPEAT_HELPURL="https://github.com/google/blockly/wiki/Lists#create-list-with";s.Msg.LISTS_REPEAT_TITLE="建立陣列使用項目 %1 重複 %2 次數";s.Msg.LISTS_REPEAT_TOOLTIP="建立包含指定重複次數的 值 的陣列。";s.Msg.LISTS_SETINDEX="賦值 %1 中第 %2 位的值到 %3";s.Msg.LISTS_SET_INDEX_HELPURL="https://github.com/google/blockly/wiki/Lists#in-list--set";s.Msg.LISTS_SET_INDEX_INPUT_TO="為";s.Msg.LISTS_SET_INDEX_INSERT="插入在";s.Msg.LISTS_SET_INDEX_SET="設定";s.Msg.LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST="在陣列的起始處添加一個項目";s.Msg.LISTS_SET_INDEX_TOOLTIP_INSERT_FROM_END="插入在陣列中的指定位置的項目。#1 是最後一個項目。";s.Msg.LISTS_SET_INDEX_TOOLTIP_INSERT_FROM_START="插入在陣列中的指定位置的項目。#1 是首個項目。";s.Msg.LISTS_SET_INDEX_TOOLTIP_INSERT_LAST="在陣列的尾端加入一個項目";s.Msg.LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM="在陣列中隨機插入項目";s.Msg.LISTS_SET_INDEX_TOOLTIP_SET_FIRST="設定陣列中的首個項目";s.Msg.LISTS_SET_INDEX_TOOLTIP_SET_FROM_END="設定在陣列中的指定位置的項目。#1 是最後一個項目。";s.Msg.LISTS_SET_INDEX_TOOLTIP_SET_FROM_START="設定在陣列中的指定位置的項目。#1 是首個項目。";s.Msg.LISTS_SET_INDEX_TOOLTIP_SET_LAST="設定陣列中的最後一個項目";s.Msg.LISTS_SET_INDEX_TOOLTIP_SET_RANDOM="設定陣列中隨機的一個項目";s.Msg.LISTS_SORT_HELPURL="https://github.com/google/blockly/wiki/Lists#sorting-a-list";s.Msg.LISTS_SORT_ORDER_ASCENDING="升冪排序";s.Msg.LISTS_SORT_ORDER_DESCENDING="降冪排序";s.Msg.LISTS_SORT_TITLE="依%1%2%3排序";s.Msg.LISTS_SORT_TOOLTIP="排序字典的複製內容";s.Msg.LISTS_SORT_TYPE_IGNORECASE="依字母排序並忽略大小寫";s.Msg.LISTS_SORT_TYPE_NUMERIC="依數字排序";s.Msg.LISTS_SORT_TYPE_TEXT="依字母排序";s.Msg.LISTS_SPLIT_HELPURL="https://github.com/google/blockly/wiki/Lists#splitting-strings-and-joining-lists";s.Msg.LISTS_SPLIT_LIST_FROM_TEXT="從文本製作陣列";s.Msg.LISTS_SPLIT_TEXT_FROM_LIST="從陣列拆出文本";s.Msg.LISTS_SPLIT_TOOLTIP_JOIN="串起文本陣列成一個文本,由分隔符分隔。";s.Msg.LISTS_SPLIT_TOOLTIP_SPLIT="拆分文本到文本陣列,按每個分隔符拆分。";s.Msg.LISTS_SPLIT_WITH_DELIMITER="用分隔符";s.Msg.LISTS_STRING_CREATE_WITH_INPUT_WITH="使用這些值建立陣列";s.Msg.LISTS_THE_LENGTH_OF="%1的長度";s.Msg.LOGIC_BOOLEAN_FALSE="否";s.Msg.LOGIC_BOOLEAN_HELPURL="https://github.com/google/blockly/wiki/Logic#values";s.Msg.LOGIC_BOOLEAN_TOOLTIP="返回 真 或 否。";s.Msg.LOGIC_BOOLEAN_TRUE="真";s.Msg.LOGIC_CASE="情況";s.Msg.LOGIC_COMPARE_HELPURL="https://zh.wikipedia.org/wiki/不等";s.Msg.LOGIC_COMPARE_TOOLTIP_EQ="如果這兩個輸入區塊內容相等,返回 真。";s.Msg.LOGIC_COMPARE_TOOLTIP_GT="如果首個輸入大於第二個輸入,返回 真。";s.Msg.LOGIC_COMPARE_TOOLTIP_GTE="如果首個輸入大於或等於第二個輸入,返回 真。";s.Msg.LOGIC_COMPARE_TOOLTIP_LT="如果首個輸入小於第二個輸入,返回 真。";s.Msg.LOGIC_COMPARE_TOOLTIP_LTE="如果首個輸入是小於或等於第二個輸入,返回 真。";s.Msg.LOGIC_COMPARE_TOOLTIP_NEQ="如果這兩個輸入區塊內容不相等,返回 真。";s.Msg.LOGIC_DEFAULT="默認";s.Msg.LOGIC_DO="做";s.Msg.LOGIC_NEGATE_HELPURL="https://github.com/google/blockly/wiki/Logic#not";s.Msg.LOGIC_NEGATE_TITLE="非 %1";s.Msg.LOGIC_NEGATE_TOOLTIP="如果輸入的值是 否,則返回 真。如果輸入的值是 真 返回 否。";s.Msg.LOGIC_NULL="空";s.Msg.LOGIC_NULL_HELPURL="https://en.wikipedia.org/wiki/Nullable_type";s.Msg.LOGIC_NULL_TOOLTIP="返回 空。";s.Msg.LOGIC_OPERATION_AND="且";s.Msg.LOGIC_OPERATION_HELPURL="https://github.com/google/blockly/wiki/Logic#logical-operations";s.Msg.LOGIC_OPERATION_OR="或";s.Msg.LOGIC_OPERATION_TOOLTIP_AND="如果這兩個輸入值都為 真,則返回 真。";s.Msg.LOGIC_OPERATION_TOOLTIP_OR="如果至少一個輸入的值為 真,返回 真。";s.Msg.LOGIC_SWITCH="切換";s.Msg.LOGIC_TERNARY_CONDITION="測試";s.Msg.LOGIC_TERNARY_HELPURL="https://zh.wikipedia.org/wiki/條件運算符";s.Msg.LOGIC_TERNARY_IF_FALSE="如果為非";s.Msg.LOGIC_TERNARY_IF_TRUE="如果為真";s.Msg.LOGIC_TERNARY_TOOLTIP="檢查 'test' 中的條件。如果條件為 真,將返回 '如果為 真' 值 ;否則,返回 '如果為 否' 的值。";s.Msg.MAINEASYMODE_TRANSFER_RECEIVE="從AI模組獲取數據";s.Msg.MAINEASYMODE_TRANSFER_RECEIVE_GET="從 ";s.Msg.MAINEASYMODE_TRANSFER_RECEIVE_GET_LINE2="獲取第";s.Msg.MAINEASYMODE_TRANSFER_RECEIVE_GET_LINE3="位的數據,並設定類型為";s.Msg.MAINEASYMODE_TRANSFER_RECEIVE_GET_LINE4="";s.Msg.MAINEASYMODE_TRANSFER_RECEIVE_LINE2="並存到 ";s.Msg.MAINEASYMODE_TRANSFER_RECEIVE_LINE3="長度爲 ";s.Msg.MAINEASYMODE_TRANSFER_SEND="創建陣列";s.Msg.MAINEASYMODE_TRANSFER_SEND_LINE2="傳輸數據到AI上";s.Msg.MAINEASYMODE_TRANSFER_SEND_VALUE="Data";s.Msg.MAINWIFI_RECEIVEMSG="接收數據到";s.Msg.MAINWIFI_RECEIVEMSG_ISSUCCESS="接收數據成功";s.Msg.MAINWIFI_RECEIVEMSG_LENGTH=",數據長度為";s.Msg.MAINWIFI_SENDMSG="發送數據";s.Msg.MAINWIFI_SENDMSG_LENGTH=",數據長度為";s.Msg.MAINWIFI_SETUP="無線數據傳輸初始化";s.Msg.MATH_ADDITION_SYMBOL="+";s.Msg.MATH_ARITHMETIC_HELPURL="https://zh.wikipedia.org/wiki/算術";s.Msg.MATH_ARITHMETIC_TOOLTIP_ADD="返回兩個數字的總和。";s.Msg.MATH_ARITHMETIC_TOOLTIP_DIVIDE="返回兩個數字的商。";s.Msg.MATH_ARITHMETIC_TOOLTIP_MINUS="返回兩個數字的差。";s.Msg.MATH_ARITHMETIC_TOOLTIP_MULTIPLY="返回兩個數字的乘積。";s.Msg.MATH_ARITHMETIC_TOOLTIP_POWER="返回第二個數字的指數的首個數字。";s.Msg.MATH_CHANGE_HELPURL="https://zh.wikipedia.org/wiki/加法";s.Msg.MATH_CHANGE_TITLE="將 %1 增加 %2";s.Msg.MATH_CHANGE_TOOLTIP="將數字添加到變量 '%1'。";s.Msg.MATH_CONSTANT_HELPURL="https://zh.wikipedia.org/wiki/數學常數";s.Msg.MATH_CONSTANT_TOOLTIP="返回一個的常見常量: π (3.141......),e (2.718...)、 φ (1.618...)、 開方(2) (1.414......)、 開方(½) (0.707......) 或 ∞ (無窮大)。";s.Msg.MATH_CONSTRAIN_HELPURL="https://en.wikipedia.org/wiki/Clamping_%28graphics%29";s.Msg.MATH_CONSTRAIN_TITLE="限制數字 %1 介於 (低) %2 到 (高) %3";s.Msg.MATH_CONSTRAIN_TOOLTIP="限制數字介於兩個指定的數字之間";s.Msg.MATH_DIVISION_SYMBOL="÷";s.Msg.MATH_IS_DIVISIBLE_BY="可被整除";s.Msg.MATH_IS_EVEN="是偶數";s.Msg.MATH_IS_NEGATIVE="是負值";s.Msg.MATH_IS_ODD="是奇數";s.Msg.MATH_IS_POSITIVE="是正值";s.Msg.MATH_IS_PRIME="是質數";s.Msg.MATH_IS_TOOLTIP="如果數字是偶數,奇數,非負整數,正數、 負數或如果它是可被某數字整除,則返回 真 或 否。";s.Msg.MATH_IS_WHOLE="是非負整數";s.Msg.MATH_MODULO_HELPURL="https://zh.wikipedia.org/wiki/模除";s.Msg.MATH_MODULO_TITLE="取餘數自 %1 ÷ %2";s.Msg.MATH_MODULO_TOOLTIP="回傳兩個數字相除的餘數";s.Msg.MATH_MULTIPLICATION_SYMBOL="×";s.Msg.MATH_NUMBER_HELPURL="https://zh.wikipedia.org/wiki/數";s.Msg.MATH_NUMBER_TOOLTIP="一個數字。";s.Msg.MATH_ONLIST_HELPURL="";s.Msg.MATH_ONLIST_OPERATOR_AVERAGE="平均值 自陣列";s.Msg.MATH_ONLIST_OPERATOR_MAX="最大值 自陣列";s.Msg.MATH_ONLIST_OPERATOR_MEDIAN="中位數 自陣列";s.Msg.MATH_ONLIST_OPERATOR_MIN="最小值 自陣列";s.Msg.MATH_ONLIST_OPERATOR_MODE="比較眾數 自陣列";s.Msg.MATH_ONLIST_OPERATOR_RANDOM="隨機抽取 自陣列";s.Msg.MATH_ONLIST_OPERATOR_STD_DEV="標準差 自陣列";s.Msg.MATH_ONLIST_OPERATOR_SUM="總和 自陣列";s.Msg.MATH_ONLIST_TOOLTIP_AVERAGE="返回陣列中數值的平均值 (算術平均值)。";s.Msg.MATH_ONLIST_TOOLTIP_MAX="返回陣列中的最大數字。";s.Msg.MATH_ONLIST_TOOLTIP_MEDIAN="返回陣列中數值的中位數。";s.Msg.MATH_ONLIST_TOOLTIP_MIN="返回陣列中的最小數字。";s.Msg.MATH_ONLIST_TOOLTIP_MODE="返回一個陣列中的最常見項目的陣列。";s.Msg.MATH_ONLIST_TOOLTIP_RANDOM="從陣列中返回一個隨機的項目。";s.Msg.MATH_ONLIST_TOOLTIP_STD_DEV="返回陣列中數字的標準差。";s.Msg.MATH_ONLIST_TOOLTIP_SUM="返回陣列中的所有數字的總和。";s.Msg.MATH_POWER_SYMBOL="^";s.Msg.MATH_RANDOM_FLOAT_HELPURL="https://zh.wikipedia.org/wiki/隨機數生成器";s.Msg.MATH_RANDOM_FLOAT_TITLE_RANDOM="取隨機分數";s.Msg.MATH_RANDOM_FLOAT_TOOLTIP="返回介於 (包含) 0.0 到 1.0 之間的隨機數。";s.Msg.MATH_RANDOM_INT_HELPURL="https://zh.wikipedia.org/wiki/隨機數生成器";s.Msg.MATH_RANDOM_INT_TITLE="取隨機整數介於 (低) %1 到 %2";s.Msg.MATH_RANDOM_INT_TOOLTIP="回傳限制的數字區間內的隨機數字";s.Msg.MATH_ROUND_HELPURL="https://zh.wikipedia.org/wiki/數值簡化";s.Msg.MATH_ROUND_OPERATOR_ROUND="四捨五入";s.Msg.MATH_ROUND_OPERATOR_ROUNDDOWN="無條件捨去";s.Msg.MATH_ROUND_OPERATOR_ROUNDUP="無條件進位";s.Msg.MATH_ROUND_TOOLTIP="將數字向上或向下舍入。";s.Msg.MATH_SINGLE_HELPURL="https://zh.wikipedia.org/wiki/平方根";s.Msg.MATH_SINGLE_OP_ABSOLUTE="絕對值";s.Msg.MATH_SINGLE_OP_ROOT="開根號";s.Msg.MATH_SINGLE_TOOLTIP_ABS="返回指定數字的絕對值。";s.Msg.MATH_SINGLE_TOOLTIP_EXP="返回指定數字指數的 e";s.Msg.MATH_SINGLE_TOOLTIP_LN="返回指定數字的自然對數。";s.Msg.MATH_SINGLE_TOOLTIP_LOG10="返回指定數字的對數。";s.Msg.MATH_SINGLE_TOOLTIP_NEG="返回指定數字的 negation。";s.Msg.MATH_SINGLE_TOOLTIP_POW10="返回指定數字指數的10的冪次。";s.Msg.MATH_SINGLE_TOOLTIP_ROOT="返回指定數字的平方根。";s.Msg.MATH_SUBTRACTION_SYMBOL="-";s.Msg.MATH_TRIG_ACOS="acos";s.Msg.MATH_TRIG_ASIN="asin";s.Msg.MATH_TRIG_ATAN="atan";s.Msg.MATH_TRIG_COS="cos";s.Msg.MATH_TRIG_HELPURL="https://zh.wikipedia.org/wiki/三角函數";s.Msg.MATH_TRIG_SIN="sin";s.Msg.MATH_TRIG_TAN="tan";s.Msg.MATH_TRIG_TOOLTIP_ACOS="返回指定角度的反餘弦值(非弧度)。";s.Msg.MATH_TRIG_TOOLTIP_ASIN="返回指定角度的反正弦值(非弧度)。";s.Msg.MATH_TRIG_TOOLTIP_ATAN="返回指定角度的反正切值。";s.Msg.MATH_TRIG_TOOLTIP_COS="返回指定角度的餘弦值(非弧度)。";s.Msg.MATH_TRIG_TOOLTIP_SIN="返回指定角度的正弦值(非弧度)。";s.Msg.MATH_TRIG_TOOLTIP_TAN="返回指定角度的正切值(非弧度)。";s.Msg.MATH_KEEP_DECIMAL_HELPURL="";s.Msg.MATH_KEEP_DECIMAL_TOOLTIP="返回指定值保留小數點的結果";s.Msg.MATH_KEEP_DECIMAL_MESSAGE0="%1 保留 %2 位小數";s.Msg.MATH_DIVISION_CONSULT_TITLE="%1 ÷ %2 商的整數部分";s.Msg.MATH_DIVISION_CONSULT_TOOLTIP="返回兩數商的整數部分";s.Msg.labplus_mapping_MESSAGE0="映射%1 從%2 , %3到%4 , %5";s.Msg.labplus_mapping_TOOLTIP="將0~100中的10映射到0~200中並返回映射值";s.Msg.labplus_mapping_HELPURL="";s.Msg.ME="我";s.Msg.MOTION_GETACC="獲取";s.Msg.MOTION_GETACC1="方向的加速度";s.Msg.MOTION_GETRAWDATA="獲得數據";s.Msg.MOTION_GETYPR="獲取";s.Msg.MOTION_GETYPR1="的旋轉度";s.Msg.MOTION_ONDIRECTION="正在向";s.Msg.MOTION_ONDIRECTION1="偏轉";s.Msg.MOTION_ONDIRECTION_BACK="後";s.Msg.MOTION_ONDIRECTION_CLOCKWISE="順時針";s.Msg.MOTION_ONDIRECTION_COUNTERCLOCKWISE="逆時針";s.Msg.MOTION_ONDIRECTION_FRONT="前";s.Msg.MOTION_ONDIRECTION_LEFT="左";s.Msg.MOTION_ONDIRECTION_RIGHT="右";s.Msg.MOTION_ONSHAKE="正在搖晃";s.Msg.MOTION_SETUP="運動初始化";s.Msg.MOTION_TRENDENCY="獲得運動趨勢";s.Msg.MOTOR_MOVE_DIRECTION1="順時針";s.Msg.MOTOR_MOVE_DIRECTION2="逆時針";s.Msg.MOTOR_MOVE_MOTOR="設定馬達";s.Msg.MOTOR_MOVE_MSG="和";s.Msg.MOTOR_SETUP="馬達驅動車設定";s.Msg.MOTOR_SPEED="速度";s.Msg.MOTOR_STOP="設定馬達停止";s.Msg.MUSIC_BEAT="拍";s.Msg.MUSIC_DURATION="持續";s.Msg.MUSIC_INSTRUMENT="設定樂器";s.Msg.MUSIC_INSTRUMENT_ACCORION="手風琴";s.Msg.MUSIC_INSTRUMENT_BASS="貝斯";s.Msg.MUSIC_INSTRUMENT_CELLO="大提琴";s.Msg.MUSIC_INSTRUMENT_DRAWBARORGAN="爵士風琴";s.Msg.MUSIC_INSTRUMENT_DRUM="太鼓";s.Msg.MUSIC_INSTRUMENT_EGUITAR="電吉他";s.Msg.MUSIC_INSTRUMENT_EPIANO="電子琴";s.Msg.MUSIC_INSTRUMENT_FLUTE="長笛";s.Msg.MUSIC_INSTRUMENT_GPIANO="經典鋼琴";s.Msg.MUSIC_INSTRUMENT_GUITAR="吉他";s.Msg.MUSIC_INSTRUMENT_MUSICBOX="八音盒";s.Msg.MUSIC_INSTRUMENT_PICCOLO="短笛";s.Msg.MUSIC_INSTRUMENT_SAX="薩克斯";s.Msg.MUSIC_INSTRUMENT_SITAR="西塔琴";s.Msg.MUSIC_INSTRUMENT_TRUMPET="喇叭";s.Msg.MUSIC_INSTRUMENT_VIOLA="中提琴";s.Msg.MUSIC_INSTRUMENT_VIOLIN="小提琴";s.Msg.MUSIC_INSTRUMENT_WHISTLE="汽笛";s.Msg.MUSIC_INSTRUMENT_WOODBLOCK="木魚";s.Msg.MUSIC_INSTRUMENT_XYLOPHONE="木琴";s.Msg.MUSIC_MP3_CURRENTVOLUME="獲得當前音量";s.Msg.MUSIC_MP3_PLAYALL="播放陣列";s.Msg.MUSIC_MP3_PLAYALL_NAME="播放模式";s.Msg.MUSIC_MP3_PLAYMODE_LISTREPEAT="陣列循環";s.Msg.MUSIC_MP3_PLAYMODE_NORMAL="單次";s.Msg.MUSIC_MP3_PLAYMODE_REPEAT="單曲循環";s.Msg.MUSIC_MP3_PLAYONE="播放音樂文件";s.Msg.MUSIC_MP3_PLAYONE_NAME="音樂:";s.Msg.MUSIC_MP3_PLAYONE_NORMAL="單次";s.Msg.MUSIC_MP3_PLAYONE_REPEAT="循環";s.Msg.MUSIC_MP3_PLAYSETTING="播放器設定:";s.Msg.MUSIC_MP3_PLAYSETTING_NEXTSONG="下壹曲";s.Msg.MUSIC_MP3_PLAYSETTING_PAUSE="暫停";s.Msg.MUSIC_MP3_PLAYSETTING_PLAYALL="播放所有樂曲";s.Msg.MUSIC_MP3_PLAYSETTING_PRESONG="上壹曲";s.Msg.MUSIC_MP3_PLAYSETTING_RESUME="播放";s.Msg.MUSIC_MP3_PLAYSETTING_STOP="停止";s.Msg.MUSIC_MP3_PLAYSETTING_VOLDOWN="調小音量";s.Msg.MUSIC_MP3_PLAYSETTING_VOLUP="調大音量";s.Msg.MUSIC_MP3_PLAY_NORMAL="順序播放";s.Msg.MUSIC_MP3_PLAY_REPEAT="陣列循環";s.Msg.MUSIC_MP3_SETUP="MP3播放器初始化";s.Msg.MUSIC_MP3_SETUP_SETVOLUME="設定音量";s.Msg.MUSIC_MP3_SETUP_SETVOLUME_HIGH="高";s.Msg.MUSIC_MP3_SETUP_SETVOLUME_LOW="低";s.Msg.MUSIC_MP3_SETUP_SETVOLUME_MID="中";s.Msg.MUSIC_MP3_SETVOLUME="設定音量為";s.Msg.MUSIC_NOTE="音階";s.Msg.MUSIC_PLAY_NOTE="播放";s.Msg.MUSIC_PLAY_NOTE_TOOLTIP="right click this block and check the help page to see the corresponding music note.";s.Msg.MUSIC_REST="音符間隔";s.Msg.MUSIC_VOLUME="設定音量";s.Msg.MUSIC_VOL_MAX="最大";s.Msg.MUSIC_VOL_MIN="最小";s.Msg.Monday="周壹";s.Msg.Motion_Accelerate="加速度";s.Msg.Motion_Gyroscope="陀螺儀";s.Msg.NBIOT_ENABLE="啟用 NB-IoT 序列埠交互指令";s.Msg.NBIOT_HTTP_APIKEY="雲端事件API密匙";s.Msg.NBIOT_HTTP_CLOUD_GET="NB-IoT CocoCloud: Receive Data";s.Msg.NBIOT_HTTP_CONTENTTYPE="Content Type";s.Msg.NBIOT_HTTP_DATA="數據名稱";s.Msg.NBIOT_HTTP_IFTTT_APIKEY="IFTTT API Key";s.Msg.NBIOT_HTTP_IFTTT_EVENT="IFTTT項目名稱";s.Msg.NBIOT_HTTP_IFTTT_TITLE="NB-IoT 連接IFTTT:發送數據";s.Msg.NBIOT_HTTP_THINGSPEAK_APIKEY="事件API密匙";s.Msg.NBIOT_HTTP_THINGSPEAK_TITLE="NB-IoT 連接Thingspeak:發送數據";s.Msg.NBIOT_HTTP_TITLE="NB-IoT 連接CocoCloud:發送數據";s.Msg.NBIOT_IS_POWERON="NB-IoT 模組啓動成功";s.Msg.NBIOT_NETWORK_CONNECTED="網絡連接成功";s.Msg.NBIOT_NETWORK_IP="獲取 NB-IoT 模組 IP 地址";s.Msg.NBIOT_SETUP="NB-IoT 通訊初始化";s.Msg.NEW_INSTANCE="New instance...";s.Msg.NEW_INSTANCE_TITLE="New instance name:";s.Msg.NEW_VARIABLE="新變量...";s.Msg.NEW_VARIABLE_TITLE="新變量名稱:";s.Msg.NRFMODULE_GET_RECEIVED_DATA="獲取 nRF 模組收到的數據";s.Msg.NRFMODULE_RECEIVING_DATA_TEXT="nRF 模組開始接收數據";s.Msg.NRFMODULE_SEND_DATA_DATA_TEXT="數據內容:";s.Msg.NRFMODULE_SEND_DATA_TITLE="nRF 模組傳送數據";s.Msg.NRFMODULE_SETUP_CE_TEXT="CE 引腳連線:";s.Msg.NRFMODULE_SETUP_CSN_TEXT="CSN 引腳連線:";s.Msg.NRFMODULE_SETUP_SET_ADDRESS="設定通訊地址";s.Msg.NRFMODULE_SETUP_TITLE="nRF24L01 通訊模組初始化";s.Msg.OLCD_CENTER_POS="圓心座標";s.Msg.OLCD_SCALE="尺寸";s.Msg.OLCD_WT="字串換欄";s.Msg.OLCD_BW="邊框寬度";s.Msg.OLCD_SET_POS="設定座標";s.Msg.OLCD_CIRCLE="圓形";s.Msg.OLCD_CLEAR="清除";s.Msg.OLCD_COLOR="顔色";s.Msg.OLCD_COORDINATE="起始點座標";s.Msg.OLCD_DRAW="LCD 螢幕繪製";s.Msg.OLCD_FALSE="否";s.Msg.OLCD_VLINE="垂直";s.Msg.OLCD_HLINE="水平";s.Msg.OLCD_FULLCIRCLE="全圓";s.Msg.OLCD_CIRCLE="圓圈";s.Msg.OLCD_LENGTHIS="長度是";s.Msg.OLCD_FULL="實心";s.Msg.OLCD_STROKED="空心";s.Msg.OLCD_HEIGHT="高";s.Msg.OLCD_SCREEN="螢幕";s.Msg.OLCD_LINE="直線";s.Msg.OLCD_LINE_END="到";s.Msg.OLCD_LINE_START="從";s.Msg.OLCD_POINT="點";s.Msg.OLCD_POSITION="位置";s.Msg.OLCD_RADIUS="設定半徑為";s.Msg.OLCD_RECTANGLE="矩形";s.Msg.OLCD_SETROTATION="將 LCD 螢幕旋轉至";s.Msg.OLCD_SETROTATION_DEGREE="度";s.Msg.OLCD_SETUP="OLCD螢幕設定";s.Msg.OLCD_SIZE="尺寸";s.Msg.OLCD_STROKED="空心";s.Msg.OLCD_TEXT="文本";s.Msg.OLCD_TEXTNEWLINE="換欄";s.Msg.OLCD_TRIANGLE="三角形";s.Msg.OLCD_TRUE="是";s.Msg.OLCD_WIDTH="寬";s.Msg.ORDINAL_NUMBER_SUFFIX="";s.Msg.PROCEDURES_ALLOW_STATEMENTS="允許語句";s.Msg.PROCEDURES_BEFORE_PARAMS="與:";s.Msg.PROCEDURES_CALLNORETURN_HELPURL="https://zh.wikipedia.org/wiki/子程式";s.Msg.PROCEDURES_CALLNORETURN_TOOLTIP="執行使用者定義的函數 '%1'。";s.Msg.PROCEDURES_CALLRETURN_HELPURL="https://zh.wikipedia.org/wiki/子程式";s.Msg.PROCEDURES_CALLRETURN_TOOLTIP="執行使用者定義的函數 '%1' 並使用它的回傳值";s.Msg.PROCEDURES_CALL_BEFORE_PARAMS="與:";s.Msg.PROCEDURES_CREATE_DO="建立 '%1'";s.Msg.PROCEDURES_DEFNORETURN_COMMENT="描述此函數...";s.Msg.PROCEDURES_DEFNORETURN_DO="";s.Msg.PROCEDURES_DEFNORETURN_HELPURL="https://en.wikipedia.org/wiki/Procedure_%28computer_science%29";s.Msg.PROCEDURES_DEFNORETURN_PROCEDURE="func1";s.Msg.PROCEDURES_DEFNORETURN_TITLE="自定義函數";s.Msg.PROCEDURES_DEFNORETURN_TITLE_CALLBACK="回調函數";s.Msg.PROCEDURES_DEFNORETURN_TOOLTIP="創建一個無回傳值的函數。";s.Msg.PROCEDURES_DEFRETURN_HELPURL="https://en.wikipedia.org/wiki/Procedure_%28computer_science%29";s.Msg.PROCEDURES_DEFRETURN_RETURN="回傳";s.Msg.PROCEDURES_DEFRETURN_TOOLTIP="創建一個有回傳值的函數。";s.Msg.PROCEDURES_DEF_DUPLICATE_WARNING="警告: 此函數中有重複的參數。";s.Msg.PROCEDURES_HIGHLIGHT_DEF="反白顯示函式定義";s.Msg.PROCEDURES_IFRETURN_HELPURL="http://c2.com/cgi/wiki?GuardClause";s.Msg.PROCEDURES_IFRETURN_TOOLTIP="如果值為 真,則返回第二個值。";s.Msg.PROCEDURES_IFRETURN_WARNING="警告: 此積木僅可在定義函式時使用。";s.Msg.PROCEDURES_MUTATORARG_TITLE="變量:";s.Msg.PROCEDURES_MUTATORARG_TOOLTIP="添加函數輸入。";s.Msg.PROCEDURES_MUTATORCONTAINER_TITLE="參數";s.Msg.PROCEDURES_MUTATORCONTAINER_TOOLTIP="添加、刪除或重新排列此函數的輸入。";s.Msg.PULSESENSOR_GETBPM="讀取心率的值為";s.Msg.PULSESENSOR_HEARTBEAT_PRINT="在串口相機打印心率原始數據";s.Msg.PULSESENSOR_HEARTBEAT_WHEN="當心率跳動時";s.Msg.PULSESENSOR_HEARTBEAT_WHENNO="當心率未跳動時";s.Msg.PULSESENSOR_SETUP="心率傳感設定";s.Msg.PULSESENSOR_SETUP_1="設定感應器的接口為";s.Msg.READ_B="讀取藍";s.Msg.READ_G="讀取綠";s.Msg.READ_R="讀取紅";s.Msg.RED="紅";s.Msg.REDO="重試";s.Msg.REMOVE_COMMENT="移除註解";s.Msg.RENAME_INSTANCE="Rename instance...";s.Msg.RENAME_INSTANCE_TITLE="Rename all '%1' instances to:";s.Msg.RENAME_VARIABLE="重新命名變量...";s.Msg.RENAME_VARIABLE_TITLE='將所有 "%1" 變量重新命名為:';s.Msg.REQUEST_DATA_CLOUD="雲端數據";s.Msg.REQUEST_DATA_STRING="字串";s.Msg.RFID_READID="讀取卡片ID";s.Msg.RFID_SETUP="RFID初始化";s.Msg.ROBOT_SETMOVE_MOVEMENT="設定雙足的動作";s.Msg.ROBOT_SETMOVE_MOVEMENT_BACKYARD="向後退";s.Msg.ROBOT_SETMOVE_MOVEMENT_GOINGUP="上下蹲";s.Msg.ROBOT_SETMOVE_MOVEMENT_KICKLEFT="左踢腳";s.Msg.ROBOT_SETMOVE_MOVEMENT_KICKRIGHT="右踢腳";s.Msg.ROBOT_SETMOVE_MOVEMENT_MOONWALKLEFT="往左月球漫步";s.Msg.ROBOT_SETMOVE_MOVEMENT_MOONWALKRIGHT="往右月球漫步";s.Msg.ROBOT_SETMOVE_MOVEMENT_RUN="向前跑";s.Msg.ROBOT_SETMOVE_MOVEMENT_SWING="搖擺舞";s.Msg.ROBOT_SETMOVE_MOVEMENT_TURNLEFT="原地左轉";s.Msg.ROBOT_SETMOVE_MOVEMENT_TURNRIGHT="原地右轉";s.Msg.ROBOT_SETMOVE_MOVEMENT_WALK="向前走";s.Msg.ROBOT_SETMOVE_TEMPO="在速度為";s.Msg.ROBOT_SETUP="雙足行走機器人設定";s.Msg.ROBOT_SETUP_SETRLPIN="和左腳接口";s.Msg.ROBOT_SETUP_SETRRPIN="設定右腳接口";s.Msg.ROBOT_SETUP_SETYLPIN="和左膝接口";s.Msg.ROBOT_SETUP_SETYRPIN="設定右膝接口";s.Msg.RTC_DAY="日";s.Msg.RTC_GETDATE="獲取當前日期";s.Msg.RTC_GETTIME="獲取當前時間";s.Msg.RTC_GETWEEK="獲取當前周幾";s.Msg.RTC_setDATE="設定當前日期";s.Msg.RTC_setTIME="設定當前時間";s.Msg.RTC_setWEEK="設定當前爲周";s.Msg.RTC_WEI="爲";s.Msg.RTC_getDateTime="獲取時間(年,月,日,星期,時,分,秒)";s.Msg.RTC_HOUR="時";s.Msg.RTC_MINUTE="分";s.Msg.RTC_MONTH="月";s.Msg.RTC_SECOND="秒";s.Msg.RTC_SETDATE="日期";s.Msg.RTC_SETDATETIME="設定日期時間周幾";s.Msg.RTC_SETTIME="時鐘";s.Msg.RTC_SETUP="RTC初始化設定";s.Msg.RTC_SETWEEK="周幾";s.Msg.RTC_WEEK="周";s.Msg.RTC_YEAR="年";s.Msg.SONAR="超聲波";s.Msg.SONAR_READ_DIST="讀取距離從";s.Msg.SONAR_SETUP="設定";s.Msg.SONAR_SETUP_ECHOPIN="和 Echo";s.Msg.SONAR_SETUP_MAXDIST="設定最大距離";s.Msg.SONAR_SETUP_TRIGPIN="設定 Trig";s.Msg.Saturday="周六";s.Msg.Sunday="周日";s.Msg.DEEP_LEARING="深度学习机器";s.Msg.Emotion_recognition="情绪识别";s.Msg.Gesture_recognition="手势识别";s.Msg.Object_recognition="物体识别";s.Msg.guesswork_recognition="猜拳手勢識別";s.Msg.Posture_recognition="姿态识别";s.Msg.Course_people="慧眼识人";s.Msg.Voice_recognition="语音识别";s.Msg.TEXT_APPEND_APPENDTEXT="後加入字串";s.Msg.TEXT_APPEND_HELPURL="https://github.com/google/blockly/wiki/Text#text-modification";s.Msg.TEXT_APPEND_TO="在";s.Msg.TEXT_APPEND_TOOLTIP="將壹些字串追加到變量 '%1'。";s.Msg.TEXT_CHANGECASE_HELPURL="https://github.com/google/blockly/wiki/Text#adjusting-text-case";s.Msg.TEXT_CHANGECASE_OPERATOR_LOWERCASE="轉成 小寫";s.Msg.TEXT_CHANGECASE_OPERATOR_TITLECASE="轉成 首字母大寫";s.Msg.TEXT_CHANGECASE_OPERATOR_UPPERCASE="轉成 大寫";s.Msg.TEXT_CHANGECASE_TOOLTIP="使用不同的大小寫複製這段字串。";s.Msg.TEXT_CHARAT_FIRST="取首個字元";s.Msg.TEXT_CHARAT_FROM_END="取得 倒數第 # 個字元";s.Msg.TEXT_CHARAT_FROM_START="取得 字元 #";s.Msg.TEXT_CHARAT_HELPURL="https://github.com/google/blockly/wiki/Text#extracting-text";s.Msg.TEXT_CHARAT_INPUT_INTEXT="的字元在字串";s.Msg.TEXT_CHARAT_LAST="取最後一個字元";s.Msg.TEXT_CHARAT_RANDOM="取隨機一個字元";s.Msg.TEXT_CHARAT_TAIL="";s.Msg.TEXT_CHARAT_TOOLTIP="返回位於指定位置的字元。";s.Msg.TEXT_CREATE_JOIN_ITEM_TOOLTIP="將一個項目加入到字串中。";s.Msg.TEXT_CREATE_JOIN_TITLE_JOIN="加入";s.Msg.TEXT_CREATE_JOIN_TOOLTIP="添加、 刪除或重新排列各區塊來此重新配置這個字串積木。";s.Msg.TEXT_GET_SUBSTRING_END_FROM_END="到 倒數第 # 個字元";s.Msg.TEXT_GET_SUBSTRING_END_FROM_START="到 字元 #";s.Msg.TEXT_GET_SUBSTRING_END_LAST="到 最後一個字元";s.Msg.TEXT_GET_SUBSTRING_HELPURL="https://github.com/google/blockly/wiki/Text#extracting-a-region-of-text";s.Msg.TEXT_GET_SUBSTRING_INPUT_IN_TEXT="自字串";s.Msg.TEXT_GET_SUBSTRING_START_FIRST="取得段落字串 自 首個字元";s.Msg.TEXT_GET_SUBSTRING_START_FROM_END="取得段落字串自 #";s.Msg.TEXT_GET_SUBSTRING_START_FROM_START="取得段落字串自 #";s.Msg.TEXT_GET_SUBSTRING_TAIL="";s.Msg.TEXT_GET_SUBSTRING_TOOLTIP="返回指定的部分字串。";s.Msg.TEXT_INDEXOF_HELPURL="https://github.com/google/blockly/wiki/Text#finding-text";s.Msg.TEXT_INDEXOF_INPUT_INTEXT="在字串";s.Msg.TEXT_INDEXOF_OPERATOR_FIRST="尋找 首個 出現的字串";s.Msg.TEXT_INDEXOF_OPERATOR_LAST="尋找 最後一個 出現的字串";s.Msg.TEXT_INDEXOF_TAIL="";s.Msg.TEXT_INDEXOF_TOOLTIP="返回在第二個字串中的首個/最後一個匹配項目的索引值。如果未找到則返回 0。";s.Msg.TEXT_ISEMPTY_HELPURL="https://github.com/google/blockly/wiki/Text#checking-for-empty-text";s.Msg.TEXT_ISEMPTY_TITLE="%1 為空";s.Msg.TEXT_ISEMPTY_TOOLTIP="如果提供的字串為空,則返回 真。";s.Msg.TEXT_JOIN_HELPURL="https://github.com/google/blockly/wiki/Text#text-creation";s.Msg.TEXT_JOIN_TITLE_CREATEWITH="建立字串使用";s.Msg.TEXT_JOIN_TOOLTIP="透過串起任意數量的項目來建立壹段字串。";s.Msg.TEXT_LENGTH_HELPURL="https://github.com/google/blockly/wiki/Text#text-modification";s.Msg.TEXT_LENGTH_TITLE="長度 %1";s.Msg.TEXT_LENGTH_TOOLTIP="返回這串字串的字元數(含空格) 。";s.Msg.TEXT_PRINT_HELPURL="https://github.com/google/blockly/wiki/Text#printing-text";s.Msg.TEXT_PRINT_TITLE="序列埠印出 %1";s.Msg.TEXT_PRINT_TOOLTIP="序列埠印出指定的字串、 數字或其他值。";s.Msg.TEXT_PROMPT_HELPURL="https://github.com/google/blockly/wiki/Text#getting-input-from-the-user";s.Msg.TEXT_PROMPT_TOOLTIP_NUMBER="輸入數字";s.Msg.TEXT_PROMPT_TOOLTIP_TEXT="輸入字串";s.Msg.TEXT_PROMPT_TYPE_NUMBER="輸入 數字 並顯示提示訊息";s.Msg.TEXT_PROMPT_TYPE_TEXT="輸入 字串 並顯示提示訊息";s.Msg.TEXT_TEXT_HELPURL="https://zh.wikipedia.org/wiki/字串";s.Msg.TEXT_TEXT_TOOLTIP="字元、 單詞或壹欄字串。";s.Msg.TEXT_TRIM_HELPURL="https://github.com/google/blockly/wiki/Text#trimming-removing-spaces";s.Msg.TEXT_TRIM_OPERATOR_BOTH="消除兩側空格";s.Msg.TEXT_TRIM_OPERATOR_LEFT="消除左側空格";s.Msg.TEXT_TRIM_OPERATOR_RIGHT="消除右側空格";s.Msg.TEXT_TRIM_TOOLTIP="複製這段字串的同時刪除兩端多餘的空格。";s.Msg.THINGSPEAK_CREATE_WITH_CONTAINER_TITLE_ADD="Field";s.Msg.THINGSPEAK_CREATE_WITH_INPUT_WITH="FIELD";s.Msg.THINGSPEAK_CREATE_WITH_ITEM_TITLE="value";s.Msg.TODAY="今天";s.Msg.TOUCH_AT="觸摸傳感接口 ";s.Msg.TOUCH_CASE="按鍵";s.Msg.TOUCH_DEFAULT="默認";s.Msg.TOUCH_DO="執行";s.Msg.TOUCH_LOOSE="儅鬆開時";s.Msg.TOUCH_SETUP="觸摸感應設定";s.Msg.TOUCH_SWITCH="⌘ 當觸碰傳感接口";s.Msg.TOUCH_THEN_LOOSE_SWITCH="⌘ 儅鬆開被觸碰的接口";s.Msg.Thursday="周四";s.Msg.Tuesday="周二";s.Msg.UNDO="還原";s.Msg.VARIABLES_DEFAULT_NAME="item";s.Msg.VARIABLES_GET_CREATE_SET="建立 '設定 %1'";s.Msg.VARIABLES_GET_HELPURL="https://github.com/google/blockly/wiki/Variables#get";s.Msg.VARIABLES_GET_TOOLTIP="返回此變量的值。";s.Msg.VARIABLES_SET="設定 %1 為 %2";s.Msg.VARIABLES_SET_CREATE_GET="建立 '取得 %1'";s.Msg.VARIABLES_SET_HELPURL="https://github.com/google/blockly/wiki/Variables#set";s.Msg.VARIABLES_SET_TOOLTIP="設定此變量,好和輸入值相等。";s.Msg.WATERTEMP_GET_TEMP="獲取水溫數據 (ºC)";s.Msg.WATERTEMP_SETUP_ATTACHED_PIN="數字引腳設定:";s.Msg.WATERTEMP_SETUP_BLOCKNAME="水溫感應器";s.Msg.WATERTEMP_SETUP_SENSORTYPE="感應器型號:";s.Msg.WATERTEMP_SETUP_SETUP="初始化";s.Msg.WEBPAGE_BUTTONCTRL_SETPATH=" set path to:";s.Msg.WEBPAGE_BUTTONCTRL_TEXT_BOTTOM="設定底部按鈕為:";s.Msg.WEBPAGE_BUTTONCTRL_TEXT_CENTER="設定中間按鈕為:";s.Msg.WEBPAGE_BUTTONCTRL_TEXT_LEFT="設定左側按鈕為:";s.Msg.WEBPAGE_BUTTONCTRL_TEXT_RIGHT="設定右側按鈕為:";s.Msg.WEBPAGE_BUTTONCTRL_TEXT_TOP="設定頂部按鈕為:";s.Msg.WEBPAGE_BUTTONCTRL_TITLE="網頁控制面板: 按鍵控制器";s.Msg.WEBPAGE_BUTTON_NAME="按鈕名稱";s.Msg.WEBPAGE_BUTTON_ROUTER="設定請求路徑為:";s.Msg.WEBPAGE_BUTTON_TITLE="網頁控制面板: 按鈕";s.Msg.WEBPAGE_COLORPICKER_PATH="設定請求路徑為:";s.Msg.WEBPAGE_COLORPICKER_SUBTITLE="*註意: 傳輸的顏數據為 RGB 顏色制式";s.Msg.WEBPAGE_COLORPICKER_TITLE="網頁控制面板: 取色器控制元件";s.Msg.WEBPAGE_LABLE="標籤名稱";s.Msg.WEBPAGE_LABLE_TITLE="網頁控制面板: 字串";s.Msg.WIFICLIENT_HTTP_GET_DATA="獲取數據並存到";s.Msg.WIFICLIENT_HTTP_GET_URL="發送GET請求到";s.Msg.WIFICLIENT_HTTP_POST_DATA="數據";s.Msg.WIFICLIENT_HTTP_POST_TYPE="類型爲";s.Msg.WIFICLIENT_HTTP_POST_URL="發送POST請求到";s.Msg.WIFICLIENT_HTTP_POST_VAR="創建陣列";s.Msg.WIFICLIENT_HTTP_PUT_DATA="要發送內容";s.Msg.WIFICLIENT_HTTP_PUT_TYPE="類型爲";s.Msg.WIFICLIENT_HTTP_PUT_URL="發送PUT請求到";s.Msg.WIFICLIENT_HTTP_RESPONSE="獲得HTTP響應";s.Msg.WIFICLIENT_HTTP_SETUP="客戶端初始化";s.Msg.WIFICLIENT_RECEIVE_GET="從";s.Msg.WIFICLIENT_RECEIVE_GET_LINE2="獲取第";s.Msg.WIFICLIENT_RECEIVE_GET_LINE3="位的數據,類型爲";s.Msg.WIFIEASYMODE_COCOCLOUD_END="值";s.Msg.WIFIEASYMODE_COCOCLOUD_GETDATA="獲取數據並將其存到";s.Msg.WIFIEASYMODE_COCOCLOUD_KEY="從";s.Msg.WIFIEASYMODE_COCOCLOUD_KEY1="獲取雲端項目中";s.Msg.WIFIEASYMODE_COCOCLOUD_KEY2="屬性名爲";s.Msg.WIFIEASYMODE_COCOCLOUD_SENDDATA="發送數據:";s.Msg.WIFIEASYMODE_COCOCLOUD_SETVAR="變量";s.Msg.WIFIEASYMODE_COCOCLOUD_SETVAR_FROM="";s.Msg.WIFIEASYMODE_COCOCLOUD_TYPE="的";s.Msg.WIFIEASYMODE_COCOClOUD_DATA_NAME="數據名:";s.Msg.WIFIEASYMODE_COCOClOUD_EVENT="Cloud Event API Key :";s.Msg.WIFIEASYMODE_IFTTT_EVENT="IFTTT項目名稱:";s.Msg.WIFIEASYMODE_IFTTT_FETCH="獲取數據";s.Msg.WIFIEASYMODE_IFTTT_KEY="IFTTT Key:";s.Msg.WIFIEASYMODE_IFTTT_POST="發送數據";s.Msg.WIFIEASYMODE_IFTTT_SENDDATA="發送數據:";s.Msg.WIFIEASYMODE_IFTTT_TYPE="Webhook類型:";s.Msg.WIFIEASYMODE_NETWORK_PW="密碼:";s.Msg.WIFIEASYMODE_NETWORK_SSID="SSID:";s.Msg.WIFIEASYMODE_NETWORK_TITLE="連接Wi-Fi";s.Msg.WIFIEASYMODE_THINGSPEAK_APIKEY="Channel API Key:";s.Msg.WIFIEASYMODE_THINGSPEAK_SENDDATA="發送數據:";s.Msg.WIFIEASYMODE_TRANSFER_RECEIVE="從主機板獲取數據";s.Msg.WIFIEASYMODE_TRANSFER_RECEIVE_GET="從";s.Msg.WIFIEASYMODE_TRANSFER_RECEIVE_GET_LINE2="獲取第";s.Msg.WIFIEASYMODE_TRANSFER_RECEIVE_GET_LINE3="位的數據,並設定類型為";s.Msg.WIFIEASYMODE_TRANSFER_RECEIVE_GET_LINE4="";s.Msg.WIFIEASYMODE_TRANSFER_RECEIVE_LINE2="並存到";s.Msg.WIFIEASYMODE_TRANSFER_RECEIVE_LINE3="長度爲 ";s.Msg.WIFIEASYMODE_TRANSFER_SEND="創建陣列";s.Msg.WIFIEASYMODE_TRANSFER_SEND_LINE2="傳輸數據到主機板上";s.Msg.WIFIEASYMODE_TRANSFER_SEND_VALUE="Data";s.Msg.WIFINETWORK_AP_PW="密碼:";s.Msg.WIFINETWORK_AP_SETUP="建立Wi-Fi熱點";s.Msg.WIFINETWORK_AP_SSID="SSID:";s.Msg.WIFINETWORK_CONNECT="連接Wi-Fi";s.Msg.WIFINETWORK_CONNECT_PW="密碼:";s.Msg.WIFINETWORK_CONNECT_SSID="SSID:";s.Msg.WIFINETWORK_GETGATEWAYIP="獲取網關IP";s.Msg.WIFINETWORK_GETLOCALIP="獲取本地IP";s.Msg.WIFINETWORK_GETMACADDR="獲取MAC地址";s.Msg.WIFINETWORK_GETSTATIONNUM="獲取連接設備數量";s.Msg.WIFINETWORK_ISCONNECTED="是否連接成功";s.Msg.WIFINETWORK_PW_WARN="密碼設定應該超過8位";s.Msg.WIFISERVER_HANDLECLIENT="handleclient";s.Msg.WIFISERVER_LIST="創建陣列";s.Msg.WIFISERVER_RECEIVE="服務器接收數據";s.Msg.WIFISERVER_RECEIVE_GET="從";s.Msg.WIFISERVER_RECEIVE_GET_INT="數字";s.Msg.WIFISERVER_RECEIVE_GET_LINE2="獲取第";s.Msg.WIFISERVER_RECEIVE_GET_LINE3="位的值,類型爲";s.Msg.WIFISERVER_RECEIVE_GET_STRING="字串";s.Msg.WIFISERVER_RECEIVE_LENGTH="長度爲";s.Msg.WIFISERVER_RECEIVE_TO="並存儲到";s.Msg.WIFISERVER_SEND="服務器發送數據";s.Msg.WIFISERVER_SERVERSEND="服務器 推送 ";s.Msg.WIFISERVER_SERVERSEND_CODE="HTTP 狀態碼";s.Msg.WIFISERVER_SERVERSEND_CONTENT="內容";s.Msg.WIFISERVER_SERVERSEND_TYPE="類型";s.Msg.WIFISERVER_SETROOTPAGE="設定主頁";s.Msg.WIFISERVER_SETROUTER="服務器路由";s.Msg.WIFISERVER_SETROUTER_ONNOTFOUND="設定服務器路由當不存在URL時, 處理";s.Msg.WIFISERVER_SETROUTER_SET="設定路由";s.Msg.WIFISERVER_SETROUTER_WITH="響應";s.Msg.WIFISERVER_SETUP="服務器初始化";s.Msg.WIFISERVER_WAIT_CONNECTION="等待連接";s.Msg.WIFIWEBSERVICES_IFTTT="Web服務 IFTTT";s.Msg.WIFIWEBSERVICES_IFTTT_SET_EVENT="Event";s.Msg.WIFIWEBSERVICES_IFTTT_SET_KEY="Api-Key ";s.Msg.WIFIWEBSERVICES_IFTTT_SET_KEY1="Key1";s.Msg.WIFIWEBSERVICES_IFTTT_SET_KEY2="Key2";s.Msg.WIFIWEBSERVICES_IFTTT_SET_KEY3="Key3";s.Msg.WIFIWEBSERVICES_IFTTT_SET_VALUE1="Value1";s.Msg.WIFIWEBSERVICES_IFTTT_SET_VALUE2="Value2";s.Msg.WIFIWEBSERVICES_IFTTT_SET_VALUE3="Value3";s.Msg.WIFIWEBSERVICES_THINKSPEAK="Web服務 Thinkspeak";s.Msg.WIFIWEBSERVICES_THINKSPEAK_SET_FIELD1="Field";s.Msg.WIFIWEBSERVICES_THINKSPEAK_SET_KEY="Api-key";s.Msg.WIFIWEBSERVICES_THINKSPEAK_SET_VALUE="Value";s.Msg.WIFI_RECEIVEMSG="接收數據至";s.Msg.WIFI_RECEIVEMSG_ISSUCCESS="接收數據成功";s.Msg.WIFI_RECEIVEMSG_LENGTH=", 數據長度 ";s.Msg.WIFI_SENDMSG="發送數據 ";s.Msg.WIFI_SENDMSG_LENGTH=", 數據長度 ";s.Msg.WIFI_SETUP="輸出傳輸初始化";s.Msg.Wednesday="周三";s.Msg.PROCEDURES_DEFRETURN_TITLE=s.Msg.PROCEDURES_DEFNORETURN_TITLE;s.Msg.CONTROLS_IF_IF_TITLE_IF=s.Msg.CONTROLS_IF_MSG_IF;s.Msg.CONTROLS_WHILEUNTIL_INPUT_DO=s.Msg.CONTROLS_REPEAT_INPUT_DO;s.Msg.CONTROLS_IF_MSG_THEN=s.Msg.CONTROLS_REPEAT_INPUT_DO;s.Msg.CONTROLS_IF_ELSE_TITLE_ELSE=s.Msg.CONTROLS_IF_MSG_ELSE;s.Msg.PROCEDURES_DEFRETURN_PROCEDURE=s.Msg.PROCEDURES_DEFNORETURN_PROCEDURE;s.Msg.LISTS_GET_SUBLIST_INPUT_IN_LIST=s.Msg.LISTS_INLIST;s.Msg.LISTS_GET_INDEX_INPUT_IN_LIST=s.Msg.LISTS_INLIST;s.Msg.MATH_CHANGE_TITLE_ITEM=s.Msg.VARIABLES_DEFAULT_NAME;s.Msg.PROCEDURES_DEFRETURN_DO=s.Msg.PROCEDURES_DEFNORETURN_DO;s.Msg.CONTROLS_IF_ELSEIF_TITLE_ELSEIF=s.Msg.CONTROLS_IF_MSG_ELSEIF;s.Msg.LISTS_GET_INDEX_HELPURL=s.Msg.LISTS_INDEX_OF_HELPURL;s.Msg.CONTROLS_FOREACH_INPUT_DO=s.Msg.CONTROLS_REPEAT_INPUT_DO;s.Msg.LISTS_SET_INDEX_INPUT_IN_LIST=s.Msg.LISTS_INLIST;s.Msg.CONTROLS_FOR_INPUT_DO=s.Msg.CONTROLS_REPEAT_INPUT_DO;s.Msg.LISTS_CREATE_WITH_ITEM_TITLE=s.Msg.VARIABLES_DEFAULT_NAME;s.Msg.TEXT_APPEND_VARIABLE=s.Msg.VARIABLES_DEFAULT_NAME;s.Msg.TEXT_CREATE_JOIN_ITEM_TITLE_ITEM=s.Msg.VARIABLES_DEFAULT_NAME;s.Msg.LISTS_INDEX_OF_INPUT_IN_LIST=s.Msg.LISTS_INLIST;s.Msg.PROCEDURES_DEFRETURN_COMMENT=s.Msg.PROCEDURES_DEFNORETURN_COMMENT;s.Msg.ADD_COMMENT="加入註解";s.Msg.AIYBOARD_AIY_BOARD="AIY Board";s.Msg.AIYBOARD_BUTTON_FROM="from";s.Msg.AIYBOARD_BUTTON_WHEN="when button";s.Msg.AIYBOARD_FROM="from aiy.board";s.Msg.AIYBOARD_IMPORT="import";s.Msg.AIYBOARD_LED_STATE="get LED state of";s.Msg.AIYBOARD_LED_STATUS="get LED status of";s.Msg.CAMERA_CAMERA="camera";s.Msg.CAMERA_DO="Do";s.Msg.CAMERA_FPS="fps";s.Msg.CAMERA_FRAME_RATE="Frame Rete:";s.Msg.CAMERA_IMPORT="import piCamera";s.Msg.CAMERA_RESOLUTION="Resolution";s.Msg.CAMERA_SENSOR_MODE="Sensor Mode:";s.Msg.CAMERA_SET_BOUNDING="Set bounding box:";s.Msg.CAMERA_USE_AS="Use PiCamera as";s.Msg.CHANGE_VALUE_TITLE="修改值:";s.Msg.CLEAN_UP="清理積木";s.Msg.COLLAPSE_ALL="收合積木";s.Msg.COLLAPSE_BLOCK="收合積木";s.Msg.COLOUR_BLEND_COLOUR1="顏色 1";s.Msg.COLOUR_BLEND_COLOUR2="顏色 2";s.Msg.COLOUR_BLEND_HELPURL="http://meyerweb.com/eric/tools/color-blend/";s.Msg.COLOUR_BLEND_RATIO="比例";s.Msg.COLOUR_BLEND_TITLE="混合";s.Msg.COLOUR_BLEND_TOOLTIP="透過一個比率 (0.0-1.0)來混合兩種顏色。";s.Msg.COLOUR_PICKER_HELPURL="https://zh.wikipedia.org/wiki/顏色";s.Msg.COLOUR_PICKER_TOOLTIP="從調色板中選擇壹種顏色。";s.Msg.COLOUR_RANDOM_HELPURL="http://randomcolour.com";s.Msg.COLOUR_RANDOM_TITLE="隨機顏色";s.Msg.COLOUR_RANDOM_TOOLTIP="隨機選擇壹種顏色。";s.Msg.COLOUR_RGB_BLUE="藍";s.Msg.COLOUR_RGB_GREEN="綠";s.Msg.COLOUR_RGB_HELPURL="http://www.december.com/html/spec/colorper.html";s.Msg.COLOUR_RGB_RED="紅";s.Msg.COLOUR_RGB_TITLE="顏色";s.Msg.COLOUR_RGB_TOOLTIP="透過指定紅、綠、 藍色的值來建立壹種顏色。所有的值必須介於 0 和 100 之間。";s.Msg.CONTROLS_FLOW_STATEMENTS_HELPURL="https://github.com/google/blockly/wiki/Loops#loop-termination-blocks";s.Msg.CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK="停止 迴圈";s.Msg.CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE="繼續下一個 迴圈";s.Msg.CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK="離開當前的 迴圈";s.Msg.CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE="跳過這個迴圈的其餘步驟,並繼續下壹次的迴圈運算。";s.Msg.CONTROLS_FLOW_STATEMENTS_WARNING="警告: 此積木僅可用於迴圈內。";s.Msg.CONTROLS_FOREACH_HELPURL="https://github.com/google/blockly/wiki/Loops#for-each";s.Msg.CONTROLS_FOREACH_TITLE="在陣列 %2 中以 %1 遍歷每個項目";s.Msg.CONTROLS_FOREACH_TOOLTIP="遍歷每個陣列中的項目,將變量 '%1' 設定到該項目中,然後執行某些語句";s.Msg.CONTROLS_FOR_HELPURL="https://github.com/google/blockly/wiki/Loops#count-with";s.Msg.CONTROLS_FOR_TITLE="使用 %1 從範圍 %2 到 %3 每隔 %4";s.Msg.CONTROLS_FOR_TOOLTIP='從起始數到結尾數中取出變量 "%1" 的值,按指定的時間間隔,執行指定的積木。';s.Msg.CONTROLS_IF_ELSEIF_TOOLTIP="將條件添加到'如果'積木。";s.Msg.CONTROLS_IF_ELSE_TOOLTIP="加入一個最終,所有條件下都都執行的區塊到'如果'積木中";s.Msg.CONTROLS_IF_HELPURL="https://github.com/google/blockly/wiki/IfElse";s.Msg.CONTROLS_IF_IF_TOOLTIP="添加、 刪除或重新排列各區塊來此重新配置這個'如果'積木。";s.Msg.CONTROLS_IF_MSG_ELSE="否則";s.Msg.CONTROLS_IF_MSG_ELSEIF="否則如果";s.Msg.CONTROLS_IF_MSG_IF="如果";s.Msg.CONTROLS_IF_TOOLTIP_1="當值為真時,執行壹些語句";s.Msg.CONTROLS_IF_TOOLTIP_2="當值為真時,執行首個語句,否則則執行第二個語句";s.Msg.CONTROLS_IF_TOOLTIP_3="如果首個值為真,則執行首個語句。否則當第二個值為真時,則執行第二個語句";s.Msg.CONTROLS_IF_TOOLTIP_4="如果首個值為真,則執行首個語句。否則當第二個值為真時,則執行第二個語句。如果前幾個敘述都不為真,則執行最後一個語句";s.Msg.CONTROLS_REPEAT_HELPURL="https://zh.wikipedia.org/wiki/For迴圈";s.Msg.CONTROLS_REPEAT_INPUT_DO="執行";s.Msg.CONTROLS_REPEAT_TITLE="重複 %1 次";s.Msg.CONTROLS_REPEAT_TOOLTIP="多次執行壹些語句";s.Msg.CONTROLS_WHILEUNTIL_HELPURL="https://github.com/google/blockly/wiki/Loops#repeat";s.Msg.CONTROLS_WHILEUNTIL_OPERATOR_UNTIL="重複 直到";s.Msg.CONTROLS_WHILEUNTIL_OPERATOR_WHILE="重複 當";s.Msg.CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL="當值為否時,執行壹些語句";s.Msg.CONTROLS_WHILEUNTIL_TOOLTIP_WHILE="當值為真時,執行壹些語句";s.Msg.DELETE_ALL_BLOCKS="刪除共 %1 塊積木?";s.Msg.DELETE_BLOCK="刪除積木";s.Msg.DELETE_VARIABLE="刪除%1變量";s.Msg.DELETE_VARIABLE_CONFIRMATION="刪除%1使用的%2變量?";s.Msg.DELETE_X_BLOCKS="刪除 %1 塊積木";s.Msg.DICTS_CREATE_EMPTY_TITLE="empty dictionary";s.Msg.DICTS_CREATE_WITH_CONTAINER_TITLE_ADD="Create Dictionary";s.Msg.DICTS_CREATE_WITH_CONTAINER_TOOLTIP="";s.Msg.DICTS_CREATE_WITH_INPUT_WITH="create dict with";s.Msg.DICTS_CREATE_WITH_ITEM_KEY="key";s.Msg.DICTS_CREATE_WITH_ITEM_MAPPING=":";s.Msg.DICTS_CREATE_WITH_ITEM_TITLE="key/value";s.Msg.DICTS_CREATE_WITH_ITEM_TOOLTIP="";s.Msg.DICTS_CREATE_WITH_TOOLTIP="";s.Msg.DICT_GET="get key";s.Msg.DICT_GET_TO="of";s.Msg.DISABLE_BLOCK="停用積木";s.Msg.DUPLICATE_BLOCK="複製";s.Msg.ENABLE_BLOCK="啟用積木";s.Msg.EXPAND_ALL="展開積木";s.Msg.EXPAND_BLOCK="展開積木";s.Msg.EXTERNAL_INPUTS="多欄輸入";s.Msg.HELP="說明";s.Msg.INLINE_INPUTS="單欄輸入";s.Msg.LISTS_APPEND="append item";s.Msg.LISTS_APPEND_HELPURL="http://google.com";s.Msg.LISTS_APPEND_TO="to list";s.Msg.LISTS_APPEND_TOOLTIP="Append an element to a list";s.Msg.LISTS_CREATE_EMPTY_HELPURL="https://github.com/google/blockly/wiki/Lists#create-empty-list";s.Msg.LISTS_CREATE_EMPTY_TITLE="建立空陣列";s.Msg.LISTS_CREATE_EMPTY_TOOLTIP="返回一個長度為 0 的陣列,不包含任何數據記錄";s.Msg.LISTS_CREATE_WITH_CONTAINER_TITLE_ADD="陣列";s.Msg.LISTS_CREATE_WITH_CONTAINER_TOOLTIP="添加、 刪除或重新排列各區塊來此重新配置這個 陣列 積木。";s.Msg.LISTS_CREATE_WITH_HELPURL="https://github.com/google/blockly/wiki/Lists#create-list-with";s.Msg.LISTS_CREATE_WITH_INPUT_WITH="使用這些值建立陣列";s.Msg.LISTS_CREATE_WITH_ITEM_TOOLTIP="將一個項目加入到陣列中。";s.Msg.LISTS_CREATE_WITH_TOOLTIP="建立一個具備任意數量項目的陣列。";s.Msg.LISTS_GET_INDEX_FIRST="首個筆";s.Msg.LISTS_GET_INDEX_FROM_END="倒數第#筆";s.Msg.LISTS_GET_INDEX_FROM_START="#";s.Msg.LISTS_GET_INDEX_GET="取值";s.Msg.LISTS_GET_INDEX_GET_REMOVE="取出並移除";s.Msg.LISTS_GET_INDEX_LAST="最後壹筆";s.Msg.LISTS_GET_INDEX_RANDOM="隨機";s.Msg.LISTS_GET_INDEX_REMOVE="移除";s.Msg.LISTS_GET_INDEX_TAIL="";s.Msg.LISTS_GET_INDEX_TOOLTIP_GET_FIRST="返回陣列中的首個項目";s.Msg.LISTS_GET_INDEX_TOOLTIP_GET_FROM="返回在陣列中的指定位置的項目。";s.Msg.LISTS_GET_INDEX_TOOLTIP_GET_LAST="返回陣列中的最後一個項目";s.Msg.LISTS_GET_INDEX_TOOLTIP_GET_RANDOM="返回陣列中隨機的一個項目";s.Msg.LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST="移除並返回陣列中的首個項目";s.Msg.LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM="移除並返回陣列中的指定位置的項目。";s.Msg.LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST="移除並返回陣列中的最後一個項目";s.Msg.LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM="移除並返回陣列中的隨機一個項目";s.Msg.LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST="移除陣列中的首個項目";s.Msg.LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM="移除在陣列中的指定位置的項目。";s.Msg.LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST="移除陣列中的最後一個項目";s.Msg.LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM="移除陣列中隨機的一個項目";s.Msg.LISTS_GET_SUBLIST_END_FROM_END="到 倒數 # 位";s.Msg.LISTS_GET_SUBLIST_END_FROM_START="到 #";s.Msg.LISTS_GET_SUBLIST_END_LAST="到 最後";s.Msg.LISTS_GET_SUBLIST_HELPURL="https://github.com/google/blockly/wiki/Lists#getting-a-sublist";s.Msg.LISTS_GET_SUBLIST_START_FIRST="從 頭 取得子陣列";s.Msg.LISTS_GET_SUBLIST_START_FROM_END="從倒數 # 取得子陣列";s.Msg.LISTS_GET_SUBLIST_START_FROM_START="從 # 取得子陣列";s.Msg.LISTS_GET_SUBLIST_TAIL="";s.Msg.LISTS_GET_SUBLIST_TOOLTIP="複製陣列中指定的部分。";s.Msg.LISTS_INDEX_FROM_END_TOOLTIP="%1 是最後一個項目。";s.Msg.LISTS_INDEX_FROM_START_TOOLTIP="%1 是首個項目。";s.Msg.LISTS_INDEX_OF_FIRST="找出 首個 項目出現";s.Msg.LISTS_INDEX_OF_HELPURL="https://github.com/google/blockly/wiki/Lists#getting-items-from-a-list";s.Msg.LISTS_INDEX_OF_LAST="找出 最後一個 項目出現";s.Msg.LISTS_INDEX_OF_TOOLTIP="返回在陣列中的首個/最後一個匹配項目的索引值。如果未找到則返回 %1。";s.Msg.LISTS_INLIST="自陣列";s.Msg.LISTS_ISEMPTY_HELPURL="https://github.com/google/blockly/wiki/Lists#is-empty";s.Msg.LISTS_ISEMPTY_TITLE="%1 值為空";s.Msg.LISTS_ISEMPTY_TOOLTIP="如果該陣列為空,則返回 真。";s.Msg.LISTS_LENGTH_HELPURL="https://github.com/google/blockly/wiki/Lists#length-of";s.Msg.LISTS_LENGTH_TITLE="長度 %1";s.Msg.LISTS_LENGTH_TOOLTIP="返回陣列的長度。";s.Msg.LISTS_REPEAT_HELPURL="https://github.com/google/blockly/wiki/Lists#create-list-with";s.Msg.LISTS_REPEAT_TITLE="建立陣列使用項目 %1 重複 %2 次數";s.Msg.LISTS_REPEAT_TOOLTIP="建立包含指定重複次數的 值 的陣列。";s.Msg.LISTS_SET_INDEX_HELPURL="https://github.com/google/blockly/wiki/Lists#in-list--set";s.Msg.LISTS_SET_INDEX_INPUT_TO="為";s.Msg.LISTS_SET_INDEX_INSERT="插入在";s.Msg.LISTS_SET_INDEX_SET="設定";s.Msg.LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST="在陣列的起始處添加一個項目";s.Msg.LISTS_SET_INDEX_TOOLTIP_INSERT_FROM="插入在陣列中的指定位置的項目。";s.Msg.LISTS_SET_INDEX_TOOLTIP_INSERT_LAST="在陣列的尾端加入一個項目";s.Msg.LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM="在陣列中隨機插入項目";s.Msg.LISTS_SET_INDEX_TOOLTIP_SET_FIRST="設定陣列中的首個項目";s.Msg.LISTS_SET_INDEX_TOOLTIP_SET_FROM="設定在陣列中的指定位置的項目。";s.Msg.LISTS_SET_INDEX_TOOLTIP_SET_LAST="設定陣列中的最後一個項目";s.Msg.LISTS_SET_INDEX_TOOLTIP_SET_RANDOM="設定陣列中隨機的一個項目";s.Msg.LISTS_SORT_HELPURL="https://github.com/google/blockly/wiki/Lists#sorting-a-list";s.Msg.LISTS_SORT_ORDER_ASCENDING="升冪排序";s.Msg.LISTS_SORT_ORDER_DESCENDING="降冪排序";s.Msg.LISTS_SORT_TITLE="依%1%2%3排序";s.Msg.LISTS_SORT_TOOLTIP="排序字典的複製內容";s.Msg.LISTS_SORT_TYPE_IGNORECASE="依字母排序並忽略大小寫";s.Msg.LISTS_SORT_TYPE_NUMERIC="依數字排序";s.Msg.LISTS_SORT_TYPE_TEXT="依字母排序";s.Msg.LISTS_SPLIT_HELPURL="https://github.com/google/blockly/wiki/Lists#splitting-strings-and-joining-lists";s.Msg.LISTS_SPLIT_LIST_FROM_TEXT="從文本製作陣列";s.Msg.LISTS_SPLIT_TEXT_FROM_LIST="從陣列拆出文本";s.Msg.LISTS_SPLIT_TOOLTIP_JOIN="串起文本陣列成一個文本,由分隔符分隔。";s.Msg.LISTS_SPLIT_TOOLTIP_SPLIT="拆分文本到文本陣列,按每個分隔符拆分。";s.Msg.LISTS_SPLIT_WITH_DELIMITER="用分隔符";s.Msg.LOGGING_CONF="Logging Basic config";s.Msg.LOGGING_CONFIG="logging config";s.Msg.LOGGING_CONFIG_LEVEL="level =";s.Msg.LOGGING_IMPORT="import logging";s.Msg.LOGGING_INFO="Logging info";s.Msg.LOGGING_SETUP="Logging Setup";s.Msg.LOGIC_BOOLEAN_FALSE="否";s.Msg.LOGIC_BOOLEAN_HELPURL="https://github.com/google/blockly/wiki/Logic#values";s.Msg.LOGIC_BOOLEAN_TOOLTIP="返回 真 或 否。";s.Msg.LOGIC_BOOLEAN_TRUE="真";s.Msg.LOGIC_COMPARE_HELPURL="https://zh.wikipedia.org/wiki/不等";s.Msg.LOGIC_COMPARE_TOOLTIP_EQ="如果這兩個輸入區塊內容相等,返回 真。";s.Msg.LOGIC_COMPARE_TOOLTIP_GT="如果首個輸入大於第二個輸入,返回 真。";s.Msg.LOGIC_COMPARE_TOOLTIP_GTE="如果首個輸入大於或等於第二個輸入,返回 真。";s.Msg.LOGIC_COMPARE_TOOLTIP_LT="如果首個輸入小於第二個輸入,返回 真。";s.Msg.LOGIC_COMPARE_TOOLTIP_LTE="如果首個輸入是小於或等於第二個輸入,返回 真。";s.Msg.LOGIC_COMPARE_TOOLTIP_NEQ="如果這兩個輸入區塊內容不相等,返回 真。";s.Msg.LOGIC_NEGATE_HELPURL="https://github.com/google/blockly/wiki/Logic#not";s.Msg.LOGIC_NEGATE_TITLE="非 %1";s.Msg.LOGIC_NEGATE_TOOLTIP="如果輸入的值是 否,則返回 真。如果輸入的值是 真 返回 否。";s.Msg.LOGIC_NULL="空";s.Msg.LOGIC_NULL_HELPURL="https://en.wikipedia.org/wiki/Nullable_type";s.Msg.LOGIC_NULL_TOOLTIP="返回 空。";s.Msg.LOGIC_OPERATION_AND="且";s.Msg.LOGIC_OPERATION_HELPURL="https://github.com/google/blockly/wiki/Logic#logical-operations";s.Msg.LOGIC_OPERATION_OR="或";s.Msg.LOGIC_OPERATION_TOOLTIP_AND="如果這兩個輸入值都為 真,則返回 真。";s.Msg.LOGIC_OPERATION_TOOLTIP_OR="如果至少一個輸入的值為 真,返回 真。";s.Msg.LOGIC_TERNARY_CONDITION="測試";s.Msg.LOGIC_TERNARY_HELPURL="https://zh.wikipedia.org/wiki/條件運算符";s.Msg.LOGIC_TERNARY_IF_FALSE="如果為非";s.Msg.LOGIC_TERNARY_IF_TRUE="如果為真";s.Msg.LOGIC_TERNARY_TOOLTIP="檢查 'test' 中的條件。如果條件為 真,將返回 '如果為 真' 值 ;否則,返回 '如果為 否' 的值。";s.Msg.LOOP_FOREACH_ITEM="for each item";s.Msg.LOOP_FOREACH_LIST="in list";s.Msg.MATH_ADDITION_SYMBOL="+";s.Msg.MATH_ARITHMETIC_HELPURL="https://zh.wikipedia.org/wiki/算術";s.Msg.MATH_ARITHMETIC_TOOLTIP_ADD="返回兩個數字的總和。";s.Msg.MATH_ARITHMETIC_TOOLTIP_DIVIDE="返回兩個數字的商。";s.Msg.MATH_ARITHMETIC_TOOLTIP_MINUS="返回兩個數字的差。";s.Msg.MATH_ARITHMETIC_TOOLTIP_MULTIPLY="返回兩個數字的乘積。";s.Msg.MATH_ARITHMETIC_TOOLTIP_POWER="返回第二個數字的指數的首個數字。";s.Msg.MATH_CHANGE_HELPURL="https://zh.wikipedia.org/wiki/加法";s.Msg.MATH_CHANGE_TITLE="將 %1 增加 %2";s.Msg.MATH_CHANGE_TOOLTIP="將數字添加到變量 '%1'。";s.Msg.MATH_CONSTANT_HELPURL="https://zh.wikipedia.org/wiki/數學常數";s.Msg.MATH_CONSTANT_TOOLTIP="返回一個的常見常量: π (3.141......),e (2.718...)、 φ (1.618...)、 開方(2) (1.414......)、 開方(½) (0.707......) 或 ∞ (無窮大)。";s.Msg.MATH_CONSTRAIN_HELPURL="https://en.wikipedia.org/wiki/Clamping_%28graphics%29";s.Msg.MATH_CONSTRAIN_TITLE="限制數字 %1 介於 (低) %2 到 (高) %3";s.Msg.MATH_CONSTRAIN_TOOLTIP="限制數字介於兩個指定的數字之間";s.Msg.MATH_DIVISION_SYMBOL="÷";s.Msg.MATH_IS_DIVISIBLE_BY="可被整除";s.Msg.MATH_IS_EVEN="是偶數";s.Msg.MATH_IS_NEGATIVE="是負值";s.Msg.MATH_IS_ODD="是奇數";s.Msg.MATH_IS_POSITIVE="是正值";s.Msg.MATH_IS_PRIME="是質數";s.Msg.MATH_IS_TOOLTIP="如果數字是偶數,奇數,非負整數,正數、 負數或如果它是可被某數字整除,則返回 真 或 否。";s.Msg.MATH_IS_WHOLE="是非負整數";s.Msg.MATH_MODULO_HELPURL="https://zh.wikipedia.org/wiki/模除";s.Msg.MATH_MODULO_TITLE="取餘數自 %1 ÷ %2";s.Msg.MATH_MODULO_TOOLTIP="回傳兩個數字相除的餘數";s.Msg.MATH_MULTIPLICATION_SYMBOL="×";s.Msg.MATH_NUMBER_HELPURL="https://zh.wikipedia.org/wiki/數";s.Msg.MATH_NUMBER_TOOLTIP="一個數字。";s.Msg.MATH_ONLIST_HELPURL="";s.Msg.MATH_ONLIST_OPERATOR_AVERAGE="平均值 自陣列";s.Msg.MATH_ONLIST_OPERATOR_MAX="最大值 自陣列";s.Msg.MATH_ONLIST_OPERATOR_MEDIAN="中位數 自陣列";s.Msg.MATH_ONLIST_OPERATOR_MIN="最小值 自陣列";s.Msg.MATH_ONLIST_OPERATOR_MODE="比較眾數 自陣列";s.Msg.MATH_ONLIST_OPERATOR_RANDOM="隨機抽取 自陣列";s.Msg.MATH_ONLIST_OPERATOR_STD_DEV="標準差 自陣列";s.Msg.MATH_ONLIST_OPERATOR_SUM="總和 自陣列";s.Msg.MATH_ONLIST_TOOLTIP_AVERAGE="返回陣列中數值的平均值 (算術平均值)。";s.Msg.MATH_ONLIST_TOOLTIP_MAX="返回陣列中的最大數字。";s.Msg.MATH_ONLIST_TOOLTIP_MEDIAN="返回陣列中數值的中位數。";s.Msg.MATH_ONLIST_TOOLTIP_MIN="返回陣列中的最小數字。";s.Msg.MATH_ONLIST_TOOLTIP_MODE="返回一個陣列中的最常見項目的陣列。";s.Msg.MATH_ONLIST_TOOLTIP_RANDOM="從陣列中返回一個隨機的項目。";s.Msg.MATH_ONLIST_TOOLTIP_STD_DEV="返回陣列中數字的標準差。";s.Msg.MATH_ONLIST_TOOLTIP_SUM="返回陣列中的所有數字的總和。";s.Msg.MATH_POWER_SYMBOL="^";s.Msg.MATH_RANDOM_FLOAT_HELPURL="https://zh.wikipedia.org/wiki/隨機數生成器";s.Msg.MATH_RANDOM_FLOAT_TITLE_RANDOM="取隨機分數";s.Msg.MATH_RANDOM_FLOAT_TOOLTIP="返回介於 (包含) 0.0 到 1.0 之間的隨機數。";s.Msg.MATH_RANDOM_INT_HELPURL="https://zh.wikipedia.org/wiki/隨機數生成器";s.Msg.MATH_RANDOM_INT_TITLE="取隨機整數介於 (低) %1 到 %2";s.Msg.MATH_RANDOM_INT_TOOLTIP="回傳限制的數字區間內的隨機數字";s.Msg.MATH_ROUND_HELPURL="https://zh.wikipedia.org/wiki/數值簡化";s.Msg.MATH_ROUND_OPERATOR_ROUND="四捨五入";s.Msg.MATH_ROUND_OPERATOR_ROUNDDOWN="無條件捨去";s.Msg.MATH_ROUND_OPERATOR_ROUNDUP="無條件進位";s.Msg.MATH_ROUND_TOOLTIP="將數字向上或向下舍入。";s.Msg.MATH_SINGLE_HELPURL="https://zh.wikipedia.org/wiki/平方根";s.Msg.MATH_SINGLE_OP_ABSOLUTE="絕對值";s.Msg.MATH_SINGLE_OP_ROOT="開根號";s.Msg.MATH_SINGLE_TOOLTIP_ABS="返回指定數字的絕對值。";s.Msg.MATH_SINGLE_TOOLTIP_EXP="返回指定數字指數的 e";s.Msg.MATH_SINGLE_TOOLTIP_LN="返回指定數字的自然對數。";s.Msg.MATH_SINGLE_TOOLTIP_LOG10="返回指定數字的對數。";s.Msg.MATH_SINGLE_TOOLTIP_NEG="返回指定數字的 negation。";s.Msg.MATH_SINGLE_TOOLTIP_POW10="返回指定數字指數的10的冪次。";s.Msg.MATH_SINGLE_TOOLTIP_ROOT="返回指定數字的平方根。";s.Msg.MATH_SUBTRACTION_SYMBOL="-";s.Msg.MATH_SUM="Sum";s.Msg.MATH_TRIG_ACOS="acos";s.Msg.MATH_TRIG_ASIN="asin";s.Msg.MATH_TRIG_ATAN="atan";s.Msg.MATH_TRIG_COS="cos";s.Msg.MATH_TRIG_HELPURL="https://zh.wikipedia.org/wiki/三角函數";s.Msg.MATH_TRIG_SIN="sin";s.Msg.MATH_TRIG_TAN="tan";s.Msg.MATH_TRIG_TOOLTIP_ACOS="返回指定角度的反餘弦值(非弧度)。";s.Msg.MATH_TRIG_TOOLTIP_ASIN="返回指定角度的反正弦值(非弧度)。";s.Msg.MATH_TRIG_TOOLTIP_ATAN="返回指定角度的反正切值。";s.Msg.MATH_TRIG_TOOLTIP_COS="返回指定角度的餘弦值(非弧度)。";s.Msg.MATH_TRIG_TOOLTIP_SIN="返回指定角度的正弦值(非弧度)。";s.Msg.MATH_TRIG_TOOLTIP_TAN="返回指定角度的正切值(非弧度)。";s.Msg.NEW_VARIABLE="建立變量...";s.Msg.NEW_VARIABLE_TITLE="新變量名稱:";s.Msg.ORDINAL_NUMBER_SUFFIX="";s.Msg.PLATFORM_IMPORT="import platform";s.Msg.PROCEDURES_ALLOW_STATEMENTS="允許語句";s.Msg.PROCEDURES_BEFORE_PARAMS="與:";s.Msg.PROCEDURES_CALLNORETURN_HELPURL="https://zh.wikipedia.org/wiki/子程式";s.Msg.PROCEDURES_CALLNORETURN_TOOLTIP="執行使用者定義的函數 '%1'。";s.Msg.PROCEDURES_CALLRETURN_HELPURL="https://zh.wikipedia.org/wiki/子程式";s.Msg.PROCEDURES_CALLRETURN_TOOLTIP="執行使用者定義的函數 '%1' 並使用它的回傳值";s.Msg.PROCEDURES_CALL_BEFORE_PARAMS="與:";s.Msg.PROCEDURES_CREATE_DO="建立 '%1'";s.Msg.PROCEDURES_DEFNORETURN_COMMENT="描述此函數...";s.Msg.PROCEDURES_DEFNORETURN_DO="";s.Msg.PROCEDURES_DEFNORETURN_HELPURL="https://en.wikipedia.org/wiki/Procedure_%28computer_science%29";s.Msg.PROCEDURES_DEFNORETURN_PROCEDURE="流程";s.Msg.PROCEDURES_DEFNORETURN_TITLE="到";s.Msg.PROCEDURES_DEFNORETURN_TOOLTIP="創建一個無回傳值的函數。";s.Msg.PROCEDURES_DEFRETURN_HELPURL="https://en.wikipedia.org/wiki/Procedure_%28computer_science%29";s.Msg.PROCEDURES_DEFRETURN_RETURN="回傳";s.Msg.PROCEDURES_DEFRETURN_TOOLTIP="創建一個有回傳值的函數。";s.Msg.PROCEDURES_DEF_DUPLICATE_WARNING="警告: 此函數中有重複的參數。";s.Msg.PROCEDURES_HIGHLIGHT_DEF="反白顯示函式定義";s.Msg.PROCEDURES_IFRETURN_HELPURL="http://c2.com/cgi/wiki?GuardClause";s.Msg.PROCEDURES_IFRETURN_TOOLTIP="如果值為 真,則返回第二個值。";s.Msg.PROCEDURES_IFRETURN_WARNING="警告: 此積木僅可在定義函式時使用。";s.Msg.PROCEDURES_MAINFUNCTION="Define Main function";s.Msg.PROCEDURES_MUTATORARG_TITLE="變量:";s.Msg.PROCEDURES_MUTATORARG_TOOLTIP="添加函數輸入。";s.Msg.PROCEDURES_MUTATORCONTAINER_TITLE="參數";s.Msg.PROCEDURES_MUTATORCONTAINER_TOOLTIP="添加、刪除或重新排列此函數的輸入。";s.Msg.REDO="重試";s.Msg.REMOVE_COMMENT="移除註解";s.Msg.RENAME_VARIABLE="重新命名變量...";s.Msg.RENAME_VARIABLE_TITLE='將所有 "%1" 變量重新命名為:';s.Msg.REQUEST_DATA="data";s.Msg.REQUEST_IMPORT="import requests";s.Msg.REQUEST_POST_DATATYPE="Request Post Data: JSON";s.Msg.REQUEST_SET_URL="Set URL:";s.Msg.SYSTEM_EXIT="Sys.exit";s.Msg.SYSTEM_IMPORT="import sys";s.Msg.TEXT_APPEND_APPENDTEXT="後加入字串";s.Msg.TEXT_APPEND_HELPURL="https://github.com/google/blockly/wiki/Text#text-modification";s.Msg.TEXT_APPEND_TO="在";s.Msg.TEXT_APPEND_TOOLTIP="將壹些字串追加到變量 '%1'。";s.Msg.TEXT_CHANGECASE_HELPURL="https://github.com/google/blockly/wiki/Text#adjusting-text-case";s.Msg.TEXT_CHANGECASE_OPERATOR_LOWERCASE="轉成 小寫";s.Msg.TEXT_CHANGECASE_OPERATOR_TITLECASE="轉成 首字母大寫";s.Msg.TEXT_CHANGECASE_OPERATOR_UPPERCASE="轉成 大寫";s.Msg.TEXT_CHANGECASE_TOOLTIP="使用不同的大小寫複製這段字串。";s.Msg.TEXT_CHARAT_FIRST="取首個字元";s.Msg.TEXT_CHARAT_FROM_END="取得 倒數第 # 個字元";s.Msg.TEXT_CHARAT_FROM_START="取得 字元 #";s.Msg.TEXT_CHARAT_HELPURL="https://github.com/google/blockly/wiki/Text#extracting-text";s.Msg.TEXT_CHARAT_INPUT_INTEXT="的字元在字串";s.Msg.TEXT_CHARAT_LAST="取最後一個字元";s.Msg.TEXT_CHARAT_RANDOM="取隨機一個字元";s.Msg.TEXT_CHARAT_TAIL="";s.Msg.TEXT_CHARAT_TOOLTIP="返回位於指定位置的字元。";s.Msg.TEXT_CREATE_JOIN_ITEM_TOOLTIP="將一個項目加入到字串中。";s.Msg.TEXT_CREATE_JOIN_TITLE_JOIN="加入";s.Msg.TEXT_CREATE_JOIN_TOOLTIP="添加、 刪除或重新排列各區塊來此重新配置這個字串積木。";s.Msg.TEXT_GET_SUBSTRING_END_FROM_END="到 倒數第 # 個字元";s.Msg.TEXT_GET_SUBSTRING_END_FROM_START="到 字元 #";s.Msg.TEXT_GET_SUBSTRING_END_LAST="到 最後一個字元";s.Msg.TEXT_GET_SUBSTRING_HELPURL="https://github.com/google/blockly/wiki/Text#extracting-a-region-of-text";s.Msg.TEXT_GET_SUBSTRING_INPUT_IN_TEXT="自字串";s.Msg.TEXT_GET_SUBSTRING_START_FIRST="取得段落字串 自 首個字元";s.Msg.TEXT_GET_SUBSTRING_START_FROM_END="取得段落字串自 #";s.Msg.TEXT_GET_SUBSTRING_START_FROM_START="取得段落字串自 #";s.Msg.TEXT_GET_SUBSTRING_TAIL="";s.Msg.TEXT_GET_SUBSTRING_TOOLTIP="返回指定的部分字串。";s.Msg.TEXT_INDEXOF_HELPURL="https://github.com/google/blockly/wiki/Text#finding-text";s.Msg.TEXT_INDEXOF_INPUT_INTEXT="在字串";s.Msg.TEXT_INDEXOF_OPERATOR_FIRST="尋找 首個 出現的字串";s.Msg.TEXT_INDEXOF_OPERATOR_LAST="尋找 最後一個 出現的字串";s.Msg.TEXT_INDEXOF_TAIL="";s.Msg.TEXT_INDEXOF_TOOLTIP="返回在第二個字串中的首個/最後一個匹配項目的索引值。如果未找到則返回 %1。";s.Msg.TEXT_ISEMPTY_HELPURL="https://github.com/google/blockly/wiki/Text#checking-for-empty-text";s.Msg.TEXT_ISEMPTY_TITLE="%1 為空";s.Msg.TEXT_ISEMPTY_TOOLTIP="如果提供的字串為空,則返回 真。";s.Msg.TEXT_JOIN_HELPURL="https://github.com/google/blockly/wiki/Text#text-creation";s.Msg.TEXT_JOIN_TITLE_CREATEWITH="建立字串使用";s.Msg.TEXT_JOIN_TOOLTIP="透過串起任意數量的項目來建立壹段字串。";s.Msg.TEXT_LENGTH_HELPURL="https://github.com/google/blockly/wiki/Text#text-modification";s.Msg.TEXT_LENGTH_TITLE="長度 %1";s.Msg.TEXT_LENGTH_TOOLTIP="返回這串字串的字元數(含空格) 。";s.Msg.TEXT_LOWER="set lower case";s.Msg.TEXT_PRINT_HELPURL="https://github.com/google/blockly/wiki/Text#printing-text";s.Msg.TEXT_PRINT_TITLE="印出 %1";s.Msg.TEXT_PRINT_TITLE_PRINT="print";s.Msg.TEXT_PRINT_TOOLTIP="印出指定的字串、 數字或其他值。";s.Msg.TEXT_PROMPT_HELPURL="https://github.com/google/blockly/wiki/Text#getting-input-from-the-user";s.Msg.TEXT_PROMPT_TOOLTIP_NUMBER="輸入數字";s.Msg.TEXT_PROMPT_TOOLTIP_TEXT="輸入字串";s.Msg.TEXT_PROMPT_TYPE_NUMBER="輸入 數字 並顯示提示訊息";s.Msg.TEXT_PROMPT_TYPE_TEXT="輸入 字串 並顯示提示訊息";s.Msg.TEXT_TEXT_HELPURL="https://zh.wikipedia.org/wiki/字串";s.Msg.TEXT_TEXT_TOOLTIP="字元、 單詞或壹欄字串。";s.Msg.TEXT_TRIM_HELPURL="https://github.com/google/blockly/wiki/Text#trimming-removing-spaces";s.Msg.TEXT_TRIM_OPERATOR_BOTH="消除兩側空格";s.Msg.TEXT_TRIM_OPERATOR_LEFT="消除左側空格";s.Msg.TEXT_TRIM_OPERATOR_RIGHT="消除右側空格";s.Msg.TEXT_TRIM_TOOLTIP="複製這段字串的同時刪除兩端多餘的空格。";s.Msg.THREAD_IMPORT="import threading";s.Msg.THREAD_SET_TARGET="threading set target";s.Msg.THREAD_START="start";s.Msg.THREAD_THREADING="threading";s.Msg.TODAY="今天";s.Msg.TYPE_CHECK="type of";s.Msg.UNDO="還原";s.Msg.VARIABLES_DEFAULT_NAME="變量";s.Msg.VARIABLES_GET_CREATE_SET="建立 '設定 %1'";s.Msg.VARIABLES_GET_HELPURL="https://github.com/google/blockly/wiki/Variables#get";s.Msg.VARIABLES_GET_SELF="get self";s.Msg.VARIABLES_GET_TOOLTIP="返回此變量的值。";s.Msg.VARIABLES_SET="設定 %1 爲 %2";s.Msg.VARIABLES_SET_CREATE_GET="建立 '取得 %1'";s.Msg.VARIABLES_SET_HELPURL="https://github.com/google/blockly/wiki/Variables#set";s.Msg.VARIABLES_SET_SELF="set self";s.Msg.VARIABLES_SET_SELF_TO="to";s.Msg.VARIABLES_SET_TAIL="=";s.Msg.VARIABLES_SET_TITLE="set";s.Msg.VARIABLES_SET_TOOLTIP="設定此變量,好和輸入值相等。";s.Msg.VARIABLE_ALREADY_EXISTS="一個名為%1的變量已存在。";s.Msg.VISIONKIT_AIY_VISION_INFERENCE="AIY Vision Inference";s.Msg.VISIONKIT_ANNOTATOR="Annotator";s.Msg.VISIONKIT_ANNOTATOR_BOUNDING="Annotator Bounding Box";s.Msg.VISIONKIT_ANNOTATOR_FILL="fill=";s.Msg.VISIONKIT_ANNOTATOR_SETTING="set dimensions:";s.Msg.VISIONKIT_CAMERA_INFERENCE="Camera Inference as";s.Msg.VISIONKIT_CLOUDEVENT_API="Cloud Event API:";s.Msg.VISIONKIT_DO="Do";s.Msg.VISIONKIT_GETINFERENCE="Get Inference";s.Msg.VISIONKIT_GETMODEL_MODEL="model";s.Msg.VISIONKIT_GETMODEL_Of="of";s.Msg.VISIONKIT_IMPORT="from";s.Msg.VISIONKIT_IMPORT_ANNOTATOR="annotator import";s.Msg.VISIONKIT_IMPORT_INFERENCE="inference import";s.Msg.VISIONKIT_IMPORT_MODELS="models import";s.Msg.VISIONKIT_JOY_DETECT="Detect Joy Score and stored it to Core Cloud";s.Msg.VISIONKIT_MODEL="Model";s.Msg.VISIONKIT_RUN_INFERENCE="Run inference";s.Msg.VISIONKIT_SETUP="Google AIY Vision Kit Setup";s.Msg.VISIONKIT_USE_MODEL="Use model";s.Msg.VOICEKIT_ASSISTANT="Assistant";s.Msg.VOICEKIT_DEMO_1="Command Control Demo";s.Msg.VOICEKIT_DEMO_2="Via Google Assistant";s.Msg.VOICEKIT_EVENTTYPE_ASSISTANT="Assistant Event Type:";s.Msg.VOICEKIT_EVENTTYPE_IMPORT="import EventType";s.Msg.VOICEKIT_EVENT_ARGS="event args";s.Msg.VOICEKIT_EVENT_OF="of";s.Msg.VOICEKIT_EVENT_TYPE_OF="event type of";s.Msg.VOICEKIT_FROM="from";s.Msg.VOICEKIT_GET_CREDENTIAL="Get Assistant Credential";s.Msg.VOICEKIT_IMPORT_ASSISTANT="import Assistant";s.Msg.VOICEKIT_IMPORT_AUTH="import auth_helpers";s.Msg.VOICEKIT_IMPORT_TTS="import TTS";s.Msg.VOICEKIT_IMPORT_TTS_SAY="aiy.voice.tts.say";s.Msg.VOICEKIT_SETUP="Google AIY Voice Kit Setup";s.Msg.VOICEKIT_SET_CREDENTIAL="set credential for Assistant";s.Msg.VOICEKIT_SET_DO="do";s.Msg.VOICEKIT_SET_FROM="from";s.Msg.PROCEDURES_DEFRETURN_TITLE=s.Msg.PROCEDURES_DEFNORETURN_TITLE;s.Msg.CONTROLS_IF_IF_TITLE_IF=s.Msg.CONTROLS_IF_MSG_IF;s.Msg.CONTROLS_WHILEUNTIL_INPUT_DO=s.Msg.CONTROLS_REPEAT_INPUT_DO;s.Msg.CONTROLS_IF_MSG_THEN=s.Msg.CONTROLS_REPEAT_INPUT_DO;s.Msg.CONTROLS_IF_ELSE_TITLE_ELSE=s.Msg.CONTROLS_IF_MSG_ELSE;s.Msg.PROCEDURES_DEFRETURN_PROCEDURE=s.Msg.PROCEDURES_DEFNORETURN_PROCEDURE;s.Msg.LISTS_GET_SUBLIST_INPUT_IN_LIST=s.Msg.LISTS_INLIST;s.Msg.LISTS_GET_INDEX_INPUT_IN_LIST=s.Msg.LISTS_INLIST;s.Msg.MATH_CHANGE_TITLE_ITEM=s.Msg.VARIABLES_DEFAULT_NAME;s.Msg.VARIABLES_SET_ITEM=s.Msg.VARIABLES_DEFAULT_NAME;s.Msg.PROCEDURES_DEFRETURN_DO=s.Msg.PROCEDURES_DEFNORETURN_DO;s.Msg.CONTROLS_IF_ELSEIF_TITLE_ELSEIF=s.Msg.CONTROLS_IF_MSG_ELSEIF;s.Msg.LISTS_GET_INDEX_HELPURL=s.Msg.LISTS_INDEX_OF_HELPURL;s.Msg.CONTROLS_FOREACH_INPUT_DO=s.Msg.CONTROLS_REPEAT_INPUT_DO;s.Msg.LISTS_SET_INDEX_INPUT_IN_LIST=s.Msg.LISTS_INLIST;s.Msg.CONTROLS_FOR_INPUT_DO=s.Msg.CONTROLS_REPEAT_INPUT_DO;s.Msg.LISTS_CREATE_WITH_ITEM_TITLE=s.Msg.VARIABLES_DEFAULT_NAME;s.Msg.TEXT_APPEND_VARIABLE=s.Msg.VARIABLES_DEFAULT_NAME;s.Msg.TEXT_CREATE_JOIN_ITEM_TITLE_ITEM=s.Msg.VARIABLES_DEFAULT_NAME;s.Msg.LISTS_INDEX_OF_INPUT_IN_LIST=s.Msg.LISTS_INLIST;s.Msg.PROCEDURES_DEFRETURN_COMMENT=s.Msg.P;s.Msg.ADD_COMMENT="添加註釋";s.Msg.AIYBOARD_AIY_BOARD="AIY Board";s.Msg.AIYBOARD_BUTTON_FROM="from";s.Msg.AIYBOARD_BUTTON_WHEN="when button";s.Msg.AIYBOARD_FROM="from aiy.board";s.Msg.AIYBOARD_IMPORT="import";s.Msg.AIYBOARD_LED_STATE="get LED state of";s.Msg.AIYBOARD_LED_STATUS="get LED status of";s.Msg.CAMERA_CAMERA="camera";s.Msg.CAMERA_DO="Do";s.Msg.CAMERA_FPS="fps";s.Msg.CAMERA_FRAME_RATE="Frame Rete:";s.Msg.CAMERA_IMPORT="import piCamera";s.Msg.CAMERA_RESOLUTION="Resolution";s.Msg.CAMERA_SENSOR_MODE="Sensor Mode:";s.Msg.CAMERA_SET_BOUNDING="Set bounding box:";s.Msg.CAMERA_USE_AS="Use PiCamera as";s.Msg.CHANGE_VALUE_TITLE="更改值:";s.Msg.CLEAN_UP="整理塊";s.Msg.COLLAPSE_ALL="折疊塊";s.Msg.COLLAPSE_BLOCK="折疊塊";s.Msg.COLOUR_BLEND_COLOUR1="顏色1";s.Msg.COLOUR_BLEND_COLOUR2="顏色2";s.Msg.COLOUR_BLEND_HELPURL="http://meyerweb.com/eric/tools/color-blend/";s.Msg.COLOUR_BLEND_RATIO="比例";s.Msg.COLOUR_BLEND_TITLE="混合";s.Msg.COLOUR_BLEND_TOOLTIP="用一個給定的比率(0.0-1.0)混合兩種顏色。";s.Msg.COLOUR_PICKER_HELPURL="https://zh.wikipedia.org/wiki/顏色";s.Msg.COLOUR_PICKER_TOOLTIP="從調色板中選擇壹種顏色。";s.Msg.COLOUR_RANDOM_HELPURL="http://randomcolour.com";s.Msg.COLOUR_RANDOM_TITLE="隨機顏色";s.Msg.COLOUR_RANDOM_TOOLTIP="隨機選擇壹種顏色。";s.Msg.COLOUR_RGB_BLUE="藍色";s.Msg.COLOUR_RGB_GREEN="綠色";s.Msg.COLOUR_RGB_HELPURL="http://www.december.com/html/spec/colorper.html";s.Msg.COLOUR_RGB_RED="紅色";s.Msg.COLOUR_RGB_TITLE="顏色";s.Msg.COLOUR_RGB_TOOLTIP="透過指定紅色、綠色和藍色的量創建壹種顏色。所有的值必須介於0和100之間。";s.Msg.CONTROLS_FLOW_STATEMENTS_HELPURL="https://github.com/google/blockly/wiki/Loops#loop-termination-blocks";s.Msg.CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK="中斷循環";s.Msg.CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE="繼續下一次循環";s.Msg.CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK="中斷包含它的循環。";s.Msg.CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE="跳過這個循環的剩余部分,並繼續下一次疊代。";s.Msg.CONTROLS_FLOW_STATEMENTS_WARNING="警告:此塊僅可用於在一個循環內。";s.Msg.CONTROLS_FOREACH_HELPURL="https://github.com/google/blockly/wiki/Loops#for-each";s.Msg.CONTROLS_FOREACH_TITLE="在陣列 %2 中以 %1 遍歷每個項目";s.Msg.CONTROLS_FOREACH_TOOLTIP='遍歷每個陣列中的項目,將變量" %1"設定到該項中,然後執行某些語句。';s.Msg.CONTROLS_FOR_HELPURL="https://github.com/google/blockly/wiki/Loops#count-with";s.Msg.CONTROLS_FOR_TITLE="使用 %1 從範圍 %2 到 %3 每隔 %4";s.Msg.CONTROLS_FOR_TOOLTIP='從起始數到結尾數中取出變量" %1"的值,按指定的時間間隔,執行指定的塊。';s.Msg.CONTROLS_IF_ELSEIF_TOOLTIP="在if語句塊中增加一個條件。";s.Msg.CONTROLS_IF_ELSE_TOOLTIP="添加一個最終的,包括所有情況的節到if塊中。";s.Msg.CONTROLS_IF_HELPURL="https://github.com/google/blockly/wiki/IfElse";s.Msg.CONTROLS_IF_IF_TOOLTIP='增加、刪除或重新排列各節來重新配置"if"塊。';s.Msg.CONTROLS_IF_MSG_ELSE="否則";s.Msg.CONTROLS_IF_MSG_ELSEIF="否則如果";s.Msg.CONTROLS_IF_MSG_IF="如果";s.Msg.CONTROLS_IF_TOOLTIP_1="如果值為真,執行壹些語句。";s.Msg.CONTROLS_IF_TOOLTIP_2="如果值為真,則執行首個塊語句。否則,則執行第二塊語句。";s.Msg.CONTROLS_IF_TOOLTIP_3="如果首個值為真,則執行首個塊的語句。否則,如果第二個值為真,則執行第二塊的語句。";s.Msg.CONTROLS_IF_TOOLTIP_4="如果首個值為真,則執行首個塊對語句。否則,如果第二個值為真,則執行語句的第二塊。如果沒有值為真,則執行最後壹塊的語句。";s.Msg.CONTROLS_REPEAT_HELPURL="https://zh.wikipedia.org/wiki/For循環";s.Msg.CONTROLS_REPEAT_INPUT_DO="執行";s.Msg.CONTROLS_REPEAT_TITLE="重複 %1 次";s.Msg.CONTROLS_REPEAT_TOOLTIP="多次執行壹些語句。";s.Msg.CONTROLS_WHILEUNTIL_HELPURL="https://github.com/google/blockly/wiki/Loops#repeat";s.Msg.CONTROLS_WHILEUNTIL_OPERATOR_UNTIL="重複直到";s.Msg.CONTROLS_WHILEUNTIL_OPERATOR_WHILE="重複當";s.Msg.CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL="只要值為假,執行壹些語句。";s.Msg.CONTROLS_WHILEUNTIL_TOOLTIP_WHILE="只要值為真,執行壹些語句。";s.Msg.DELETE_ALL_BLOCKS="刪除所有%1塊嗎?";s.Msg.DELETE_BLOCK="刪除塊";s.Msg.DELETE_VARIABLE='刪除" %1"變量';s.Msg.DELETE_VARIABLE_CONFIRMATION='刪除" % 2"變量的%1種用途麼?';s.Msg.DELETE_X_BLOCKS="刪除 %1 塊";s.Msg.DICTS_CREATE_EMPTY_TITLE="empty dictionary";s.Msg.DICTS_CREATE_WITH_CONTAINER_TITLE_ADD="Create Dictionary";s.Msg.DICTS_CREATE_WITH_CONTAINER_TOOLTIP="";s.Msg.DICTS_CREATE_WITH_INPUT_WITH="create dict with";s.Msg.DICTS_CREATE_WITH_ITEM_KEY="key";s.Msg.DICTS_CREATE_WITH_ITEM_MAPPING=":";s.Msg.DICTS_CREATE_WITH_ITEM_TITLE="key/value";s.Msg.DICTS_CREATE_WITH_ITEM_TOOLTIP="";s.Msg.DICTS_CREATE_WITH_TOOLTIP="";s.Msg.DICT_GET="get key";s.Msg.DICT_GET_TO="of";s.Msg.DISABLE_BLOCK="禁用塊";s.Msg.DUPLICATE_BLOCK="復制";s.Msg.ENABLE_BLOCK="啟用塊";s.Msg.EXPAND_ALL="展開塊";s.Msg.EXPAND_BLOCK="展開塊";s.Msg.EXTERNAL_INPUTS="外部輸入";s.Msg.HELP="幫助";s.Msg.INLINE_INPUTS="單欄輸入";s.Msg.LISTS_APPEND="append item";s.Msg.LISTS_APPEND_HELPURL="http://google.com";s.Msg.LISTS_APPEND_TO="to list";s.Msg.LISTS_APPEND_TOOLTIP="Append an element to a list";s.Msg.LISTS_CREATE_EMPTY_HELPURL="https://github.com/google/blockly/wiki/Lists#create-empty-list";s.Msg.LISTS_CREATE_EMPTY_TITLE="創建空陣列";s.Msg.LISTS_CREATE_EMPTY_TOOLTIP="返回一個陣列,長度為 0,不包含任何數據記錄";s.Msg.LISTS_CREATE_WITH_CONTAINER_TITLE_ADD="陣列";s.Msg.LISTS_CREATE_WITH_CONTAINER_TOOLTIP="增加、刪除或重新排列各部分以此重新配置這個陣列塊。";s.Msg.LISTS_CREATE_WITH_HELPURL="https://github.com/google/blockly/wiki/Lists#create-list-with";s.Msg.LISTS_CREATE_WITH_INPUT_WITH="使用這些值建立陣列";s.Msg.LISTS_CREATE_WITH_ITEM_TOOLTIP="將一個項添加到陣列中。";s.Msg.LISTS_CREATE_WITH_TOOLTIP="建立一個具有任意數量項目的陣列。";s.Msg.LISTS_GET_INDEX_FIRST="首個";s.Msg.LISTS_GET_INDEX_FROM_END="倒數第#";s.Msg.LISTS_GET_INDEX_FROM_START="#";s.Msg.LISTS_GET_INDEX_GET="獲得";s.Msg.LISTS_GET_INDEX_GET_REMOVE="取出並移除";s.Msg.LISTS_GET_INDEX_LAST="最後";s.Msg.LISTS_GET_INDEX_RANDOM="隨機";s.Msg.LISTS_GET_INDEX_REMOVE="移除";s.Msg.LISTS_GET_INDEX_TAIL="空白";s.Msg.LISTS_GET_INDEX_TOOLTIP_GET_FIRST="返回陣列中的首個項目。";s.Msg.LISTS_GET_INDEX_TOOLTIP_GET_FROM="返回在陣列中的指定位置的項。";s.Msg.LISTS_GET_INDEX_TOOLTIP_GET_LAST="返回陣列中的最後壹項。";s.Msg.LISTS_GET_INDEX_TOOLTIP_GET_RANDOM="隨機返回陣列中的一個項目。";s.Msg.LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST="移除並返回陣列中的首個項目。";s.Msg.LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM="移除並返回陣列中的指定位置的項。";s.Msg.LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST="移除並返回陣列中的最後一個項目。";s.Msg.LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM="移除並返回陣列中的一個隨機項目中。";s.Msg.LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST="移除陣列中的首個項";s.Msg.LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM="移除在陣列中的指定位置的項。";s.Msg.LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST="移除陣列中的最後壹項";s.Msg.LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM="刪除陣列中的一個隨機的項。";s.Msg.LISTS_GET_SUBLIST_END_FROM_END="到倒數第#";s.Msg.LISTS_GET_SUBLIST_END_FROM_START="到#";s.Msg.LISTS_GET_SUBLIST_END_LAST="到最後";s.Msg.LISTS_GET_SUBLIST_HELPURL="https://github.com/google/blockly/wiki/Lists#getting-a-sublist";s.Msg.LISTS_GET_SUBLIST_START_FIRST="從頭獲得子陣列";s.Msg.LISTS_GET_SUBLIST_START_FROM_END="從倒數#取得子陣列";s.Msg.LISTS_GET_SUBLIST_START_FROM_START="從#取得子陣列";s.Msg.LISTS_GET_SUBLIST_TAIL="空白";s.Msg.LISTS_GET_SUBLIST_TOOLTIP="復制陣列中指定的部分。";s.Msg.LISTS_INDEX_FROM_END_TOOLTIP="%1是最後壹項。";s.Msg.LISTS_INDEX_FROM_START_TOOLTIP="%1是首個項目。";s.Msg.LISTS_INDEX_OF_FIRST="找出首個項出現";s.Msg.LISTS_INDEX_OF_HELPURL="https://github.com/google/blockly/wiki/Lists#getting-items-from-a-list";s.Msg.LISTS_INDEX_OF_LAST="找出最後一個項出現";s.Msg.LISTS_INDEX_OF_TOOLTIP="返回在陣列中的首個/最後一個匹配項的索引值。如果找不到項目則返回%1。";s.Msg.LISTS_INLIST="在陣列中";s.Msg.LISTS_ISEMPTY_HELPURL="https://github.com/google/blockly/wiki/Lists#is-empty";s.Msg.LISTS_ISEMPTY_TITLE="%1是空的";s.Msg.LISTS_ISEMPTY_TOOLTIP="如果改陣列為空,則返回真。";s.Msg.LISTS_LENGTH_HELPURL="https://github.com/google/blockly/wiki/Lists#length-of";s.Msg.LISTS_LENGTH_TITLE="%1的長度";s.Msg.LISTS_LENGTH_TOOLTIP="返回陣列的長度。";s.Msg.LISTS_REPEAT_HELPURL="https://github.com/google/blockly/wiki/Lists#create-list-with";s.Msg.LISTS_REPEAT_TITLE="建立陣列使用項 %1 重複 %2 次";s.Msg.LISTS_REPEAT_TOOLTIP="建立包含指定重複次數的值的陣列。";s.Msg.LISTS_SET_INDEX_HELPURL="https://github.com/google/blockly/wiki/Lists#in-list--set";s.Msg.LISTS_SET_INDEX_INPUT_TO="為";s.Msg.LISTS_SET_INDEX_INSERT="插入在";s.Msg.LISTS_SET_INDEX_SET="設定";s.Msg.LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST="在陣列的起始處添加該項。";s.Msg.LISTS_SET_INDEX_TOOLTIP_INSERT_FROM="插入在陣列中指定位置的項。";s.Msg.LISTS_SET_INDEX_TOOLTIP_INSERT_LAST="將該項追加到陣列的末尾。";s.Msg.LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM="在陣列中隨機插入項。";s.Msg.LISTS_SET_INDEX_TOOLTIP_SET_FIRST="設定陣列中的首個項目。";s.Msg.LISTS_SET_INDEX_TOOLTIP_SET_FROM="設定在陣列中指定位置的項。";s.Msg.LISTS_SET_INDEX_TOOLTIP_SET_LAST="設定陣列中的最後壹項。";s.Msg.LISTS_SET_INDEX_TOOLTIP_SET_RANDOM="設定陣列中一個隨機的項目。";s.Msg.LISTS_SORT_HELPURL="https://github.com/google/blockly/wiki/Lists#sorting-a-list";s.Msg.LISTS_SORT_ORDER_ASCENDING="升序";s.Msg.LISTS_SORT_ORDER_DESCENDING="降序";s.Msg.LISTS_SORT_TITLE="排序%1 %2 %3";s.Msg.LISTS_SORT_TOOLTIP="排序一個陣列的拷貝。";s.Msg.LISTS_SORT_TYPE_IGNORECASE="按字母排序,忽略大小寫";s.Msg.LISTS_SORT_TYPE_NUMERIC="按數字排序";s.Msg.LISTS_SORT_TYPE_TEXT="按字母排序";s.Msg.LISTS_SPLIT_HELPURL="https://github.com/google/blockly/wiki/Lists#splitting-strings-and-joining-lists";s.Msg.LISTS_SPLIT_LIST_FROM_TEXT="從文本制作陣列";s.Msg.LISTS_SPLIT_TEXT_FROM_LIST="從陣列拆出文本";s.Msg.LISTS_SPLIT_TOOLTIP_JOIN="加入文本陣列至一個文本,由分隔符分隔。";s.Msg.LISTS_SPLIT_TOOLTIP_SPLIT="拆分文本到文本陣列,按每個分隔符拆分。";s.Msg.LISTS_SPLIT_WITH_DELIMITER="用分隔符";s.Msg.LOGGING_CONF="Logging Basic config";s.Msg.LOGGING_CONFIG="logging config";s.Msg.LOGGING_CONFIG_LEVEL="level =";s.Msg.LOGGING_IMPORT="import logging";s.Msg.LOGGING_INFO="Logging info";s.Msg.LOGGING_SETUP="Logging Setup";s.Msg.LOGIC_BOOLEAN_FALSE="假";s.Msg.LOGIC_BOOLEAN_HELPURL="https://github.com/google/blockly/wiki/Logic#values";s.Msg.LOGIC_BOOLEAN_TOOLTIP="返回真或假。";s.Msg.LOGIC_BOOLEAN_TRUE="真";s.Msg.LOGIC_COMPARE_HELPURL="https://zh.wikipedia.org/wiki/不等";s.Msg.LOGIC_COMPARE_TOOLTIP_EQ="如果兩個輸入結果相等,則返回真。";s.Msg.LOGIC_COMPARE_TOOLTIP_GT="如果首個輸入結果比第二個大,則返回真。";s.Msg.LOGIC_COMPARE_TOOLTIP_GTE="如果首個輸入結果大於或等於第二個輸入結果,則返回真。";s.Msg.LOGIC_COMPARE_TOOLTIP_LT="如果首個輸入結果比第二個小,則返回真。";s.Msg.LOGIC_COMPARE_TOOLTIP_LTE="如果首個輸入結果小於或等於第二個輸入結果,則返回真。";s.Msg.LOGIC_COMPARE_TOOLTIP_NEQ="如果兩個輸入結果不相等,則返回真。";s.Msg.LOGIC_NEGATE_HELPURL="https://github.com/google/blockly/wiki/Logic#not";s.Msg.LOGIC_NEGATE_TITLE="非%1";s.Msg.LOGIC_NEGATE_TOOLTIP="如果輸入結果為假,則返回真;如果輸入結果為真,則返回假。";s.Msg.LOGIC_NULL="空";s.Msg.LOGIC_NULL_HELPURL="https://en.wikipedia.org/wiki/Nullable_type";s.Msg.LOGIC_NULL_TOOLTIP="返回空值。";s.Msg.LOGIC_OPERATION_AND="和";s.Msg.LOGIC_OPERATION_HELPURL="https://github.com/google/blockly/wiki/Logic#logical-operations";s.Msg.LOGIC_OPERATION_OR="或";s.Msg.LOGIC_OPERATION_TOOLTIP_AND="如果兩個輸入結果都為真,則返回真。";s.Msg.LOGIC_OPERATION_TOOLTIP_OR="如果至少有一個輸入結果為真,則返回真。";s.Msg.LOGIC_TERNARY_CONDITION="測試";s.Msg.LOGIC_TERNARY_HELPURL="https://zh.wikipedia.org/wiki/條件運算符";s.Msg.LOGIC_TERNARY_IF_FALSE="如果為假";s.Msg.LOGIC_TERNARY_IF_TRUE="如果為真";s.Msg.LOGIC_TERNARY_TOOLTIP='檢查"test"中的條件。如果條件為真,則返回"if true"的值,否則,則返回"if false"的值。';s.Msg.LOOP_FOREACH_ITEM="for each item";s.Msg.LOOP_FOREACH_LIST="in list";s.Msg.MATH_ADDITION_SYMBOL="+";s.Msg.MATH_ARITHMETIC_HELPURL="https://zh.wikipedia.org/wiki/算術";s.Msg.MATH_ARITHMETIC_TOOLTIP_ADD="返回兩個數字的和。";s.Msg.MATH_ARITHMETIC_TOOLTIP_DIVIDE="返回兩個數字的商。";s.Msg.MATH_ARITHMETIC_TOOLTIP_MINUS="返回兩個數字的區別。";s.Msg.MATH_ARITHMETIC_TOOLTIP_MULTIPLY="返回兩個數字的乘積。";s.Msg.MATH_ARITHMETIC_TOOLTIP_POWER="返回首個數的第二個數次方。";s.Msg.MATH_CHANGE_HELPURL="https://zh.wikipedia.org/wiki/加法";s.Msg.MATH_CHANGE_TITLE="將 %1 增加 %2";s.Msg.MATH_CHANGE_TOOLTIP='將一個數添加到變量" %1"。';s.Msg.MATH_CONSTANT_HELPURL="https://zh.wikipedia.org/wiki/數學常數";s.Msg.MATH_CONSTANT_TOOLTIP="返回一個常見常量:π (3.141......),e (2.718...)、φ (1.618...)、 sqrt(2) (1.414......)、sqrt(½) (0.707......)或 ∞(無窮大)。";s.Msg.MATH_CONSTRAIN_HELPURL="https://en.wikipedia.org/wiki/Clamping_%28graphics%29";s.Msg.MATH_CONSTRAIN_TITLE="限制數字 %1 介於 (低) %2 到 (高) %3";s.Msg.MATH_CONSTRAIN_TOOLTIP="限制數字介於兩個指定的數字之間";s.Msg.MATH_DIVISION_SYMBOL="÷";s.Msg.MATH_IS_DIVISIBLE_BY="可被整除";s.Msg.MATH_IS_EVEN="是偶數";s.Msg.MATH_IS_NEGATIVE="為負";s.Msg.MATH_IS_ODD="是奇數";s.Msg.MATH_IS_POSITIVE="為正";s.Msg.MATH_IS_PRIME="是質數";s.Msg.MATH_IS_TOOLTIP="如果數字是偶數、奇數、非負整數、正數、負數或如果它可被某數字整除,則返回真或假。";s.Msg.MATH_IS_WHOLE="為整數";s.Msg.MATH_MODULO_HELPURL="https://zh.wikipedia.org/wiki/模除";s.Msg.MATH_MODULO_TITLE="取餘數自 %1 ÷ %2";s.Msg.MATH_MODULO_TOOLTIP="返回這兩個數字相除後的餘數。";s.Msg.MATH_MULTIPLICATION_SYMBOL="×";s.Msg.MATH_NUMBER_HELPURL="https://zh.wikipedia.org/wiki/數";s.Msg.MATH_NUMBER_TOOLTIP="一個數字。";s.Msg.MATH_ONLIST_HELPURL="";s.Msg.MATH_ONLIST_OPERATOR_AVERAGE="陣列中的平均數";s.Msg.MATH_ONLIST_OPERATOR_MAX="陣列中的最大值";s.Msg.MATH_ONLIST_OPERATOR_MEDIAN="陣列中位數";s.Msg.MATH_ONLIST_OPERATOR_MIN="陣列中的最小值";s.Msg.MATH_ONLIST_OPERATOR_MODE="陣列模式";s.Msg.MATH_ONLIST_OPERATOR_RANDOM="陣列的隨機項";s.Msg.MATH_ONLIST_OPERATOR_STD_DEV="陣列中的標準差";s.Msg.MATH_ONLIST_OPERATOR_SUM="陣列中的數的總和";s.Msg.MATH_ONLIST_TOOLTIP_AVERAGE="返回陣列中的數值的平均值。";s.Msg.MATH_ONLIST_TOOLTIP_MAX="返回陣列中最大數。";s.Msg.MATH_ONLIST_TOOLTIP_MEDIAN="返回陣列中的中位數。";s.Msg.MATH_ONLIST_TOOLTIP_MIN="返回陣列中最小數。";s.Msg.MATH_ONLIST_TOOLTIP_MODE="返回陣列中的最常見的項的陣列。";s.Msg.MATH_ONLIST_TOOLTIP_RANDOM="從陣列中返回一個隨機的元素。";s.Msg.MATH_ONLIST_TOOLTIP_STD_DEV="返回陣列的標準偏差。";s.Msg.MATH_ONLIST_TOOLTIP_SUM="返回陣列中的所有數字的和。";s.Msg.MATH_POWER_SYMBOL="^";s.Msg.MATH_RANDOM_FLOAT_HELPURL="https://zh.wikipedia.org/wiki/隨機數生成器";s.Msg.MATH_RANDOM_FLOAT_TITLE_RANDOM="隨機分數";s.Msg.MATH_RANDOM_FLOAT_TOOLTIP="返回介於(包含)0.0到1.0之間的隨機數。";s.Msg.MATH_RANDOM_INT_HELPURL="https://zh.wikipedia.org/wiki/隨機數生成器";s.Msg.MATH_RANDOM_INT_TITLE="從 %1 到 %2 之間的隨機整數";s.Msg.MATH_RANDOM_INT_TOOLTIP="返回兩個指定的範圍(含)之間的隨機整數。";s.Msg.MATH_ROUND_HELPURL="https://zh.wikipedia.org/wiki/數值修約";s.Msg.MATH_ROUND_OPERATOR_ROUND="四捨五入";s.Msg.MATH_ROUND_OPERATOR_ROUNDDOWN="向下舍入";s.Msg.MATH_ROUND_OPERATOR_ROUNDUP="向上舍入";s.Msg.MATH_ROUND_TOOLTIP="數字向上或向下舍入。";s.Msg.MATH_SINGLE_HELPURL="https://zh.wikipedia.org/wiki/平方根";s.Msg.MATH_SINGLE_OP_ABSOLUTE="絕對";s.Msg.MATH_SINGLE_OP_ROOT="平方根";s.Msg.MATH_SINGLE_TOOLTIP_ABS="返回一個數的絕對值。";s.Msg.MATH_SINGLE_TOOLTIP_EXP="返回數的e次方。";s.Msg.MATH_SINGLE_TOOLTIP_LN="返回一個數的自然對數。";s.Msg.MATH_SINGLE_TOOLTIP_LOG10="返回數字的對數。";s.Msg.MATH_SINGLE_TOOLTIP_NEG="返回數的邏輯非。";s.Msg.MATH_SINGLE_TOOLTIP_POW10="返回數的10次方。";s.Msg.MATH_SINGLE_TOOLTIP_ROOT="返回數的平方根。";s.Msg.MATH_SUBTRACTION_SYMBOL="-";s.Msg.MATH_SUM="Sum";s.Msg.MATH_TRIG_ACOS="acos";s.Msg.MATH_TRIG_ASIN="asin";s.Msg.MATH_TRIG_ATAN="atan";s.Msg.MATH_TRIG_COS="cos";s.Msg.MATH_TRIG_HELPURL="https://zh.wikipedia.org/wiki/三角函數";s.Msg.MATH_TRIG_SIN="sin";s.Msg.MATH_TRIG_TAN="tan";s.Msg.MATH_TRIG_TOOLTIP_ACOS="返回一個數的反余弦值。";s.Msg.MATH_TRIG_TOOLTIP_ASIN="返回一個數的反正弦值。";s.Msg.MATH_TRIG_TOOLTIP_ATAN="返回指定角度的反正切值。";s.Msg.MATH_TRIG_TOOLTIP_COS="返回指定角度的余弦值(非弧度)。";s.Msg.MATH_TRIG_TOOLTIP_SIN="返回指定角度的正弦值(非弧度)。";s.Msg.MATH_TRIG_TOOLTIP_TAN="返回指定角度的正切值(非弧度)。";s.Msg.NEW_VARIABLE="創建變量...";s.Msg.NEW_VARIABLE_TITLE="新變量的名稱:";s.Msg.ORDINAL_NUMBER_SUFFIX="空白";s.Msg.PLATFORM_IMPORT="import platform";s.Msg.PROCEDURES_ALLOW_STATEMENTS="允許宣告";s.Msg.PROCEDURES_BEFORE_PARAMS="與:";s.Msg.PROCEDURES_CALLNORETURN_HELPURL="https://zh.wikipedia.org/wiki/子程序";s.Msg.PROCEDURES_CALLNORETURN_TOOLTIP='運行用戶定義的函數" %1"。';s.Msg.PROCEDURES_CALLRETURN_HELPURL="https://zh.wikipedia.org/wiki/子程序";s.Msg.PROCEDURES_CALLRETURN_TOOLTIP='運行用戶定義的函數" %1",並使用它的輸出值。';s.Msg.PROCEDURES_CALL_BEFORE_PARAMS="與:";s.Msg.PROCEDURES_CREATE_DO='創建" %1"';s.Msg.PROCEDURES_DEFNORETURN_COMMENT="描述該功能...";s.Msg.PROCEDURES_DEFNORETURN_DO="執行";s.Msg.PROCEDURES_DEFNORETURN_HELPURL="https://zh.wikipedia.org/wiki/子程序";s.Msg.PROCEDURES_DEFNORETURN_PROCEDURE="做點什麼";s.Msg.PROCEDURES_DEFNORETURN_TITLE="定義";s.Msg.PROCEDURES_DEFNORETURN_TOOLTIP="創建一個不帶輸出值的函數。";s.Msg.PROCEDURES_DEFRETURN_HELPURL="https://zh.wikipedia.org/wiki/子程序";s.Msg.PROCEDURES_DEFRETURN_RETURN="返回";s.Msg.PROCEDURES_DEFRETURN_TOOLTIP="創建一個有輸出值的函數。";s.Msg.PROCEDURES_DEF_DUPLICATE_WARNING="警告: 此函數具有重複參數。";s.Msg.PROCEDURES_HIGHLIGHT_DEF="突出顯示函數定義";s.Msg.PROCEDURES_IFRETURN_HELPURL="http://c2.com/cgi/wiki?GuardClause";s.Msg.PROCEDURES_IFRETURN_TOOLTIP="如果值為真,則返回第二個值。";s.Msg.PROCEDURES_IFRETURN_WARNING="警告: 僅在定義函數內可使用此塊。";s.Msg.PROCEDURES_MAINFUNCTION="Define Main function";s.Msg.PROCEDURES_MUTATORARG_TITLE="輸入名稱:";s.Msg.PROCEDURES_MUTATORARG_TOOLTIP="添加函數輸入。";s.Msg.PROCEDURES_MUTATORCONTAINER_TITLE="輸入";s.Msg.PROCEDURES_MUTATORCONTAINER_TOOLTIP="添加、刪除或重新排此函數的輸入。";s.Msg.REDO="重做";s.Msg.REMOVE_COMMENT="刪除註釋";s.Msg.RENAME_VARIABLE="重命名變量...";s.Msg.RENAME_VARIABLE_TITLE='將所有" %1"變量重命名為:';s.Msg.REQUEST_DATA="data";s.Msg.REQUEST_IMPORT="import requests";s.Msg.REQUEST_POST_DATATYPE="Request Post Data: JSON";s.Msg.REQUEST_SET_URL="Set URL:";s.Msg.SYSTEM_EXIT="Sys.exit";s.Msg.SYSTEM_IMPORT="import sys";s.Msg.TEXT_APPEND_APPENDTEXT="追加文本";s.Msg.TEXT_APPEND_HELPURL="https://github.com/google/blockly/wiki/Text#text-modification";s.Msg.TEXT_APPEND_TO="在";s.Msg.TEXT_APPEND_TOOLTIP='將壹些文本追加到變量" %1"。';s.Msg.TEXT_CHANGECASE_HELPURL="https://github.com/google/blockly/wiki/Text#adjusting-text-case";s.Msg.TEXT_CHANGECASE_OPERATOR_LOWERCASE="為小寫";s.Msg.TEXT_CHANGECASE_OPERATOR_TITLECASE="為首字母大寫";s.Msg.TEXT_CHANGECASE_OPERATOR_UPPERCASE="為大寫";s.Msg.TEXT_CHANGECASE_TOOLTIP="使用不同的大小寫復制這段字串。";s.Msg.TEXT_CHARAT_FIRST="獲得首個字元";s.Msg.TEXT_CHARAT_FROM_END="獲得倒數第#個字元";s.Msg.TEXT_CHARAT_FROM_START="獲得字元#";s.Msg.TEXT_CHARAT_HELPURL="https://github.com/google/blockly/wiki/Text#extracting-text";s.Msg.TEXT_CHARAT_INPUT_INTEXT="於文本中";s.Msg.TEXT_CHARAT_LAST="獲得最後一個字元";s.Msg.TEXT_CHARAT_RANDOM="獲取隨機的字母";s.Msg.TEXT_CHARAT_TAIL="";s.Msg.TEXT_CHARAT_TOOLTIP="返回位於指定位置的字母。";s.Msg.TEXT_CREATE_JOIN_ITEM_TOOLTIP="將一個項添加到文本中。";s.Msg.TEXT_CREATE_JOIN_TITLE_JOIN="加入";s.Msg.TEXT_CREATE_JOIN_TOOLTIP="添加、移除或重新排列各節來重新配置這個文本塊。";s.Msg.TEXT_GET_SUBSTRING_END_FROM_END="到倒數第#個字元";s.Msg.TEXT_GET_SUBSTRING_END_FROM_START="到字元#";s.Msg.TEXT_GET_SUBSTRING_END_LAST="到最後一個字元";s.Msg.TEXT_GET_SUBSTRING_HELPURL="https://github.com/google/blockly/wiki/Text#extracting-a-region-of-text";s.Msg.TEXT_GET_SUBSTRING_INPUT_IN_TEXT="自文本";s.Msg.TEXT_GET_SUBSTRING_START_FIRST="取得段落字串自首個字元";s.Msg.TEXT_GET_SUBSTRING_START_FROM_END="取得段落字串自倒數第#個字元";s.Msg.TEXT_GET_SUBSTRING_START_FROM_START="取得段落字串自#";s.Msg.TEXT_GET_SUBSTRING_TAIL="";s.Msg.TEXT_GET_SUBSTRING_TOOLTIP="返回指定的部分文本。";s.Msg.TEXT_INDEXOF_HELPURL="https://github.com/google/blockly/wiki/Text#finding-text";s.Msg.TEXT_INDEXOF_INPUT_INTEXT="自文本";s.Msg.TEXT_INDEXOF_OPERATOR_FIRST="尋找首個出現的文本";s.Msg.TEXT_INDEXOF_OPERATOR_LAST="尋找最後一個出現的文本";s.Msg.TEXT_INDEXOF_TAIL="空白";s.Msg.TEXT_INDEXOF_TOOLTIP="返回在第二個字串中的首個/最後一個匹配項的索引值。如果未找到則返回%1。";s.Msg.TEXT_ISEMPTY_HELPURL="https://github.com/google/blockly/wiki/Text#checking-for-empty-text";s.Msg.TEXT_ISEMPTY_TITLE="%1是空的";s.Msg.TEXT_ISEMPTY_TOOLTIP="如果提供的文本為空,則返回真。";s.Msg.TEXT_JOIN_HELPURL="https://github.com/google/blockly/wiki/Text#text-creation";s.Msg.TEXT_JOIN_TITLE_CREATEWITH="建立字串使用";s.Msg.TEXT_JOIN_TOOLTIP="透過串起任意數量的項以建立壹段字串。";s.Msg.TEXT_LENGTH_HELPURL="https://github.com/google/blockly/wiki/Text#text-modification";s.Msg.TEXT_LENGTH_TITLE="%1的長度";s.Msg.TEXT_LENGTH_TOOLTIP="返回提供文本的字母數(包括空格)。";s.Msg.TEXT_LOWER="set lower case";s.Msg.TEXT_PRINT_HELPURL="https://github.com/google/blockly/wiki/Text#printing-text";s.Msg.TEXT_PRINT_TITLE="打印%1";s.Msg.TEXT_PRINT_TITLE_PRINT="print";s.Msg.TEXT_PRINT_TOOLTIP="打印指定的字串、數字或其他值。";s.Msg.TEXT_PROMPT_HELPURL="https://github.com/google/blockly/wiki/Text#getting-input-from-the-user";s.Msg.TEXT_PROMPT_TOOLTIP_NUMBER="提示用戶輸入數字。";s.Msg.TEXT_PROMPT_TOOLTIP_TEXT="提示用戶輸入壹些文本。";s.Msg.TEXT_PROMPT_TYPE_NUMBER="輸入數字並顯示提示消息";s.Msg.TEXT_PROMPT_TYPE_TEXT="輸入數字並顯示提示消息";s.Msg.TEXT_TEXT_HELPURL="https://zh.wikipedia.org/wiki/字串";s.Msg.TEXT_TEXT_TOOLTIP="一個字母、單詞或壹欄文本。";s.Msg.TEXT_TRIM_HELPURL="https://github.com/google/blockly/wiki/Text#trimming-removing-spaces";s.Msg.TEXT_TRIM_OPERATOR_BOTH="消除兩側空格";s.Msg.TEXT_TRIM_OPERATOR_LEFT="消除左側空格";s.Msg.TEXT_TRIM_OPERATOR_RIGHT="消除右側空格";s.Msg.TEXT_TRIM_TOOLTIP="復制這段字串的同時刪除兩端多余的空格。";s.Msg.THREAD_IMPORT="import threading";s.Msg.THREAD_SET_TARGET="threading set target";s.Msg.THREAD_START="start";s.Msg.THREAD_THREADING="threading";s.Msg.TODAY="今天";s.Msg.TYPE_CHECK="type of";s.Msg.UNDO="撤銷";s.Msg.VARIABLES_DEFAULT_NAME="項目";s.Msg.VARIABLES_GET_CREATE_SET='創建"設定 %1"';s.Msg.VARIABLES_GET_HELPURL="https://github.com/google/blockly/wiki/Variables#get";s.Msg.VARIABLES_GET_SELF="get self";s.Msg.VARIABLES_GET_TOOLTIP="返回此變量的值。";s.Msg.VARIABLES_SET="設定 %1 爲 %2";s.Msg.VARIABLES_SET_CREATE_GET='創建" %1"';s.Msg.VARIABLES_SET_HELPURL="https://github.com/google/blockly/wiki/Variables#set";s.Msg.VARIABLES_SET_SELF="set self";s.Msg.VARIABLES_SET_SELF_TO="to";s.Msg.VARIABLES_SET_TAIL="=";s.Msg.VARIABLES_SET_TITLE="set";s.Msg.VARIABLES_SET_TOOLTIP="設定此變量,以使它和輸入值相等。";s.Msg.VARIABLE_ALREADY_EXISTS='已存在名為" %1"的變量。';s.Msg.VISIONKIT_AIY_VISION_INFERENCE="AIY Vision Inference";s.Msg.VISIONKIT_ANNOTATOR="Annotator";s.Msg.VISIONKIT_ANNOTATOR_BOUNDING="Annotator Bounding Box";s.Msg.VISIONKIT_ANNOTATOR_FILL="fill=";s.Msg.VISIONKIT_ANNOTATOR_SETTING="set dimensions:";s.Msg.VISIONKIT_CAMERA_INFERENCE="Camera Inference as";s.Msg.VISIONKIT_CLOUDEVENT_API="Cloud Event API:";s.Msg.VISIONKIT_DO="Do";s.Msg.VISIONKIT_GETINFERENCE="Get Inference";s.Msg.VISIONKIT_GETMODEL_MODEL="model";s.Msg.VISIONKIT_GETMODEL_Of="of";s.Msg.VISIONKIT_IMPORT="from";s.Msg.VISIONKIT_IMPORT_ANNOTATOR="annotator import";s.Msg.VISIONKIT_IMPORT_INFERENCE="inference import";s.Msg.VISIONKIT_IMPORT_MODELS="models import";s.Msg.VISIONKIT_JOY_DETECT="Detect Joy Score and stored it to Core Cloud";s.Msg.VISIONKIT_MODEL="Model";s.Msg.VISIONKIT_RUN_INFERENCE="Run inference";s.Msg.VISIONKIT_SETUP="Google AIY Vision Kit Setup";s.Msg.VISIONKIT_USE_MODEL="Use model";s.Msg.VOICEKIT_ASSISTANT="Assistant";s.Msg.VOICEKIT_DEMO_1="Command Control Demo";s.Msg.VOICEKIT_DEMO_2="Via Google Assistant";s.Msg.VOICEKIT_EVENTTYPE_ASSISTANT="Assistant Event Type:";s.Msg.VOICEKIT_EVENTTYPE_IMPORT="import EventType";s.Msg.VOICEKIT_EVENT_ARGS="event args";s.Msg.VOICEKIT_EVENT_OF="of";s.Msg.VOICEKIT_EVENT_TYPE_OF="event type of";s.Msg.VOICEKIT_FROM="from";s.Msg.VOICEKIT_GET_CREDENTIAL="Get Assistant Credential";s.Msg.VOICEKIT_IMPORT_ASSISTANT="import Assistant";s.Msg.VOICEKIT_IMPORT_AUTH="import auth_helpers";s.Msg.VOICEKIT_IMPORT_TTS="import TTS";s.Msg.VOICEKIT_IMPORT_TTS_SAY="aiy.voice.tts.say";s.Msg.VOICEKIT_SETUP="Google AIY Voice Kit Setup";s.Msg.VOICEKIT_SET_CREDENTIAL="set credential for Assistant";s.Msg.VOICEKIT_SET_DO="do";s.Msg.VOICEKIT_SET_FROM="from";s.Msg.PROCEDURES_DEFRETURN_TITLE=s.Msg.PROCEDURES_DEFNORETURN_TITLE;s.Msg.CONTROLS_IF_IF_TITLE_IF=s.Msg.CONTROLS_IF_MSG_IF;s.Msg.CONTROLS_WHILEUNTIL_INPUT_DO=s.Msg.CONTROLS_REPEAT_INPUT_DO;s.Msg.CONTROLS_IF_MSG_THEN=s.Msg.CONTROLS_REPEAT_INPUT_DO;s.Msg.CONTROLS_IF_ELSE_TITLE_ELSE=s.Msg.CONTROLS_IF_MSG_ELSE;s.Msg.PROCEDURES_DEFRETURN_PROCEDURE=s.Msg.PROCEDURES_DEFNORETURN_PROCEDURE;s.Msg.LISTS_GET_SUBLIST_INPUT_IN_LIST=s.Msg.LISTS_INLIST;s.Msg.LISTS_GET_INDEX_INPUT_IN_LIST=s.Msg.LISTS_INLIST;s.Msg.MATH_CHANGE_TITLE_ITEM=s.Msg.VARIABLES_DEFAULT_NAME;s.Msg.VARIABLES_SET_ITEM=s.Msg.VARIABLES_DEFAULT_NAME;s.Msg.PROCEDURES_DEFRETURN_DO=s.Msg.PROCEDURES_DEFNORETURN_DO;s.Msg.CONTROLS_IF_ELSEIF_TITLE_ELSEIF=s.Msg.CONTROLS_IF_MSG_ELSEIF;s.Msg.LISTS_GET_INDEX_HELPURL=s.Msg.LISTS_INDEX_OF_HELPURL;s.Msg.CONTROLS_FOREACH_INPUT_DO=s.Msg.CONTROLS_REPEAT_INPUT_DO;s.Msg.LISTS_SET_INDEX_INPUT_IN_LIST=s.Msg.LISTS_INLIST;s.Msg.CONTROLS_FOR_INPUT_DO=s.Msg.CONTROLS_REPEAT_INPUT_DO;s.Msg.LISTS_CREATE_WITH_ITEM_TITLE=s.Msg.VARIABLES_DEFAULT_NAME;s.Msg.TEXT_APPEND_VARIABLE=s.Msg.VARIABLES_DEFAULT_NAME;s.Msg.TEXT_CREATE_JOIN_ITEM_TITLE_ITEM=s.Msg.VARIABLES_DEFAULT_NAME;s.Msg.LISTS_INDEX_OF_INPUT_IN_LIST=s.Msg.LISTS_INLIST;s.Msg.PROCEDURES_DEFRETURN_COMMENT=s.Msg.PROCEDURES_DEFNORETURN_COMMENT;s.Msg.CONTROL_FOREVER="重複執行";s.Msg.CONTROL_REPEAT="重複執行 %1 次";s.Msg.CONTROL_IF="如果 %1 那麼";s.Msg.CONTROL_ELSE="否則";s.Msg.CONTROL_STOP="停止";s.Msg.CONTROL_STOP_ALL="全部腳本";s.Msg.CONTROL_STOP_THIS="這個腳本";s.Msg.CONTROL_STOP_OTHER="該角色的其他腳本";s.Msg.CONTROL_WAIT="等待 %1 秒";s.Msg.CONTROL_WAITUNTIL="在 %1 之前壹直等待";s.Msg.CONTROL_REPEATUNTIL="重複執行直到 %1";s.Msg.CONTROL_WHILE="當 %1 重複執行";s.Msg.CONTROL_FOREACH="對於 %2 中的每個 %1";s.Msg.CONTROL_STARTASCLONE="當作為克隆體啟動時";s.Msg.CONTROL_CREATECLONEOF="克隆 %1";s.Msg.CONTROL_CREATECLONEOF_MYSELF="自己";s.Msg.CONTROL_DELETETHISCLONE="刪除此克隆體";s.Msg.CONTROL_COUNTER="計數器";s.Msg.CONTROL_INCRCOUNTER="計數器加壹";s.Msg.CONTROL_CLEARCOUNTER="計數器歸零";s.Msg.CONTROL_ALLATONCE="所有腳本";s.Msg.DATA_SETVARIABLETO="將 %1 設為 %2";s.Msg.DATA_CHANGEVARIABLEBY="將 %1 增加 %2";s.Msg.DATA_SHOWVARIABLE="顯示變量 %1";s.Msg.DATA_HIDEVARIABLE="隱藏變量 %1";s.Msg.DATA_ADDTOLIST="將 %1 加入 %2";s.Msg.DATA_DELETEOFLIST="刪除 %2 的第 %1 項";s.Msg.DATA_DELETEALLOFLIST="刪除 %1 的全部項目";s.Msg.DATA_INSERTATLIST="在 %3 的第 %2 項插入 %1";s.Msg.DATA_REPLACEITEMOFLIST="將 %2 的第 %1 項替換為 %3";s.Msg.DATA_ITEMOFLIST="%2 的第 %1 項";s.Msg.DATA_ITEMNUMOFLIST="%2 中首個 %1 的編號";s.Msg.DATA_LENGTHOFLIST="%1 的項目數";s.Msg.DATA_LISTCONTAINSITEM="%1 包含 %2 ?";s.Msg.DATA_SHOWLIST="顯示陣列 %1";s.Msg.DATA_HIDELIST="隱藏陣列 %1";s.Msg.DATA_INDEX_ALL="全部";s.Msg.DATA_INDEX_LAST="末尾";s.Msg.DATA_INDEX_RANDOM="隨機";s.Msg.EVENT_WHENFLAGCLICKED="當 %1 被點擊";s.Msg.EVENT_WHENTHISSPRITECLICKED="當角色被點擊";s.Msg.EVENT_WHENSTAGECLICKED="當舞臺被點擊";s.Msg.EVENT_WHENTOUCHINGOBJECT="當該角色碰到 %1";s.Msg.EVENT_WHENBROADCASTRECEIVED="當接收到 %1";s.Msg.EVENT_WHENBACKDROPSWITCHESTO="當背景換成 %1";s.Msg.EVENT_WHENGREATERTHAN="當 %1 > %2";s.Msg.EVENT_WHENGREATERTHAN_TIMER="計時器";s.Msg.EVENT_WHENGREATERTHAN_LOUDNESS="響度";s.Msg.EVENT_BROADCAST="廣播 %1";s.Msg.EVENT_BROADCASTANDWAIT="廣播 %1 並等待";s.Msg.EVENT_WHENKEYPRESSED="當按下 %1 鍵";s.Msg.EVENT_WHENKEYPRESSED_SPACE="空格";s.Msg.EVENT_WHENKEYPRESSED_LEFT="←";s.Msg.EVENT_WHENKEYPRESSED_RIGHT="→";s.Msg.EVENT_WHENKEYPRESSED_DOWN="↓";s.Msg.EVENT_WHENKEYPRESSED_UP="↑";s.Msg.EVENT_WHENKEYPRESSED_ANY="任意";s.Msg.LOOKS_SAYFORSECS="說 %1 %2 秒";s.Msg.LOOKS_SAY="說 %1";s.Msg.LOOKS_HELLO="妳好!";s.Msg.LOOKS_THINKFORSECS="思考 %1 %2 秒";s.Msg.LOOKS_THINK="思考 %1";s.Msg.LOOKS_HMM="嗯……";s.Msg.LOOKS_SHOW="顯示";s.Msg.LOOKS_HIDE="隱藏";s.Msg.LOOKS_HIDEALLSPRITES="隱藏所有角色";s.Msg.LOOKS_EFFECT_COLOR="顏色";s.Msg.LOOKS_EFFECT_FISHEYE="魚眼";s.Msg.LOOKS_EFFECT_WHIRL="漩渦";s.Msg.LOOKS_EFFECT_PIXELATE="畫素化";s.Msg.LOOKS_EFFECT_MOSAIC="馬賽克";s.Msg.LOOKS_EFFECT_BRIGHTNESS="亮度";s.Msg.LOOKS_EFFECT_GHOST="虛像";s.Msg.LOOKS_CHANGEEFFECTBY="將 %1 特效增加 %2";s.Msg.LOOKS_SETEFFECTTO="將 %1 特效設定為 %2";s.Msg.LOOKS_CLEARGRAPHICEFFECTS="清除圖形特效";s.Msg.LOOKS_CHANGESIZEBY="將大小增加 %1";s.Msg.LOOKS_SETSIZETO="將大小設為 %1";s.Msg.LOOKS_SIZE="大小";s.Msg.LOOKS_CHANGESTRETCHBY="伸縮%1";s.Msg.LOOKS_SETSTRETCHTO="設定伸縮為%1 %";s.Msg.LOOKS_SWITCHCOSTUMETO="換成 %1 造型";s.Msg.LOOKS_NEXTCOSTUME="下一個造型";s.Msg.LOOKS_SWITCHBACKDROPTO="換成 %1 背景";s.Msg.LOOKS_GOTOFRONTBACK="移到最 %1 ";s.Msg.LOOKS_GOTOFRONTBACK_FRONT="前面";s.Msg.LOOKS_GOTOFRONTBACK_BACK="後面";s.Msg.LOOKS_GOFORWARDBACKWARDLAYERS="%1 %2 層";s.Msg.LOOKS_GOFORWARDBACKWARDLAYERS_FORWARD="前移";s.Msg.LOOKS_GOFORWARDBACKWARDLAYERS_BACKWARD="後移";s.Msg.LOOKS_BACKDROPNUMBERNAME="背景 %1";s.Msg.LOOKS_COSTUMENUMBERNAME="造型 %1";s.Msg.LOOKS_NUMBERNAME_NUMBER="編號";s.Msg.LOOKS_NUMBERNAME_NAME="名稱";s.Msg.LOOKS_SWITCHBACKDROPTOANDWAIT="換成 %1 背景並等待";s.Msg.LOOKS_NEXTBACKDROP_BLOCK="下一個背景";s.Msg.LOOKS_NEXTBACKDROP="下一個背景";s.Msg.LOOKS_PREVIOUSBACKDROP="上一個背景";s.Msg.LOOKS_RANDOMBACKDROP="隨機背景";s.Msg.MOTION_MOVESTEPS="移動 %1 步";s.Msg.MOTION_TURNLEFT="左轉 %1 %2 度";s.Msg.MOTION_TURNRIGHT="右轉 %1 %2 度";s.Msg.MOTION_POINTINDIRECTION="面向 %1 方向";s.Msg.MOTION_POINTTOWARDS="面向 %1";s.Msg.MOTION_POINTTOWARDS_POINTER="鼠標指針";s.Msg.MOTION_GOTO="移到 %1";s.Msg.MOTION_GOTO_POINTER="鼠標指針";s.Msg.MOTION_GOTO_RANDOM="隨機位置";s.Msg.MOTION_GOTOXY="移到 x: %1 y: %2";s.Msg.MOTION_GLIDESECSTOXY="在 %1 秒內滑行到 x: %2 y: %3";s.Msg.MOTION_GLIDETO="在 %1 秒內滑行到 %2";s.Msg.MOTION_GLIDETO_POINTER="鼠標指針";s.Msg.MOTION_GLIDETO_RANDOM="隨機位置";s.Msg.MOTION_CHANGEXBY="將x座標增加 %1";s.Msg.MOTION_SETX="將x座標設為 %1";s.Msg.MOTION_CHANGEYBY="將y座標增加 %1";s.Msg.MOTION_SETY="將y座標設為 %1";s.Msg.MOTION_IFONEDGEBOUNCE="碰到邊緣就反彈";s.Msg.MOTION_SETROTATIONSTYLE="將旋轉方式設為 %1";s.Msg.MOTION_SETROTATIONSTYLE_LEFTRIGHT="左右翻轉";s.Msg.MOTION_SETROTATIONSTYLE_DONTROTATE="不可旋轉";s.Msg.MOTION_SETROTATIONSTYLE_ALLAROUND="任意旋轉";s.Msg.MOTION_XPOSITION="x 座標";s.Msg.MOTION_YPOSITION="y 座標";s.Msg.MOTION_DIRECTION="方向";s.Msg.MOTION_SCROLLRIGHT="向右滾動 %1";s.Msg.MOTION_SCROLLUP="向上滾動 %1";s.Msg.MOTION_ALIGNSCENE="和場景 %1 對齊";s.Msg.MOTION_ALIGNSCENE_BOTTOMLEFT="左下角";s.Msg.MOTION_ALIGNSCENE_BOTTOMRIGHT="右下角";s.Msg.MOTION_ALIGNSCENE_MIDDLE="中間";s.Msg.MOTION_ALIGNSCENE_TOPLEFT="左上角";s.Msg.MOTION_ALIGNSCENE_TOPRIGHT="右上角";s.Msg.MOTION_XSCROLL="x滾動位置";s.Msg.MOTION_YSCROLL="y滾動位置";s.Msg.MOTION_STAGE_SELECTED="選中了舞臺:不可使用運動類積木";s.Msg.OPERATORS_ADD="%1 + %2";s.Msg.OPERATORS_SUBTRACT="%1 - %2";s.Msg.OPERATORS_MULTIPLY="%1 * %2";s.Msg.OPERATORS_DIVIDE="%1 / %2";s.Msg.OPERATORS_RANDOM="在 %1 和 %2 中隨機選一個數";s.Msg.OPERATORS_GT="%1 > %2";s.Msg.OPERATORS_LT="%1 < %2";s.Msg.OPERATORS_EQUALS="%1 = %2";s.Msg.OPERATORS_AND="%1 與 %2";s.Msg.OPERATORS_OR="%1 或 %2";s.Msg.OPERATORS_NOT="%1 不成立";s.Msg.OPERATORS_JOIN="連接 %1 和 %2";s.Msg.OPERATORS_JOIN_APPLE="蘋果";s.Msg.OPERATORS_JOIN_BANANA="香蕉";s.Msg.OPERATORS_LETTEROF="%2 的第 %1 個字元";s.Msg.OPERATORS_LETTEROF_APPLE="果";s.Msg.OPERATORS_LENGTH="%1 的長度";s.Msg.OPERATORS_CONTAINS="%1 包含 %2 ?";s.Msg.OPERATORS_MOD="%1 除以 %2 的餘數";s.Msg.OPERATORS_ROUND="將 %1 四舍五入";s.Msg.OPERATORS_MATHOP="%2 的 %1";s.Msg.OPERATORS_MATHOP_ABS="絕對值";s.Msg.OPERATORS_MATHOP_FLOOR="向下取整";s.Msg.OPERATORS_MATHOP_CEILING="向上取整";s.Msg.OPERATORS_MATHOP_SQRT="平方根";s.Msg.OPERATORS_MATHOP_SIN="sin";s.Msg.OPERATORS_MATHOP_COS="cos";s.Msg.OPERATORS_MATHOP_TAN="tan";s.Msg.OPERATORS_MATHOP_ASIN="asin";s.Msg.OPERATORS_MATHOP_ACOS="acos";s.Msg.OPERATORS_MATHOP_ATAN="atan";s.Msg.OPERATORS_MATHOP_LN="ln";s.Msg.OPERATORS_MATHOP_LOG="log";s.Msg.OPERATORS_MATHOP_EEXP="e ^";s.Msg.OPERATORS_MATHOP_10EXP="10 ^";s.Msg.PROCEDURES_DEFINITION="定義 %1";s.Msg.SENSING_TOUCHINGOBJECT="碰到 %1 ?";s.Msg.SENSING_TOUCHINGOBJECT_POINTER="鼠標指針";s.Msg.SENSING_TOUCHINGOBJECT_EDGE="舞臺邊緣";s.Msg.SENSING_TOUCHINGCOLOR="碰到顏色 %1 ?";s.Msg.SENSING_COLORISTOUCHINGCOLOR="顏色 %1 碰到 %2 ?";s.Msg.SENSING_DISTANCETO="到 %1 的距離";s.Msg.SENSING_DISTANCETO_POINTER="鼠標指針";s.Msg.SENSING_ASKANDWAIT="詢問 %1 並等待";s.Msg.SENSING_ASK_TEXT="妳叫什麼名字?";s.Msg.SENSING_ANSWER="回答";s.Msg.SENSING_KEYPRESSED="按下 %1 鍵?";s.Msg.SENSING_MOUSEDOWN="按下鼠標?";s.Msg.SENSING_MOUSEX="鼠標的x座標";s.Msg.SENSING_MOUSEY="鼠標的y座標";s.Msg.SENSING_SETDRAGMODE="將拖動模式設為 %1";s.Msg.SENSING_SETDRAGMODE_DRAGGABLE="可拖動";s.Msg.SENSING_SETDRAGMODE_NOTDRAGGABLE="不可拖動";s.Msg.SENSING_LOUDNESS="響度";s.Msg.SENSING_LOUD="響聲?";s.Msg.SENSING_TIMER="計時器";s.Msg.SENSING_RESETTIMER="計時器歸零";s.Msg.SENSING_OF="%2 的 %1";s.Msg.SENSING_OF_XPOSITION="x 座標";s.Msg.SENSING_OF_YPOSITION="y 座標";s.Msg.SENSING_OF_DIRECTION="方向";s.Msg.SENSING_OF_COSTUMENUMBER="造型編號";s.Msg.SENSING_OF_COSTUMENAME="造型名稱";s.Msg.SENSING_OF_SIZE="大小";s.Msg.SENSING_OF_VOLUME="音量";s.Msg.SENSING_OF_BACKDROPNUMBER="背景編號";s.Msg.SENSING_OF_BACKDROPNAME="背景名稱";s.Msg.SENSING_OF_STAGE="舞臺";s.Msg.SENSING_CURRENT="當前時間的 %1";s.Msg.SENSING_CURRENT_YEAR="年";s.Msg.SENSING_CURRENT_MONTH="月";s.Msg.SENSING_CURRENT_DATE="日";s.Msg.SENSING_CURRENT_DAYOFWEEK="星期";s.Msg.SENSING_CURRENT_HOUR="時";s.Msg.SENSING_CURRENT_MINUTE="分";s.Msg.SENSING_CURRENT_SECOND="秒";s.Msg.SENSING_DAYSSINCE2000="2000年至今的天數";s.Msg.SENSING_USERNAME="用戶名";s.Msg.SENSING_USERID="用戶id";s.Msg.SOUND_PLAY="播放聲音 %1";s.Msg.SOUND_PLAYUNTILDONE="播放聲音 %1 等待播完";s.Msg.SOUND_STOPALLSOUNDS="停止所有聲音";s.Msg.SOUND_SETEFFECTO="將 %1 音效設為 %2";s.Msg.SOUND_CHANGEEFFECTBY="將 %1 音效增加 %2";s.Msg.SOUND_CLEAREFFECTS="清除音效";s.Msg.SOUND_EFFECTS_PITCH="音調";s.Msg.SOUND_EFFECTS_PAN="左右平衡";s.Msg.SOUND_CHANGEVOLUMEBY="將音量增加 %1";s.Msg.SOUND_SETVOLUMETO="將音量設為 %1%";s.Msg.SOUND_VOLUME="音量";s.Msg.SOUND_RECORD="錄制…";s.Msg.CATEGORY_MOTION="運動";s.Msg.CATEGORY_LOOKS="外觀";s.Msg.CATEGORY_SOUND="聲音";s.Msg.CATEGORY_EVENTS="事件";s.Msg.CATEGORY_CONTROL="控制";s.Msg.CATEGORY_SENSING="偵測";s.Msg.CATEGORY_OPERATORS="運算";s.Msg.CATEGORY_VARIABLES="變量";s.Msg.CATEGORY_MYBLOCKS="自制積木";s.Msg.DUPLICATE="復制";s.Msg.DUPLICATE_PASTE="復制並粘貼";s.Msg.DELETE="刪除";s.Msg.ADD_COMMENT="添加註釋";s.Msg.REMOVE_COMMENT="刪除註釋";s.Msg.DELETE_BLOCK="刪除";s.Msg.DELETE_X_BLOCKS="刪除 %1 積木";s.Msg.DELETE_ALL_BLOCKS="刪除全部 %1 積木?";s.Msg.CLEAN_UP="整理積木";s.Msg.HELP="幫助";s.Msg.UNDO="撤銷";s.Msg.REDO="重做";s.Msg.EDIT_PROCEDURE="編輯";s.Msg.SHOW_PROCEDURE_DEFINITION="查看定義";s.Msg.WORKSPACE_COMMENT_DEFAULT_TEXT="說些什麼……";s.Msg.COLOUR_HUE_LABEL="顏色";s.Msg.COLOUR_SATURATION_LABEL="飽和度";s.Msg.COLOUR_BRIGHTNESS_LABEL="亮度";s.Msg.CHANGE_VALUE_TITLE="更改變量:";s.Msg.RENAME_VARIABLE="修改變量名";s.Msg.RENAME_VARIABLE_TITLE="將所有的「%1」變量名改為:";s.Msg.RENAME_VARIABLE_MODAL_TITLE="修改變量名";s.Msg.NEW_VARIABLE="建立一個變量";s.Msg.NEW_VARIABLE_TITLE="新變量名:";s.Msg.VARIABLE_MODAL_TITLE="新建變量";s.Msg.VARIABLE_ALREADY_EXISTS="已經存在名為「%1」的變量。";s.Msg.VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE="已經存在一個名為「%1」的變量,其類型為「%2」。";s.Msg.DELETE_VARIABLE_CONFIRMATION="刪除%1處「%2」變量嗎?";s.Msg.CANNOT_DELETE_VARIABLE_PROCEDURE="無法刪除變量「%1」,因為函數「%2」的定義中用到了它";s.Msg.DELETE_VARIABLE="刪除變量「%1」";s.Msg.NEW_PROCEDURE="制作新的積木";s.Msg.PROCEDURE_ALREADY_EXISTS="已經存在名為「%1」的程序。";s.Msg.PROCEDURE_DEFAULT_NAME="積木名稱";s.Msg.NEW_LIST="建立一個陣列";s.Msg.NEW_LIST_TITLE="新的陣列名:";s.Msg.LIST_MODAL_TITLE="新建陣列";s.Msg.LIST_ALREADY_EXISTS="名為 「%1」 的陣列已存在。";s.Msg.RENAME_LIST_TITLE="將所有的「%1」的陣列名改為:";s.Msg.RENAME_LIST_MODAL_TITLE="修改陣列名";s.Msg.DEFAULT_LIST_ITEM="東西";s.Msg.NEW_BROADCAST_MESSAGE="新消息";s.Msg.NEW_BROADCAST_MESSAGE_TITLE="新消息的名稱:";s.Msg.BROADCAST_MODAL_TITLE="新消息";s.Msg.DEFAULT_BROADCAST_MESSAGE_NAME="消息1";s.Msg.GROVEZERO_MINIWHEEL_SET_POWER="%1 %2 小車底盤 左輪動力 %3 %,右輪動力 %4 %";s.Msg.GROVEZERO_MINIWHEEL_STOP="%1 %2 小車底盤 停止運動";s.Msg.GROVEZERO_MINIWHEEL_RUN_VELOCITY_AZIMUTH="%1 %2 小車底盤 以 %3 %4";s.Msg.GROVEZERO_MINIWHEEL_OPT1="慢速";s.Msg.GROVEZERO_MINIWHEEL_OPT2="中速";s.Msg.GROVEZERO_MINIWHEEL_OPT3="快速";s.Msg.GROVEZERO_MINIWHEEL_OPT4="前進";s.Msg.GROVEZERO_MINIWHEEL_OPT5="後退";s.Msg.GROVEZERO_MINIWHEEL_OPT6="左轉";s.Msg.GROVEZERO_MINIWHEEL_OPT7="右轉";s.Msg.GROVEZERO_MINIWHEEL_OPT8="順時針轉";s.Msg.GROVEZERO_MINIWHEEL_OPT9="逆時針轉";s.Msg.GROVEZERO_MOTOR_STOP="%1 %2 %3 直流減速馬達 停止轉動";s.Msg.GROVEZERO_DC_MOTOR_TRUN_POWER="%1 %2 %3 直流減速馬達 開始轉動 動力 %4 %";s.Msg.GROVEZERO_SERVO_TURN_ANGLE="%1 %2 伺服馬達 轉到 %3 度";s.Msg.GROVEZERO_RGB_TO_COLOR="%1 %2 紅 %3 綠 %4 藍 %5";s.Msg.GROVEZERO_HSL_TO_COLOR="%1 %2 顏色 %3 飽和度 %4 亮度 %5";s.Msg.GROVEZERO_LED_MATRIX_XY_IS_ON="%1 %2 LED 矩陣 x:%3 y:%4 是否被點亮?";s.Msg.GROVEZERO_LED_MATRIX_SHOW_SHAPE="%1 %2 LED 矩陣 顯示圖案 %3";s.Msg.GROVEZERO_LED_MATRIX_SHOW_STRING="%1 %2 LED 矩陣 顯示字串 %3";s.Msg.GROVEZERO_LED_MATRIX_XY_SET_ON="%1 %2 LED 矩陣 點亮 x: %3 y: %4";s.Msg.GROVEZERO_LED_MATRIX_XY_SET_OFF="%1 %2 LED 矩陣 熄滅 x: %3 y: %4";s.Msg.GROVEZERO_LED_MATRIX_CLEAN="%1 %2 LED 矩陣 全部熄滅";s.Msg.GROVEZERO_RGB_LED_SHOW_STYLE_COLOR="%1 %2 可調彩燈 壹直 %3 %4";s.Msg.GROVEZERO_RGB_LED_SHOW_STYLE="%1 %2 可調彩燈 %3 效果";s.Msg.GROVEZERO_RGB_LED_FADE_FROM_COLOR1_TO_COLOR2="%1 %2 可調彩燈 從 %3 漸變到 %4";s.Msg.GROVEZERO_RGB_LED_SET_BRIGHTNESS="%1 %2 可調彩燈 設定亮度為 %3 %";s.Msg.GROVEZERO_RGB_LED_LIGHT_OFF="%1 %2 可調彩燈 熄滅";s.Msg.GROVEZERO_RGB_LED_OPT1="亮";s.Msg.GROVEZERO_RGB_LED_OPT2="閃爍";s.Msg.GROVEZERO_RGB_LED_OPT3="呼吸";s.Msg.GROVEZERO_RGB_LED_OPT4="彩虹燈";s.Msg.GROVEZERO_RGB_LED_OPT5="隨機色";s.Msg.GROVEZERO_RGB_MATRIX_SHOW_SHAPE="%1 %2 %3 RGB LED 矩陣 顯示圖案 %4";s.Msg.GROVEZERO_RGB_MATRIX_SHOW_STRING="%1 %2 %3 RGB LED 矩陣 顯示字串 %4 %5";s.Msg.GROVEZERO_RGB_MATRIX_SHOW_ANIMA="%1 %2 %3 RGB LED 矩陣 顯示動畫 %4";s.Msg.GROVEZERO_RGB_MATRIX_SHOW_HISTOGRAM="%1 %2 %3 RGB LED 矩陣 繪制柱狀圖 值為 %4";s.Msg.GROVEZERO_RGB_MATRIX_XY_SET_ON="%1 %2 %3 RGB LED 矩陣 點亮 x: %4 y: %5 %6";s.Msg.GROVEZERO_RGB_MATRIX_XY_SET_OFF="%1 %2 %3 RGB LED 矩陣 熄滅 x: %4 y: %5";s.Msg.GROVEZERO_RGB_MATRIX_XY_SET_ON_OFF="%1 %2 %3 RGB LED 矩陣 開關 x: %4 y: %5 %6";s.Msg.GROVEZERO_RGB_MATRIX_XY_IS_ON="%1 %2 %3 RGB LED 矩陣 x: %4 y: %5 被點亮";s.Msg.GROVEZERO_RGB_MATRIX_CLEAN="%1 %2 %3 RGB LED 矩陣 全部熄滅";s.Msg.GROVEZERO_RGB_MATRIX_XY_GET_COLOR="%1 %2 %3 RGB LED 矩陣 x: %4 y: %5 顏色值";s.Msg.GROVEZERO_RGB_MATRIX_ARGS_ANIMA_OPT1="波浪";s.Msg.GROVEZERO_RGB_MATRIX_ARGS_ANIMA_OPT2="順時針畫大方形";s.Msg.GROVEZERO_RGB_MATRIX_ARGS_ANIMA_OPT3="順時針畫小方形";s.Msg.GROVEZERO_RGB_MATRIX_ARGS_ANIMA_OPT4="逆時針畫大方形";s.Msg.GROVEZERO_RGB_MATRIX_ARGS_ANIMA_OPT5="逆時針畫小方形";s.Msg.GROVEZERO_RGB_MATRIX_ARGS_ANIMA_OPT6="變幻";s.Msg.GROVEZERO_RGB_MATRIX_ARGS_ANIMA_OPT7="火焰";s.Msg.GROVEZERO_RGB_MATRIX_ARGS_ANIMA_OPT8="行走";s.Msg.GROVEZERO_RGB_MATRIX_ARGS_ANIMA_OPT9="心碎";s.Msg.GROVEZERO_RGB_MATRIX_XY_SET_ON_OPT1="紅";s.Msg.GROVEZERO_RGB_MATRIX_XY_SET_ON_OPT2="橙";s.Msg.GROVEZERO_RGB_MATRIX_XY_SET_ON_OPT3="黃";s.Msg.GROVEZERO_RGB_MATRIX_XY_SET_ON_OPT4="綠";s.Msg.GROVEZERO_RGB_MATRIX_XY_SET_ON_OPT5="青";s.Msg.GROVEZERO_RGB_MATRIX_XY_SET_ON_OPT6="藍";s.Msg.GROVEZERO_RGB_MATRIX_XY_SET_ON_OPT7="紫";s.Msg.GROVEZERO_RGB_MATRIX_XY_SET_ON_OPT8="粉紅";s.Msg.GROVEZERO_RGB_MATRIX_XY_SET_ON_OPT9="白";s.Msg.GROVEZERO_RGB_MATRIX_XY_SET_ON_OPT10="黑";s.Msg.GROVEZERO_FOUR_DIGIT_WHEN_COUNTDOWN_END="%1 %2 四位數碼管 倒數結束";s.Msg.GROVEZERO_FOUR_DIGIT_SHOW_NUMBER="%1 %2 四位數碼管 顯示 %3";s.Msg.GROVEZERO_FOUR_DIGIT_START_COUNTDOWN="%1 %2 四位數碼管 開始倒數 %3 秒";s.Msg.GROVEZERO_FOUR_DIGIT_OFF="%1 %2 四位數碼管 熄滅";s.Msg.GROVEZERO_FOUR_DIGIT_SET_BRIGHTNESS="%1 %2 四位數碼管 設定亮度 %3 %";s.Msg.GROVEZERO_BUZZER_PLAY_MELODY="%1 %2 蜂鳴器 播放旋律 %3 壹次";s.Msg.GROVEZERO_BUZZER_PLAY_MELODY_OPT0="ba ding";s.Msg.GROVEZERO_BUZZER_PLAY_MELODY_OPT1="wawawawaa";s.Msg.GROVEZERO_BUZZER_PLAY_MELODY_OPT2="jump up";s.Msg.GROVEZERO_BUZZER_PLAY_MELODY_OPT3="jump down";s.Msg.GROVEZERO_BUZZER_PLAY_MELODY_OPT4="power up";s.Msg.GROVEZERO_BUZZER_PLAY_MELODY_OPT5="power down";s.Msg.GROVEZERO_BUZZER_PLAY_MELODY_OPT6="magic wand";s.Msg.GROVEZERO_BUZZER_PLAY_MELODY_OPT7="siren";s.Msg.GROVEZERO_BUZZER_MUTE_FOR_BEAT="%1 %2 蜂鳴器 停頓 %3 拍";s.Msg.GROVEZERO_BUZZER_SET_BPM="%1 %2 蜂鳴器 將節奏(bpm) 設定為 %3";s.Msg.GROVEZERO_BUZZER_ADD_BPM="%1 %2 蜂鳴器 將節奏(bpm) 增加 %3";s.Msg.GROVEZERO_BUZZER_GET_BPM="%1 %2 蜂鳴器 節奏(bpm)";s.Msg.GROVEZERO_BUZZER_STOP="%1 %2 蜂鳴器 停止播放";s.Msg.GROVEZERO_BUZZER_PLAY_NOTE="%1 %2 蜂鳴器 持續播放音符 %3";s.Msg.GROVEZERO_BUZZER_PLAY_NOTE_FOR_BEAT="%1 %2 蜂鳴器 彈奏音符 %3 持續 %4 拍";s.Msg.SOUND_BUZZER_NOTES_OPT0="低 C";s.Msg.SOUND_BUZZER_NOTES_OPT1="低 D";s.Msg.SOUND_BUZZER_NOTES_OPT2="低 E";s.Msg.SOUND_BUZZER_NOTES_OPT3="低 F";s.Msg.SOUND_BUZZER_NOTES_OPT4="低 G";s.Msg.SOUND_BUZZER_NOTES_OPT5="低 A";s.Msg.SOUND_BUZZER_NOTES_OPT6="低 B";s.Msg.SOUND_BUZZER_NOTES_OPT7="中 C";s.Msg.SOUND_BUZZER_NOTES_OPT8="中 D";s.Msg.SOUND_BUZZER_NOTES_OPT9="中 E";s.Msg.SOUND_BUZZER_NOTES_OPT10="中 F";s.Msg.SOUND_BUZZER_NOTES_OPT11="中 G";s.Msg.SOUND_BUZZER_NOTES_OPT12="中 A";s.Msg.SOUND_BUZZER_NOTES_OPT13="中 B";s.Msg.SOUND_BUZZER_NOTES_OPT14="高 C";s.Msg.SOUND_BUZZER_NOTES_OPT15="高 D";s.Msg.SOUND_BUZZER_NOTES_OPT16="高 E";s.Msg.SOUND_BUZZER_NOTES_OPT17="高 F";s.Msg.SOUND_BUZZER_NOTES_OPT18="高 G";s.Msg.SOUND_BUZZER_NOTES_OPT19="高 A";s.Msg.SOUND_BUZZER_NOTES_OPT20="高 B";s.Msg.SOUND_BUZZER_NOTES_OPT21="低 C#";s.Msg.SOUND_BUZZER_NOTES_OPT22="低 D#";s.Msg.SOUND_BUZZER_NOTES_OPT23="低 F#";s.Msg.SOUND_BUZZER_NOTES_OPT24="低 G#";s.Msg.SOUND_BUZZER_NOTES_OPT25="低 A#";s.Msg.SOUND_BUZZER_NOTES_OPT26="中 C#";s.Msg.SOUND_BUZZER_NOTES_OPT27="中 D#";s.Msg.SOUND_BUZZER_NOTES_OPT28="中 F#";s.Msg.SOUND_BUZZER_NOTES_OPT29="中 G#";s.Msg.SOUND_BUZZER_NOTES_OPT30="中 A#";s.Msg.SOUND_BUZZER_NOTES_OPT31="高 C#";s.Msg.SOUND_BUZZER_NOTES_OPT32="高 D#";s.Msg.SOUND_BUZZER_NOTES_OPT33="高 F#";s.Msg.SOUND_BUZZER_NOTES_OPT34="高 G#";s.Msg.SOUND_BUZZER_NOTES_OPT35="高 A#";s.Msg.GROVEZERO_MP3_START_PLAY="%1 %2 MP3播放器 播放第 %3 首歌";s.Msg.GROVEZERO_MP3_PAUSE_OR_PLAY="%1 %2 MP3播放器 %3 播放";s.Msg.GROVEZERO_MP3_SWITCH="%1 %2 MP3播放器 %3";s.Msg.GROVEZERO_MP3_ADD_VOLUME="%1 %2 MP3播放器 將音量增加 %3 %";s.Msg.GROVEZERO_MP3_SET_VOLUME="%1 %2 MP3播放器 將音量設定為 %3 %";s.Msg.GROVEZERO_MP3_STOP_PLAY="%1 %2 MP3播放器 停止播放";s.Msg.GROVEZERO_MP3_PLAY_MODE="%1 %2 MP3播放器 模式為 %3";s.Msg.GROVEZERO_MP3_PAUSE_OR_PLAY_OPT0="暫停";s.Msg.GROVEZERO_MP3_PAUSE_OR_PLAY_OPT1="恢復";s.Msg.GROVEZERO_MP3_SWITCH_OPT0="下壹首";s.Msg.GROVEZERO_MP3_SWITCH_OPT1="上壹首";s.Msg.GROVEZERO_MP3_PLAY_MODE_OPT0="順序播放";s.Msg.GROVEZERO_MP3_PLAY_MODE_OPT1="隨機播放";s.Msg.GROVEZERO_MP3_PLAY_MODE_OPT2="單曲循環";s.Msg.GROVEZERO_MAINBOARD_START="%1 %2 當控制板啟動時";s.Msg.GROVEZERO_MAINBOARD_WHEN_ARRIVAL_TIME="%1 %2 當計時器大於 %3 秒";s.Msg.GROVEZERO_MAINBOARD_WHEN_RADIO_RECEIVE="%1 %2 當無線接收到 %3";s.Msg.GROVEZERO_MAINBOARD_BROADCAST="%1 %2 廣播 %3";s.Msg.GROVEZERO_MAINBOARD_STOP_BROADCAST="%1 %2 停止廣播";s.Msg.GROVEZERO_MAINBOARD_SET_BROADCAST_CHANNEL="%1 %2 設定廣播頻道 %3";s.Msg.GROVEZERO_TWIN_BUTTON_WHEN_CLICK="%1 %2 當 %3 雙按鈕開關 的 %4 被 %5";s.Msg.GROVEZERO_TWIN_BUTTON_IS_PRESSED="%1 %2 %3 雙按鈕開關 的 %4 正在被按下?";s.Msg.GROVEZERO_TWIN_BUTTON_WHEN_CLICK_OPT3="單擊";s.Msg.GROVEZERO_TWIN_BUTTON_WHEN_CLICK_OPT5="長按";s.Msg.GROVEZERO_IMU9_DOF_STATUS_WHEN_CHANGE="%1 %2 當 9軸姿態感應器 %3";s.Msg.GROVEZERO_IMU9_DOF_STATUS_OPT0="豎直向下";s.Msg.GROVEZERO_IMU9_DOF_STATUS_OPT1="豎直向上";s.Msg.GROVEZERO_IMU9_DOF_STATUS_OPT2="向左傾斜";s.Msg.GROVEZERO_IMU9_DOF_STATUS_OPT3="向右傾斜";s.Msg.GROVEZERO_IMU9_DOF_STATUS_OPT4="正面朝上";s.Msg.GROVEZERO_IMU9_DOF_STATUS_OPT5="正面朝下";s.Msg.GROVEZERO_IMU9_DOF_STATUS_OPT6="被搖晃";s.Msg.GROVEZERO_IMU9_DOF_STATUS_OPT7="自由落體";s.Msg.GROVEZERO_IMU9_DOF_STATUS_IS="%1 %2 9軸姿態感應器 %3 ?";s.Msg.GROVEZERO_IMU9_DOF_GET_VALUE="%1 %2 9軸姿態感應器 %3 軸加速度值(mg)";s.Msg.GROVEZERO_PIR_MOTION_SENSOR_DETECT_SOMEONE="%1 %2 當 紅外運動感應器 檢測到人";s.Msg.GROVEZERO_MECH_KEY_WHENCLICK="%1 %2 當 %3 機械按鈕開關 被 %4";s.Msg.GROVEZERO_MECH_KEY_WHENCLICK_OPT0="單擊";s.Msg.GROVEZERO_MECH_KEY_WHENCLICK_OPT1="長按";s.Msg.GROVEZERO_MECH_KEY_IS_PRESSED="%1 %2 %3 機械按鈕開關 正在被按下?";s.Msg.GROVEZERO_MECH_KEY_SET_RGB="%1 %2 %3 機械按鈕開關 背燈亮 %4";s.Msg.GROVEZERO_MECH_KEY_CLOSE_RGB="%1 %2 %3 機械按鈕開關 背燈熄滅";s.Msg.GROVEZERO_KNOB_WHEN_CHANGE="%1 %2 當 %3 旋鈕調節器被 %4";s.Msg.GROVEZERO_KNOB_WHEN_CHANGE_OPT0="順時針旋轉";s.Msg.GROVEZERO_KNOB_WHEN_CHANGE_OPT1="逆時針旋轉";s.Msg.GROVEZERO_KNOB_WHEN_CHANGE_OPT2="按下";s.Msg.GROVEZERO_GESTURE_SENSOR_WHEN_CHANGE="%1 %2 當 手勢識別感應器 檢測到 %3";s.Msg.GROVEZERO_GESTURE_SENSOR_WHEN_CHANGE_OPT0="向左劃";s.Msg.GROVEZERO_GESTURE_SENSOR_WHEN_CHANGE_OPT1="向右劃";s.Msg.GROVEZERO_GESTURE_SENSOR_WHEN_CHANGE_OPT2="向上劃";s.Msg.GROVEZERO_GESTURE_SENSOR_WHEN_CHANGE_OPT3="向下劃";s.Msg.GROVEZERO_GESTURE_SENSOR_WHEN_CHANGE_OPT4="物體靠近";s.Msg.GROVEZERO_GESTURE_SENSOR_WHEN_CHANGE_OPT5="物體遠離";s.Msg.GROVEZERO_GESTURE_SENSOR_WHEN_CHANGE_OPT6="順時針畫圈";s.Msg.GROVEZERO_GESTURE_SENSOR_WHEN_CHANGE_OPT7="逆時針畫圈";s.Msg.GROVEZERO_GESTURE_SENSOR_WHEN_CHANGE_OPT8="手指舞動";s.Msg.GROVEZERO_TOUCHPAD_IS_PRESSED="%1 %2 %3 多觸摸開關 腳位 %4 被按下?";s.Msg.GROVEZERO_TOUCHPAD_WHEN_CLICK="%1 %2 當 %3 多觸摸開關 腳位 %4 被按下";s.Msg.GROVEZERO_LIGHT_SENSOR_GET_VALUE="%1 %2 光線感應器 光線強度(流明)";s.Msg.GROVEZERO_SOUND_SENSOR_GET_VALUE="%1 %2 聲音感應器 聲音響度";s.Msg.GROVEZERO_TEMPERATURESENSOR_GET_VALUE="%1 %2 溫度感應器 溫度值 %3";s.Msg.GROVEZERO_TEMPERATURESENSOR_GET_VALUE_OPT0="℃";s.Msg.GROVEZERO_TEMPERATURESENSOR_GET_VALUE_OPT1="℉";s.Msg.GROVEZERO_SLIDER_GET_VALUE="%1 %2 %3 滑動變阻器 值";s.Msg.GROVEZERO_ULTRASONIC_SENSOR_GET_VALUE="%1 %2 超聲波測距感應器 距離(厘米)";s.Msg.GROVEZERO_TEMHUM_SENSOR_GET_TEM_VALUE="%1 %2 溫濕度感應器 溫度值 %3";s.Msg.GROVEZERO_TEMHUM_SENSOR_GET_HUM_VALUE="%1 %2 溫濕度感應器 濕度值(%)";s.Msg.GROVEZERO_COLOR_LINE_FOLLOWER_GET_COLOR="%1 %2 識色循跡感應器 顏色值";s.Msg.GROVEZERO_COLOR_LINE_FOLLOWER_IS_POSITION="%1 %2 識色循跡感應器 線的位置為 %3";s.Msg.GROVEZERO_COLOR_LINE_FOLLOWER_IS_POSITiON_OPT0="中";s.Msg.GROVEZERO_COLOR_LINE_FOLLOWER_IS_POSITiON_OPT1="右";s.Msg.GROVEZERO_COLOR_LINE_FOLLOWER_IS_POSITiON_OPT2="最右";s.Msg.GROVEZERO_COLOR_LINE_FOLLOWER_IS_POSITiON_OPT3="左";s.Msg.GROVEZERO_COLOR_LINE_FOLLOWER_IS_POSITiON_OPT4="最左";s.Msg.GROVEZERO_COLOR_LINE_FOLLOWER_IS_POSITiON_OPT5="丟失";s.Msg.GROVEZERO_COLOR_LINE_FOLLOWER_IS_COLOR="%1 %2 識色循跡感應器 檢測到 %3 色";s.Msg.GROVEZERO_COLOR_LINE_FOLLOWER_IS_COLOR_OPT0="紅";s.Msg.GROVEZERO_COLOR_LINE_FOLLOWER_IS_COLOR_OPT1="綠";s.Msg.GROVEZERO_COLOR_LINE_FOLLOWER_IS_COLOR_OPT2="藍";s.Msg.GROVEZERO_COLOR_LINE_FOLLOWER_IS_COLOR_OPT3="黑";s.Msg.GROVEZERO_COLOR_LINE_FOLLOWER_IS_COLOR_OPT4="其他";s.Msg.ARDUINO_SEEED_SERVO_MOVE="%1 %2 伺服馬達 管腳 %3 角度 %4 延時 %5";s.Msg.ARDUINO_SEEED_SERVO_READ_DEGREES="%1 %2 伺服馬達 管腳 %3 讀取讀取";s.Msg.ARDUINO_SEEED_LED="%1 %2 LED燈 管腳 %3 設為 %4";s.Msg.ARDUINO_SEEED_BUZZER="%1 %2 蜂鳴器 管腳 %3 設為 %4";s.Msg.ARDUINO_SEEED_RELAY="%1 %2 繼電器 管腳 %3 設為 %4";s.Msg.ARDUINO_SEEED_BTN="%1 %2 按鍵正在被按下 管腳 %3";s.Msg.ARDUINO_SEEED_TILT="%1 %2 傾斜感應器 管腳 %3";s.Msg.ARDUINO_SEEED_TOUCH="%1 %2 觸摸 管腳 %3";s.Msg.ARDUINO_SEEED_ROTATION="%1 %2 旋轉電位計 管腳 %3";s.Msg.ARDUINO_SEEED_SOUND="%1 %2 噪聲(模擬) 管腳 %3";s.Msg.ARDUINO_SEEED_LIGHT="%1 %2 光線感應器 管腳 %3";s.Msg.ARDUINO_SEEED_TEMPERATURE="%1 %2 溫度感應器 管腳 %3";s.Msg.ARDUINO_GROVE_SERIAL_LCD_PRINT="%1 %2 全彩背光LCD屏 打印第1欄 %3 打印第2欄 %4";s.Msg.ARDUINO_GROVE_SERIAL_LCD_PRINT2="%1 %2 全彩背光LCD屏 在第 %3 欄 第 %4 列 打印 %5";s.Msg.ARDUINO_GROVE_SERIAL_LCD_POWER="%1 %2 全彩背光LCD屏 %3";s.Msg.ARDUINO_GROVE_SERIAL_LCD_POWER_OPT1="開";s.Msg.ARDUINO_GROVE_SERIAL_LCD_POWER_OPT2="關";s.Msg.ARDUINO_GROVE_SERIAL_LCD_POWER_OPT3="有光標";s.Msg.ARDUINO_GROVE_SERIAL_LCD_POWER_OPT4="無光標";s.Msg.ARDUINO_GROVE_SERIAL_LCD_POWER_OPT5="閃爍";s.Msg.ARDUINO_GROVE_SERIAL_LCD_POWER_OPT6="不閃爍";s.Msg.ARDUINO_GROVE_SERIAL_LCD_POWER_OPT7="清除";s.Msg.ARDUINO_GROVE_SERIAL_LCD_SETRGB="%1 %2 全彩背光LCD屏 設定顏色 R %3 G %4 B %5";s.Msg.ARDUINO_SEEED_TEMPERATURE_HUMIDITY="%1 %2 溫濕度感應器 管腳 %3 %4";s.Msg.ARDUINO_SEEED_TEMPERATURE_HUMIDITY_OPT1="溫度";s.Msg.ARDUINO_SEEED_TEMPERATURE_HUMIDITY_OPT2="濕度";s.Msg.ARDUINO_SEEED_THUMB_JOYSTICK="%1 %2 拇指控制桿管腳 %3 座標值 %4軸";s.Msg.ARDUINO_SEEED_ULT="%1 %2 超聲波測距感應器距離(cm) 管腳 %3";s.Msg.ARDUINO_SEEED_LINE_FINDER="%1 %2 紅外接近感應器 管腳 %3";s.Msg.ARDUINO_SEEED_LINE_FINDER_R="%1 %2 巡線感應器 管腳 %3";s.Msg.ARDUINO_SEEED_WATER="%1 %2 水分子檢測感應器 管腳 %3";s.Msg.ARDUINO_SEEED_MAGNETIC_SWITCH="%1 %2 磁力開關 管腳 %3";s.Msg.ARDUINO_SEEED_PIR_MOTION="%1 %2 人體紅外感應器 管腳 %3";s.Msg.ARDUINO_SEEED_FLAME="%1 %2 火焰感應器 管腳 %3";s.Msg.ARDUINO_SEEED_COLLISION="%1 %2 碰撞感應器 管腳 %3";s.Msg.ARDUINO_SEEED_HALL="%1 %2 霍爾電磁開關 管腳 %3";s.Msg.ARDUINO_SEEED_SLIDE_POT="%1 %2 滑動電位開關 管腳 %3";s.Msg.ARDUINO_SEEED_MOISTURE="%1 %2 土壤濕度感應器 管腳 %3";s.Msg.ARDUINO_SEEED_4DIGIT_DISPLAY="%1 %2 4位數碼管 管腳 %3 顯示為 %4";s.Msg.ARDUINO_SEEED_RGB_LED="%1 %2 炫彩RGB LED燈 管腳 %3 顯示為 %4 序號 %5";s.Msg.ARDUINO_SEEED_RGB_LED1="%1 %2 炫彩RGB LED燈 管腳 %3 顯示為 R %4 G %5 B %6 序號 %7";s.Msg.ARDUINO_SEEED_RGB_LED10="%1 %2 炫彩RGB LED燈 管腳 %3 顯示為 %4";s.Msg.ARDUINO_SEEED_RGB_LED11="%1 %2 炫彩RGB LED燈 管腳 %3 顯示為 R %4 G %5 B %6";s.Msg.ARDUINO_SEEED_SPEAKER="%1 %2 揚聲器 管腳 %3 播放音符 %4 以%5拍";s.Msg.ARDUINO_SEEED_RECORDER="%1 %2 錄音播放模組 管腳 %3 %4";s.Msg.ARDUINO_SEEED_EL_DRIVER="%1 %2 冷光條驅動 管腳 %3 設為 %4";s.Msg.ARDUINO_SEEED_EL_VIBRATION_MOTOR="%1 %2 震動馬達 管腳 %3 設為 %4";s.Msg.ARDUINO_SEEED_ELECTROMAGNET="%1 %2 電磁鐵模組 管腳 %3 設為 %4";s.Msg.ARDUINO_SEEED_MINI_FAN="%1 %2 迷妳風扇 管腳 %3 設為 %4";s.Msg.ARDUINO_GROVE_SERIAL_3ADA="%1 %2 三軸數字加速度(16g) %3 軸";s.Msg.ARDUINO_GROVE_SERIAL_TOUCH="%1 %2 多通道觸摸感應器 通道 %3";s.Msg.ARDUINO_GROVE_SERIAL_MINI_MOTOR_DRIVER="%1 %2 迷妳馬達驅動模組 馬達 %3 轉速(-255~255)%4";s.Msg.ARDUINO_GROVE_SERIAL_MINI_MOTOR_DRIVER_STOP="%1 %2 迷妳馬達驅動模組 馬達 %3 停止";s.Msg.ARDUINO_SEEED_LED_STRING_LIGHT="%1 %2 LED燈條 管腳 %3 編號 %4 顯示為 R %5 G %6 B %7";s.Msg.ARDUINO_SEEED_LED_BAR="%1 %2 柱狀發光二級管 管腳 %3 %4 %5";s.Msg.ARDUINO_SEEED_LED_CIRCULAR_LED="%1 %2 環形發光二級管 管腳 %3 亮燈 %4";s.Msg.ARDUINO_SEEED_GESTURE="%1 %2 手勢識別感應器 識別手勢 %3?";s.Msg.ARDUINO_SEEED_SPEECH_RECOGNIZER="%1 %2 語音識別感應器 管腳 %3 識別語音 %4?";s.Msg.ARDUINO_FIGURE_OUTPUT="數字輸出 管腳 %1 設為 %2";s.Msg.ARDUINO_FIGURE_INPUT="數字輸入 管腳 %1";s.Msg.ARDUINO_ANALOG_INPUT="模擬輸入 管腳 %1";s.Msg.ARDUINO_ANALOG_OUTPUT="模擬輸出 管腳 %1 賦值為 %2";s.Msg.ARDUINO_PULSE_LEN="脈沖長度 管腳 %1 狀態 %2";s.Msg.ARDUINO_PULSE_LEN_US="脈沖長度 管腳 %1 狀態 %2 超時(微秒) %3";s.Msg.ARDUINO_SERIAL_BAUD_RATE="串口 波特率 %1";s.Msg.ARDUINO_SERIAL_PRINT="串口 寫入文本 %1";s.Msg.ARDUINO_SERIAL_IS_READABLE="串口 有數據可讀嗎?";s.Msg.ARDUINO_SERIAL_READ="串口 讀取字串";s.Msg.ARDUINO_DELAY_MS="延時 毫秒 %1";s.Msg.ARDUINO_DELAY_US="延時 微秒 %1";s.Msg.ARDUINO_SYS_TIME="系統運行時間 %1";s.Msg.ARDUINO_KEEP_WAIT="壹直等待(結束程序)";s.Msg.ARDUINO_FOR1="使用 %1 從 %2 到 %3 長度為 %4";s.Msg.ARDUINO_FOR2="執行 %1";s.Msg.ARDUINO_GROVE_SERIAL_RGB_LED_MATRIX_ON_POINT="%1 %2 RGB矩陣 點亮 x:%3 y:%4 %5";s.Msg.ARDUINO_GROVE_SERIAL_RGB_LED_MATRIX_SHOW_TEXT="%1 %2 RGB矩陣 顯示字串 %3";s.Msg.ARDUINO_GROVE_SERIAL_RGB_LED_MATRIX_SHOW_EMOJS="%1 %2 RGB矩陣 顯示圖案 %3";s.Msg.ARDUINO_GROVE_OTTO_DIY_ROBOT1="%1 %2 Otto DIY機器人 %3 步數:%4 時間:%5";s.Msg.ARDUINO_GROVE_OTTO_DIY_ROBOT2="%1 %2 Otto DIY機器人 %3 步數:%4 時間:%5 方向:%6";s.Msg.ARDUINO_SETUP_LOOP0="初始化 setup";s.Msg.ARDUINO_SETUP_LOOP2="循環 loop";s.Msg.ARDUINO_REPEAT="重複當 %1";s.Msg.ARDUINO_BREAK="中斷循環";s.Msg.ARDUINO_SEEED_GESTURE_OPT0="向上";s.Msg.ARDUINO_SEEED_GESTURE_OPT1="向下";s.Msg.ARDUINO_SEEED_GESTURE_OPT2="向左";s.Msg.ARDUINO_SEEED_GESTURE_OPT3="向右";s.Msg.ARDUINO_SEEED_GESTURE_OPT4="向前";s.Msg.ARDUINO_SEEED_GESTURE_OPT5="向後";s.Msg.ARDUINO_SEEED_GESTURE_OPT6="順時針";s.Msg.ARDUINO_SEEED_GESTURE_OPT7="逆時針";s.Msg.ARDUINO_SEEED_GESTURE_OPT8="揮手";s.Msg.ARDUINO_GROVE_SERIAL_RGB_LED_MATRIX_ON_POINT_OPT0="紅";s.Msg.ARDUINO_GROVE_SERIAL_RGB_LED_MATRIX_ON_POINT_OPT1="橙";s.Msg.ARDUINO_GROVE_SERIAL_RGB_LED_MATRIX_ON_POINT_OPT2="黃";s.Msg.ARDUINO_GROVE_SERIAL_RGB_LED_MATRIX_ON_POINT_OPT3="綠";s.Msg.ARDUINO_GROVE_SERIAL_RGB_LED_MATRIX_ON_POINT_OPT4="青";s.Msg.ARDUINO_GROVE_SERIAL_RGB_LED_MATRIX_ON_POINT_OPT5="藍";s.Msg.ARDUINO_GROVE_SERIAL_RGB_LED_MATRIX_ON_POINT_OPT6="紫";s.Msg.ARDUINO_GROVE_SERIAL_RGB_LED_MATRIX_ON_POINT_OPT7="粉紅";s.Msg.ARDUINO_GROVE_SERIAL_RGB_LED_MATRIX_ON_POINT_OPT8="白";s.Msg.ARDUINO_GROVE_SERIAL_RGB_LED_MATRIX_ON_POINT_OPT9="熄滅";s.Msg.ARDUINO_GROVE_OTTO_DIY_ROBOT1_OPT0="前進";s.Msg.ARDUINO_GROVE_OTTO_DIY_ROBOT1_OPT1="後退";s.Msg.ARDUINO_GROVE_OTTO_DIY_ROBOT1_OPT2="往左";s.Msg.ARDUINO_GROVE_OTTO_DIY_ROBOT1_OPT3="往右";s.Msg.ARDUINO_GROVE_OTTO_DIY_ROBOT2_OPT0="停止";s.Msg.ARDUINO_GROVE_OTTO_DIY_ROBOT2_OPT1="跳動";s.Msg.ARDUINO_GROVE_OTTO_DIY_ROBOT2_OPT2="側踢";s.Msg.ARDUINO_GROVE_OTTO_DIY_ROBOT2_OPT3="搖搖腿";s.Msg.ARDUINO_GROVE_OTTO_DIY_ROBOT2_OPT4="上下搖擺";s.Msg.ARDUINO_GROVE_OTTO_DIY_ROBOT2_OPT5="左右搖擺";s.Msg.ARDUINO_GROVE_OTTO_DIY_ROBOT2_OPT6="舞動腳尖";s.Msg.ARDUINO_GROVE_OTTO_DIY_ROBOT2_OPT7="抖動";s.Msg.ARDUINO_GROVE_OTTO_DIY_ROBOT2_OPT8="上下抖動";s.Msg.ARDUINO_GROVE_OTTO_DIY_ROBOT2_OPT9="太空步";s.Msg.ARDUINO_GROVE_OTTO_DIY_ROBOT2_OPT10="月球漫步";s.Msg.ARDUINO_GROVE_OTTO_DIY_ROBOT2_OPT11="搖擺";s.Msg.ARDUINO_GROVE_OTTO_DIY_ROBOT2_OPT12="向右/向前";s.Msg.ARDUINO_GROVE_OTTO_DIY_ROBOT2_OPT13="向左/向後";s.Msg.ARDUINO_SHIELD_BOT2="%1 %2 Shield Bot 小車 循跡感應器線的位置為 %3";s.Msg.ARDUINO_SHIELD_BOT2_OPT1="中";s.Msg.ARDUINO_SHIELD_BOT2_OPT2="左";s.Msg.ARDUINO_SHIELD_BOT2_OPT3="最左";s.Msg.ARDUINO_SHIELD_BOT2_OPT4="右";s.Msg.ARDUINO_SHIELD_BOT2_OPT5="最右";s.Msg.ARDUINO_SHIELD_BOT2_OPT6="丟失";s.Msg.ARDUINO_SHIELD_BOT1="%1 %2 Shield Bot 小車 %3 %4";s.Msg.ARDUINO_SHIELD_BOT1_OPT1="前進";s.Msg.ARDUINO_SHIELD_BOT1_OPT2="後退";s.Msg.ARDUINO_SHIELD_BOT1_OPT3="往左";s.Msg.ARDUINO_SHIELD_BOT1_OPT4="往右";s.Msg.ARDUINO_SHIELD_BOT1_OPT5="停止";s.Msg.ARDUINO_SHIELD_BOT1_OPT6="低速";s.Msg.ARDUINO_SHIELD_BOT1_OPT7="中速";s.Msg.ARDUINO_SHIELD_BOT1_OPT8="高速";s.Msg.CATEGORY_ARDUINO_INIT="初始化";s.Msg.CATEGORY_ARDUINO_INPUT="輸入";s.Msg.CATEGORY_ARDUINO_OUTPUT="輸出";s.Msg.CATEGORY_ARDUINO_SERIAL="串口";s.Msg.CATEGORY_ARDUINO_GROVE_IGURE="Grove 數字";s.Msg.CATEGORY_ARDUINO_GROVE_ANALOG="Grove 模擬";s.Msg.CATEGORY_ARDUINO_GROVE_I2C="Grove I2C";s.Msg.CATEGORY_ARDUINO_ROBOT_KIT="M.A.R.K";s.Msg.ARDUINO_WEBSERVER_SHOW="%1 %2 web服務器 %3 %4 顯示 名稱:%5 數值:%6";s.Msg.ARDUINO_WEBSERVER_SHOW_OPT1="水分子檢測感應器";s.Msg.ARDUINO_WEBSERVER_SHOW_OPT2="超聲波測距感應器";s.Msg.ARDUINO_WEBSERVER_SHOW_OPT3="人體紅外感應器";s.Msg.ARDUINO_WEBSERVER_SHOW_OPT4="溫濕度感應器";s.Msg.ARDUINO_WEBSERVER_SHOW_OPT5="LED燈";s.Msg.ARDUINO_WEBSERVER_SHOW_OPT6="振動感應器";s.Msg.ARDUINO_WEBSERVER_SHOW_OPT7="電壓分壓器";s.Msg.ARDUINO_WEBSERVER_SHOW_OPT8="空氣質量感應器";s.Msg.ARDUINO_WEBSERVER_SHOW_OPT9="火焰感應器";s.Msg.ARDUINO_WEBSERVER_SHOW_OPT10="圖像識別感應器";s.Msg.ARDUINO_WEBSERVER_INIT="%1 %2 web服務器 初始化 %3 網絡名稱 %4 密碼 %5";s.Msg.ARDUINO_WEBSERVER_INIT_OPT1="智慧城市";s.Msg.ARDUINO_COLOR_SENSOR="%1 %2 顏色識別感應器 識別到顏色 %3 ?";s.Msg.ARDUINO_COLOR_SENSOR_OPT1="紅";s.Msg.ARDUINO_COLOR_SENSOR_OPT2="綠";s.Msg.ARDUINO_COLOR_SENSOR_OPT3="藍";s.Msg.ARDUINO_COLOR_SENSOR_OPT4="黑";s.Msg.ARDUINO_COLOR_SENSOR_OPT5="白";s.Msg.ARDUINO_COLOR_SENSOR_OPT6="其他";s.Msg.GROVEZERO_MATH_ITOA_VALUE_MESSAGE0="轉字串 %1";s.Msg.TOOLBOX_EXTENSION_CATEGORY_NAME="擴展";s.Msg.ARDUINO_SEEED_VOLTAGE="%1 %2 電壓分壓器 管腳 %3";s.Msg.ARDUINO_SEEED_QUALITY="%1 %2 空氣質量感應器 管腳 %3";s.Msg.ARDUINO_SEEED_WATER_ANALOG="%1 %2 水分子檢測感應器 管腳 %3";s.Msg.ARDUINO_SEEED_HUMIDIFIER="%1 %2 超聲波霧化器 管腳 %3 設為 %4";s.Msg.ARDUINO_SEEED_VIBRATION="%1 %2 震動感應器 管腳 %3";s.Msg.ARDUINO_SEEED_LED_ANALOG="%1 %2 LED燈 管腳 %3 設為 %4";s.Msg.ARDUINO_VISION_SENSOR1="%1 %2 圖像識別感應器 識別 球體 %3";s.Msg.ARDUINO_VISION_SENSOR1_OPT1="橙色乒乓球";s.Msg.ARDUINO_VISION_SENSOR1_OPT2="綠色網球";s.Msg.ARDUINO_VISION_SENSOR2="%1 %2 圖像識別感應器 識別 交通標示卡片 %3";s.Msg.ARDUINO_VISION_SENSOR3="%1 %2 圖像識別感應器 識別 數字卡片 %3";s.Msg.ARDUINO_VISION_SENSOR4="%1 %2 圖像識別感應器 識別 圖形卡片 %3";s.Msg.ARDUINO_VISION_SENSOR4_OPT1="對號";s.Msg.ARDUINO_VISION_SENSOR4_OPT2="叉號";s.Msg.ARDUINO_VISION_SENSOR4_OPT3="圓形";s.Msg.ARDUINO_VISION_SENSOR4_OPT4="方形";s.Msg.ARDUINO_VISION_SENSOR4_OPT5="三角形";s.Msg.ARDUINO_VISION_SENSOR5="%1 %2 圖像識別感應器 識別 人體";s.Msg.ARDUINO_VISION_SENSOR6="%1 %2 圖像識別感應器 識別 顏色 %3";s.Msg.ARDUINO_VISION_SENSOR7="%1 %2 圖像識別感應器 獲取識別顏色值";s.Msg.BUZZER_TONE_LOW="低";s.Msg.BUZZER_TONE_MIDDLE="中";s.Msg.BUZZER_TONE_HIGH="高";s.Msg.BUZZER_SELECTED_PREFIX="已選:";s.Msg.ARDUINO_LED_STRIP1="%1 %2 炫彩RGB LED燈條 管腳 %3 顯示為R值 %4 G值 %5 B值 %6 序號 %7";s.Msg.ARDUINO_LED_STRIP2="%1 %2 炫彩RGB LED燈條 管腳 %3 顯示為R值 %4 G值 %5 B值 %6";s.Msg.ARDUINO_VISION_SENSOR8="%1 %2 圖像識別感應器 獲取球體 %3 值";s.Msg.ARDUINO_OLCD1="%1 %2 OLCD螢幕 顯示圖案 %3";s.Msg.ARDUINO_OLCD2="%1 %2 OLCD螢幕 顯示字串 %3 第 %4 欄,第 %5 列";s.Msg.ARDUINO_OLCD3="%1 %2 OLCD螢幕 清除顯示";s.Msg.MAIXDUINO_ENENT_WHENSTARTUP="當啟動時";s.Msg.MAIXDUINO_DISPLAY_STRING="顯示 %1 於第 %2 欄";s.Msg.MAIXDUINO_DISPLAY_SET_CIRCLE="繪制圓形:圓心座標 X%1 Y%2 半徑%3";s.Msg.MAIXDUINO_DISPLAY_SET_RECTANGLE="繪制長方形: X1%1 Y1%2 X2%3 Y2%4";s.Msg.MAIXDUINO_DISPLAY_DRAW_CIRCLE="%1 %2 繪制圓形區域 %3";s.Msg.MAIXDUINO_DISPLAY_DRAW_RECTANGLE="%1 %2 繪制長方形區域 %3";s.Msg.MAIXDUINO_CAMERA_SET_THRESHOLD="設定圖像識別 靈敏度為 %1";s.Msg.MAIXDUINO_CAMERA_TAKE_PICTURE="拍照: 文件名 %1";s.Msg.MAIXDUINO_CAMERA_TAKE_VIDEO="錄像:時間 %1 秒, 文件名 %2";s.Msg.MAIXDUINO_CAMERA_DETECTION_BALL="檢測到圓形";s.Msg.MAIXDUINO_CAMERA_DETECTION_BALL_COORD="檢測到的圓 %1";s.Msg.MAIXDUINO_CAMERA_DETECTION_BALL_VALUE="檢測到的圓訊息";s.Msg.MAIXDUINO_CAMERA_DETECTION_RECTANGLE="檢測到長方形";s.Msg.MAIXDUINO_CAMERA_DETECTION_RECTANGLE_COORD="檢測到的長方形 %1";s.Msg.MAIXDUINO_CAMERA_DETECTION_RECTANGLE_VALUE="檢測到的長方形訊息";s.Msg.MAIXDUINO_CAMERA_GET_BALL_AVERAGE_COLOR="%1 %2 球形區域:X座標 %3 Y座標 %4 R值 %5 的平均顏色RGB值";s.Msg.MAIXDUINO_CAMERA_GET_RECTANGLE_AVERAGE_COLOR="%1 %2 長方形區域:Xmin座標 %3 Xmax座標 %4 Ymin座標 %5 Ymax座標 %6 的平均顏色RGB值";s.Msg.MAIXDUINO_CAMERA_INTEREST_AREA_COLOR="%1 %2 興趣區域 %3 檢測到 %4";s.Msg.MAIXDUINO_CAMERA_INTEREST_AREA_AVERAGE_COLOR="%1 %2 興趣區域 %3 的平均顏色RGB值";s.Msg.MAIXDUINO_SENSING_HOME_ANIMAL_DETECTION="家庭動物識別結果 概率 > %1 %";s.Msg.MAIXDUINO_SENSING_HOME_ANIMAL_SEL_DETECTION="家庭動物 識別結果為 %1 概率 > %2 %";s.Msg.MAIXDUINO_SENSING_ZOO_ANIMAL_DETECTION="動物園動物識別結果 概率 > %1 %";s.Msg.MAIXDUINO_SENSING_ZOO_ANIMAL_SEL_DETECTION="動物園動物 識別結果為 %1 概率 > %2 %";s.Msg.MAIXDUINO_SENSING_ORDINARY_OBJECT_DETECTION="普通物體識別結果 概率 > %1 %";s.Msg.MAIXDUINO_SENSING_ORDINARY_OBJECT_SEL_DETECTION="普通物體 識別結果為 %1 概率 > %2 %";s.Msg.MAIXDUINO_SENSING_NUM_DETECTION="檢測到的數字結果 概率 > %1 %";s.Msg.MAIXDUINO_NUM_SEL_DETECTION="數字 檢測結果為 %1 概率 > %2 %";s.Msg.MAIXDUINO_NUM_CERTRE_DETECTION="檢測到的數字 %1 的 %2 概率 > %3 %";s.Msg.MAIXDUINO_SENSING_TRAFFIC_SIGNS_DETECTION="檢測到的交通標誌 概率 > %1 %";s.Msg.MAIXDUINO_TRAFFIC_SIGNS_SEL_DETECTION="交通標誌 檢測結果為 %1 概率 > %2 %";s.Msg.MAIXDUINO_TRAFFIC_SIGNS_CERTRE_DETECTION="檢測到的交通標誌 %1 的 %2 概率 >%3 %";s.Msg.MAIXDUINO_INPUT_SYSTEMTIME="系統運行時間 %1";s.Msg.MAIXDUINO_CAMERA_R_MAX="R最大";s.Msg.MAIXDUINO_CAMERA_R_MIN="R最小";s.Msg.MAIXDUINO_CAMERA_SIZE_MAX="最大";s.Msg.MAIXDUINO_CAMERA_SIZE_MIN="最小";s.Msg.MAIXDUINO_CAMERA_COORD_X="位置:X座標";s.Msg.MAIXDUINO_CAMERA_COORDP_Y="Y座標";s.Msg.MAIXDUINO_CAMERA_COORDP_XMIN="位置:Xmin座標";s.Msg.MAIXDUINO_CAMERA_COORDP_YMIN="位置:Ymin座標";s.Msg.MAIXDUINO_CAMERA_COORDP_XMAX="位置:Xmax座標";s.Msg.MAIXDUINO_CAMERA_COORDP_YMAX="位置:Ymax座標";s.Msg.MAIXDUINO_CAMERA_R_VALUE="半徑";s.Msg.MAIXDUINO_CAMERA_SENSOR_OPT1="紅色";s.Msg.MAIXDUINO_CAMERA_SENSOR_OPT2="綠色";s.Msg.MAIXDUINO_CAMERA_SENSOR_OPT3="藍色";s.Msg.MAIXDUINO_CAMERA_SENSOR_OPT4="黃色";s.Msg.MAIXDUINO_CAMERA_SENSOR_OPT5="青色";s.Msg.MAIXDUINO_CAMERA_SENSOR_OPT6="紫色";s.Msg.MAIXDUINO_CAMERA_SENSOR_OPT7="黑色";s.Msg.MAIXDUINO_CAMERA_SENSOR_OPT8="白色";s.Msg.MAIXDUINO_SENSING_ANIMAL_OPT1="貓";s.Msg.MAIXDUINO_SENSING_ANIMAL_OPT2="狗";s.Msg.MAIXDUINO_SENSING_ANIMAL_OPT3="鳥";s.Msg.MAIXDUINO_SENSING_ANIMAL_OPT4="刺猬";s.Msg.MAIXDUINO_SENSING_ANIMAL_OPT5="老鼠";s.Msg.MAIXDUINO_SENSING_ANIMAL_OPT6="鱷魚";s.Msg.MAIXDUINO_SENSING_ANIMAL_OPT7="熊";s.Msg.MAIXDUINO_SENSING_ANIMAL_OPT8="大象";s.Msg.MAIXDUINO_SENSING_ANIMAL_OPT9="長頸鹿";s.Msg.MAIXDUINO_SENSING_ANIMAL_OPT10="老虎";s.Msg.MAIXDUINO_SENSING_ANIMAL_OPT11="蝴蝶";s.Msg.MAIXDUINO_SENSING_ANIMAL_OPT12="蟑螂";s.Msg.MAIXDUINO_SENSING_ANIMAL_OPT13="魚";s.Msg.MAIXDUINO_SENSING_ANIMAL_OPT14="蜥蜴";s.Msg.MAIXDUINO_SENSING_ANIMAL_OPT15="蜘蛛";s.Msg.MAIXDUINO_TRAFFIC_SIGNS_OPT0="左轉";s.Msg.MAIXDUINO_TRAFFIC_SIGNS_OPT1="右轉";s.Msg.MAIXDUINO_TRAFFIC_SIGNS_OPT2="直行";s.Msg.MAIXDUINO_TRAFFIC_SIGNS_OPT3="調頭";s.Msg.MAIXDUINO_TRAFFIC_SIGNS_OPT4="停車讓行";s.Msg.MAIXDUINO_TRAFFIC_SIGNS_OPT5="限速5";s.Msg.MAIXDUINO_TRAFFIC_SIGNS_OPT6="限速80";s.Msg.MAIXDUINO_TRAFFIC_SIGNS_OPT7="禁止直行";s.Msg.MAIXDUINO_TRAFFIC_SIGNS_OPT8="減速讓行";s.Msg.MAIXDUINO_TRAFFIC_SIGNS_OPT9="註意行人";s.Msg.MAIXDUINO_SENSING_OBJECT_OPT1="椅子";s.Msg.MAIXDUINO_SENSING_OBJECT_OPT2="書籍";s.Msg.MAIXDUINO_SENSING_OBJECT_OPT3="杯子";s.Msg.MAIXDUINO_SENSING_OBJECT_OPT4="筆";s.Msg.MAIXDUINO_SENSING_OBJECT_OPT5="比薩餅";s.Msg.MAIXDUINO_SENSING_OBJECT_OPT6="智能手機";s.Msg.MAIXDUINO_SENSING_OBJECT_OPT7="炸彈";s.Msg.MAIXDUINO_SENSING_OBJECT_OPT8="電腦";s.Msg.MAIXDUINO_SENSING_OBJECT_OPT9="人";s.Msg.MAIXDUINO_SENSING_OBJECT_OPT10="背包";s.Msg.MAIXDUINO_SENSING_COORD_X="X 座標";s.Msg.MAIXDUINO_SENSING_COORD_Y="Y 座標";s.Msg.MAIXDUINO_LINEPAROL_ANGLE="%1 %2 巡線 設定線識別顏色為 %3 區域權重 紅區%4% 藍區%5% 綠區%6%";s.Msg.MAIXDUINO_CAMERA_BALL_AERA="球形";s.Msg.MAIXDUINO_CAMERA_RECTANGLE_AERA="長方形";s.Msg.MAIXDUINO_ROBOT_MARK_RUN="M.A.R.K 小車以 %1 %2";s.Msg.MAIXDUINO_ROBOT_MOTOR_RUN="M.A.R.K 設定 %1 轉速為 %2 %";s.Msg.MAIXDUINO_ROBOT_SERVO_RUN="M.A.R.K 伺服馬達 %1 轉到 %2 度";s.Msg.MAIXDUINO_ROBOT_STEPPER_SERVO_SETANGLE="M.A.R.K 設定步進馬達步距角為 %1 °";s.Msg.MAIXDUINO_ROBOT_STEPPER_SERVO_SETROTATESPEED="M.A.R.K 設定步進馬達轉速為 %1 RPM";s.Msg.MAIXDUINO_ROBOT_STEPPER_SERVO_RUN="M.A.R.K 步進馬達轉動 %1 步";s.Msg.MAIXDUINO_ROBOT_STEPPER_SERVO_TURN="M.A.R.K 視覺巡線: 轉彎角度 %1 速度 %2 靈敏度 %3";s.Msg.CocoRobo_ENENT_WHENSTARTUP="%1 %2 當教科板 啟動";s.Msg.CocoRobo_ENENT_WHENACTION="%1 %2 當按鍵 %3 被 %4 時";s.Msg.CocoRobo_ENENT_WHENPINVOLTAGE="%1 %2 當引腳 %3 被 %4 時";s.Msg.CocoRobo_ENENT_WHENSHARK="%1 %2 當教科板 被搖晃時";s.Msg.CocoRobo_ENENT_TILT_DIRECTION="%1 %2 當教科板 %3 時";s.Msg.CocoRobo_ENENT_WHENTOUCHKEY="%1 %2 當觸摸鍵 %3 被 %4 時";s.Msg.CocoRobo_ENENT_FOR1="%1 %2 設定定時器 %3 %4 周期 %5 毫秒";s.Msg.CocoRobo_ENENT_FOR2="執行 %1";s.Msg.CocoRobo_ENENT_CLEAR_TIMER="%1 %2 清除 定時器/事件 %3";s.Msg.CocoRobo_ENENT_TIMER_COUNT="%1 %2 定時器 %3 的計數值";s.Msg.CocoRobo_EVENT_WHEN_ACTION="%1 %2 事件 %3 : 當 %4 時";s.Msg.CocoRobo_EVENT_CHILD_THREAD="%1 %2 子線程 %3";s.Msg.CocoRobo_SYSRESOURES_BUTTON_PRESSED="%1 %2 按鍵 %3 被按下";s.Msg.CocoRobo_SYSRESOURES_BUTTON_TOUCH="%1 %2 按鍵 %3 被觸摸";s.Msg.CocoRobo_SYSRESOURES_TOUCH_VALUE="%1 %2 按鍵 %3 觸摸值";s.Msg.CocoRobo_SYSRESOURES_VOLUME="%1 %2 聲音值";s.Msg.CocoRobo_SYSRESOURES_LIGHT="%1 %2 光線值";s.Msg.CocoRobo_SYSRESOURES_ACCELERATION="%1 %2 %3 軸加速度";s.Msg.CocoRobo_SYSRESOURES_SLOPE="%1 %2 %3 軸傾斜角";s.Msg.CocoRobo_SYSRESOURES_SHARKED="%1 %2 掌控版 被搖晃";s.Msg.CocoRobo_SYSRESOURES_SLOPE_ANGLE="%1 %2 掌控版 %3";s.Msg.CocoRobo_SYSRESOURES_SET_SINGLE_COLOR="%1 %2 設定 %3 RGB燈顏色為 %4";s.Msg.CocoRobo_SYSRESOURES_SET_SINGLE_RGB="%1 %2 設定 %3 RGB燈顏色為 R %4 G %5 B %6";s.Msg.CocoRobo_SYSRESOURES_SET_ALL_COLOR="%1 %2 設定所有 RGB燈顏色為 %3";s.Msg.CocoRobo_SYSRESOURES_SET_ALL_RGB="%1 %2 設定所有 RGB燈顏色為 R %3 G %4 B %5";s.Msg.CocoRobo_SYSRESOURES_CLOSE_RGB="%1 %2 關閉 RGB燈";s.Msg.CocoRobo_SYSRESOURES_SET_BME280="%1 %2 BME280 %3";s.Msg.CocoRobo_SYSRESOURES_DRAW_CLOCK="%1 %2 繪制時鐘 x %3 y %4 半徑 %5";s.Msg.CocoRobo_SYSRESOURES_CLOCK_OPERATE="%1 %2 %3 時鐘";s.Msg.CocoRobo_SYSRESOURES_SET_RUN_TIME="%1 %2 運行時間 %3";s.Msg.CocoRobo_SYSRESOURES_SET_LOCAL_TIME="%1 %2 本地時間 %3";s.Msg.CocoRobo_SYSRESOURES_RESET="%1 %2 復位";s.Msg.CocoRobo_SYSRESOURES_MAC_ADDRESS="%1 %2 MAC地址";s.Msg.CocoRobo_LOOKS_OLCD="%1 %2 LCD 屏 %3";s.Msg.CocoRobo_LOOKS_OLCD_LINE_TEXT="%1 %2 LCD 屏第 %3 欄顯示 %4 模式 %5";s.Msg.CocoRobo_LOOKS_OLCD_CLEAR_LINE="%1 %2 LCD 屏 清除第 %3 欄";s.Msg.CocoRobo_LOOKS_DISPLAY_TEXT="%1 %2 顯示文本 x %3 y %4 內容 %5 模式 %6";s.Msg.CocoRobo_LOOKS_TRACE_POINT="%1 %2 描點 x %3 y %4 為 %5";s.Msg.CocoRobo_LOOKS_PROGRESS="%1 %2 進度條 x %3 y %4 寬 %5 高 %6 進度 %7";s.Msg.CocoRobo_LOOKS_COLUMN_STRIP="%1 %2 柱狀條 %3 x %4 y %5 寬 %6 高 %7 進度 %8";s.Msg.CocoRobo_LOOKS_DRAW_LINE="%1 %2 %3 線 x1 %4 y1 %5 到 x2 %6 y2 %7";s.Msg.CocoRobo_LOOKS_DRAW_FRAME="%1 %2 %3 邊框 x %4 y %5 寬 %6 高 %7";s.Msg.CocoRobo_LOOKS_DRAW_ARC_BORDER="%1 %2 %3 圓角邊框 x %4 y %5 寬 %6 高 %7 半徑 %8";s.Msg.CocoRobo_LOOKS_DRAW_RECT="%1 %2 %3 矩形 x %4 y %5 寬 %6 高 %7";s.Msg.CocoRobo_LOOKS_DRAW_CIRCLE="%1 %2 %3 %4 圓 x %5 y %6 半徑 %7";s.Msg.CocoRobo_LOOKS_DRAW_TRIANGLE="%1 %2 %3 %4 三角形 x %5 y %6 x2 %7 y2 %8 x3 %9 y3 %10";s.Msg.CocoRobo_LOOKS_DRAW_DISPLAY_PICTURE="%1 %2 在 x %3 y %4 顯示圖像 %5";s.Msg.CocoRobo_LOOKS_DRAW_DISPLAY="%1 %2 在 x %3 y %4 顯示 %5 字體 %6 %7";s.Msg.CocoRobo_MUSIC_STOP_PLAY="%1 %2 停止音樂 腳位 %3";s.Msg.CocoRobo_MUSIC_RESTORE_MUSIC_SET="%1 %2 恢復音樂設定";s.Msg.CocoRobo_MUSIC_NOTE_BEAT="%1 %2 音符 %3 節拍 %4";s.Msg.CocoRobo_MUSIC_NOTE_BEAT_PIN="%1 %2 播放音符 音符 %3 節拍 %4 腳位 %5";s.Msg.CocoRobo_MUSIC_TONE="%1 %2 音調 %3";s.Msg.CocoRobo_MUSIC_PLAY_TONE_PIN="%1 %2 播放音調 音調%3 延時 %4 腳位 %5";s.Msg.CocoRobo_MUSIC_PLAY_TONE_PIN_PARA="%1 %2 播放音調 從 %3 到 %4 長度 %5 時長 %6 (毫秒)腳位 %7";s.Msg.CocoRobo_MUSIC_PLAY_MUSIC_PIN="%1 %2 播放音樂 %3 等待 %4 循環 %5 腳位 %6";s.Msg.CocoRobo_MUSIC_SET_PLAY_SPEED="%1 %2 設定播放速度為 %3 倍";s.Msg.CocoRobo_MUSIC_SET_BEAT="%1 %2 設定每壹拍等同 %3 分音符,每分鐘節拍數 %4";s.Msg.CocoRobo_MUSIC_SET_CURRENT_BEAT="%1 %2 當前節拍數";s.Msg.CocoRobo_BUZZER_INIT="%1 %2 音頻 初始化";s.Msg.CocoRobo_BUZZER_RELEASE_CACHE="%1 %2 音頻 釋放緩存";s.Msg.CocoRobo_BUZZER_SET_VOLUMN="%1 %2 設定音頻音量 %3";s.Msg.CocoRobo_BUZZER_SET_ACTION="%1 %2 音頻 %3";s.Msg.CocoRobo_BUZZER_PLAY="%1 %2 音頻 播放 %3";s.Msg.CocoRobo_BUZZER_VOICE_CONF="%1 %2 TTS 語音配置 APPID %3 APIKey %4";s.Msg.CocoRobo_BUZZER_VOICE_PLAY="%1 %2 TTS 語音播放 %3";s.Msg.CocoRobo_PIN_GET_VALUE="%1 %2 讀取引腳 %3 數字值";s.Msg.CocoRobo_PIN_SET_VALUE="%1 %2 設定引腳 %3 數字值為 %4";s.Msg.CocoRobo_PIN_GET_ANALOG_VALUE="%1 %2 讀取引腳 %3 模擬值";s.Msg.CocoRobo_PIN_SET_ANALOG_VALUE="%1 %2 設定引腳 %3 PWM為 %4";s.Msg.CocoRobo_PIN_SET_SERVO_ANGLE="%1 %2 設定伺服馬達 %3 角度為 %4";s.Msg.CocoRobo_PIN_SET_SERVO_PWM_MAXANGLE="%1 %2 設定伺服馬達 %3 角度為 %4 脈寬從 %5 到 %6 最大角度 %7";s.Msg.CocoRobo_PIN_SET_PIN_MODE="%1 %2 設定引腳 %3 為 %4 模式 %5";s.Msg.CocoRobo_PIN_EXTERNAL_LEVEL_DURATION="%1 %2 %3 外部 %4 電平持續時間(微秒)";s.Msg.CocoRobo_PIN_DHT11_VALUE="%1 %2 DHT11 %3 %4";s.Msg.CocoRobo_PIN_DHT22_VALUE="%1 %2 DHT22 %3 %4";s.Msg.CocoRobo_PIN_INIT_I2C_BAUD_RATE="%1 %2 初始化I2C 波特率 %3";s.Msg.CocoRobo_PIN_INIT_I2C_SCL_SDA_BAUD="%1 %2 初始化I2C SCL %3 SDA %4 波特率 %5";s.Msg.CocoRobo_PIN_I2C_ADDRESS_WRITE="%1 %2 I2C地址 %3 寫入 %4";s.Msg.CocoRobo_PIN_I2C_ADDRESS_GET_BYTES_NUM="%1 %2 I2C地址 %3 讀取bytes數量 %4";s.Msg.CocoRobo_PIN_HSCR04_ULTRASONIC_INIT="%1 %2HCSR04 超聲波初始化 名稱 %3 trigger %4 echo %5";s.Msg.CocoRobo_PIN_HSCR04_ULTRASONIC_DISTANCE_UNIT="%1 %2 %3 HCSR04 超聲測距 %4";s.Msg.CocoRobo_RADIO_ACTION="%1 %2 %3 無線廣播";s.Msg.CocoRobo_SET_RADIO_CHANNEL="%1 %2 設定無線廣播 頻道為 %3";s.Msg.CocoRobo_SET_RADIO_SEND_MES="%1 %2 無線廣播 發送 %3";s.Msg.CocoRobo_RADIO_GET_MES="%1 %2 無線廣播 接收消息";s.Msg.CocoRobo_RADIO_GET_MES_FOR1="當收到無線廣播消息 %1";s.Msg.CocoRobo_RADIO_GET_SPECIAL_FOR1="當收到特定無線廣播消息 %1";s.Msg.CocoRobo_WIFI_CONNECT="%1 %2 連接 Wi-Fi 名稱 %3 密碼 %4";s.Msg.CocoRobo_WIFI_DISCONNECT="%1 %2 斷開 Wi-Fi 連接";s.Msg.CocoRobo_WIFI_CONNECTED="%1 %2 Wi-Fi 已連接";s.Msg.CocoRobo_WIFI_ALL_CONF="%1 %2 所有 Wi-Fi 配置訊息";s.Msg.CocoRobo_WIFI_CONF_MES="%1 %2 Wi-Fi 配置訊息 %3";s.Msg.CocoRobo_WIFI_OPEN_AP_MODE="%1 %2 開啟 AP模式 名稱 %3 信道 %4";s.Msg.CocoRobo_WIFI_CLOSE_AP_MODE="%1 %2 關閉 AP模式";s.Msg.CocoRobo_WIFI_SYNC_NETWORK_TIME="%1 %2 同步網絡時間 時區 %3 授時服務器 %4";s.Msg.CocoRobo_NEOPIXEL_INIT="%1 %2 燈帶 初始化 %3 腳位 %4 數量 %5";s.Msg.CocoRobo_NEOPIXEL_CHANNEL_COLOR="%1 %2 燈帶 %3 %4 號顏色為 %5";s.Msg.CocoRobo_NEOPIXEL_CHANNEL_RGB="%1 %2 燈帶 %3 %4 號 紅 %5 綠 %6 藍 %7";s.Msg.CocoRobo_NEOPIXEL_FULL_LIGHT_COLOR="%1 %2 燈帶 %3 全亮 顏色 %4";s.Msg.CocoRobo_NEOPIXEL_FULL_LIGHT_RGB="%1 %2 燈帶 %3 全亮 紅 %4 綠 %5 藍 %6";s.Msg.CocoRobo_NEOPIXEL_CLOSE="%1 %2 燈帶 %3 熄滅";s.Msg.CocoRobo_NEOPIXEL_RAINBOW_LIGHT_EFFECT="%1 %2 彩虹燈帶 %3 數量 %4 亮度 %5 偏移 %6";s.Msg.CocoRobo_NEOPIXEL_SET_WRITE="%1 %2 燈帶 %3 設定生效";s.Msg.CocoRobo_CONTROL_FOR1="為每個項目 %1 在陣列中";s.Msg.CocoRobo_OPERATORS_GET_TYPE="值 %1 的類型";s.Msg.CocoRobo_OPERATORS_JUDGE_TYPE="值 %1 的類型為 %2";s.Msg.CocoRobo_OPERATORS_MOD_INT="%1 ÷ %2 商的整數部分";s.Msg.CocoRobo_OPERATORS_KEEP_TWO_DECIMALS="%1 保留 %2 位小數";s.Msg.CocoRobo_OPERATORS_LIMIT_RANGE="限制數字 %1 介於低 %2 至 高 %3";s.Msg.CocoRobo_OPERATORS_MAPPING_RANGE="映射 %1 從低 %2 至 %3 到高 %4 至 %5";s.Msg.CocoRobo_G0_COLOR_LINE_FOLLOWER_POSITION="%1 %2 識色循跡感應器 線的位置為 %3";s.Msg.CocoRobo_G0_COLOR_LINE_FOLLOWER_SEEING="%1 %2 識色循跡感應器 檢測到%3 色";s.Msg.CocoRobo_G0_COLOR_LINE_FOLLOWER_COLOR="%1 %2 識色循跡感應器 顏色值";s.Msg.ARDUINO_GROVE_SERIAL_3ADA15="%1 %2 三軸數字加速度(1.5g) %3 軸";s.Msg.ARDUINO_SEEED_LED_BAR_OPT1="亮燈";s.Msg.ARDUINO_SEEED_LED_BAR_OPT2="熄滅";s.Msg.ARDUINO_SEEED_SPEECH_RECOGNIZER_GETVALUE="%1 %2 語音識別感應器 管腳 %3 獲取值";s.Msg.ARDUINO_SERIAL_STR_TONUMBER="串口 字串轉數值 %1";s.Msg.ARDUINO_VISION_SENSOR6_OPT1="紅";s.Msg.ARDUINO_VISION_SENSOR6_OPT2="黃";s.Msg.ARDUINO_VISION_SENSOR6_OPT3="綠";s.Msg.ARDUINO_VISION_SENSOR6_OPT4="青";s.Msg.ARDUINO_VISION_SENSOR6_OPT5="藍";s.Msg.ARDUINO_VISION_SENSOR6_OPT6="紫";s.Msg.ARDUINO_VISION_SENSOR6_OPT7="黑";s.Msg.ARDUINO_VISION_SENSOR6_OPT8="白";s.Msg.ARDUINO_VISION_SENSOR6_OPT9="其他";s.Msg.ARDUINO_VISION_SENSOR_OPT1="前進";s.Msg.ARDUINO_VISION_SENSOR_OPT2="左轉";s.Msg.ARDUINO_VISION_SENSOR_OPT3="右轉";s.Msg.ARDUINO_VISION_SENSOR_OPT4="掉頭";s.Msg.ARDUINO_VISION_SENSOR_OPT5="P";s.Msg.ARDUINO_MARK_ROBOT_RUN="%1 %2 M.A.R.K 小車 %3 %4";s.Msg.ARDUINO_MARK_ROBOT_MOTOR_RUN="%1 %2 M.A.R.K 設定馬達 %3 轉速為 %4";s.Msg.ARDUINO_MARK_ROBOT_SERVO_RUN="%1 %2 M.A.R.K 伺服馬達 %3 轉到 %4";s.Msg.ARDUINO_NETWORK_SETWIFI="%1 %2 開始連接無線網絡 %3 密碼 %4";s.Msg.ARDUINO_NETWORK_STATE="%1 %2 網絡已連接?";s.Msg.ARDUINO_SPEECH_RECOGNITION_REC="%1 %2 識別 %3 語音 %4 秒鐘";s.Msg.ARDUINO_SPEECH_RECOGNITION_OPT01="漢語";s.Msg.ARDUINO_SPEECH_RECOGNITION_OPT02="英語";s.Msg.ARDUINO_SPEECH_RECOGNITION_RECTEXT="%1 %2 語音識別出的字串";s.Msg.ARDUINO_SPEECH_RECOGNITION_TTS="%1 %2 說 %3";s.Msg.ARDUINO_AUDIO_RECORD="%1 %2 錄音 %3 %4";s.Msg.ARDUINO_AUDIO_STORAGE_OPT01="文件";s.Msg.ARDUINO_AUDIO_STORAGE_OPT02="Micro SD";s.Msg.ARDUINO_AUDIO_STORAGE_OPT03="USB";s.Msg.ARDUINO_AUDIO_STORAGE_OPT04="暫存";s.Msg.ARDUINO_AUDIO_STOP_RECORD="%1 %2 錄音停止";s.Msg.ARDUINO_AUDIO_PLAY="%1 %2 播放音頻 %3 %4";s.Msg.ARDUINO_AUDIO_PLAY_SOMEONE="%1 %2 播放第 %3 首曲目";s.Msg.ARDUINO_AUDIO_PLAY_PREORNEXT="%1 %2 播放 %3 曲目";s.Msg.ARDUINO_AUDIO_PLAY_OPT1="上壹首";s.Msg.ARDUINO_AUDIO_PLAY_OPT2="下壹首";s.Msg.ARDUINO_AUDIO_PLAY_ATMODE="%1 %2 %3 播放曲目";s.Msg.ARDUINO_AUDIO_PLAY_MODE_OPT1="循環";s.Msg.ARDUINO_AUDIO_PLAY_MODE_OPT2="暫停";s.Msg.ARDUINO_AUDIO_PLAY_MODE_OPT3="停止";s.Msg.ARDUINO_AUDIO_SETVOL="%1 %2 設定揚聲器音量 %3";s.Msg.ELFBOT_MAINBOARD_START="%1 %2 當精靈啟動";s.Msg.ELFBOT_WHEN_BUTTON_S_PRESSED="%1 %2 當按下按鈕 S ";s.Msg.ELFBOT_WHEN_LIGHTINTENSITY_LESSTHAN="%1 %2 當環境光強度 %3 %4";s.Msg.ELFBOT_WHENGREATERTHAN_TIMER="%1 %2 當計時器 > %3";s.Msg.ELFBOT_WHENGREATERTHAN_LOUDNESS="%1 %2 當響度 %3 %4";s.Msg.ELFBOT_BUTTONS_ISPRESSED="%1 %2 精靈 按鈕S被按下?";s.Msg.ELFBOT_ULTRASONIC_DISTANCE_FROMOBJ="%1 %2 精靈 前方障礙物距離(mm)";s.Msg.ELFBOT_ULTRASONIC_ISDETECTED_OBJECT="%1 %2 精靈 檢測到前方物體?";s.Msg.ELFBOT_ULTRASONIC_LED_SHOW_COLOR="%1 %2 精靈 設定超聲波 LED顏色為 %3";s.Msg.ELFBOT_ULTRASONIC_LED_CRUSHOUT="%1 %2 精靈 熄滅超聲波 LED";s.Msg.ELFBOT_ULTRASONIC_WHENDETECTEDOBJECT="%1 %2 當檢測到前方物體";s.Msg.ELFBOT_LEDMATRIX_PLOT="%1 %2 精靈 點亮 x: %3 y: %4";s.Msg.ELFBOT_LEDMATRIX_UNPLOT="%1 %2 精靈 熄滅 x: %3 y: %4";s.Msg.ELFBOT_LEDMATRIX_PLOT_OR_UNPLOT="%1 %2 精靈 切換點亮或熄滅 x: %3 y: %4";s.Msg.ELFBOT_LEDMATRIX_ISPLOT="%1 %2 精靈 x: %3 y: %4 是否被點亮?";s.Msg.ELFBOT_LEDMATRIX_SHOW_TEXT="%1 %2 精靈 顯示 %3";s.Msg.ELFBOT_LEDMATRIX_SHOW_TEXT_UNTILDONE="%1 %2 精靈 顯示 %3 直到結束";s.Msg.ELFBOT_LEDMATRIX_SHOW_EMOTICON="%1 %2 精靈 顯示表情 %3";s.Msg.ELFBOT_LEDMATRIX_SHOW_EMOTICON_FORDURATION="%1 %2 精靈 顯示表情 %3 持續 %4 秒";s.Msg.ELFBOT_LEDMATRIX_SCREEN_CRUSHOUT="%1 %2 精靈 熄滅螢幕";s.Msg.ELFBOT_LEDMATRIX_EMOTICON_VALUE_OPTION1="smile";s.Msg.ELFBOT_LEDMATRIX_EMOTICON_VALUE_OPTION2="wink";s.Msg.ELFBOT_LEDMATRIX_EMOTICON_VALUE_OPTION3="happy";s.Msg.ELFBOT_LEDMATRIX_EMOTICON_VALUE_OPTION4="cute";s.Msg.ELFBOT_LEDMATRIX_EMOTICON_VALUE_OPTION5="lovely";s.Msg.ELFBOT_LEDMATRIX_EMOTICON_VALUE_OPTION6="expressionless";s.Msg.ELFBOT_LEDMATRIX_EMOTICON_VALUE_OPTION7="playful";s.Msg.ELFBOT_LEDMATRIX_EMOTICON_VALUE_OPTION8="like1";s.Msg.ELFBOT_LEDMATRIX_EMOTICON_VALUE_OPTION9="like2";s.Msg.ELFBOT_LEDMATRIX_EMOTICON_VALUE_OPTION10="sniker1";s.Msg.ELFBOT_LEDMATRIX_EMOTICON_VALUE_OPTION11="sniker2";s.Msg.ELFBOT_LEDMATRIX_EMOTICON_VALUE_OPTION12="bored";s.Msg.ELFBOT_LEDMATRIX_EMOTICON_VALUE_OPTION13="serious";s.Msg.ELFBOT_LEDMATRIX_EMOTICON_VALUE_OPTION14="sweat";s.Msg.ELFBOT_LEDMATRIX_EMOTICON_VALUE_OPTION15="frown";s.Msg.ELFBOT_LEDMATRIX_EMOTICON_VALUE_OPTION16="rage";s.Msg.ELFBOT_LEDMATRIX_EMOTICON_VALUE_OPTION17="pitiful";s.Msg.ELFBOT_LEDMATRIX_EMOTICON_VALUE_OPTION18="wail";s.Msg.ELFBOT_LEDMATRIX_EMOTICON_VALUE_OPTION19="cry";s.Msg.ELFBOT_LEDMATRIX_EMOTICON_VALUE_OPTION20="daze";s.Msg.ELFBOT_LEDMATRIX_EMOTICON_VALUE_OPTION21="caim";s.Msg.ELFBOT_LEDMATRIX_EMOTICON_VALUE_OPTION22="angry";s.Msg.ELFBOT_LEDMATRIX_EMOTICON_VALUE_OPTION23="thinking";s.Msg.ELFBOT_LEDMATRIX_EMOTICON_VALUE_OPTION24="dizziness";s.Msg.ELFBOT_LEDMATRIX_EMOTICON_VALUE_OPTION25="tired";s.Msg.ELFBOT_LEDMATRIX_EMOTICON_VALUE_OPTION26="sleepy";s.Msg.ELFBOT_LEDMATRIX_EMOTICON_VALUE_OPTION27="dream";s.Msg.ELFBOT_LEDMATRIX_EMOTICON_VALUE_OPTION28="shocked";s.Msg.ELFBOT_LEDMATRIX_EMOTICON_VALUE_OPTION29="strabismus";s.Msg.ELFBOT_LEDMATRIX_EMOTICON_VALUE_OPTION30="cool";s.Msg.ELFBOT_LEDMATRIX_EMOTICON_VALUE_OPTION31="query";s.Msg.ELFBOT_LEDMATRIX_EMOTICON_VALUE_OPTION32="pain";s.Msg.ELFBOT_LEDMATRIX_EMOTICON_VALUE_OPTION33="uncomfortable";s.Msg.ELFBOT_LEDMATRIX_EMOTICON_VALUE_OPTION34="right";s.Msg.ELFBOT_LEDMATRIX_EMOTICON_VALUE_OPTION35="left";s.Msg.ELFBOT_LEDMATRIX_EMOTICON_VALUE_OPTION36="forward";s.Msg.ELFBOT_LEDMATRIX_EMOTICON_VALUE_OPTION37="backward";s.Msg.ELFBOT_LEDMATRIX_EMOTICON_VALUE_OPTION38="hello";s.Msg.ELFBOT_LEDMATRIX_EMOTICON_VALUE_OPTION39="bye";s.Msg.ELFBOT_LEDMATRIX_EMOTICON_VALUE_OPTION40="oK";s.Msg.ELFBOT_LEDMATRIX_EMOTICON_VALUE_OPTION41="good";s.Msg.ELFBOT_LEDMATRIX_EMOTICON_VALUE_OPTION42="yes";s.Msg.ELFBOT_LEDMATRIX_EMOTICON_VALUE_OPTION43="no";s.Msg.ELFBOT_LEDMATRIX_EMOTICON_VALUE_OPTION44="low_energy";s.Msg.ELFBOT_LEDMATRIX_EMOTICON_VALUE_OPTION45="meow";s.Msg.ELFBOT_LEDMATRIX_EMOTICON_VALUE_OPTION46="panda";s.Msg.ELFBOT_LEDMATRIX_SHOW_IMAGE="%1 %2 精靈 顯示圖案 %3";s.Msg.ELFBOT_LEDMATRIX_SHOW_IMAGE_DURATION="%1 %2 精靈 顯示圖案 %3 持續 %4 秒";s.Msg.ELFBOT_RGBLED_SHOW_EFFECTS_COLOR="%1 %2 精靈 RGB LED壹直 %3 %4";s.Msg.ELFBOT_RGBLED_EFFECTS_VALUE_OPTION0="亮";s.Msg.ELFBOT_RGBLED_EFFECTS_VALUE_OPTION1="閃爍";s.Msg.ELFBOT_RGBLED_EFFECTS_VALUE_OPTION2="呼吸";s.Msg.ELFBOT_RGBLED_SHOW_POSITION_COLOR="%1 %2 精靈 RGB LED 亮起 %3 燈,顏色為 %4";s.Msg.ELFBOT_RGBLED_POSITION_VALUE_OPTION0="全部";s.Msg.ELFBOT_RGBLED_POSITION_VALUE_OPTION1="左";s.Msg.ELFBOT_RGBLED_POSITION_VALUE_OPTION2="右";s.Msg.ELFBOT_RGBLED_SHOW_POSITION_COLOR_DURATION="%1 %2 精靈 RGB LED 亮起 %3 燈,顏色為 %4 ,持續 %5秒";s.Msg.ELFBOT_RGBLED_SHOW_COLOR="%1 %2 精靈 設定RGB LED顏色為 %3";s.Msg.ELFBOT_RGBLED_COLOR_VALUE_OPTION0="紅色";s.Msg.ELFBOT_RGBLED_COLOR_VALUE_OPTION1="綠色";s.Msg.ELFBOT_RGBLED_COLOR_VALUE_OPTION2="藍色";s.Msg.ELFBOT_RGBLED_COLOR_VALUE_OPTION3="黃色";s.Msg.ELFBOT_RGBLED_COLOR_VALUE_OPTION4="青色";s.Msg.ELFBOT_RGBLED_COLOR_VALUE_OPTION5="紫色";s.Msg.ELFBOT_RGBLED_COLOR_VALUE_OPTION6="黑色";s.Msg.ELFBOT_RGBLED_COLOR_VALUE_OPTION7="白色";s.Msg.ELFBOT_RGBLED_CRUSHOUT="%1 %2 精靈 熄滅RGB LED";s.Msg.ELFBOT_INFRARED_WHENOVERHEAD="%1 %2 當檢測到前方懸空";s.Msg.ELFBOT_INFRARED_LIGHTINTENSITY_VALUE="%1 %2 精靈 紅外反射光強度";s.Msg.ELFBOT_INFRARED_DETECTED_ISHEAD="%1 %2 精靈 檢測到前方懸空?";s.Msg.ELFBOT_LINEPATROL_WHENDETECTEDCOLORD="%1 %2 當檢測到的顏色是 %3";s.Msg.ELFBOT_LINEPATROL_COLOR_VALUE_OPTION0="紅色";s.Msg.ELFBOT_LINEPATROL_COLOR_VALUE_OPTION1="綠色";s.Msg.ELFBOT_LINEPATROL_COLOR_VALUE_OPTION2="藍色";s.Msg.ELFBOT_LINEPATROL_COLOR_VALUE_OPTION3="黃色";s.Msg.ELFBOT_LINEPATROL_COLOR_VALUE_OPTION4="青色";s.Msg.ELFBOT_LINEPATROL_COLOR_VALUE_OPTION5="紫色";s.Msg.ELFBOT_LINEPATROL_COLOR_VALUE_OPTION6="黑色";s.Msg.ELFBOT_LINEPATROL_COLOR_VALUE_OPTION7="白色";s.Msg.ELFBOT_LINEPATROL_GREYSCALE="%1 %2 精靈 灰度值";s.Msg.ELFBOT_LINEPATROL_DETECTED_COLOR="%1 %2 精靈 檢測到顏色是 %3 ?";s.Msg.ELFBOT_LINEPATROL_DETECTED_COLOR_VALUE="%1 %2 精靈 檢測到的 %3 色值";s.Msg.ELFBOT_LINEPATROL_LIGHTINTENSITY_VALUE="%1 %2 精靈 反射光強度";s.Msg.ELFBOT_SERVO_HEAD_LOOKLEFT="%1 %2 精靈 頭部向左轉到 %3 度";s.Msg.ELFBOT_SERVO_HEAD_LOOKRIGHT="%1 %2 精靈 頭部向右轉到 %3 度";s.Msg.ELFBOT_SERVO_HEAD_LOOKUP="%1 %2 精靈 頭部向上轉到 %3 度";s.Msg.ELFBOT_SERVO_HEAD_LOOKDOWN="%1 %2 精靈 頭部向下轉到 %3 度";s.Msg.ELFBOT_SERVO_EAR_TURNFORWARD="%1 %2 精靈 耳朵向前轉到 %3 度";s.Msg.ELFBOT_SERVO_EAR_TURNBACKWARD="%1 %2 精靈 耳朵向後轉到 %3 度";s.Msg.ELFBOT_VEHICLEWHEEL_RUN_DIRECTION_POWER="%1 %2 精靈 %3 以動力 %4 %";s.Msg.ELFBOT_VEHICLEWHEEL_DIRECTION_VALUE_OPTION0="前進";s.Msg.ELFBOT_VEHICLEWHEEL_DIRECTION_VALUE_OPTION1="後退";s.Msg.ELFBOT_VEHICLEWHEEL_DIRECTION_VALUE_OPTION2="左轉";s.Msg.ELFBOT_VEHICLEWHEEL_DIRECTION_VALUE_OPTION3="右轉";s.Msg.ELFBOT_VEHICLEWHEEL_RUNFORWORD_POWER_DURATION="%1 %2 精靈 前進以動力 %3 % 持續 %4 秒";s.Msg.ELFBOT_VEHICLEWHEEL_RUNBACKWORD_POWER_DURATION="%1 %2 精靈 後退以動力 %3 % 持續 %4 秒";s.Msg.ELFBOT_VEHICLEWHEEL_RUNLEFT_POWER_DURATION="%1 %2 精靈 左轉以動力 %3 % 持續 %4 秒";s.Msg.ELFBOT_VEHICLEWHEEL_RUNRIGHT_POWER_DURATION="%1 %2 精靈 右轉以動力 %3 % 持續 %4 秒";s.Msg.ELFBOT_VEHICLEWHEEL_RUN_POWER="%1 %2 精靈 移動左輪以動力 %3 % ,右輪以動力 %4 %";s.Msg.ELFBOT_VEHICLEWHEEL_RUNFORWORD_DURATION="%1 %2 精靈 直線前進持續 %3 秒";s.Msg.ELFBOT_VEHICLEWHEEL_RUNBACKWORD_DURATION="%1 %2 精靈 直線後退持續 %3 秒";s.Msg.ELFBOT_VEHICLEWHEEL_RUN_STOP="%1 %2 精靈 停止運動";s.Msg.ELFBOT_LIGHT_INTENSITY_VALUE="%1 %2 精靈 環境光強度";s.Msg.ELFBOT_SOUND_LOUDNESS_VALUE="%1 %2 精靈 響度";s.Msg.ELFBOT_SOUND_PLAY="%1 %2 精靈 播放聲音 %3";s.Msg.ELFBOT_SOUND_VALUE_OPTION0="hello";s.Msg.ELFBOT_SOUND_VALUE_OPTION1="miao";s.Msg.ELFBOT_SOUND_VALUE_OPTION2="bye";s.Msg.ELFBOT_SOUND_VALUE_OPTION3="hum";s.Msg.ELFBOT_SOUND_VALUE_OPTION4="laugh";s.Msg.ELFBOT_SOUND_VALUE_OPTION5="wrong";s.Msg.ELFBOT_SOUND_VALUE_OPTION6="right";s.Msg.ELFBOT_SOUND_VALUE_OPTION7="sad";s.Msg.ELFBOT_SOUND_VALUE_OPTION8="vehicles";s.Msg.ELFBOT_SOUND_VALUE_OPTION9="yeah";s.Msg.ELFBOT_SOUND_VALUE_OPTION10="powerdown";s.Msg.ELFBOT_SOUND_PLAY_UNTILDONE="%1 %2 精靈 播放聲音 %3 直到結束";s.Msg.ELFBOT_SOUND_STOP_PLAY="%1 %2 精靈 停止播放聲音";s.Msg.ELFBOT_SOUND_REST_BEATS="%1 %2 精靈 休止 %3 拍";s.Msg.ELFBOT_SOUND_BEAT_VALUE_OPTION0="1";s.Msg.ELFBOT_SOUND_BEAT_VALUE_OPTION1="1/2";s.Msg.ELFBOT_SOUND_BEAT_VALUE_OPTION2="1/4";s.Msg.ELFBOT_SOUND_BEAT_VALUE_OPTION3="1/8";s.Msg.ELFBOT_SOUND_BEAT_VALUE_OPTION4="1/16";s.Msg.ELFBOT_SOUND_BEAT_VALUE_OPTION5="2";s.Msg.ELFBOT_SOUND_BEAT_VALUE_OPTION6="4";s.Msg.ELFBOT_SOUND_BEAT_VALUE_OPTION7="8";s.Msg.ELFBOT_SOUND_PLAY_FREQUENCYHZ="%1 %2 精靈 播放聲音以頻率 %3 赫茲,持續 %4 秒";s.Msg.ELFBOT_SOUND_CHANGE_VOLUME="%1 %2 精靈 將音量增加 %3";s.Msg.ELFBOT_SOUND_SET_VOLUME="%1 %2 精靈 將音量設定為 %3";s.Msg.ELFBOT_SOUND_VOLUME="%1 %2 精靈 音量";s.Msg.ELFBOT_SOUND_NOTE_BEATS="%1 %2 精靈 播放音符 %3 以 %4 拍";s.Msg.ELFBOT_LINECOLOR_DETECT="%1 %2 顏色識別感應器 檢測到 %3 色";s.Msg.ELFBOT_LINECOLOR_DETECT_POSITION="%1 %2 顏色識別感應器 %3 的位置為 %4";s.Msg.ELFBOT_LINECOLOR_OPT0="紅";s.Msg.ELFBOT_LINECOLOR_OPT1="綠";s.Msg.ELFBOT_LINECOLOR_OPT2="藍";s.Msg.ELFBOT_LINECOLOR_DETECT_BLACK="黑線";s.Msg.ELFBOT_LINECOLOR_DETECT_WRITE="白線";s.Msg.ELFBOT_LINECOLOR_DETECT_POSITION_OPT0="中";s.Msg.ELFBOT_LINECOLOR_DETECT_POSITION_OPT1="右";s.Msg.ELFBOT_LINECOLOR_DETECT_POSITION_OPT2="最右";s.Msg.ELFBOT_LINECOLOR_DETECT_POSITION_OPT3="左";s.Msg.ELFBOT_LINECOLOR_DETECT_POSITION_OPT4="最左";s.Msg.ELFBOT_LINECOLOR_DETECT_POSITION_OPT5="丟失";s.Msg.MICROBIT_WHEN_START="%1 %2 當 micro:bit 啟動";s.Msg.MICROBIT_WHEN_BUTTONPRESSED="%1 %2 當 %3 被按下";s.Msg.MICROBIT_BUTTON_VALUE_OPTION0="A";s.Msg.MICROBIT_BUTTON_VALUE_OPTION1="B";s.Msg.MICROBIT_BUTTON_VALUE_OPTION2="A+B";s.Msg.MICROBIT_WHEN_PINSTOUCHED="%1 %2 當引腳 %3 被接觸";s.Msg.MICROBIT_PINS_VALUE_OPTION0="0";s.Msg.MICROBIT_PINS_VALUE_OPTION1="1";s.Msg.MICROBIT_PINS_VALUE_OPTION2="2";s.Msg.MICROBIT_WHEN_GESTURESTRIKE="%1 %2 當姿態 %3";s.Msg.MICROBIT_GESTURE_VALUE_OPTION0="搖晃";s.Msg.MICROBIT_GESTURE_VALUE_OPTION1="向上傾斜";s.Msg.MICROBIT_GESTURE_VALUE_OPTION2="向下傾斜";s.Msg.MICROBIT_GESTURE_VALUE_OPTION3="向左傾斜";s.Msg.MICROBIT_GESTURE_VALUE_OPTION4="向右傾斜";s.Msg.MICROBIT_GESTURE_VALUE_OPTION5="正面朝上";s.Msg.MICROBIT_GESTURE_VALUE_OPTION6="正面朝下";s.Msg.MICROBIT_GESTURE_VALUE_OPTION7="自由落體";s.Msg.MICROBIT_GESTURE_VALUE_OPTION8="3g";s.Msg.MICROBIT_GESTURE_VALUE_OPTION9="6g";s.Msg.MICROBIT_GESTURE_VALUE_OPTION10="5g";s.Msg.MICROBIT_COMMUCATION_OPEN="%1 %2 打開無線通訊";s.Msg.MICROBIT_COMMUCATION_CLOSED="%1 %2 關閉無線通訊";s.Msg.MICROBIT_COMMUCATION_RESET="%1 %2 復位無線通訊";s.Msg.MICROBIT_COMMUCATION_RECEIVE="%1 %2 接受無線通訊";s.Msg.MICROBIT_COMMUCATION_SEND="%1 %2 發送無線消息 %3";s.Msg.MICROBIT_COMMUCATION_SETCHANNEL="%1 %2 設定無線通訊頻道 %3";s.Msg.MICROBIT_PIN_CONNECTED="%1 %2 腳位 %3 被接觸";s.Msg.MICROBIT_PIN_ANALOGQUANTITY="%1 %2 腳位 %3 模擬量";s.Msg.MICROBIT_PIN_SET_ANALOGQUANTITY="%1 %2 設定引腳 %3 模擬量為 %4";s.Msg.MICROBIT_PIN_NUMBER_INPUT="%1 %2 腳位 %3 有數字輸入";s.Msg.MICROBIT_PIN_ANALOG_MAP_TO="%1 %2 映射 %3 模擬值到 %4 至 %5";s.Msg.MICROBIT_PIN_ANALOG_READ="%1 %2 模擬讀取 腳位 %3";s.Msg.MICROBIT_PIN_ANALOG_WRITE="%1 %2 向引腳 %3 模擬寫入 %4";s.Msg.MICROBIT_PIN_ANALOG_SET_PERIOD="%1 %2 設定引腳 %3 模擬期間為 %4 (us)";s.Msg.MICROBIT_PIN_DIGITAL_READ="%1 %2 數字讀取 腳位 %3";s.Msg.MICROBIT_PIN_DIGITAL_IS="%1 %2 數字引腳 %3 為 %4";s.Msg.MICROBIT_PIN_DIGITAL_IS_OPT1="高";s.Msg.MICROBIT_PIN_DIGITAL_IS_OPT2="低";s.Msg.MICROBIT_PIN_DIGITAL_SET_TO="%1 %2 設定數字引腳 %3 為 %4";s.Msg.MICROBIT_PIN_I2C_READ="%1 %2 i2c 讀取 i2c地址 %3 ,格式為 %4 重複 %5";s.Msg.MICROBIT_PIN_I2C_WRITE="%1 %2 向 i2c地址 %3 寫入值 %4 ,格式為 %5 重複 %6";s.Msg.MICROBIT_PIN_I2C_READ_OPT1="否";s.Msg.MICROBIT_PIN_I2C_READ_OPT2="是";s.Msg.MICROBIT_SENSOR_BUTTON_PRESSED="%1 %2 按鍵 %3 被按下?";s.Msg.MICROBIT_SENSOR_GESTURE_STRIKE="%1 %2 姿態是 %3?";s.Msg.MICROBIT_SENSOR_ACCELERATION="%1 %2 %3 加速度";s.Msg.MICROBIT_SENSOR_ACCELERATION_VALUE_OPTION0="x軸";s.Msg.MICROBIT_SENSOR_ACCELERATION_VALUE_OPTION1="y軸";s.Msg.MICROBIT_SENSOR_ACCELERATION_VALUE_OPTION2="z軸";s.Msg.MICROBIT_SENSOR_COMPASSANGLE="%1 %2 指南針角度";s.Msg.MICROBIT_SENSOR_COMPASS_MAGNETICDENSITY="%1 %2 指南針磁場強度";s.Msg.MICROBIT_SENSOR_CALIBRATE_COMPASS="%1 %2 校正指南針";s.Msg.MICROBIT_SENSOR_TEMPERATURE="%1 %2 溫度";s.Msg.MICROBIT_SENSOR_RUNNINGTIME="%1 %2 運行時間";s.Msg.MICROBIT_SHOW_IMAGE="%1 %2 顯示圖案 %3";s.Msg.MICROBIT_SHOW_IMAGEFOR="%1 %2 顯示圖案 %3 持續 %4 秒";s.Msg.MICROBIT_SHOW_MIRRORING_IMAGE="%1 %2 鏡像顯示圖案 %3";s.Msg.MICROBIT_SHOW_SETIMAGE="%1 %2 設定圖案 %3 %4 移動 %5";s.Msg.MICROBIT_SHOW_POSITION_VALUE_OPTION0="向左";s.Msg.MICROBIT_SHOW_POSITION_VALUE_OPTION1="向右";s.Msg.MICROBIT_SHOW_POSITION_VALUE_OPTION2="向上";s.Msg.MICROBIT_SHOW_POSITION_VALUE_OPTION3="向下";s.Msg.MICROBIT_SHOW_TEXT="%1 %2 顯示 %3";s.Msg.MICROBIT_SHOW_TEXTUNTIL="%1 %2 顯示 %3 直到滾動結束";s.Msg.MICROBIT_SHOW_CLOSE="%1 %2 熄滅螢幕";s.Msg.MICROBIT_SHOW_LIGHT="%1 %2 %3 在座標 x: %4 y: %5";s.Msg.MICROBIT_SHOW_LIGHT_ACTION_VALUE_OPTION0="點亮";s.Msg.MICROBIT_SHOW_LIGHT_ACTION_VALUE_OPTION1="熄滅";s.Msg.MICROBIT_SHOW_LIGHTON="%1 %2 設定x: %3 y: %4 的亮度為 %5";s.Msg.MICROBIT_SHOW_BRIGHTNESS="%1 %2 獲得 x: %3 y: %4的亮度";s.Msg.MICROBIT_MUSIC_PLAY="%1 %2 腳位 %3 播放聲音 %4";s.Msg.MICROBIT_MUSIC_PLAY_UNTILDONE="%1 %2 腳位 %3 播放聲音 %4 直到播放結束";s.Msg.MICROBIT_MUSIC_PLAY_NOTE="%1 %2 腳位 %3 播放音符 %4 持續 %5";s.Msg.MICROBIT_MUSIC_CHANGETEMPO="%1 %2 調整聲音速度(bpm)%3";s.Msg.MICROBIT_MUSIC_SETTEMPO="%1 %2 將聲音速度(bpm)設定為 %3";s.Msg.MICROBIT_MUSIC_TEMPO="%1 %2 聲音速度(bpm)";s.Msg.MICROBIT_BITPLAYER_KEY_IS_PRESSED="%1 %2 BitPlayer: 當按鍵 %3 正在被按下";s.Msg.MICROBIT_BITPLAYER_JOYSTICK="%1 %2 BitPlayer: 搖桿被推向 %3";s.Msg.MICROBIT_BITPLAYER_VIBRATION="%1 %2 BitPlayer: 震動 %3";s.Msg.MICROBIT_BITPLAYER_VIBRATION_OPT1="開";s.Msg.MICROBIT_BITPLAYER_VIBRATION_OPT2="關";s.Msg.MICROBIT_BITPLAYER_JOYSTICK_OPT1="左上";s.Msg.MICROBIT_BITPLAYER_JOYSTICK_OPT2="上";s.Msg.MICROBIT_BITPLAYER_JOYSTICK_OPT3="右上";s.Msg.MICROBIT_BITPLAYER_JOYSTICK_OPT4="左";s.Msg.MICROBIT_BITPLAYER_JOYSTICK_OPT5="中";s.Msg.MICROBIT_BITPLAYER_JOYSTICK_OPT6="右";s.Msg.MICROBIT_BITPLAYER_JOYSTICK_OPT7="左下";s.Msg.MICROBIT_BITPLAYER_JOYSTICK_OPT8="下";s.Msg.MICROBIT_BITPLAYER_JOYSTICK_OPT9="右下";s.Msg.MICROBIT_BITWEAR_VIBRATION="%1 %2 BitWear: 震動 %3";s.Msg.MICROBIT_BITWEAR_SET_LED_COLOR="%1 %2 BitWear: 設定LED燈顏色 %3";s.Msg.MICROBIT_BITMAKER_SET_LED_COLOR="%1 %2 BitMaker: 設定LED燈 %3 顏色 %4";s.Msg.MICROBIT_BITCAR_MOVE="%1 %2 BitCar: 左輪動力 %3 %,右輪動力 %4 %";s.Msg.MICROBIT_BITCAR_STOP="%1 %2 BitCar: 停止";s.Msg.MICROBIT_BITCAR_STANDUP_STILL="%1 %2 BitCar: 以速度 %3 %站立,沖刺 %4 (ms)";s.Msg.MICROBIT_BITCAR_LINE_UNDER_SENSOR="%1 %2 BitCar: 黑線在 %3 感應器下方";s.Msg.MICROBIT_BITCAR_LINE_UNDER_SENSOR_OPT1="左側";s.Msg.MICROBIT_BITCAR_LINE_UNDER_SENSOR_OPT2="右側";s.Msg.MICROBIT_BITCAR_LINE_FOLLOW_AT_SPEED="%1 %2 BitCar: 以 %3 % 速度巡線";s.Msg.MICROBIT_GROVE_ONE_MINI_FAN_SET_SPEED="%1 %2 迷妳風扇 %3 :設定轉速為 %4 %";s.Msg.MICROBIT_GROVE_ONE_SERVO_SET_ANGLE="%1 %2 伺服馬達 %3 :設定角度為 %4 °";s.Msg.MICROBIT_GROVE_ONE_ULTRASONIC_GET_DISTANCE="%1 %2 超聲波測距感應器 %3 :距離 %4";s.Msg.MICROBIT_GROVE_ONE_ULTRASONIC_GET_DISTANCE_OPT1="厘米";s.Msg.MICROBIT_GROVE_ONE_ULTRASONIC_GET_DISTANCE_OPT2="英尺";s.Msg.CATEGORY_COMMON="常用";s.Msg.CATEGORY_SYSTEM="系統資源";s.Msg.CATEGORY_SHOW="顯示";s.Msg.CATEGORY_MUSIC="音樂";s.Msg.CATEGORY_AUDIO="音頻";s.Msg.CATEGORY_PIN="腳位";s.Msg.CATEGORY_RADIO="無線廣播";s.Msg.CATEGORY_DISPLAY="顯示";s.Msg.CATEGORY_LIGHTING="燈光";s.Msg.CATEGORY_ACTION="動作";s.Msg.CATEGORY_SENSOR="感知";s.Msg.CATEGORY_WIRELESS="無線通訊";s.Msg.CATEGORY_ADDONS="擴展板";s.Msg.CATEGORY_GROVE_ONE="Grove One";s.Msg.CATEGORY_DISPLAY1="顯示";s.Msg.CATEGORY_MACHINE_VISION="圖像識別";s.Msg.CATEGORY_CNN_MODELS="模型預測";s.Msg.CATEGORY_MAXIDUINO_SYSTEM="系統";s.Msg.CATEGORY_START="初始化";s.Msg.CATEGORY_GROVE_INPUT="Grove 輸入";s.Msg.CATEGORY_GROVE_OUTPUT="Grove 輸出";s.Msg.CATEGORY_MAIXDUINO_GROVE="Grove";s.Msg.SNAPSHOOT="快照";s.Msg.MAIXDUINO_ENENT_DELAY="等待 %1 %2";s.Msg.MAIXDUINO_ENENT_DELAY_UNIT_MS="毫秒";s.Msg.MAIXDUINO_ENENT_DELAY_UNIT_US="微秒";s.Msg.MAIXDUINO_ENENT_RUNTIME="運行時間 %1";s.Msg.MAIXDUINO_DISPLAY_ORIENTATION="設定螢幕方向為 %1";s.Msg.MAIXDUINO_DISPLAY_ORIENTATION_NORMAL="正常";s.Msg.MAIXDUINO_DISPLAY_ORIENTATION_ROTATE="翻轉";s.Msg.MAIXDUINO_DISPLAY_STRING_AT_POSITION="顯示 %1 於 X%2 Y%3";s.Msg.MAIXDUINO_DISPLAY_DRAW_RECTANGLE_WH="繪制長方形: 長%1 寬%2 中心座標 X%3 Y%4";s.Msg.MAIXDUINO_CAMERA_DETECTION_BALL_AT_SIZE_COLOR="檢測到 %1 圓形";s.Msg.MAIXDUINO_CAMERA_DETECTION_BALL_RGB="檢測到的圓RGB值";s.Msg.MAIXDUINO_CAMERA_DETECTION_RECTANGLE_AT_SIZE_COLOR="檢測到 %1 長方形";s.Msg.MAIXDUINO_CAMERA_DETECTION_RECTANGLE_RGB="檢測到的長方形RGB值";s.Msg.MAIXDUINO_CAMERA_COLORLINE_SETCOLOR="設定線識別顏色為 %1";s.Msg.MAIXDUINO_CAMERA_COLORLINE_SETWEIGHT="設定線識別區域權重: A區 %1% B區 %2% C區 %3%";s.Msg.MAIXDUINO_CAMERA_COLORLINE_TURNANGLE="轉彎角度";s.Msg.MAIXDUINO_SEEED_LINE_FINDER="%1 %2 腳位 %3 巡線感應器檢測到 %4";s.Msg.MAIXDUINO_FIGURE_OUTPUT="向 數字引腳 %1 寫入值 %2";s.Msg.MAIXDUINO_FIGURE_INPUT="數字讀取 腳位 %1";s.Msg.MAIXDUINO_ANALOG_INPUT="模擬輸入 管腳 %1";s.Msg.MAIXDUINO_ANALOG_OUTPUT="向 模擬引腳 %1 寫入值 %2";s.Msg.MAIXDUINO_CAMERA_COORDP_X="X座標";s.Msg.MAIXDUINO_CAMERA_COORDP_W="長";s.Msg.MAIXDUINO_CAMERA_COORDP_H="寬";s.Msg.MAIXDUINO_ROBOT_MARK_OPT1="前進";s.Msg.MAIXDUINO_ROBOT_MARK_OPT2="後退";s.Msg.MAIXDUINO_ROBOT_MARK_OPT3="左轉";s.Msg.MAIXDUINO_ROBOT_MARK_OPT4="右轉";s.Msg.MAIXDUINO_ROBOT_MARK_OPT6="慢速";s.Msg.MAIXDUINO_ROBOT_MARK_OPT7="中速";s.Msg.MAIXDUINO_ROBOT_MARK_OPT8="全速";s.Msg.MAIXDUINO_ROBOT_MARK_STOP="M.A.R.K 小車停止運動";s.Msg.MAIXDUINO_ROBOT_MOTOR_RUN_0PT1="左輪";s.Msg.MAIXDUINO_ROBOT_MOTOR_RUN_0PT2="右輪";s.Msg.MAIXDUINO_GROVE_BUTTON_ISPRESSED="%1 %2 腳位 %3 按鍵開關正在被按下?";s.Msg.MAIXDUINO_GROVE_ULT_DISTANCE="%1 %2 腳位 %3 超聲波測距感應器 距離(cm)";s.Msg.MAIXDUINO_GROVE_RGBLED_STRIP_DISPALY="%1 %2 腳位 %3 RGB 燈條 %4 燈亮 %5";s.Msg.MAIXDUINO_GROVE_RGBLED_STRIP_DISPALY1="%1 %2 腳位 %3 RGB 燈條 %4 R %5 G %6 B %7";s.Msg.MAIXDUINO_GROVE_RGBLED_STRIP_CLOSED="%1 %2 腳位 %3 RGB 燈條 熄滅";s.Msg.MAIXDUINO_ROBOT_SPEAKER_SETVOL="M.A.R.K. 揚聲器 設定音量為 %1 %";s.Msg.MAIXDUINO_ROBOT_SPEAKER_PLAYNOTE="M.A.R.K. 揚聲器 播放音調 %1 %2 拍";s.Msg.MAIXDUINO_ROBOT_SPEAKER_PAUSE="M.A.R.K. 揚聲器 停頓 %1 拍";s.Msg.MAIXDUINO_ROBOT_SPEAKER_BEAT_OPT0="1";s.Msg.MAIXDUINO_ROBOT_SPEAKER_BEAT_OPT1="1/2";s.Msg.MAIXDUINO_ROBOT_SPEAKER_BEAT_OPT2="1/4";s.Msg.MAIXDUINO_ROBOT_SPEAKER_BEAT_OPT3="1/8";s.Msg.MAIXDUINO_ROBOT_SPEAKER_BEAT_OPT4="1/16";s.Msg.MAIXDUINO_ROBOT_SPEAKER_BEAT_OPT5="2";s.Msg.MAIXDUINO_ROBOT_SPEAKER_BEAT_OPT6="4";s.Msg.MAIXDUINO_ROBOT_SPEAKER_BEAT_OPT7="8";s.Msg.MAIXDUINO_ROBOT_HEAD_LIGHTS_SHOW="M.A.R.K %1 車頭燈亮 %2";s.Msg.MAIXDUINO_ROBOT_TAIL_LIGHTS_SHOW="M.A.R.K. 尾燈 %1 亮 %2 %3 %4 ";s.Msg.MAIXDUINO_ROBOT_LIGHTS_CRUSHOUT="M.A.R.K. %1 車頭燈熄滅";s.Msg.MAIXDUINO_ROBOT_HEAD_LIGHTS_OPT01="左";s.Msg.MAIXDUINO_ROBOT_HEAD_LIGHTS_OPT02="右";s.Msg.MAIXDUINO_ROBOT_TAIL_LIGHTS_OPT01="頂部";s.Msg.MAIXDUINO_ROBOT_TAIL_LIGHTS_OPT02="中間";s.Msg.MAIXDUINO_ROBOT_TAIL_LIGHTS_OPT03="尾部";s.Msg.MAIXDUINO_ROBOT_LIGHTS_OPT01="全部";s.Msg.MAIXDUINO_ROBOT_LIGHTS_OPT02="前";s.Msg.MAIXDUINO_ROBOT_LIGHTS_OPT03="尾";s.Msg.CocoRobo_SYSRESOURES_SLOPE_OPT1="向前傾斜";s.Msg.CocoRobo_SYSRESOURES_SLOPE_OPT2="向後傾斜";s.Msg.CocoRobo_SYSRESOURES_SLOPE_OPT3="向左傾斜";s.Msg.CocoRobo_SYSRESOURES_SLOPE_OPT4="向右傾斜";s.Msg.CocoRobo_SYSRESOURES_BME280_OPT1="溫度";s.Msg.CocoRobo_SYSRESOURES_BME280_OPT2="濕度";s.Msg.CocoRobo_SYSRESOURES_BME280_OPT3="氣壓";s.Msg.CocoRobo_SYSRESOURES_OPERATE_OPT1="刷新";s.Msg.CocoRobo_SYSRESOURES_OPERATE_OPT2="刪除";s.Msg.CocoRobo_SYSRESOURES_TIME_OPT0="清空";s.Msg.CocoRobo_SYSRESOURES_TIME_OPT1="年";s.Msg.CocoRobo_SYSRESOURES_TIME_OPT2="月";s.Msg.CocoRobo_SYSRESOURES_TIME_OPT3="日";s.Msg.CocoRobo_SYSRESOURES_TIME_OPT4="時";s.Msg.CocoRobo_SYSRESOURES_TIME_OPT5="分";s.Msg.CocoRobo_SYSRESOURES_TIME_OPT6="秒";s.Msg.CocoRobo_SYSRESOURES_TIME_OPT7="星期數";s.Msg.CocoRobo_SYSRESOURES_TIME_OPT8="天數";s.Msg.CocoRobo_SYSRESOURES_TIME_OPT9="毫秒";s.Msg.CocoRobo_SYSRESOURES_TIME_OPT10="微秒";s.Msg.CocoRobo_PIN_OPT="default";s.Msg.CocoRobo_PIN_OPT0="P0";s.Msg.CocoRobo_PIN_OPT1="P1";s.Msg.CocoRobo_PIN_OPT2="P2";s.Msg.CocoRobo_PIN_OPT3="P3(EXT)";s.Msg.CocoRobo_PIN_OPT4="P4(light)";s.Msg.CocoRobo_PIN_OPT6="P6(buzzer)";s.Msg.CocoRobo_PIN_OPT7="P7(RGB)";s.Msg.CocoRobo_PIN_OPT8="P8";s.Msg.CocoRobo_PIN_OPT9="P9";s.Msg.CocoRobo_PIN_OPT10="P10(sound)";s.Msg.CocoRobo_PIN_OPT13="P13";s.Msg.CocoRobo_PIN_OPT14="P14";s.Msg.CocoRobo_PIN_OPT15="P15";s.Msg.CocoRobo_PIN_OPT16="P16";s.Msg.CocoRobo_PIN_OPT19="P19(LCD)";s.Msg.CocoRobo_PIN_OPT20="P20(LCD)";s.Msg.CocoRobo_PIN_VOLTAGE_OPT1="高";s.Msg.CocoRobo_PIN_VOLTAGE_OPT2="低";s.Msg.CocoRobo_PIN_MODE_OPT1="無上下拉";s.Msg.CocoRobo_PIN_MODE_OPT2="上拉";s.Msg.CocoRobo_PIN_MODE_OPT3="下拉";s.Msg.CocoRobo_PIN_STATYS_OPT1="輸入";s.Msg.CocoRobo_PIN_STATYS_OPT2="推挽輸出";s.Msg.CocoRobo_PIN_STATYS_OPT3="開漏輸出";s.Msg.CocoRobo_LOOKS_OLCD_OPT1="清空";s.Msg.CocoRobo_LOOKS_OLCD_OPT2="全亮";s.Msg.CocoRobo_LOOKS_OLCD_OPT3="黑底";s.Msg.CocoRobo_LOOKS_OLCD_OPT4="白底";s.Msg.CocoRobo_EVENT_ACTION_OPT1="按下";s.Msg.CocoRobo_EVENT_ACTION_OPT2="松開";s.Msg.CocoRobo_EVENT_ACTION_OPT3="觸摸";s.Msg.CocoRobo_EVENT_ACTION_OPT4="釋放";s.Msg.CocoRobo_EVENT_ACTION_OPT5="重複執行";s.Msg.CocoRobo_EVENT_ACTION_OPT6="延時執行";s.Msg.CocoRobo_MUSIC_ACTION_OPT1="打開";s.Msg.CocoRobo_MUSIC_ACTION_OPT2="關閉";s.Msg.CocoRobo_MUSIC_ACTION_OPT3="暫停";s.Msg.CocoRobo_MUSIC_ACTION_OPT4="繼續播放";s.Msg.CocoRobo_MUSIC_ACTION_OPT5="停止";s.Msg.CocoRobo_EVENT_VOLTAGE_OPT1="↗從低到高";s.Msg.CocoRobo_EVENT_VOLTAGE_OPT2="↘從高到低";s.Msg.CocoRobo_LOOKS_MODE_OPT1="普通";s.Msg.CocoRobo_LOOKS_MODE_OPT2="反轉";s.Msg.CocoRobo_LOOKS_MODE_OPT3="透明";s.Msg.CocoRobo_LOOKS_MODE_OPT4="XOR";s.Msg.CocoRobo_LOOKS_LIGHT_OPT1="亮";s.Msg.CocoRobo_LOOKS_LIGHT_OPT2="暗";s.Msg.CocoRobo_LOOKS_DIRECTION_OPT1="垂直";s.Msg.CocoRobo_LOOKS_DIRECTION_OPT2="水平";s.Msg.CocoRobo_OPERATORS_JUDGE_OPT1="是偶數";s.Msg.CocoRobo_OPERATORS_JUDGE_OPT2="是奇數";s.Msg.CocoRobo_OPERATORS_JUDGE_OPT3="是整數";s.Msg.CocoRobo_OPERATORS_JUDGE_OPT4="為正";s.Msg.CocoRobo_OPERATORS_JUDGE_OPT5="為負";s.Msg.CocoRobo_OPERATORS_JUDGE_OPT6="可被整除";s.Msg.CocoRobo_LOOKS_DRAW_OPT1="繪制";s.Msg.CocoRobo_LOOKS_DRAW_OPT2="擦除";s.Msg.CocoRobo_LOOKS_CIRCLE_OPT1="空心";s.Msg.CocoRobo_LOOKS_CIRCLE_OPT2="實心";s.Msg.CocoRobo_LOOKS_FONT_OPT1="不換欄";s.Msg.CocoRobo_LOOKS_FONT_OPT2="自動換欄";s.Msg.CocoRobo_LOOKS_EXPRESSION_OPT1="心型";s.Msg.CocoRobo_LOOKS_EXPRESSION_OPT2="心型(小)";s.Msg.CocoRobo_LOOKS_EXPRESSION_OPT3="高興";s.Msg.CocoRobo_LOOKS_EXPRESSION_OPT4="笑臉";s.Msg.CocoRobo_LOOKS_EXPRESSION_OPT5="傷心";s.Msg.CocoRobo_LOOKS_EXPRESSION_OPT6="困惑";s.Msg.CocoRobo_LOOKS_EXPRESSION_OPT7="生氣";s.Msg.CocoRobo_LOOKS_EXPRESSION_OPT8="睡著";s.Msg.CocoRobo_LOOKS_EXPRESSION_OPT9="驚訝";s.Msg.CocoRobo_LOOKS_EXPRESSION_OPT10="愚蠢";s.Msg.CocoRobo_LOOKS_EXPRESSION_OPT11="極妙";s.Msg.CocoRobo_LOOKS_EXPRESSION_OPT12="無聊";s.Msg.CocoRobo_LOOKS_EXPRESSION_OPT13="石頭";s.Msg.CocoRobo_LOOKS_EXPRESSION_OPT14="石頭(小)";s.Msg.CocoRobo_LOOKS_EXPRESSION_OPT15="布";s.Msg.CocoRobo_LOOKS_EXPRESSION_OPT16="布(小)";s.Msg.CocoRobo_LOOKS_EXPRESSION_OPT17="剪刀";s.Msg.CocoRobo_LOOKS_EXPRESSION_OPT18="剪刀(小)";s.Msg.CocoRobo_LOOKS_EXPRESSION_OPT19="Expressions/Big smile.pbm";s.Msg.CocoRobo_LOOKS_EXPRESSION_OPT20="Expressions/Heart large.pbm";s.Msg.CocoRobo_LOOKS_EXPRESSION_OPT21="Expressions/Heart small.pbm";s.Msg.CocoRobo_LOOKS_EXPRESSION_OPT22="Expressions/Mouth 1 open.pbm";s.Msg.CocoRobo_LOOKS_EXPRESSION_OPT23="Expressions/Mouth 1 shut.pbm";s.Msg.CocoRobo_LOOKS_EXPRESSION_OPT24="Expressions/Mouth 2 open.pbm";s.Msg.CocoRobo_LOOKS_EXPRESSION_OPT25="Expressions/Mouth 2 shut.pbm";s.Msg.CocoRobo_LOOKS_EXPRESSION_OPT26="Expressions/Sad.pbm";s.Msg.CocoRobo_LOOKS_EXPRESSION_OPT27="Expressions/Sick.pbm";s.Msg.CocoRobo_LOOKS_EXPRESSION_OPT28="Expressions/Smile.pbm";s.Msg.CocoRobo_LOOKS_EXPRESSION_OPT29="Expressions/Swearing.pbm";s.Msg.CocoRobo_LOOKS_EXPRESSION_OPT30="Expressions/Talking.pbm";s.Msg.CocoRobo_LOOKS_EXPRESSION_OPT31="Expressions/Wink.pbm";s.Msg.CocoRobo_LOOKS_EXPRESSION_OPT32="Expressions/ZZZ.pbm";s.Msg.CocoRobo_LOOKS_EXPRESSION_OPT33="Eyes/Angry.pbm";s.Msg.CocoRobo_LOOKS_EXPRESSION_OPT34="Eyes/Awake.pbm";s.Msg.CocoRobo_LOOKS_EXPRESSION_OPT35="Eyes/Black eye.pbm";s.Msg.CocoRobo_LOOKS_EXPRESSION_OPT36="Eyes/Bottom left.pbm";s.Msg.CocoRobo_LOOKS_EXPRESSION_OPT37="Eyes/Bottom right.pbm";s.Msg.CocoRobo_LOOKS_EXPRESSION_OPT38="Eyes/Crazy 1.pbm";s.Msg.CocoRobo_LOOKS_EXPRESSION_OPT39="Eyes/Crazy 2.pbm";s.Msg.CocoRobo_LOOKS_EXPRESSION_OPT40="Eyes/Disappointed.pbm";s.Msg.CocoRobo_LOOKS_EXPRESSION_OPT41="Eyes/Dizzy.pbm";s.Msg.CocoRobo_LOOKS_EXPRESSION_OPT42="Eyes/Down.pbm";s.Msg.CocoRobo_LOOKS_EXPRESSION_OPT43="Eyes/Evil.pbm";s.Msg.CocoRobo_LOOKS_EXPRESSION_OPT44="Eyes/Hurt.pbm";s.Msg.CocoRobo_LOOKS_EXPRESSION_OPT45="Eyes/Knocked out.pbm";s.Msg.CocoRobo_LOOKS_EXPRESSION_OPT46="Eyes/Love.pbm";s.Msg.CocoRobo_LOOKS_EXPRESSION_OPT47="Eyes/Middle left.pbm";s.Msg.CocoRobo_LOOKS_EXPRESSION_OPT48="Eyes/Middle right.pbm";s.Msg.CocoRobo_LOOKS_EXPRESSION_OPT49="Eyes/Neutral.pbm";s.Msg.CocoRobo_LOOKS_EXPRESSION_OPT50="Eyes/Nuclear.pbm";s.Msg.CocoRobo_LOOKS_EXPRESSION_OPT51="Eyes/Pinch left.pbm";s.Msg.CocoRobo_LOOKS_EXPRESSION_OPT52="Eyes/Pinch middle.pbm";s.Msg.CocoRobo_LOOKS_EXPRESSION_OPT53="Eyes/Pinch right.pbm";s.Msg.CocoRobo_LOOKS_EXPRESSION_OPT54="Eyes/Tear.pbm";s.Msg.CocoRobo_LOOKS_EXPRESSION_OPT55="Eyes/Tired left.pbm";s.Msg.CocoRobo_LOOKS_EXPRESSION_OPT56="Eyes/Tired middle.pbm";s.Msg.CocoRobo_LOOKS_EXPRESSION_OPT57="Eyes/Tired right.pbm";s.Msg.CocoRobo_LOOKS_EXPRESSION_OPT58="Eyes/Toxic.pbm";s.Msg.CocoRobo_LOOKS_EXPRESSION_OPT59="Eyes/Up.pbm";s.Msg.CocoRobo_LOOKS_EXPRESSION_OPT60="Eyes/Winking.pbm";s.Msg.CocoRobo_LOOKS_EXPRESSION_OPT61="Information/Accept.pbm";s.Msg.CocoRobo_LOOKS_EXPRESSION_OPT62="Information/Backward.pbm";s.Msg.CocoRobo_LOOKS_EXPRESSION_OPT63="Information/Decline.pbm";s.Msg.CocoRobo_LOOKS_EXPRESSION_OPT64="Information/Forward.pbm";s.Msg.CocoRobo_LOOKS_EXPRESSION_OPT65="Information/Left.pbm";s.Msg.CocoRobo_LOOKS_EXPRESSION_OPT66="Information/No go.pbm";s.Msg.CocoRobo_LOOKS_EXPRESSION_OPT67="Information/Question mark.pbm";s.Msg.CocoRobo_LOOKS_EXPRESSION_OPT68="Information/Right.pbm";s.Msg.CocoRobo_LOOKS_EXPRESSION_OPT69="Information/Stop 1.pbm";s.Msg.CocoRobo_LOOKS_EXPRESSION_OPT70="Information/Stop 2.pbm";s.Msg.CocoRobo_LOOKS_EXPRESSION_OPT71="Information/Thumbs down.pbm";s.Msg.CocoRobo_LOOKS_EXPRESSION_OPT72="Information/Thumbs up.pbm";s.Msg.CocoRobo_LOOKS_EXPRESSION_OPT73="Information/Warning.pbm";s.Msg.CocoRobo_LOOKS_EXPRESSION_OPT74="Objects/Bomb.pbm";s.Msg.CocoRobo_LOOKS_EXPRESSION_OPT75="Objects/Boom.pbm";s.Msg.CocoRobo_LOOKS_EXPRESSION_OPT76="Objects/Fire.pbm";s.Msg.CocoRobo_LOOKS_EXPRESSION_OPT77="Objects/Flowers.pbm";s.Msg.CocoRobo_LOOKS_EXPRESSION_OPT78="Objects/Forest.pbm";s.Msg.CocoRobo_LOOKS_EXPRESSION_OPT79="Objects/Light off.pbm";s.Msg.CocoRobo_LOOKS_EXPRESSION_OPT80="Objects/Light on.pbm";s.Msg.CocoRobo_LOOKS_EXPRESSION_OPT81="Objects/Lightning.pbm";s.Msg.CocoRobo_LOOKS_EXPRESSION_OPT82="Objects/Night.pbm";s.Msg.CocoRobo_LOOKS_EXPRESSION_OPT83="Objects/Pirate.pbm";s.Msg.CocoRobo_LOOKS_EXPRESSION_OPT84="Objects/Snow.pbm";s.Msg.CocoRobo_LOOKS_EXPRESSION_OPT85="Objects/Target.pbm";s.Msg.CocoRobo_LOOKS_EXPRESSION_OPT86="Progress/Bar 0.pbm";s.Msg.CocoRobo_LOOKS_EXPRESSION_OPT87="Progress/Bar 1.pbm";s.Msg.CocoRobo_LOOKS_EXPRESSION_OPT88="Progress/Bar 2.pbm";s.Msg.CocoRobo_LOOKS_EXPRESSION_OPT89="Progress/Bar 3.pbm";s.Msg.CocoRobo_LOOKS_EXPRESSION_OPT90="Progress/Bar 4.pbm";s.Msg.CocoRobo_LOOKS_EXPRESSION_OPT91="Progress/Dial 0.pbm";s.Msg.CocoRobo_LOOKS_EXPRESSION_OPT92="Progress/Dial 1.pbm";s.Msg.CocoRobo_LOOKS_EXPRESSION_OPT93="Progress/Dial 2.pbm";s.Msg.CocoRobo_LOOKS_EXPRESSION_OPT94="Progress/Dial 3.pbm";s.Msg.CocoRobo_LOOKS_EXPRESSION_OPT95="Progress/Dial 4.pbm";s.Msg.CocoRobo_LOOKS_EXPRESSION_OPT96="Progress/Dots 0.pbm";s.Msg.CocoRobo_LOOKS_EXPRESSION_OPT97="Progress/Dots 1.pbm";s.Msg.CocoRobo_LOOKS_EXPRESSION_OPT98="Progress/Dots 2.pbm";s.Msg.CocoRobo_LOOKS_EXPRESSION_OPT99="Progress/Dots 3.pbm";s.Msg.CocoRobo_LOOKS_EXPRESSION_OPT100="Progress/Hourglass 0.pbm";s.Msg.CocoRobo_LOOKS_EXPRESSION_OPT101="Progress/Hourglass 1.pbm";s.Msg.CocoRobo_LOOKS_EXPRESSION_OPT102="Progress/Hourglass 2.pbm";s.Msg.CocoRobo_LOOKS_EXPRESSION_OPT103="Progress/Timer 0.pbm";s.Msg.CocoRobo_LOOKS_EXPRESSION_OPT104="Progress/Timer 1.pbm";s.Msg.CocoRobo_LOOKS_EXPRESSION_OPT105="Progress/Timer 2.pbm";s.Msg.CocoRobo_LOOKS_EXPRESSION_OPT106="Progress/Timer 3.pbm";s.Msg.CocoRobo_LOOKS_EXPRESSION_OPT107="Progress/Timer 4.pbm";s.Msg.CocoRobo_LOOKS_EXPRESSION_OPT108="Progress/Water level 0.pbm";s.Msg.CocoRobo_LOOKS_EXPRESSION_OPT109="Progress/Water level 1.pbm";s.Msg.CocoRobo_LOOKS_EXPRESSION_OPT110="Progress/Water level 2.pbm";s.Msg.CocoRobo_LOOKS_EXPRESSION_OPT111="Progress/Water level 3.pbm";s.Msg.CocoRobo_LOOKS_EXPRESSION_OPT112="System/Accept_1.pbm";s.Msg.CocoRobo_LOOKS_EXPRESSION_OPT113="System/Accept_2.pbm";s.Msg.CocoRobo_LOOKS_EXPRESSION_OPT114="System/Alert.pbm";s.Msg.CocoRobo_LOOKS_EXPRESSION_OPT115="System/Box.pbm";s.Msg.CocoRobo_LOOKS_EXPRESSION_OPT116="System/Busy_0.pbm";s.Msg.CocoRobo_LOOKS_EXPRESSION_OPT117="System/Busy_1.pbm";s.Msg.CocoRobo_LOOKS_EXPRESSION_OPT118="System/Decline_1.pbm";s.Msg.CocoRobo_LOOKS_EXPRESSION_OPT119="System/Decline_2.pbm";s.Msg.CocoRobo_LOOKS_EXPRESSION_OPT120="System/Dot_empty.pbm";s.Msg.CocoRobo_LOOKS_EXPRESSION_OPT121="System/Dot_full.pbm";s.Msg.CocoRobo_LOOKS_EXPRESSION_OPT122="System/Play.pbm";s.Msg.CocoRobo_LOOKS_EXPRESSION_OPT123="System/Slider_0.pbm";s.Msg.CocoRobo_LOOKS_EXPRESSION_OPT124="System/Slider_1.pbm";s.Msg.CocoRobo_LOOKS_EXPRESSION_OPT125="System/Slider_2.pbm";s.Msg.CocoRobo_LOOKS_EXPRESSION_OPT126="System/Slider_3.pbm";s.Msg.CocoRobo_LOOKS_EXPRESSION_OPT127="System/Slider_4.pbm";s.Msg.CocoRobo_LOOKS_EXPRESSION_OPT128="System/Slider_5.pbm";s.Msg.CocoRobo_LOOKS_EXPRESSION_OPT129="System/Slider_6.pbm";s.Msg.CocoRobo_LOOKS_EXPRESSION_OPT130="System/Slider_7.pbm";s.Msg.CocoRobo_LOOKS_EXPRESSION_OPT131="System/Slider_8.pbm";s.Msg.CocoRobo_LOOKS_TUBE_OPT1="仿數碼管11畫素";s.Msg.CocoRobo_LOOKS_TUBE_OPT2="仿數碼管16畫素";s.Msg.CocoRobo_LOOKS_TUBE_OPT3="仿數碼管21畫素";s.Msg.CocoRobo_LOOKS_TUBE_OPT4="仿數碼管30畫素";s.Msg.CocoRobo_LOOKS_TUBE_OPT5="仿數碼管44畫素";s.Msg.CocoRobo_LOOKS_TUBE_OPT6="仿數碼管斜體 30畫素";s.Msg.CocoRobo_LOOKS_TUBE_OPT7="仿數碼管斜體 42畫素";s.Msg.CocoRobo_LOOKS_TUBE_OPT8="DejaVu Sans Mono 12畫素";s.Msg.CocoRobo_LOOKS_TUBE_OPT9="DejaVu Sans Mono 16畫素";s.Msg.CocoRobo_LOOKS_TUBE_OPT10="DejaVu Sans Mono 21畫素";s.Msg.CocoRobo_LOOKS_TUBE_OPT11="DejaVu Sans Mono 黑體 12畫素";s.Msg.CocoRobo_LOOKS_TUBE_OPT12="DejaVu Sans Mono 黑體 16畫素";s.Msg.CocoRobo_LOOKS_TUBE_OPT13="DejaVu Sans Mono 黑體 21畫素";s.Msg.CocoRobo_WIFI_ZONE_OPT1="東壹區";s.Msg.CocoRobo_WIFI_ZONE_OPT2="東二區";s.Msg.CocoRobo_WIFI_ZONE_OPT3="東三區";s.Msg.CocoRobo_WIFI_ZONE_OPT4="東四區";s.Msg.CocoRobo_WIFI_ZONE_OPT5="東五區";s.Msg.CocoRobo_WIFI_ZONE_OPT6="東六區";s.Msg.CocoRobo_WIFI_ZONE_OPT7="東七區";s.Msg.CocoRobo_WIFI_ZONE_OPT8="東八區";s.Msg.CocoRobo_WIFI_ZONE_OPT9="東九區";s.Msg.CocoRobo_WIFI_ZONE_OPT10="東十區";s.Msg.CocoRobo_WIFI_ZONE_OPT11="東十壹區";s.Msg.CocoRobo_WIFI_ZONE_OPT12="東十二區";s.Msg.CocoRobo_WIFI_ZONE_OPT13="西壹區";s.Msg.CocoRobo_WIFI_ZONE_OPT14="西二區";s.Msg.CocoRobo_WIFI_ZONE_OPT15="西三區";s.Msg.CocoRobo_WIFI_ZONE_OPT16="西四區";s.Msg.CocoRobo_WIFI_ZONE_OPT17="西五區";s.Msg.CocoRobo_WIFI_ZONE_OPT18="西六區";s.Msg.CocoRobo_WIFI_ZONE_OPT19="西七區";s.Msg.CocoRobo_WIFI_ZONE_OPT20="西八區";s.Msg.CocoRobo_WIFI_ZONE_OPT21="西九區";s.Msg.CocoRobo_WIFI_ZONE_OPT22="西十區";s.Msg.CocoRobo_WIFI_ZONE_OPT23="西十壹區";s.Msg.CocoRobo_WIFI_ZONE_OPT24="西十二區";s.Msg.GROVE_JOINT_SETUP="初始化 setup";s.Msg.GROVE_JOINT_SETUP_LOOP="循環 loop";s.Msg.GROVE_JOINT_INPUT_HUMITURE="%1 %2 溫濕度感應器 %3";s.Msg.GROVE_JOINT_INPUT_INFRARED="%1 %2 紅外接近感應器";s.Msg.GROVE_JOINT_INPUT_MAGNESWITCH="%1 %2 磁力開關";s.Msg.GROVE_JOINT_INPUT_ULTRASONIC="%1 %2 超聲波測距感應器";s.Msg.GROVE_JOINT_INPUT_LIGHT="%1 %2 光線感應器";s.Msg.GROVE_JOINT_INPUT_SLIDESWITCH="%1 %2 滑動電位開關";s.Msg.GROVE_JOINT_INPUT_INCLINE="%1 %2 傾斜感應器";s.Msg.GROVE_JOINT_INPUT_TOUCH="%1 %2 觸摸感應器";s.Msg.GROVE_JOINT_INPUT_NOISE="%1 %2 噪音感應器";s.Msg.GROVE_JOINT_INPUT_SOILHUMIDITY="%1 %2 土壤濕度感應器";s.Msg.GROVE_JOINT_INPUT_SHAFTSPEED="%1 %2 三軸數字加速度 %3";s.Msg.GROVE_JOINT_INPUT_MULTICHANNEDL_TOUCH="%1 %2 多通道觸摸感應器 通道 %3";s.Msg.GROVE_JOINT_OUTPUT_MINIMOTOR_RUN="%1 %2 迷妳馬達驅動板 馬達# %3 轉速 %4";s.Msg.GROVE_JOINT_OUTPUT_FOURDIGIT_TUBE_DISPLAY="%1 %2 四位數碼顯示管 顯示為 %3";s.Msg.GROVE_JOINT_OUTPUT_LEDBOARD_SHOW="%1 %2 LED驅動板 設為 %3";s.Msg.GROVE_JOINT_OUTPUT_RGBLED_SHOW="%1 %2 全彩RGB LED燈顯示為紅 %3 綠 %4 藍 %5";s.Msg.GROVE_JOINT_OUTPUT_SPEAKER_NOTEBEAT="%1 %2 揚聲器 音符 %3";s.Msg.GROVE_JOINT_OUTPUT_SERVO_TRUNANGLE="%1 %2 伺服馬達 角度(0-180) %3";s.Msg.GROVE_JOINT_OUTPUT_BUZZER_PLAY="%1 %2 蜂鳴器 設為 %3";s.Msg.GROVE_JOINT_OUTPUT_MOTOR_RUN="%1 %2 震動馬達 設為 %3";s.Msg.GROVE_JOINT_OUTPUT_DCMOTOR_RUN="%1 %2 直流馬達驅動板 設為 %3";s.Msg.GROVE_JOINT_INPUT_HUMITURE_OPT01="溫度";s.Msg.GROVE_JOINT_INPUT_HUMITURE_OPT02="濕度";s.Msg.GROVE_JOINT_INPUT_LEVEL_HIGH="高電平";s.Msg.GROVE_JOINT_INPUT_LEVEL_LOW="低電平";s.Categories={};s.Categories.motion="motion";s.Categories.looks="looks";s.Categories.sound="sounds";s.Categories.pen="pen";s.Categories.data="data";s.Categories.dataLists="data-lists";s.Categories.event="events";s.Categories.control="control";s.Categories.sensing="sensing";s.Categories.operators="operators";s.Categories.more="more";s.Msg.ESP32BUTTON="當按鈕";s.Msg.ESP32IS="是";s.Msg.ESP32PRESSED="按下時";s.Msg.ESP32RELEASED="鬆開時";s.Msg.ESP32DIALER_LEFT="左側";s.Msg.ESP32DIALER_MIDDLE="中間";s.Msg.ESP32DIALER_RIGHT="右側";s.Msg.ESP32DIALSWITCH="當撥盤";s.Msg.ESP32TURN="設定";s.Msg.ESP32LED="";s.Msg.ESP32LED_MONO_TEXT_NO="第";s.Msg.ESP32LED_MONO_TEXT_AFTER="颗 LED 燈";s.Msg.ESP32LED_BLUE="藍燈";s.Msg.ESP32LED_RED="紅燈";s.Msg.ESP32LED_TURNON="點亮";s.Msg.ESP32LED_TURNOFF="關閉";s.Msg.ESP32LED_CORD_DRAWPIXEL_LIGHTUP="點亮";s.Msg.ESP32LED_CORD_DRAWPIXEL_LIGHTOFF="熄滅";s.Msg.ESP32LED_CORD_DRAWPIXEL_LIGHT_INIT_TEXT="位於(第";s.Msg.ESP32LED_CORD_DRAWPIXEL_LIGHT_MIDDLE_TEXT="列,第";s.Msg.ESP32LED_CORD_DRAWPIXEL_LIGHT_END_TEXT="欄)的 LED 燈";s.Msg.ESP32TURNOBAF="蜂鳴器";s.Msg.ESP32TURNOB="關閉蜂鳴器";s.Msg.ESP32TA="當觸摸區域";s.Msg.ESP32_TOUCHED="被觸摸時";s.Msg.ESP32_UNTOUCHED="未被觸摸時";s.Msg.ESP32_READ="獲取觸摸區域";s.Msg.ESP32_READ_VALUE="的電容變化數值";s.Msg.ESP32_ENV_GET_TEXT="獲取";s.Msg.esp32_main_controller_turn_off_buzzer_music_lite="蜂鳴器播放音符";s.Msg.esp32_main_controller_turn_off_buzzer_music_lite_2="持續";s.Msg.esp32_main_controller_turn_off_buzzer_music_lite_3="拍";s.Msg.LCDINIT="LCD螢幕初始化";s.Msg.LCDINIT_R="設定螢幕旋轉";s.Msg.LCDINIT_M="設定螢幕鏡像翻轉";s.Msg.LCDROTATION="設定LCD螢幕旋轉";s.Msg.LCDMF="設定LCD螢幕鏡面翻轉";s.Msg.LCDDFSW="設定LCD螢幕填充顏色為";s.Msg.LCDDT="設定LCD顯示文本";s.Msg.LCDDT_C="字串顏色";s.Msg.LCDDT_BC="背景色";s.Msg.LED_COORDINATE="座標";s.Msg.WIFISERVER_SERVERSEND_CONTENT="內容";s.Msg.LCDDLOC="繪製直線";s.Msg.LCDDCC="LCD創建空白畫布";s.Msg.LCDDCC_F="填充圖像:";s.Msg.LCDDCC_I="圖像路徑:";s.Msg.LCDDSC="顯示畫布";s.Msg.LCDDSC_SC="設定座標";s.Msg.LCDDSC_X=" X:";s.Msg.LCDDSC_Y=" Y:";s.Msg.LCD_CANVAS="在畫布";s.Msg.LCDDTOC="繪製文本";s.Msg.LCDDTOC_SH="設定換欄";s.Msg.LCDDASOC="繪製箭頭標誌";s.Msg.LCDDASOC_SC="開始座標";s.Msg.LCDDASOC_EC="結束座標";s.Msg.LCDDASOC_LC="線條顏色";s.Msg.LCDDASOC_LT="線條粗細";s.Msg.LCDDASOC_T="厚度";s.Msg.LCDDFROC="繪製";s.Msg.LCDDFROC_R="矩形";s.Msg.LCDDFROC_C="圓形";s.Msg.LCDRADIUS="半徑";s.Msg.LCDDCSOC="繪製十字標誌";s.Msg.LCDCEOC="清除畫布上的所有內容";s.Msg.LCDSCIC="設定畫布";s.Msg.LCDSCIC_I="顏色反轉";s.Msg.LCDSCCRTW="設定畫布";s.Msg.LCDSCCRTW_R="調整為寬度";s.Msg.LCDSCCRTW_TCANC="然後創建一個新畫布";s.Msg.LCDDI="顯示在";s.Msg.LCDSCCCVTP="設定畫布:畫布將矢量轉換為畫素";s.Msg.LCDRQ="二維碼";s.Msg.CAMERAINIT="相機初始化";s.Msg.CAMERAINIT_SFS="設定幀大小:";s.Msg.CAMERAINIT_SFS_I=" in";s.Msg.CAMERAINIT_SWW="設定窗口寬度:224高度:224";s.Msg.CAMERAINIT_SVFOSHMO="設定垂直翻轉";s.Msg.CAMERAINIT_SVFOSHMO_O="設定水平鏡像";s.Msg.CAMERAINIT_SABOSAGO="設定自動平衡:";s.Msg.CAMERAINIT_SABOSAGO_O="設定自動增益:";s.Msg.CAMERAINIT_SCBS="設定對比度:";s.Msg.CAMERAINIT_SCBS_B="亮度:";s.Msg.CAMERAINIT_SCBS_S="飽和度:";s.Msg.CAMERASVFO="設定垂直翻轉";s.Msg.CAMERASVFO_SHMO="設定水平鏡像";s.Msg.CAMERASVFO_SABO="設定自動白平衡";s.Msg.CAMERASVFO_SAGO="設定自動增益";s.Msg.CAMERASVFO_SCT="設定對比度為";s.Msg.CAMERASVFO_SBT="設定亮度為";s.Msg.CAMERASVFO_SST="將飽和度設定為";s.Msg.CAMERGICFC="獲取從相機捕捉的圖像";s.Msg.CAMERGICFC_SCT="選擇攝像機類型:正常";s.Msg.MODELLPM="加載並初始化預設模型:";s.Msg.CAMERINIT="初始化預設模型:單數字識別";s.Msg.CAMERINIT_SISF="設定要識別的圖像源爲:";s.Msg.CAMERINIT_FPM="獲取手寫數字識別模型的識別結果";s.Msg.CAMERINIT_GCDN="獲取當前檢測到的數字 (0-9)";s.Msg.CAMERINIT_CRC="獲取當前檢測的可信度 (%)";s.Msg.CAMERINIT_GTCS="獲取當前檢測的可信度 (%)";s.Msg.MODELS_L="識別到了任意常見物體";s.Msg.MODELS_GET_F="從";s.Msg.MODELS_GET_G="獲取識別到常見物體的";s.Msg.MODELS_GET_O="物體名稱";s.Msg.MODELS_GET_X="檢測框的X軸座標";s.Msg.MODELS_GET_Y="檢測框的Y軸座標";s.Msg.MODELS_GET_W="檢測框的寬度";s.Msg.MODELS_GET_H="檢測框的高度";s.Msg.MODELS_GET_NO="物體數量";s.Msg.MODELS_GET_S="序號";s.Msg.MODELS_GET_C="可信度";s.Msg.MODELS_FACE="識別到了人臉";s.Msg.MODELS_XY_F="獲取識別到人臉的";s.Msg.MODELS_XY_N="數量";s.Msg.MODELS_SDR="手寫數字識別模型 (MNIST)";s.Msg.MODELS_COR="常見物體識別模型";s.Msg.MODELS_AR="常見動物識別模型";s.Msg.MODELS_HFR="人臉檢測模型";s.Msg.CAMERINITPM="初始化預設模型:通用對象識別";s.Msg.CAMERINITPM_SMSFIOR="從設定圖像源";s.Msg.CAMERINITPM_ACOID="檢測到任何公共對象";s.Msg.CAMERINITPM_IACOID="如果檢測到任何公共對象";s.Msg.CAMERINITPM_D="執行";s.Msg.CAMERINITPM_E="其他";s.Msg.CAMERINITPM_FPM="來自預設模型:通用對象識別";s.Msg.CAMERINITPM_G="獲取";s.Msg.CAMERINITPM_GIOTCOD="檢測到公共對象";s.Msg.CAMERINITPM_DCOIA="檢測到的公共對象為";s.Msg.CAMERINITPMA="初始化預設模型:動物識別";s.Msg.CAMERINITPMA_AAOID="檢測到任何動物";s.Msg.CAMERINITPMA_IAAOID="如果檢測到任何動物";s.Msg.CAMERINITPMA_FPMA="來自預設模型:動物確認";s.Msg.CAMERINITPMA_GIOTCAD="檢測到的動物";s.Msg.CAMERINITPMA_DAOIA="檢測到的動物是";s.Msg.CAMERINITPMF="初始化預設模型:人臉檢測";s.Msg.CAMERINITPMF_SISFIF="從設定圖像源";s.Msg.CAMERINITPMF_AFID="檢測到任何人的臉";s.Msg.CAMERINITPMF_IAFID="如果檢測到人臉";s.Msg.CAMERINITPMF_FPM="來自預設模型:人臉檢測";s.Msg.CAMERINITPMF_GIOTFD="檢測到的臉";s.Msg.CAMERINITPMF_LCMLM="加載定制的機器學習模型";s.Msg.CAMERINITPMF_FSC="來自SD卡:";s.Msg.CAMERINIINNYFNOT="初始化神經網絡YOLOv2";s.Msg.CAMERINIINNYFNOT_F="來自網絡對象";s.Msg.CAMERINIINNYFNOT_SPT="設定概率閾值:";s.Msg.CAMERINIINNYFNOT_SPT_S="設定盒IoU閾值:";s.Msg.CAMERINITPMF_SNOAA="設定錨點數量";s.Msg.CAMERINITPMF_SNOAA_S="將錨設定為:錨";s.Msg.CAMERGRFRNNY="從運行神經網絡YOLOv2獲得結果";s.Msg.CAMERGRFRNNY_FNOT="來自網絡對象";s.Msg.CAMERGRFRNNY_SNOLTCTTN="設定要計算到網絡的層數:";s.Msg.CAMERGRFRNNY_SISA="將圖像源設定為:";s.Msg.CAMERGFMOFNOT="從網絡對象獲取要素地圖對象";s.Msg.CAMERGFMOFNOT_SNOLTCTTN="設定要計算到網絡的層數:";s.Msg.CAMERGFMOFNOT_SISAC="將圖像源設定為:";s.Msg.CAMERDNOT="取消初始化網絡對象";s.Msg.VISION_SIF_D="檢測線條顏色:";s.Msg.VISION_SIF_G="獲取方向偏移值";s.Msg.VISION_SIF_GF="來自雙線檢測";s.Msg.MPHONE="咪高峰初始化";s.Msg.MPHONE_A="從咪高峰獲取環境聲音強度";s.Msg.AUDIO_S="喇叭初始化";s.Msg.AUDIO_S_P="播放音訊檔案";s.Msg.AUDIO_S_PS="設定音量";s.Msg.AUDIO_S_PF="文件路徑:";s.Msg.AUDIO_SET="設定音訊播放音量";s.Msg.VIDEO_S="影片錄製初始化";s.Msg.VIDEO_S_S="檔案保存路徑:";s.Msg.VIDEO_G="從影像源";s.Msg.VIDEO_S_I="錄製影片";s.Msg.VIDEO_S_R="停止錄製影片";s.Msg.VIDEO_SET_F="播放影片檔案";s.Msg.VIDEO_SET_P="檔案路徑:";s.Msg.VIDEO_NUM="設定影片播放音量 ";s.Msg.VIDEO_STATUS="獲取影片播放的狀態";s.Msg.SYSTEM="重啟系統";s.Msg.SYSTEM_GC="啟動記憶體回收";s.Msg.SYSTEM_RUN="執行 Python 程式";s.Msg.SYSTEM_RUN_F="程式所在路徑:";s.Msg.SYSTEM_CREATE="創建文本檔案";s.Msg.SYSTEM_CREATE_F="檔名:";s.Msg.SYSTEM_WRITE="創建文本檔案";s.Msg.SYSTEM_WRITE_F="檔案名稱:";s.Msg.SYSTEM_WRITE_W="寫入內容:";s.Msg.SYSTEM_WRITE_S="分隔符號為:";s.Msg.SYSTEM_WRITE_S_N="換欄";s.Msg.SYSTEM_WRITE_S_C="逗號";s.Msg.SYSTEM_WRITE_S_S="空格";s.Msg.SYSTEM_WRITE_S_SE="分號";s.Msg.SYSTEM_INPUT="讀取文本檔案為陣列";s.Msg.SERIALPORT_PRINT_TITLE="串口列印 %1";s.Msg.SERIALPORT_SPACER="間隔符";s.Msg.SERIALPORT_TERMINATOR="結束符";s.Msg.SERIALPORT_DATA="數據";s.Msg.SERIALPORT_COLOR="字串顏色";s.Msg.SERIALPORT_TCOLOR="字串底色";s.Msg.SERIALPORT_SLDT="設定LCD螢幕顯示字串";s.Msg.LCD_CLEAR="清除螢幕";s.Msg.CAMERA_WINDOW="設定相機視窗化";s.Msg.CAMERA_SIZE="視窗尺寸";s.Msg.CAMERA_INIT="相機初始化";s.Msg.CAMERA_CIS="設定捕捉的影像尺寸:";s.Msg.CAMERA_COCI="設定捕捉的影像顏色模式為:";s.Msg.CAMERA_C="彩色";s.Msg.CAMERA_BW="黑白";s.Msg.math_degrad_rad="轉換角度為弧度";s.Msg.math_degrad_deg="轉換弧度為角度";s.Msg.io_high="高電平";s.Msg.io_low="低電平";s.Msg.digital_set="設定引腳 #";s.Msg.digital_set_as="爲";s.Msg.digital_get="獲取引腳 #";s.Msg.digital_get_value="的數碼訊號數值";s.Msg.analog_get="獲取引腳 #";s.Msg.analog_get_value="的類比訊號數值 (PWM)";s.Msg.analog_set="IoT 模組設定引腳 #";s.Msg.set_pin="(範圍:0 ~ 1023)";s.Msg.analog_set_ai="A.I. 模組設定引腳 #";s.Msg.analog_set_freq="設定頻率爲:";s.Msg.analog_set_pwm="設定 PWM 爲:";s.Msg.set_pwm="的類比輸出為";s.Msg.led="LED";s.Msg.control="控制";s.Msg.OUT_PWM="輸出 PWM 波";s.Msg.analog_set_timer="設定 Timer 爲:";s.Msg.analog_set_timer_channel="設定 Timer 頻道爲:";s.Msg.Esp32_Main_Controller_Io_analog_pin_1="A.I. 模組引腳 #";s.Msg.Esp32_Main_Controller_Io_analog_pin_2="IoT 模組引腳 #";s.Msg.time_iot_module="IoT 模組 ";s.Msg.time_ai_module="AI 模組";s.Msg.time_init_timer="初始化計時器";s.Msg.time_timer_get_time="獲取計時器已過時間(秒)";s.Msg.time_timer_clear="清除計時器";s.Msg.time_timer_periodically="啟用週期重複計時器";s.Msg.time_timer_every="每隔";s.Msg.time_timer_ms="毫秒";s.Msg.time_execution="執行";s.Msg.time_timer_periodically_clear="清除週期重複計時器";s.Msg.time_get_current_date_title="獲取本地時間:";s.Msg.time_get_current_date_y="年";s.Msg.time_get_current_date_m="月";s.Msg.time_get_current_date_d="日";s.Msg.time_get_current_date_hour="時";s.Msg.time_get_current_date_min="分";s.Msg.time_get_current_date_sec="秒";s.Msg.serialcomm_print="序列埠打印";s.Msg.serialcomm_write_title_text="透過序列埠傳送數據至其他設備";s.Msg.serialcomm_write_title_text_arduino="透過USB傳送數據至Arduino";s.Msg.serialcomm_read_setup_title_text_arduino="通過USB獲取數據初始化";s.Msg.serialcomm_read_setup_title_text="透過序列埠獲取數據";s.Msg.serialcomm_read_setup_title_text_1="初始化";s.Msg.serial_read_data="從";s.Msg.Serial_Read_Data_all="獲取到的串口數據";s.Msg.ARD_SERIAL_RECEIVE_DATASET_GET_TEXT="獲取接收到一代和二代串列埠數據中第";s.Msg.ARD_SERIAL_RECEIVE_DATASET_TYPE_TEXT="位的數據";s.Msg.ARD_SERIAL_RECEIVE_DATASET_TYPE_FLOAT="浮點數";s.Msg.ARD_SERIAL_RECEIVE_DATASET_TYPE_INTEGER="Number";s.Msg.ARD_SERIAL_RECEIVE_DATASET_TYPE_STRING="字元";s.Msg.serialcomm_write_item_first="第 ";s.Msg.serialcomm_write_item_last=" 位數據:";s.Msg.serialcomm_write_item="項目";s.Msg.serialcomm_write_data="數據";s.Msg.serialcomm_write_data_bps_title="設定波特率為:";s.Msg.serialcomm_write_data_bps_attrib="位元/秒";s.Msg.serialcomm_write_on="使用";s.Msg.serialcomm_write_on_ai="AI 模組 ";s.Msg.serialcomm_write_on_iot="IoT 模組";s.Msg.serial_send_data_on="在";s.Msg.serial_send_data_on_send_data_cocorobo="CocoPi 發送數據至一代和二代";s.Msg.serial_send_data_on_send_data="CocoPi 載送數據至 Micro:bit";s.Msg.serial_send_data_on_send_data_control_panel="CocoPi 發送數據至掌控版";s.Msg.serial_send_data_on_send_data_control_panel_arduino="CocoPi 發送數據至 Arduino";s.Msg.basic_button_read_value="讀取按鈕";s.Msg.basic_button_read_value_after="的電平狀態";s.Msg.basic_buzzer_set_init="蜂鳴器初始化,並設置引腳爲:";s.Msg.basic_buzzer_set="蜂鳴器設定音調頻率爲 (Hz):";s.Msg.basic_temperature="溫度";s.Msg.basic_humidity="濕度";s.Msg.basic_pressure="大氣壓";s.Msg.basic_env_value="數值(獲取數值時間要大於1秒)";s.Msg.basic_motion_use="使用運動感應器";s.Msg.basic_shaking_sensitivity="設定靈敏度為";s.Msg.basic_shaking_sensitivity_high="高";s.Msg.basic_shaking_sensitivity_middle="中";s.Msg.basic_shaking_sensitivity_low="低";s.Msg.basic_when_shaking_when_module="當模組";s.Msg.basic_when_shaking_when_is_in="處於";s.Msg.basic_when_shaking_when_is_not_in="不處於";s.Msg.basic_when_shaking_when_shaking="搖晃狀態時";s.Msg.basic_when_shaking="當模組處於搖晃狀態時";s.Msg.basic_when_shaking_not="當模組不處於搖晃狀態時";s.Msg.basic_when_tilting_get="當模組";s.Msg.basic_when_tilting_get_left="向左";s.Msg.basic_when_tilting_get_right="向右";s.Msg.basic_when_tilting_get_forward="向前";s.Msg.basic_when_tilting_get_backward="向後";s.Msg.basic_when_tilting_get_left_and_forward="向左前";s.Msg.basic_when_tilting_get_left_and_backward="向左後";s.Msg.basic_when_tilting_get_right_and_forward="向右前";s.Msg.basic_when_tilting_get_right_and_backward="向右後";s.Msg.basic_when_tilting_not_tilting="沒有";s.Msg.basic_when_tilting_get_when="傾斜時";s.Msg.basic_motion_get="獲取";s.Msg.basic_motion_accel="軸的加速度";s.Msg.basic_motion_rotation_measurement="軸的旋轉測量值";s.Msg.basic_motion_angle="軸的傾斜角度";s.Msg.isUnit="需要單位";s.Msg.confUnit="是";s.Msg.cancUnit="否";s.Msg.basic_light_get="獲取光線值(0~4095)";s.Msg.basic_motion_statement_exec="執行";s.Msg.display_clear_screen="清除 LCD 螢幕";s.Msg.display_fill_screen="設定 LCD 鋪滿顏色為";s.Msg.display_draw_pixel="畫素點";s.Msg.display_draw_vertical="垂直";s.Msg.display_draw_horizontal="水平";s.Msg.display_start_cord="起始座標";s.Msg.display_length="長度";s.Msg.display_draw_rectangle="矩形";s.Msg.display_drawqr_text=" QR 二維碼";s.Msg.display_drawqr_content="文本內容";s.Msg.display_drawqr_padding="邊距寬度";s.Msg.display_draw_text="字串";s.Msg.display_draw_text_content="文本內容";s.Msg.display_draw_text_size="字串大小";s.Msg.display_draw_text_return="是否換欄";s.Msg.display_red="紅";s.Msg.display_green="綠";s.Msg.display_blue="藍";s.Msg.wifi_setup_hotspot="建立 Wi-Fi 熱點";s.Msg.wifi_hotspot_ssid="SSID:";s.Msg.wifi_hotspot_pass="密碼:";s.Msg.wifi_connect_router="連接 WiFi 網絡";s.Msg.wifi_router_ssid="SSID:";s.Msg.wifi_router_pass="密碼:";s.Msg.wifi_router_disconnect="斷開 WiFi 連接";s.Msg.wifi_hotspot_get_clients="獲取當前已連接的設備數量";s.Msg.wifi_hotspot_get_list="獲取當前已連接的設備陣列";s.Msg.wifi_router_connection_status="獲取 WiFi 連接狀態";s.Msg.wifi_close_hotspot="關閉 Wi-Fi 熱點";s.Msg.wifi_router_get_info="獲取 WiFi 配置信息";s.Msg.wifi_router_device_ip="IP";s.Msg.wifi_router_device_mask="子網掩碼";s.Msg.wifi_router_device_gateway="網關";s.Msg.wifi_router_device_dns="DNS";s.Msg.wifi_ntptime_title="同步網絡時間";s.Msg.wifi_ntptime_set_timezone="設定同步時區";s.Msg.wifi_ntptime_utc8="東8區";s.Msg.wifi_ntptime_utc9="東9區";s.Msg.wifi_ntptime_utc10="東10區";s.Msg.wifi_ntptime_utc11="東11區";s.Msg.wifi_ntptime_utc12="東12區";s.Msg.wifi_ntptime_utcm12="西12區";s.Msg.wifi_ntptime_utcm11="西區";s.Msg.wifi_ntptime_utcm10="西區";s.Msg.wifi_ntptime_utcm9="西9區";s.Msg.wifi_ntptime_utcm8="西8區";s.Msg.wifi_ntptime_utcm7="西7區";s.Msg.wifi_ntptime_utcm6="西6區";s.Msg.wifi_ntptime_utcm5="西5區";s.Msg.wifi_ntptime_utcm4="西4區";s.Msg.wifi_ntptime_utcm3="西3區";s.Msg.wifi_ntptime_utcm2="西2區";s.Msg.wifi_ntptime_utcm1="西1區";s.Msg.wifi_ntptime_utc0="中時區";s.Msg.wifi_ntptime_utc1="東1區";s.Msg.wifi_ntptime_utc2="東2區";s.Msg.wifi_ntptime_utc3="東3區";s.Msg.wifi_ntptime_utc4="東4區";s.Msg.wifi_ntptime_utc5="東5區";s.Msg.wifi_ntptime_utc6="東6區";s.Msg.wifi_ntptime_utc7="東7區";s.Msg.wifi_ntptime_time_server="設定同步伺服器:";s.Msg.wifi_web_http_server_setup="HTTP 伺服器初始化";s.Msg.wifi_web_http_server_route_setting_title="HTTP 伺服器設定訪問路徑";s.Msg.wifi_web_http_server_route_setting_path="當路徑:";s.Msg.wifi_web_http_server_route_setting_being_requested="被請求時";s.Msg.wifi_web_http_server_route_setting_property="設定請求屬性爲:";s.Msg.wifi_web_http_server_route_setting_get="GET 請求";s.Msg.wifi_web_http_server_route_setting_post="POST 請求";s.Msg.wifi_web_http_server_route_setting_do="執行";s.Msg.wifi_web_http_server_respond_title="HTTP 伺服器設定響應內容爲:";s.Msg.wifi_web_http_server_respond_type="設定返回數據類型:";s.Msg.wifi_web_http_server_respond_text="純文本";s.Msg.wifi_web_http_server_respond_json="字典類型數據 (JSON)";s.Msg.wifi_web_http_server_respond_html="網頁 (HTML 程式碼)";s.Msg.wifi_web_http_server_respond_exec="響應";s.Msg.wifi_web_http_server_get_title="HTTP 伺服器獲取從客戶端收到的數據,類型爲";s.Msg.wifi_web_http_server_get_as_json="字典類型數據 (JSON)";s.Msg.wifi_web_http_server_get_as_text="文本";s.Msg.nbiot_module_which_module_iot="在 IoT 模組上";s.Msg.nbiot_module_which_module_ai="在 AI 模組上";s.Msg.nbiot_module_init="NB-IoT 模組通訊初始化";s.Msg.nbiot_module_power="獲取 NB-IoT 模組啓用狀態";s.Msg.nbiot_module_connectivity="獲取 NB-IoT 模組網絡連接狀態";s.Msg.nbiot_module_ip="獲取 NB-IoT 模組網絡 IP 地址";s.Msg.nbiot_onenet_title="NB-IoT 模組連接 OneNET";s.Msg.nbiot_onenet_connect_productid="產品 ID:";s.Msg.nbiot_onenet_connect_deviceid="設備 ID:";s.Msg.nbiot_onenet_connect_device_api="設備 API Key:";s.Msg.nbiot_onenet_connectivity="NB-IoT 模組獲取 OneNET 連接狀態";s.Msg.nbiot_onenet_send_title="NB-IoT 模組發送數據至 OneNET";s.Msg.nbiot_onenet_send_property="屬性名稱: ";s.Msg.nbiot_onenet_when_incoming_msg="當 NB-IoT 模組從 OneNET 收到消息";s.Msg.nbiot_onenet_when_incoming_msg_when="時";s.Msg.nbiot_onenet_when_incoming_msg_exec="執行";s.Msg.nbiot_onenet_receive_command="獲取 NB-IoT 模組從 OneNET 發送的指令";s.Msg.nbiot_cococloud_get_event_title="NB-IoT 模組獲取 CocoCloud 事件數據";s.Msg.nbiot_cococloud_get_event_api="雲端事件 API Key:";s.Msg.nbiot_cococloud_get_property="獲取 CocoCloud 事件中屬性爲";s.Msg.nbiot_cococloud_get_data="的數據";s.Msg.nbiot_cococloud_send_title="NB-IoT 模組發送數據至 CocoCloud";s.Msg.nbiot_cococloud_send_api="事件 API Key:";s.Msg.nbiot_cococloud_send_property="屬性名稱: ";s.Msg.nbiot_http_get_title="發送 HTTP GET 請求";s.Msg.nbiot_http_get_url="設定目標網址:";s.Msg.internet_server_setup="HTTP 伺服器初始化";s.Msg.internet_server_set_max="設定最大連接數:";s.Msg.internet_server_set_source="獲取發起請求設備的來源 IP";s.Msg.internet_response_http_content_title="獲取 HTTP 響應內容的";s.Msg.internet_response_text="文本";s.Msg.internet_response_content="內容";s.Msg.internet_response_status="狀態碼";s.Msg.internet_response_json="JSON數據";s.Msg.internet_response_encode="編碼";s.Msg.internet_response_reason="原因短語";s.Msg.internet_http_get_title="發送 HTTP GET 請求";s.Msg.internet_http_get_url="設定目標網址:";s.Msg.internet_http_post_title="發送 HTTP POST 請求";s.Msg.internet_http_post_url="設定目標網址:";s.Msg.internet_http_post_json="提交數據 (JSON):";s.Msg.internet_http_get_server_data_title="獲取從本地 HTTP 伺服器請求得到的數據";s.Msg.internet_http_get_server_data_type="數據類型爲:";s.Msg.internet_http_get_server_data_json="字典數據類型";s.Msg.internet_http_get_server_data_text="純文本";s.Msg.internet_ws_setup_send_text="實時通信 (WebSocket) 發送端初始化";s.Msg.internet_ws_setup_send_ip="設定目標設備 IP:";s.Msg.internet_ws_send_msg="透過實時通信 (WebSocket) 發送消息";s.Msg.internet_ws_setup_recv="實時通信 (WebSocket) 接收端初始化";s.Msg.internet_ws_setup_receiving="當實時通信 (WebSocket) 收到消息時";s.Msg.internet_ws_setup_recv_exec="執行";s.Msg.internet_ws_setup_get_msg="獲取從實時通信 (WebSocket) 接收到的消息";s.Msg.internet_ws_setup_get_msg_type="類型爲";s.Msg.internet_ws_setup_get_msg_text="文本";s.Msg.internet_ws_setup_get_msg_json="字典類型數據 (JSON)";s.Msg.v831_get_weather_init="初始化天氣";s.Msg.set_weather_city="設置獲取天氣的城市";s.Msg.set_weather_title_small="設置天氣時段";s.Msg.set_weather_real_time="實時";s.Msg.set_weather_All_day_long="全天";s.Msg.set_weather_city_title="設置獲取天氣的城市和時段";s.Msg.beijing="北京";s.Msg.shanghai="上海";s.Msg.guangzhou="廣州";s.Msg.shenzhen="深圳";s.Msg.tianjin="天津";s.Msg.HongKong="香港";s.Msg.weather_resulet="天氣結果";s.Msg.weather_condition="天氣狀況";s.Msg.windDir="風向";s.Msg.windScale="風向等級";s.Msg.windSpeed="風速";s.Msg.iotservice_thingspeak_send_title="傳送數據至 ThingSpeak 頻道 (Channel)";s.Msg.iotservice_thingspeak_send_api_set="設定頻道 API Key:";s.Msg.iotservice_thingspeak_send_data_1="數據1";s.Msg.iotservice_onenet_mqtt_setup="OneNET 物聯網平臺 (MQTTS) 連線初始化";s.Msg.iotservice_onenet_mqtt_server="設定連線伺服器:";s.Msg.iotservice_onenet_mqtt_productid="設定產品 ID:";s.Msg.iotservice_onenet_mqtt_productkey="設定產品 API Key:";s.Msg.iotservice_onenet_mqtt_deviceid="設定裝置 ID:";s.Msg.iotservice_onenet_mqtt_send="往 OneNET 傳送數據";s.Msg.iotservice_onenet_mqtt_send_item="屬性名稱: ";s.Msg.iotservice_onenet_mqtt_receive="當從 OneNET 收到訊息為";s.Msg.iotservice_onenet_mqtt_receive_when="時";s.Msg.iotservice_onenet_mqtt_receive_exec="執行";s.Msg.iotservice_onenet_mqtt_disconnect="斷開 OneNET 連線";s.Msg.iotservice_ifttt_send_title="傳送數據到 IFTTT Webhooks 事件";s.Msg.iotservice_ifttt_send_webhook="Webhooks API Key:";s.Msg.iotservice_ifttt_send_eventname="事件名稱:";s.Msg.iotservice_ifttt_send_1="數據 1:";s.Msg.iotservice_ifttt_send_2="數據 2:";s.Msg.iotservice_ifttt_send_3="數據 3:";s.Msg.iotservice_ifttt_trigger_title="觸發 IFTTT 事件";s.Msg.iotservice_ifttt_trigger_webhook="Webhook API Key:";s.Msg.iotservice_ifttt_trigger_eventname="事件名稱:";s.Msg.iotservice_thingspeak_send_title="傳送數據至 ThingSpeak 頻道";s.Msg.iotservice_thingspeak_send_api="頻道 API Key:";s.Msg.iotservice_thingspeak_query_title="查詢 ThingSpeak 指定頻道的數據";s.Msg.iotservice_thingspeak_query_api="頻道 API Key:";s.Msg.iotservice_thingspeak_channel_id="頻道 ID:";s.Msg.iotservice_thingspeak_read_total="獲取 ThingSpeak 頻道中的數據總量";s.Msg.iotservice_thingspeak_get_title="獲取 ThingSpeak 頻道中第";s.Msg.iotservice_thingspeaK_get_field="條數據的 Field";s.Msg.iotservice_thingspeaK_get_value="的數值";s.Msg.iotservice_cococloud_send_title="傳送數據至 CocoCloud 事件";s.Msg.iotservice_cococloud_send_title_api="事件 API Key:";s.Msg.iotservice_cococloud_send_property="屬性名稱: ";s.Msg.iotservice_cococloud_send_property_1="屬性值:";s.Msg.iotservice_cococloud_get_title="獲取 CocoCloud 事件中的數據";s.Msg.iotservice_cococloud_get_api="事件 API Key:";s.Msg.iotservice_cococloud_get_property="獲取 CocoCloud 事件中屬性為";s.Msg.iotservice_cococloud_get_data="的數據";s.Msg.system_code_path="程式路徑爲:";s.Msg.system_get_size="獲模除組內剩余空間(單位: MB)";s.Msg.system_get_mac="獲模除組的 MAC 地址";s.Msg.system_get_cocorobo_cid="獲取 IoT 模組 ID";s.Msg.iot_system_get_cocorobo_firmware_version="獲取 IoT 當前固件版本號";s.Msg.iot_system_delete="刪除文件";s.Msg.ai_system_get_cocorobo_firmware_version="獲取 AI 當前固件版本號";s.Msg.ai_system_get_size="獲取記憶體內剩餘空間(單位: MB)";s.Msg.ai_system_sd_get_size="獲取SD卡內剩餘空間(單位: MB)";s.Msg.ai_system_thread="啓用多線程";s.Msg.ai_systen_thread_val="參數";s.Msg.ai_system_thread_setting="設置多綫程";s.Msg.ai_system_thread_setDaemon="守護綫程";s.Msg.ai_system_thread_not_setDaemon="非守護綫程";s.Msg.ai_system_thread_set_setDaemon_TOOLTIP="設置子綫程為守護綫程,需要在子綫程開啓之前進行設置";s.Msg.ai_system_thread_set_join="阻塞";s.Msg.ai_systen_queue_aritem="將變量";s.Msg.ai_systen_queue_put="放在隊列中";s.Msg.ai_systen_queue_get="得到隊列";s.Msg.ai_systen_queue_value="的值";s.Msg.ledstrip_setup_text_iot="在 IoT 模組上 ";s.Msg.ledstrip_setup_text_ai="在 AI 模組上";s.Msg.ledstrip_setup_text="LED 燈帶";s.Msg.ledstrip_setup="初始化";s.Msg.ledstrip_set_gpio="設定燈帶引腳 #:";s.Msg.ledstrip_set_total_led="設定燈帶中燈的數量:";s.Msg.ledstrip_set_light_up="點亮 LED 燈帶";s.Msg.ledstrip_set_no="設定要點亮的 LED 燈序號:";s.Msg.ledstrip_set_color="並設定顏色為:";s.Msg.ledstrip_setup_text_show_above_set="使燈帶";s.Msg.ledstrip_setup_text_show_above="顯示以上效果";s.Msg.ledstrip_set_brightness_setup="設定燈帶亮度爲:";s.Msg.Pedometer_Init="初始化計步器";s.Msg.Pedometer_Run="運行計步器";s.Msg.Pedometer_Get="獲取計數";s.Msg.Pedometer_Init_time="時間間隔";s.Msg.Pedometer_Init_sensitivity="靈敏度";s.Msg.ledstrip_set_brightness_1="設定 LED 燈帶亮度爲:";s.Msg.ledstrip_set_brightness_after="(亮度範圍: 0~255)";s.Msg.servo_setup="IoT 模組伺服馬達初始化";s.Msg.servo_set_gpio="IoT 模組設定位於引腳 #";s.Msg.servo_rotate_to="的伺服馬達轉動至";s.Msg.servo_degree="度 (0˚~180˚)";s.Msg.servo_setup_ai="伺服馬達初始化";s.Msg.servo_set_gpio_ai="設定位於引腳 #";s.Msg.servo_rotate_to_ai="的伺服馬達轉動至";s.Msg.servo_degree_ai="度 (0˚~180˚)";s.Msg.x_motor_set_motor="IoT 模組馬達驅動初始化";s.Msg.x_motor_set_motor_turn="IoT 模組設定馬達";s.Msg.x_motor_set_motor_speed="以速度";s.Msg.x_motor_exec="(-255~255)進行";s.Msg.x_motor_cw="順時針";s.Msg.x_motor_acw="逆時針";s.Msg.x_motor_set_motor_turns="轉動";s.Msg.x_motor_set_motor_ai="馬達驅動初始化";s.Msg.x_motor_set_motor_turn_ai="設定馬達";s.Msg.x_motor_set_motor_speed_ai="以速度";s.Msg.x_motor_exec_ai="(0~255)進行";s.Msg.x_motor_cw_ai="順時針";s.Msg.x_motor_acw_ai="逆時針";s.Msg.x_motor_set_motor_turns_ai="轉動";s.Msg.x_led_matrix_setup_ai="AI 模組 LED 燈屏模組 (6×6) 初始化設定";s.Msg.x_led_matrix_setup_ai_set_bright_1="設定燈屏亮度為:";s.Msg.x_led_matrix_setup_ai_set_bright_range="(亮度範圍: 0~255)";s.Msg.x_led_matrix_width_ai_set_brightness_1="設定燈屏亮度為:";s.Msg.x_led_matrix_width_ai_x="列:";s.Msg.x_led_matrix_width_ai_y="欄:";s.Msg.x_led_matrix_width_ai="寬:";s.Msg.x_led_matrix_height_ai="高:";s.Msg.x_led_matrix_color_ai="顏色";s.Msg.x_led_matrix_draw_title_ai="AI 模組 LED 燈屏模組";s.Msg.x_led_matrix_draw_pixel_ai="繪製點";s.Msg.x_led_matrix_draw_rect_ai="繪製矩形";s.Msg.x_led_matrix_parameter_color_ai="顏色:";s.Msg.x_led_matrix_parameter_coord_ai="座標:";s.Msg.x_led_matrix_parameter_size_ai="尺寸:";s.Msg.x_led_matrix_show_above_ai="顯示圖案";s.Msg.x_led_matrix_clear_all_ai="清除燈屏";s.Msg.x_led_matrix_setup_iot="IoT 模組 LED 燈屏模組 (6×6) 初始化設定";s.Msg.x_led_matrix_width_iot_x="列:";s.Msg.x_led_matrix_width_iot_y="欄:";s.Msg.x_led_matrix_width_iot="寬:";s.Msg.x_led_matrix_height_iot="高:";s.Msg.x_led_matrix_color_iot="顏色";s.Msg.x_led_matrix_draw_title_iot="IoT 模組 LED 燈屏模組";s.Msg.x_led_matrix_setup_iot_set_bright_1="設定燈屏亮度為:";s.Msg.x_led_matrix_setup_iot_set_bright_range="(亮度範圍: 0~255)";s.Msg.x_led_matrix_width_iot_set_brightness_1="設定燈屏亮度為:";s.Msg.x_led_matrix_setup_iot_io="設定燈屏 引腳 # 爲:";s.Msg.x_led_matrix_draw_pixel_iot="繪製點";s.Msg.x_led_matrix_parameter_color_iot="顏色:";s.Msg.x_led_matrix_parameter_coord_iot="座標:";s.Msg.x_led_matrix_show_above_iot="IoT 模組 LED 燈屏模組顯示生效";s.Msg.x_gamepad_read_button_first_text_iot="當遊戲手柄上的按鍵";s.Msg.x_gamepad_read_button_first_text_pressed_iot=" 按下時";s.Msg.x_gamepad_read_button_first_text_released_iot=" 鬆開時";s.Msg.x_gamepad_read_button_status_first_text_iot="獲取遊戲手柄上按鍵";s.Msg.x_gamepad_read_button_status_after_text_iot="的電平值";s.Msg.x_gamepad_read_joystick_read_iot="獲取遊戲手柄上搖桿";s.Msg.x_gamepad_read_joystick_read_iot_x="X軸方向";s.Msg.x_gamepad_read_joystick_read_iot_y="Y軸方向 ";s.Msg.x_gamepad_read_joystick_read_after_iot="的類比數值 (範圍: 0~1023)";s.Msg.x_gamepad_read_joystick_when_iot="當遊戲手柄上的搖桿";s.Msg.x_gamepad_read_joystick_when_top_iot="向上推時";s.Msg.x_gamepad_read_joystick_when_bottom_iot="向下推時";s.Msg.x_gamepad_read_joystick_when_left_iot="向左推時";s.Msg.x_gamepad_read_joystick_when_right_iot="向右推時";s.Msg.x_gamepad_read_joystick_when_not_iot="沒有動時";s.Msg.x_gamepad_read_button_first_text_ai="當遊戲手柄上的按鍵";s.Msg.x_gamepad_read_button_first_text_pressed_ai=" 按下時";s.Msg.x_gamepad_read_button_first_text_released_ai=" 鬆開時";s.Msg.x_gamepad_read_button_status_first_text_ai="獲取遊戲手柄上按鍵";s.Msg.x_gamepad_read_button_status_after_text_ai="的電平值";s.Msg.x_gamepad_read_joystick_read_ai="獲取遊戲手柄上搖桿";s.Msg.x_gamepad_read_joystick_read_ai_x="X軸方向";s.Msg.x_gamepad_read_joystick_read_ai_y="Y軸方向 ";s.Msg.x_gamepad_read_joystick_read_after_ai="的類比數值 (範圍: 0~1023)";s.Msg.x_gamepad_read_joystick_when_ai="當遊戲手柄上的搖桿";s.Msg.x_gamepad_read_joystick_when_top_ai="向上推時";s.Msg.x_gamepad_read_joystick_when_bottom_ai="向下推時";s.Msg.x_gamepad_read_joystick_when_left_ai="向左推時";s.Msg.x_gamepad_read_joystick_when_right_ai="向右推時";s.Msg.x_gamepad_read_joystick_when_not_ai="沒有動時";s.Msg.ai_basic_button_when="當按鈕";s.Msg.ai_basic_pressed="按下時";s.Msg.ai_basic_released="鬆開時";s.Msg.ai_basic_led_set="設定";s.Msg.ai_basic_led_blue="藍色LED";s.Msg.ai_basic_led_red="LED2(右側)";s.Msg.ai_basic_led_on="點亮";s.Msg.ai_basic_led_off="熄滅";s.Msg.ai_basic_rgb_set_on="點亮 RGB 燈,燈顏色爲";s.Msg.ai_basic_rgb_set_off="熄滅 RGB 燈";s.Msg.ai_basic_led_analog_set="設定";s.Msg.ai_basic_led_analog_led1="LED1";s.Msg.ai_basic_led_analog_led2="LED2";s.Msg.ai_basic_led_analog_brightness_text="的燈光亮度為";s.Msg.ai_basic_led_analog_range_text="(數值範圍: 0~100)";s.Msg.image_process_lcd_init="LCD 螢幕初始化";s.Msg.image_process_lcd_direction="設置螢幕方向";s.Msg.image_process_lcd_landscape_screen="橫屏";s.Msg.image_process_lcd_vertical_screen="豎屏";s.Msg.image_process_text_let_canvas="將畫布";s.Msg.image_process_text_image_canvas="圖片化";s.Msg.image_process_text_let_canvas_filled_with_color="填滿";s.Msg.image_process_text_on_canvas="在畫布";s.Msg.image_process_text_on_draw="上繪製";s.Msg.image_text_on_draw="繪製";s.Msg.image_process_text_set_canvas_setup="設定畫布";s.Msg.image_process_draw_qrcode="二維碼";s.Msg.image_process_draw_qr_code_size="二維碼大小";s.Msg.image_process_text_filled="實心";s.Msg.image_process_text_stroked="空心";s.Msg.image_process_statistical_chart_bar="條形";s.Msg.image_process_statistical_chart_broken_line="折線";s.Msg.image_process_statistical_chart_sector="扇形";s.Msg.image_process_sensor="感應器 ";s.Msg.image_process_temperature="溫度";s.Msg.image_process_humidity="濕度";s.Msg.image_process_Ray_value="光線值";s.Msg.image_process_temperature_range="範圍 ";s.Msg.image_process_nothing="不定義範圍(溫度除外)";s.Msg.image_process_interface="介面 ";s.Msg.ai_speech_recognition_setup_set_english="英文";s.Msg.ai_speech_recognition_setup_set_simplified_chinese="中文";s.Msg.ai_speech_recognition_setup_set_traditional_chinese="繁體中文";s.Msg.image_process_text_start_coord_as="起始點座標為:";s.Msg.image_process_text_start_coord="設定起始點座標:";s.Msg.image_process_text_end_coord="設定結束點座標:";s.Msg.image_process_text_size="尺寸:";s.Msg.image_process_text_color="顏色:";s.Msg.image_process_background_color="背景顏色:";s.Msg.image_process_text_thick="厚度:";s.Msg.image_process_text_radius="半徑:";s.Msg.image_process_text_content="內容";s.Msg.image_process_statistical_chart_content="獲取需繪圖的數據";s.Msg.image_process_statistical_chart_y_property="定義 Y 軸爲";s.Msg.image_process_pixtovec_text_first="進行";s.Msg.image_process_pixtovec_v2p="矢量轉畫素";s.Msg.image_process_pixtovec_p2v="畫素轉矢量";s.Msg.image_process_pixtovec_conversion="轉換";s.Msg.image_process_color_mode_gray="灰度模式";s.Msg.image_process_color_mode_rgb="彩色模式";s.Msg.image_process_imgcut_cutting="進行裁剪處理";s.Msg.image_process_imgcut_start_coord="裁剪起始座標:";s.Msg.image_process_imgcut_size="裁剪尺寸:";s.Msg.image_process_img_save="保存至本地";s.Msg.image_process_img_save_quality="設定圖像壓縮質量:";s.Msg.image_process_color_invert="進行顏色反轉";s.Msg.image_process_resize_to="調整尺寸至";s.Msg.image_process_color_scheme_convert="轉換爲";s.Msg.image_process_color_scheme_bw="黑白";s.Msg.image_process_color_scheme_rgb="彩色";s.Msg.image_process_draw_cross_title="上繪製十字標";s.Msg.image_process_draw_cross_centerpos="中心座標:";s.Msg.image_process_draw_cross_length="十字線延伸長度:";s.Msg.image_process_draw_cross_thick="十字線厚度:";s.Msg.image_process_draw_cross_color="顏色:";s.Msg.image_process_draw_arrow_title="上繪製箭頭";s.Msg.image_process_draw_arrow_start="開始座標:";s.Msg.image_process_draw_arrow_end="結束座標:";s.Msg.image_process_draw_arrow_color="顏色:";s.Msg.image_process_draw_arrow_thick="厚度:";s.Msg.image_process_draw_rectangle_text="矩形";s.Msg.image_process_draw_circle_text="圓形";s.Msg.image_process_draw_ellipse_text="橢圓";s.Msg.image_process_draw_image_title="上繪製圖片";s.Msg.image_process_draw_image_title_image_path="設定圖片文件路徑:";s.Msg.image_process_draw_image_scale_x="設定 X 方向的縮放比例:";s.Msg.image_process_draw_image_scale_y="設定 Y 方向的縮放比例:";s.Msg.image_process_draw_sensor_image_title="上繪製相機捕捉的圖像";s.Msg.image_process_draw_sensor_image_path="設定圖像源:";s.Msg.image_process_draw_circle_text_start="圓心坐標";s.Msg.image_process_draw_text_font_size="字體大小:(由1至3之間的整數)";s.Msg.image_process_draw_text_if_monospace="是否等寬字體";s.Msg.image_process_draw_text="字串";s.Msg.image_process_draw_statistical_chart="統計圖";s.Msg.image_process_draw_characters="漢字字元";s.Msg.image_process_draw_line="直線";s.Msg.image_process_create_blank_canvas="創建空白畫布";s.Msg.image_process_create_image_canvas="創建圖像畫布";s.Msg.image_process_create_image_canvas_path="圖像路徑: ";s.Msg.image_process_show_canvas="顯示畫布";s.Msg.image_process_clear_canvas_1="清除畫布";s.Msg.image_process_clear_canvas_2="中的所有內容";s.Msg.image_process_set_lcd_rotation="旋轉至";s.Msg.image_process_set_lcd_mirror_flip="將 LCD 螢幕進行鏡面翻轉";s.Msg.image_process_set_filled_screen_color="將 LCD 螢幕填充顏色爲";s.Msg.image_process_set_filled_screen_color_red="紅色";s.Msg.image_process_set_filled_screen_color_green="綠色";s.Msg.image_process_set_filled_screen_color_blue="藍色";s.Msg.image_process_set_filled_screen_color_purple="紫色";s.Msg.image_process_set_filled_screen_color_cyan="青色";s.Msg.image_process_set_filled_screen_color_orange="橙色";s.Msg.image_process_set_filled_screen_color_yellow="黃色";s.Msg.image_process_set_filled_screen_color_black="黑色";s.Msg.image_process_set_filled_screen_color_white="白色";s.Msg.image_process_clear_lcd="清除螢幕";s.Msg.image_process_rgb_r="紅";s.Msg.image_process_rgb_g="綠";s.Msg.image_process_rgb_b="藍";s.Msg.image_process_xy_x="X";s.Msg.image_process_xy_y="Y";s.Msg.image_process_wh_width="寬";s.Msg.image_process_wh_height="高";s.Msg.image_process_lcd_show_text="在 LCD 螢幕上顯示字串";s.Msg.image_process_lcd_show_text_color="字串顏色";s.Msg.image_process_lcd_show_text_bg_color="字串背景顏色";s.Msg.image_process_lcd_show_text_color_red="紅色";s.Msg.image_process_lcd_show_text_color_green="綠色";s.Msg.image_process_lcd_show_text_color_blue="藍色";s.Msg.image_process_lcd_show_text_color_purple="紫色";s.Msg.image_process_lcd_show_text_color_cyan="青色";s.Msg.image_process_lcd_show_text_color_orange="橙色";s.Msg.image_process_lcd_show_text_color_yellow="黃色";s.Msg.image_process_lcd_show_text_color_black="黑色";s.Msg.image_process_lcd_show_text_color_white="白色";s.Msg.image_process_get_statistics_to_canvas="獲取對畫布";s.Msg.image_process_get_statistics_get_analysis="進行顏色通道信息分析的結果";s.Msg.image_process_get_statistics_start_coord="設定分析區域的起始座標:";s.Msg.image_process_get_statistics_size="設定分析區域的尺寸:";s.Msg.image_process_get_statistics_boxes="設定直方圖通道的箱數:";s.Msg.image_process_lab_rgb_conversion_exec="執行顏色制式轉換";s.Msg.image_process_lab_rgb_conversion_torgb="LAB 轉 RGB";s.Msg.image_process_lab_rgb_conversion_tolab="RGB 轉 LAB";s.Msg.image_process_lab_rgb_conversion_tuple="設定要轉換的顏色元組爲:";s.Msg.image_process_rgb_grayscale_conversion_exec="執行顏色制式轉換";s.Msg.image_process_rgb_grayscale_conversion_torgb="灰度轉 RGB";s.Msg.image_process_rgb_grayscale_conversion_togray="RGB 轉灰度";s.Msg.image_process_rgb_grayscale_conversion_set="設定要轉換的顏色元組或灰度值爲:";s.Msg.image_lcd_set_font="設置字體爲";s.Msg.ai_camera_camera_init="相機初始化";s.Msg.ai_camera_camera_set_size="設定捕捉影像的尺寸爲:";s.Msg.ai_camera_camera_fit_set="設定相機捕捉的畫面";s.Msg.ai_camera_camera_fit_to="的尺寸為";s.Msg.ai_camera_camera_fit_1="LCD 螢幕 (240*240px)";s.Msg.ai_camera_camera_fit_2="用於 YOLO 模型推理 (224*224px)";s.Msg.ai_camera_camera_color_mode="設定捕捉的影像顏色模式爲:";s.Msg.ai_camera_camera_color_mode_rgb="彩色";s.Msg.ai_camera_camera_color_mode_bw="黑白";s.Msg.ai_camera_windowing_resize="將相機捕捉到的圖像尺寸調整至";s.Msg.ai_camera_windowing_w="寬:";s.Msg.ai_camera_windowing_h="高:";s.Msg.ai_camera_windowing_unit=" (單位: px)";s.Msg.ai_camera_snapshot="獲取相機捕捉的圖像";s.Msg.ai_camera_enable="啓用";s.Msg.ai_camera_disable="關閉";s.Msg.ai_camera_set_vflip="設定相機圖像垂直翻轉";s.Msg.ai_camera_set_hmirror="設定相機圖像水平鏡像";s.Msg.ai_camera_set_auto_whitebal="設定相機圖像自動白平衡";s.Msg.ai_camera_set_auto_gain="設定相機圖像自動增益";s.Msg.ai_camera_set_auto_exposure="設定相機圖像自動曝光";s.Msg.ai_camera_set_contrast_to_value="設定相機圖像對比度爲:";s.Msg.ai_camera_set_brightness_to_value="設定相機圖像亮度爲:";s.Msg.ai_camera_set_saturation_value="設定相機圖像色彩飽和度爲:";s.Msg.ai_camera_set_range="(範圍: -3至3)";s.Msg.ai_camera_set_lens_corr="廣角鏡頭畫面糾正";s.Msg.ai_camera_bcs_set_text="設定相機圖像的";s.Msg.ai_camera_bcs_contrast="對比度";s.Msg.ai_camera_bcs_brightness="亮度";s.Msg.ai_camera_bcs_saturation="色彩飽和度";s.Msg.ai_camera_bcs_as="爲";s.Msg.ai_camera_bcs_set_text_2="設定相機圖像";s.Msg.ai_camera_bcs_vflip="垂直翻轉";s.Msg.ai_camera_bcs_hmirror="水平鏡像";s.Msg.ai_camera_bcs_wb="自動白平衡";s.Msg.ai_camera_bcs_g="自動增益";s.Msg.ai_camera_bcs_e="自動曝光";s.Msg.ai_camera_bcs_as_2="爲";s.Msg.ai_camera_bcs_status="狀態";s.Msg.ai_vision_get_canvas="獲取畫布";s.Msg.ai_vision_from_canvas="從畫布";s.Msg.ai_vision_from="從";s.Msg.ai_vision_color_analyze_get_result="中指定區域的顏色分析結果 (RGB)";s.Msg.ai_vision_color_analyze_start_coord="設定分析區域的起始座標:";s.Msg.ai_vision_color_analyze_size="設定分析區域的尺寸:";s.Msg.ai_vision_find_blobs_color_region="尋找指定的顏色色塊";s.Msg.ai_vision_find_lines_color_region="尋找指定的顏色綫";s.Msg.ai_vision_find_lines_color_region_result="獲取尋找綫的結果";s.Msg.ai_vision_find_blobs_color_threshold="設定要追蹤的顏色閾值:";s.Msg.ai_vision_find_blobs_start_coord="設定檢測區域的起始座標:";s.Msg.ai_vision_find_blobs_size="設定檢測區域的尺寸:";s.Msg.ai_vision_find_blobs_region_threshold="設定邊界框區域閾值";s.Msg.ai_vision_find_blobs_pixel_threshold="設定畫素數閾值";s.Msg.ai_vision_find_blobs_filtered_region="是否合併所有沒有被過濾掉的色塊 ";s.Msg.ai_vision_get_blobs_result="獲取追蹤指定顏色的識別結果";s.Msg.ai_vision_detection_box_x="檢測框起點 X 軸座標";s.Msg.ai_vision_detection_box_y="檢測框起點 Y 軸座標";s.Msg.ai_vision_detection_box_width="檢測框寬度";s.Msg.ai_vision_detection_box_height="檢測框高度";s.Msg.ai_vision_detection_box_pixels="屬於色塊一部分的畫素數量";s.Msg.ai_vision_detection_box_cx="檢測框的中心點 X 軸座標";s.Msg.ai_vision_detection_box_cy="檢測框的中心點 Y 軸座標";s.Msg.ai_vision_detection_box_degree="檢測框的旋轉角度";s.Msg.ai_vision_detection_box_total="總數量";s.Msg.ai_vision_find_blobs_margin="邊界矩形的大小";s.Msg.ai_vision_detection_color_threshold_set="獲取用於顏色追蹤的預設顏色:";s.Msg.ai_vision_detection_color_threshold_set_black="黑色";s.Msg.ai_vision_detection_color_threshold_set_white="白色";s.Msg.ai_vision_detection_color_threshold_set_red="亮紅色";s.Msg.ai_vision_detection_color_threshold_set_green="綠色";s.Msg.ai_vision_detection_color_threshold_set_blue="浅藍色";s.Msg.ai_vision_detection_color_threshold_set_orange="橘色";s.Msg.ai_vision_qrcode_detected_result="中 QR 碼的檢測結果";s.Msg.ai_vision_apriltag_detected_result="中 AprilTag 的檢測結果";s.Msg.ai_vision_datamatrices_detected_result="中數據矩陣 (Data Matrix) 的檢測結果";s.Msg.ai_vision_barcode_detected_result="中條形碼的檢測結果";s.Msg.ai_vision_qrcode_get_result="獲取檢測 QR 碼的";s.Msg.ai_vision_apriltag_get_result="獲取檢測 AprilTag 的";s.Msg.ai_vision_data_matrices_get_result="獲取檢測數據矩陣 (Data Matrix) 的";s.Msg.ai_vision_barcode_matrices_get_result="獲取檢測條形碼的";s.Msg.ai_vision_pattern_detection_content="源文本";s.Msg.ai_vision_pattern_detection_type="數據類型";s.Msg.ai_vision_pattern_detection_x="邊界框的 X 軸座標";s.Msg.ai_vision_pattern_detection_y="邊界框的 Y 軸座標";s.Msg.ai_vision_pattern_detection_w="邊界框的寬度";s.Msg.ai_vision_pattern_detection_h="邊界框的高度";s.Msg.ai_vision_pattern_distance="距離";s.Msg.ai_vision_pattern_detection_type_id="數字 ID";s.Msg.ai_vision_pattern_detection_type_family="數字家庭";s.Msg.ai_vision_pattern_detection_rows="欄數";s.Msg.ai_vision_pattern_detection_cols="列數";s.Msg.ai_vision_pattern_detection_can_tolerate_count="所能容納的字元數量";s.Msg.ai_vision_pattern_detection_can_not_tolerate_count="未使用的字元數量";s.Msg.ai_vision_find_circle="中尋找圓形";s.Msg.ai_vision_find_circle_start_coord="設定檢測區域的起始座標:";s.Msg.ai_vision_find_circle_region_size="設定檢測區域的尺寸:";s.Msg.ai_vision_find_circle_hoffman_threshold="設定從霍夫變換中監測到圓的閾值:";s.Msg.ai_vision_find_circle_merge_x="設定所檢測的圓的合併 (x):";s.Msg.ai_vision_find_circle_merge_y="設定所檢測的圓的合併 (y):";s.Msg.ai_vision_find_circle_merge_r="設定所檢測的圓的合併 (r):";s.Msg.ai_vision_find_circle_min_radius="設定檢測到的最小圓半徑:";s.Msg.ai_vision_find_circle_max_radius="設定檢測到的最大圓半徑:";s.Msg.ai_vision_find_circle_step_radius="設定逐步檢測半徑:";s.Msg.ai_vision_find_circle_detected_result="獲取尋找圓形的結果";s.Msg.ai_vision_find_circle_detected_x="檢測到圓的 X 軸座標";s.Msg.ai_vision_find_circle_detected_y="檢測到圓的 Y 軸座標";s.Msg.ai_vision_find_circle_detected_radius="檢測到圓的半徑";s.Msg.ai_vision_find_line="中尋找直線";s.Msg.ai_vision_find_line_start_coord="設定檢測區域的起始座標:";s.Msg.ai_vision_find_line_size="設定檢測區域的尺寸:";s.Msg.ai_vision_find_line_hoffman_threshold="設定從霍夫變換中監測到直線的閾值:";s.Msg.ai_vision_find_line_merge_theta="設定所監測的直線的合併值 (theta):";s.Msg.ai_vision_find_line_merge_rho="設定所監測的直線的合併值 (rho):";s.Msg.ai_vision_find_line_detected_result="獲取尋找直線的結果";s.Msg.ai_vision_find_line_detected_start_x="檢測到直線起始點的 X 軸座標";s.Msg.ai_vision_find_line_detected_start_y="檢測到直線起始點的 Y 軸座標";s.Msg.ai_vision_find_line_detected_end_x="檢測到直線結束點的 X 軸座標";s.Msg.ai_vision_find_line_detected_end_y="檢測到直線結束點的 Y 軸座標";s.Msg.ai_vision_find_line_detected_length="檢測到直線的長度";s.Msg.ai_vision_find_line_detected_angle="檢測到直線的角度";s.Msg.ai_vision_find_rect="中尋找矩形";s.Msg.ai_vision_find_rect_start_coord="設定檢測區域的起始座標:";s.Msg.ai_vision_find_rect_region_size="設定檢測區域的尺寸:";s.Msg.ai_vision_find_rect_bounding_threshold="設定邊界閾值大小:";s.Msg.ai_vision_find_rect_detected_result="獲取尋找矩形的結果";s.Msg.ai_vision_find_rect_detected_tuple="檢測到矩形的座標及尺寸元組";s.Msg.ai_vision_find_rect_detected_corners="檢測到矩形的四個角的座標位置";s.Msg.ai_vision_find_rect_detected_x="檢測到矩形的起始點的 X 軸座標";s.Msg.ai_vision_find_rect_detected_y="檢測到矩形的起始點的 Y 軸座標";s.Msg.ai_vision_find_rect_detected_w="檢測到矩形的寬度";s.Msg.ai_vision_find_rect_detected_h="檢測到矩形的高度";s.Msg.ai_vision_get_histogram_get="獲取從畫布";s.Msg.ai_vision_get_histogram_compute="中進行標準化直方圖運算的結果";s.Msg.ai_vision_get_histogram_region="設定顏色追蹤區域範圍:";s.Msg.ai_vision_get_histogram_region_xy="區域座標:";s.Msg.ai_vision_get_histogram_region_wh="區域尺寸:";s.Msg.ai_vision_get_histogram_details_1="從直方圖計算結果";s.Msg.ai_vision_get_histogram_details_get="獲取直方圖頻道的 CDF 計算值 (%)";s.Msg.ai_vision_get_histogram_percentile_1="從直方圖計算結果獲取的百分比值中";s.Msg.ai_vision_get_histogram_percentile_2="獲取";s.Msg.ai_vision_get_histogram_percentile_3="灰度百分比值";s.Msg.ai_vision_get_histogram_percentile_4="RGB565 LAB 的L通道的百分比值";s.Msg.ai_vision_get_histogram_percentile_5="RGB565 LAB 的A通道的百分比值";s.Msg.ai_vision_get_histogram_percentile_6="RGB565 LAB 的B通道的百分比值";s.Msg.ai_vision_canvas_area_tuple="建立區域元組";s.Msg.ai_vision_canvas_area_tuple_xy="設定起始座標:";s.Msg.ai_vision_canvas_area_tuple_wh="設定尺寸:";s.Msg.ai_vision_lane_tracking_setup="道路循線識別初始化";s.Msg.ai_vision_lane_tracking_setup_threshold="設定要追蹤的顏色";s.Msg.ai_vision_lane_tracking_setup_l="設定左側識別區域:";s.Msg.ai_vision_lane_tracking_setup_r="設定右側識別區域:";s.Msg.ai_vision_lane_tracking_setup_axis="設定中軸線位置:";s.Msg.ai_vision_lane_tracking_run="執行道路循線識別";s.Msg.ai_vision_lane_tracking_run_get="從道路循線識別的結果中獲取";s.Msg.ai_vision_lane_tracking_run_ld="左側區域檢測結果";s.Msg.ai_vision_lane_tracking_run_lv="左側區域檢測偏移距離";s.Msg.ai_vision_lane_tracking_run_rd="右側區域檢測結果";s.Msg.ai_vision_lane_tracking_run_rv="右側區域檢測偏移距離";s.Msg.ai_microphone_init="咪高峰初始化";s.Msg.ai_microphone_start_spectrum_analyze="開始讀取音頻頻譜";s.Msg.ai_microphone_get_spectrum_analyze_result="獲取咪高峰採集的音頻頻譜";s.Msg.ai_microphone_get_spectrum_analyze_result_1="低音 1";s.Msg.ai_microphone_get_spectrum_analyze_result_2="低音 2";s.Msg.ai_microphone_get_spectrum_analyze_result_3="中低音 1";s.Msg.ai_microphone_get_spectrum_analyze_result_4="中低音 2";s.Msg.ai_microphone_get_spectrum_analyze_result_5="中高音 1";s.Msg.ai_microphone_get_spectrum_analyze_result_6="中高音 2";s.Msg.ai_microphone_get_spectrum_analyze_result_7="高音 1";s.Msg.ai_microphone_get_spectrum_analyze_result_8="高音 2";s.Msg.ai_mphone_Record_audio_init="咪高峰錄製音頻初始化";s.Msg.ai_mphone_Record_audio_start="開始錄製音頻";s.Msg.ai_mphone_Record_audio_start_path="設定音頻保存路徑:";s.Msg.ai_mphone_Record_audio_start_time="設定錄製的時間(s):";s.Msg.ai_audio_stop_recording="停止錄製音頻";s.Msg.ai_audio_play_music_file="播放音訊檔案(單個循環)";s.Msg.ai_audio_play_music_file_list_loop="播放音訊檔案(順序播放)";s.Msg.ai_audio_play_music_file_list_random="播放音訊檔案(隨機播放)";s.Msg.ai_audio_play_music_file_set_vol="設定音量爲:";s.Msg.ai_audio_play_music_file_set_file_path="加载音訊檔案,路徑为:";s.Msg.ai_audio_play_music_file_set_files_list="音訊檔案陣列:";s.Msg.ai_audio_play_music_file_set_first_index="起始位置:";s.Msg.ai_audio_files_list_set_file_path="當前路徑:";s.Msg.ai_audio_get_play_status="獲取音訊檔案播放狀態";s.Msg.ai_audio_end_play="結束音訊檔案播放";s.Msg.ai_audio_start_play="播放音訊檔案";s.Msg.ai_audio_init="喇叭初始化";s.Msg.ai_audio_set_music_vol="設定音訊檔案播放音量爲:";s.Msg.ai_audio_files_list="獲取音頻檔案陣列";s.Msg.ai_speech_recognition_setup="語音識別初始化";s.Msg.ai_speech_recognition_setup_set_sensi="設定環境噪音靈敏度為:";s.Msg.ai_speech_recognition_setup_set_sensi_normal="正常";s.Msg.ai_speech_recognition_setup_set_sensi_high="高";s.Msg.ai_speech_recognition_setup_set_sensi_ehigh="很高";s.Msg.ai_speech_recognition_start_recording="開始錄製語音片段";s.Msg.ai_speech_recognition_start_recording_clip_text="設定要識別的語音片段個數為:";s.Msg.ai_speech_recognition_start_recording_clip_note="(不得超過 6 個片段)";s.Msg.ai_speech_recognition_start_recording_take_text="設定每個片段錄製的次數為:";s.Msg.ai_speech_recognition_start_recording_take_note="(不得超過 4 次)";s.Msg.ai_speech_recognition_start_recognizing="開始進行語音識別";s.Msg.ai_speech_recognition_any_result_text="當語音識別獲得任意結果的時候";s.Msg.ai_speech_recognition_any_result_text_do="執行";s.Msg.ai_speech_recognition_get_result="語音識別的結果為第 ";s.Msg.ai_speech_recognition_get_result_after="條片段";s.Msg.ai_speech_recognition_phonetic_to_pinyin_setup="語音轉拼音初始化";s.Msg.ai_speech_recognition_setup_pinyin="設置拼音";s.Msg.ai_speech_recognition_phonetic_to_pinyin_get_result="獲取語音轉拼音的結果";s.Msg.ai_speech_recognition_phonetic_to_pinyin_set_param="設定拼音識別參數";s.Msg.ai_speech_recognition_phonetic_to_pinyin_set_param_1="設定優先級";s.Msg.speech_recognition_phonetic_to_pinyin_start_recognition="開始語音拼音識別";s.Msg.speech_recognition_phonetic_to_pinyin_stop_recognition="終止語音拼音識別";s.Msg.speech_recognition_phonetic_to_pinyin_pause_recognition="清除語音拼音識別";s.Msg.speech_recognition_number_of_recordings="錄製片段次數";s.Msg.speech_recognition_In_recording="錄製片段中";s.Msg.speech_recognition_Recorded_successfully="錄製片段成功";s.Msg.speech_recognition_Start_speech_recognition="錄製語音片段並識別顯示在";s.Msg.speech_recognition_Start_speech_recognition_title="錄製語音片段並識別顯示";s.Msg.speech_recognition_Speech_recognition_result="語音識別結果";s.Msg.speech_recognition_Clean_up_the_last_study_result="清理上一次學習結果";s.Msg.speech_recognition_Recognition_success="識別成功";s.Msg.speech_recognition_Recognition_fail="識別失敗";s.Msg.ai_video_start_recording="開始錄製影片";s.Msg.ai_video_start_recording_file_path="設定影片保存路徑:";s.Msg.ai_video_start_recording_width="設定影片寬度 (px):";s.Msg.ai_video_start_recording_height="設定影片高度 (px):";s.Msg.ai_video_to_canvas="對畫布";s.Msg.ai_video_record="進行錄製";s.Msg.ai_video_stop_recording="停止錄製影片";s.Msg.ai_video_play_video="播放影片檔案";s.Msg.ai_video_play_video_2="註:僅支持尺寸爲 320*240 的影片";s.Msg.ai_video_play_video_file_path="影片路徑:";s.Msg.ai_video_stop_video_playing="結束影片檔案播放";s.Msg.ai_video_get_video_playing_status="獲取影片播放的狀態";s.Msg.ai_video_recording_and_save="錄製影片檔案並保存";s.Msg.ai_video_set_play="影片檔案播放";s.Msg.ai_video_set_play_stats="視頻屬性";s.Msg.ai_video_set_play_init="視頻初始化";s.Msg.ai_models_from="從";s.Msg.ai_models_init_title="初始化預設模型:";s.Msg.ai_model_allinit_language="設定語言爲:";s.Msg.ai_models_load_title="加載預設模型:";s.Msg.ai_models_init_hand_written_model="手寫數字識別模型";s.Msg.ai_models_init_object_model="常見物體檢測模型";s.Msg.ai_models_init_guesswork_model="猜拳識別模型";s.Msg.ai_models_guesswork_model_if="檢測到猜拳結果";s.Msg.ai_models_guesswork_model_get="獲取檢測到猜拳結果的";s.Msg.ai_model_guesswork_look_attribute="猜拳手勢屬性";s.Msg.ai_models_init_object_model_title="常見物體檢測模型(飛機、自行車、鳥,船,瓶子,公共汽車,汽車,貓,椅子,牛,餐桌,狗,馬,摩托車,人,盆栽,羊,沙發,火車,電視監視器)";s.Msg.ai_models_init_face_model="人臉檢測模型";s.Msg.ai_camera_camera_fit_set1="設定相機捕捉的畫面爲:";s.Msg.ai_models_init_source="設定要檢測的圖像源爲:";s.Msg.ai_models_init_source_written="設置要檢測手寫數字識別的圖像源爲::";s.Msg.ai_models_hand_written_model_result="獲取手寫數字檢測模型的檢測結果";s.Msg.ai_models_hand_written_model_number="獲取當前檢測到的數字 (0至9)";s.Msg.ai_models_hand_written_model_confidence="獲取當前檢測到的數字的可信度 (%)";s.Msg.ai_model_digital="待測數字屬性";s.Msg.ai_model_digital_attribute="檢測到待測數字";s.Msg.ai_models_object_model_if="檢測到待測物體";s.Msg.ai_models_object_model_get="獲取檢測到的待測物體的";s.Msg.ai_model_look_attribute="待測物體屬性";s.Msg.ai_models_object_model_name="物體名稱";s.Msg.ai_models_object_model_x="檢測框起點 X 軸座標";s.Msg.ai_models_object_model_y="檢測框起點 Y 軸座標";s.Msg.ai_models_object_model_w="檢測框終點 X 軸座標";s.Msg.ai_models_object_model_h="檢測框終點 Y 軸座標";s.Msg.ai_models_object_model_count="物體數量";s.Msg.ai_models_object_model_index="出現順序";s.Msg.ai_models_object_model_confidence="可信度";s.Msg.ai_models_face_model_if_new="識別到人臉";s.Msg.ai_model_face_attribute_new="人臉識別屬性";s.Msg.ai_models_face_model_if="檢測到人臉";s.Msg.ai_model_face_attribute="人臉屬性";s.Msg.ai_models_face_model_get="獲取檢測到的人臉的";s.Msg.ai_models_face_model_x="檢測框起點 X 軸座標";s.Msg.ai_models_face_model_y="檢測框起點 Y 軸座標";s.Msg.ai_models_face_model_w="檢測框終點 X 軸座標";s.Msg.ai_models_face_model_h="檢測框終點 Y 軸座標";s.Msg.ai_models_face_model_ws="檢測框的寬度";s.Msg.ai_models_face_model_hs="檢測框的高度";s.Msg.ai_models_face_model_rect="檢測框";s.Msg.ai_models_face_model_count="數量";s.Msg.ai_models_face_model_index="出現順序";s.Msg.ai_models_face_model_confidence="可信度";s.Msg.ai_models_face_model_confidence_1="可信度(人臉檢測)";s.Msg.ai_model_human_attribute="人體屬性";s.Msg.ai_models_human_model_if="檢測到人體";s.Msg.ai_models_human_model_get="獲取檢測到的人體的";s.Msg.ai_models_init_humane_model="人體檢測模型";s.Msg.ai_models_init_card_model="車牌識別模型";s.Msg.ai_models_init_card_result="車牌結果";s.Msg.ai_models_card_if_true="檢測到車牌";s.Msg.ai_models_card_attribute="檢測到的車牌屬性";s.Msg.ai_models_card_model_get="獲取檢測到車牌的";s.Msg.ai_model_customized_init_setup_definition="加載自定義模型前的設定";s.Msg.ai_models_customized_init_setup_title="客製化模型 (TinyYOLOv2)";s.Msg.ai_model_customized_load_setup_title="加載客製化模型 (TinyYOLOv2)";s.Msg.ai_models_customized_init_setup_path="模型文件路徑:";s.Msg.ai_models_customized_init_setup_source="設定要識別的圖像源爲:";s.Msg.v831_transmission_init_setup_source="設置要傳輸的圖像源爲:";s.Msg.v831_transmission_setup_show="將捕捉的相機圖像傳輸到電腦並顯示";s.Msg.v831_internet_transmission_setup_show="將捕捉的相機圖像在網頁顯示";s.Msg.ai_models_customized_init_type_set="設定識別模式:";s.Msg.ai_models_customized_init_type_set_fast="識別單張人臉(速度快)";s.Msg.ai_models_customized_init_type_set_slow="識別多張人臉(速度慢):";s.Msg.ai_models_customized_init_setup_name="設定模型識別物體的名稱:";s.Msg.ai_models_customized_if_got="識別到了客製化模型的物件";s.Msg.ai_model_customized_attribute="客製化模型對象屬性";s.Msg.ai_models_customized_get_result_any="獲取識別到客製化模型結果的";s.Msg.ai_models_customized_get_result_name="名稱";s.Msg.ai_models_customized_get_result_x="檢測框起點 X 軸座標";s.Msg.ai_models_customized_get_result_y="檢測框起點 Y 軸座標";s.Msg.ai_models_customized_get_result_w="檢測框終點 X 軸座標";s.Msg.ai_models_customized_get_result_h="檢測框終點 Y 軸座標";s.Msg.ai_models_customized_get_result_count="數量";s.Msg.ai_models_customized_get_result_index="出現順序";s.Msg.ai_models_customized_get_result_confidence="可信度";s.Msg.ai_model_face_setup="自定義人臉識別";s.Msg.ai_model_face="自定義初始化人臉識別模型";s.Msg.ai_face_detection_model="初始化人臉檢測模型";s.Msg.ai_face_point_detection_model="初始化人臉5點關鍵點檢測模型";s.Msg.ai_face_Vitter_eigenvalue_model="初始化人臉196維特徵值模型";s.Msg.ai_model_Calculation_of_196_eigenvalues="計算運行人臉特徵模型後的196維特徵值";s.Msg.ai_model_face_name="設定模型識別人臉的名稱:";s.Msg.ai_model_face_start_recognition="加載人臉檢測模型,";s.Msg.ai_model_face_model_load_finish="人臉檢測模型加載完成";s.Msg.ai_model_face_load_point_detection_model="加載人臉5點關鍵點檢測模型,";s.Msg.ai_model_face_load_point_detection_model_1="獲取人臉圖像並將其存到";s.Msg.ai_model_face_load_point_detection_model_2="設定人臉檢測框爲";s.Msg.ai_model_face_gather="採集新的人臉數據並保存人臉數據";s.Msg.ai_model_face_gather_1="保存人臉數據并將數據保存在文件中,路徑為:";s.Msg.ai_model_face_data_load="加載已保存的人臉數據";s.Msg.ai_model_face_data_load_1="設定路徑爲 /sd/user 的加載人臉數據的文件名爲";s.Msg.ai_model_face_model_list="人臉檢測屬性";s.Msg.ai_model_face_gather_num_judge="人臉採集完成";s.Msg.ai_model_face_recognition="採集或者加載完成人臉數據並進行人臉識別";s.Msg.ai_model_face_recognition_get_result="人臉識別獲得任意結果";s.Msg.ai_model_show_face="處理圖像並顯示";s.Msg.v831_face_recognition_load="加載人臉識別模型,";s.Msg.v831_face_recognition_load_title="加載人臉模型,並設置要檢測的圖像源";s.Msg.v831_setting_face_data_save="設置要保存的人臉數據:";s.Msg.face_recognition_map_face_canvas="在畫布上";s.Msg.face_recognition_map_face_show="顯示第";s.Msg.face_recognition_map_face_key_point="人臉的關鍵點";s.Msg.v831_setting_face_data_save_title="設置要保存的人臉數據";s.Msg.v831_setting_face_data_remove="刪除最後一次保存的人臉數據";s.Msg.v831_setting_face_data_remove_title="刪除最後一次保存的人臉數據";s.Msg.v831_face_recognition_result="圖像源識別結果:";s.Msg.v831_face_recognition_result_title="圖像源識別結果";s.Msg.v831_model_face_name="人臉的名稱";s.Msg.v831_models_face_model_confidence="可信度(人臉識別)";s.Msg.ai_model_class_setup="自定義物體識別";s.Msg.ai_class_model="初始化自定義物體特徵提取模型";s.Msg.ai_class_model_cluster="初始化自定義物體聚類參數";s.Msg.ai_model_class_start_load="並對圖像進行處理";s.Msg.ai_model_class_gather="開始採集物體";s.Msg.ai_model_class_data_load="加載物體數據";s.Msg.ai_model_class_data_load_1="設定路徑爲 /sd/user 的加載物體數據的文件名爲";s.Msg.ai_model_class_gather_load_finish="採集或者加載完成物體數據";s.Msg.ai_model_class_cluster_train="開始進行物體特徵提取,然後加以聚類訓練";s.Msg.ai_model_class_cluster_train_1="設定路徑爲 /sd/user 的保存物體數據的文件名爲";s.Msg.ai_model_class_recognition="開始進行物體識別";s.Msg.ai_model_class="自定義初始化物體識別模型";s.Msg.ai_model_class_name="設定模型識別物體的名稱:";s.Msg.ai_model_getface="識別到了人臉模型的對象";s.Msg.ai_model_getclass="識別到了物体模型的對象";s.Msg.face_information="人臉信息";s.Msg.ai_models_object_model_x_center="檢測框中心點的X軸座標";s.Msg.ai_models_object_model_y_center="檢測框中心點的Y軸座標";s.Msg.ai_models_face_model_x_center="檢測框中心點的 X 軸座標";s.Msg.ai_models_face_model_y_center="檢測框中心點的 Y 軸座標";s.Msg.ai_models_customized_get_result_x_center="檢測框中心點的 X 軸座標";s.Msg.ai_models_customized_get_result_y_center="檢測框中心點的 Y 軸座標";s.Msg.ai_models_edge_detection_model="邊緣檢測模型";s.Msg.ai_models_load_edge_detection_model="加載邊緣檢測模型";s.Msg.ai_models_get_edge_detection_result="獲取邊緣檢測模型結果";s.Msg.ai_model_self_learning_init="初始化自我學習分類模型";s.Msg.ai_model_self_learning_load="加載自我學習分類模型";s.Msg.ai_model_self_learning_recognize_load="加載自我學習分類識別模型";s.Msg.ai_model_self_learning_add_class_category="添加分類類別";s.Msg.ai_model_self_learning_make_data_set="製作模型訓練的數據集";s.Msg.ai_model_self_learning_picture="進行圖片自我學習";s.Msg.ai_model_self_learning_save_modal="保存模型";s.Msg.ai_model_self_learning_class_verification="自我學習分類模型驗證";s.Msg.ai_model_self_learning_result="自我學習結果名稱";s.Msg.ai_model_self_learning_result_name="名稱";s.Msg.ai_system_restart="重啓系統";s.Msg.ai_system_off="關機";s.Msg.ai_system_refresh="更新文件目錄";s.Msg.ai_system_enable_gc="啓動記憶體回收";s.Msg.ai_system_run_python_code="運行 Python 程式";s.Msg.ai_system_run_python_code_file_path="程式路徑爲:";s.Msg.ai_wifi_set_wifi="設定 Wi-Fi 為";s.Msg.ai_wifi_enabled="啟用狀態";s.Msg.ai_wifi_disabled="禁用狀態";s.Msg.ai_wifi_start_wifi_scan="開始掃描附近 Wi-Fi 熱點";s.Msg.ai_wifi_wifi_scan_result="獲取 Wi-Fi 掃描的結果為陣列形式";s.Msg.ai_wifi_connect_wifi="連線至 Wi-Fi 網路";s.Msg.ai_wifi_connect_wifi_ssid="網路名稱 (SSID):";s.Msg.ai_wifi_connect_wifi_pass="網路密碼:";s.Msg.ai_wifi_get_connection_status="獲取 Wi-Fi 連線的狀態";s.Msg.ai_wifi_get_wifi_info="獲取 Wi-Fi 連線的裝置資訊:";s.Msg.ai_wifi_get_wifi_info_name="熱點名稱";s.Msg.ai_wifi_get_wifi_info_ip="IP 地址";s.Msg.ai_wifi_get_wifi_info_dns="DNS 地址";s.Msg.ai_wifi_get_wifi_info_mac="MAC 地址";s.Msg.third_party_hcsr04_iot="在 IoT 模組上";s.Msg.third_party_hcsr04_ai="在 A.I. 模組上 ";s.Msg.third_party_hcsr04_setup_title="初始化 HCSR-04 超聲波感應器";s.Msg.third_party_hcsr04_trig_pin="設定 Trig 接腳為 引腳 #";s.Msg.third_party_hcsr04_echo_pin=", 設定 Echo 接腳為 引腳 #";s.Msg.third_party_hcsr04_read_text="讀取來自超聲波感應器";s.Msg.third_party_hcsr04_read_text_after="的距離檢測數值 (單位: CM)";s.Msg.Set_Auto_Wrap="自動換欄";s.Msg.esp32_ble_setup_sender_msg="BLE(低功耗藍牙)";s.Msg.esp32_ble_setup_sender="發送端初始化";s.Msg.esp32_ble_send_data_msg="BLE 發送數據";s.Msg.esp32_ble_setup_receiver_msg="BLE(低功耗藍牙)";s.Msg.esp32_ble_setup_receiver="接收端初始化";s.Msg.esp32_ble_get_data_msg="獲取從BLE接收的數據";s.Msg.esp32_ble_sender_connected_msg="發送端已經被連接";s.Msg.esp32_ble_receiver_connected_msg="接收端已經被連接";s.Msg.esp32_ble_set_uuid="設定 UUID:";s.Msg.esp32_ble_set_name="設定設備名稱:";s.Msg.esp32_ble_set_name_limit=" (不得超過 8 個字元)";s.Msg.text_additional_delimiter_string="將字串";s.Msg.text_additional_delimiter_deli="使用分隔符:";s.Msg.text_additional_delimiter_end="進行拆分並生成陣列";s.Msg.MLX90614_READ_AMBIENT="從 MLX90614 獲取當前環境溫度";s.Msg.MLX90614_READ_OBJECT="從 MLX90614 獲取目標物體溫度";s.Msg.MLX90614_READ_SET_TEMP="設定溫度單位為:";s.Msg.MLX90614_READ_SET_TEMP_C="攝氏";s.Msg.MLX90614_READ_SET_TEMP_F="華氏";s.Msg.MLX90614_SETUP_TEXT_1="非接觸式測溫感應器";s.Msg.MLX90614_SETUP_TEXT_2="MLX90614 初始化設置";s.Msg.DHT_SETUP_TEXT_1="溫濕度感應器初始化設定";s.Msg.DHT_SETUP_TEXT_2="感應器型號:";s.Msg.DHT_SETUP_TEXT_3="初始化";s.Msg.DHT_SETUP_TEXT_4="設定感應器數據接收引腳 #:";s.Msg.PM25_SETUP_TEXT="PM2.5灰塵感應器初始化設定";s.Msg.robot_dog_movement="語音操控機器狗";s.Msg.robot_dog_movement_action="設定動作指令";s.Msg.robot_dog_phonetic_to_pinyin_get_result="獲取語音識別的結果";s.Msg.robot_dog_movement_action_0="趴下";s.Msg.robot_dog_movement_action_1="站起";s.Msg.robot_dog_movement_action_2="匍匐前進";s.Msg.robot_dog_movement_action_3="轉圈";s.Msg.robot_dog_movement_action_4="原地踏步";s.Msg.robot_dog_movement_action_5="蹲起";s.Msg.robot_dog_movement_action_6="轉動Roll";s.Msg.robot_dog_movement_action_7="轉動Pitch";s.Msg.robot_dog_movement_action_8="轉動Yaw";s.Msg.robot_dog_movement_action_9="三軸轉動";s.Msg.robot_dog_movement_action_10="撒尿";s.Msg.robot_dog_movement_action_11="坐下";s.Msg.robot_dog_movement_action_12="招手";s.Msg.robot_dog_movement_action_13="伸懶腰";s.Msg.robot_dog_movement_action_14="波浪";s.Msg.robot_dog_movement_action_15="左右搖擺";s.Msg.robot_dog_movement_action_16="求食";s.Msg.robot_dog_movement_action_17="覓食";s.Msg.robot_dog_movement_action_18="握手";s.Msg.robot_dog_movement_action_19="恢復初始狀態";s.Msg.robot_dog_movement_action_20="前進";s.Msg.robot_dog_movement_action_21="後退";s.Msg.robot_dog_movement_action_22="向左運動";s.Msg.robot_dog_movement_action_23="向右運動";s.Msg.robot_dog_movement_action_24="開啟自穩功能";s.Msg.robot_dog_movement_action_25="關閉自穩功能";s.Msg.robot_dog_movement_action_30="拜年";s.Msg.robot_dog_setup="機器狗初始化";s.Msg.robot_dog_execution="機器狗執行";s.Msg.robot_dog_action="指令";s.Msg.robot_dog_servo_execution="設定";s.Msg.robot_dog_front_left_leg="左前";s.Msg.robot_dog_back_left_leg="左後";s.Msg.robot_dog_front_right_leg="右前";s.Msg.robot_dog_back_right_leg="右後";s.Msg.robot_dog_leg="腿部";s.Msg.robot_dog_up="上 (-31˚~31˚)";s.Msg.robot_dog_up_1="上";s.Msg.robot_dog_middle="中 (-66˚~93˚)";s.Msg.robot_dog_middle_1="中";s.Msg.robot_dog_down="下 (-65˚~73˚)";s.Msg.robot_dog_down_1="下";s.Msg.robot_dog_servo_rotate="關節伺服馬達轉動至";s.Msg.robot_dog_ag="度";s.Msg.robot_dog_angle="毫米";s.Msg.robot_dog_angle_speed="度/秒";s.Msg.robot_dog_servo_set_speed="設定";s.Msg.robot_dog_servo_speed="伺服馬達速度";s.Msg.robot_dog_movement_speed="邁步頻率";s.Msg.robot_dog_servo_to="為";s.Msg.robot_dog_servo_speed_1="快";s.Msg.robot_dog_servo_speed_2="正常";s.Msg.robot_dog_servo_speed_3="慢";s.Msg.robot_dog_servo_movement_location="方向的位置為";s.Msg.robot_dog_leg_f="腿足尖";s.Msg.robot_dog_controll_action_0="關閉";s.Msg.robot_dog_controll_action_1="打開";s.Msg.robot_dog_gyroscope="陀螺儀";s.Msg.robot_dog_open_performance_mode="機器狗表演模式";s.Msg.robot_dog_open_calibration_mode="機器狗標定模式";s.Msg.robot_dog_get_power="獲取機器狗當前的電量";s.Msg.robot_dog_get_servo_angle="關節伺服馬達的角度";s.Msg.robot_dog_servo_movement_distance="設定機器狗執行";s.Msg.robot_dog_movement_action_26="左移 (0mm~18mm)";s.Msg.robot_dog_movement_action_27="右移 (-18mm~0mm)";s.Msg.robot_dog_movement_action_28="前進 (0mm~25mm)";s.Msg.robot_dog_movement_action_29="後退 (-25mm~0mm)";s.Msg.robot_dog_servo_movement_distance_location="方向平移運動步長為";s.Msg.robot_dog_servo_movement_rotate="設定機器狗執行";s.Msg.robot_dog_servo_movement_rotate_location="方向旋轉運動轉動速度為";s.Msg.MOTION_ONDIRECTION_CLOCKWISE1="左轉 (0˚/s~150˚/s)";s.Msg.MOTION_ONDIRECTION_COUNTERCLOCKWISE1="右轉 (-150˚/s~0˚/s)";s.Msg.robot_dog_servo_movement_standing_still="設定機器狗以";s.Msg.robot_dog_servo_movement_standing_still_1="(10mm~35mm)的抬腿高度以固定頻率執行原地踏步";s.Msg.robot_dog_servo_movement_distance_cycle_1="持續";s.Msg.robot_dog_servo_movement_distance_cycle_2="秒";s.Msg.robot_dog_servo_movement_distance_still="設定機器狗";s.Msg.robot_dog_servo_movement_distance_still_1="方向平移";s.Msg.robot_dog_servo_movement_distance_still_2="(-128~127)釐米";s.Msg.robot_dog_servo_movement_rotate_still="設定機器狗繞";s.Msg.robot_dog_servo_movement_rotate_still1="軸旋轉";s.Msg.robot_dog_servo_movement_rotate_still2="(-128~127)";s.Msg.robot_dog_servo_movement_distance_still_cycle="設定機器狗以週期";s.Msg.robot_dog_servo_movement_distance_still_cycle_1="秒(1.5s~8s)向";s.Msg.robot_dog_servo_movement_distance_still_cycle_2="方向往復平移";s.Msg.robot_dog_servo_movement_rotate_still_cycle="秒(1.5s~8s) 繞";s.Msg.robot_dog_servo_movement_rotate_still_cycle_1="軸往復轉動";s.Msg.robot_dog_servo_movement_distance_still_cycle_stop="停止機器狗週期性向";s.Msg.robot_dog_servo_movement_rotate_still_cycle_stop="停止機器狗週期性繞";s.Msg.robot_dog_get_rotate_angle="軸的角度";s.Msg.robot_dog_get_rotate_angle_1="獲取陀螺儀";s.Msg.uav_initialization="無人機初始化";s.Msg.numbers_for="編號為";s.Msg.uav_uav="無人機";s.Msg.uav_height="高度";s.Msg.uav_lock="鎖定";s.Msg.uav_unlock="解鎖";s.Msg.uav_the_nose_direction="機頭方向";s.Msg.uav_landing="降落";s.Msg.uav_brake="剎車";s.Msg.uav_hover="懸停";s.Msg.uav_scram="急停";s.Msg.uav_calibration="校準";s.Msg.Take_off_altitude="的無人機起飛高度";s.Msg.uav_switch="無人機,切換";s.Msg.uav_AI_switch="無人機,AI 切換到";s.Msg.uav_fly_mode="飛行模式";s.Msg.uav_horizontal_velocity="無人機,水平速度";s.Msg.uav_speed_unit="釐米/秒";s.Msg.uav_vertical_speed="無人機,垂直速度";s.Msg.uav_go_to="無人機,向";s.Msg.uav_patrol_flight="巡線飛行";s.Msg.uav_fly="飛";s.Msg.uav_look_for_black_patches="釐米,尋找黑色小塊";s.Msg.uav_look_for="厘米,尋找";s.Msg.uav_the_label="號標籤";s.Msg.uav_look_for_color_piece="厘米,尋找色塊";s.Msg.uav_direct="無人機,直達";s.Msg.uav_rotating="無人機,旋轉";s.Msg.uav_circle="圈";s.Msg.uav_light_color="的燈光顏色為(";s.Msg.uav_off_led="無人機關閉燈光";s.Msg.uav_detection="無人機檢測";s.Msg.uav_black_spots="黑点";s.Msg.uav_black_line="黑線";s.Msg.uav_black_label="標籤";s.Msg.uav_code="二維碼";s.Msg.uav_bar_code="條形碼";s.Msg.uav_electromagnet="電磁鐵";s.Msg.uav_servo_ctrl="無人機的舵機";s.Msg.uav_role_ctrl="無人機的命令";s.Msg.uav_continuous="連續";s.Msg.uav_laser="發射激光";s.Msg.uav_face_recognition="人臉識別";s.Msg.uav_object_tracking="物體追蹤";s.Msg.uav_obj_recognition="物體識別";s.Msg.uav_patrol_tracking="巡線追蹤";s.Msg.uav_color_recognition="顏色識別";s.Msg.uav_label_recognition="標籤識別";s.Msg.uav_object_classification="物體分類";s.Msg.uav_mode="模式";s.Msg.uav_learing_ID="無人機,學習一次的ID";s.Msg.uav_forget_data="無人機忘記所有學習數據";s.Msg.uav_setup_ID="無人機設置 ID";s.Msg.uav_name_is="的名字為";s.Msg.uav_taking_pictures="拍照";s.Msg.uav_screenshots="截屏";s.Msg.uav_save_SD="保存到 SD 卡";s.Msg.optical_flow_localization="光流定位";s.Msg.label_position="標籤定位";s.Msg.autonomous_patrol="自主巡線";s.Msg.normally_on="常亮";s.Msg.breathing_lamp="呼吸燈";s.Msg.colour_change="七彩變換";s.Msg.uav_detection_if="無人機檢測到";s.Msg.uav_detection_color_block="色塊";s.Msg.uav_detection_if_line="邊有線";s.Msg.uav_get_distance_of_obstacles="無人機";s.Msg.uav_get_distance_of_obstacles_1="障礙物的距離";s.Msg.uav_roll_angle="橫滾角";s.Msg.uav_pitch_angle="俯仰角";s.Msg.uav_yaw_angle="偏航角";s.Msg.uav_abscissa="橫座標";s.Msg.uav_ordinate="縱座標";s.Msg.uav_height="高度";s.Msg.uav_voltage="電壓";s.Msg.uav_get_AI_value="AI識別結果";s.Msg.uav_get_electronic_balance_value="電子秤讀數";s.Msg.uav_get_shooting_value="射擊";s.Msg.uav_get_shooting_value_0="序號";s.Msg.uav_get_shooting_value_1="成績";s.Msg.uav_get_msg_value="消息";s.Msg.uav_get_msg_value_0="內容";s.Msg.esp32_expand_io_from_digital_pin="獲取引腳 #";s.Msg.esp32_expand_io_set_digital_pin="設定引腳 #";s.Msg.esp32_expand_io_set_analog_pin="設定引腳 #";s.Msg.esp32_expand_io_set_analog_pin_digital_set_as="PWM 輸出";s.Msg.esp32_expand_io_set_analog_pin_digital_set_af="(0-255)";s.Msg.KUJU_title="連接KUJU";s.Msg.KUJU_username="賬號";s.Msg.KUJU_password="密碼";s.Msg.KUJU_controll_title="傳送數據至KUJU";s.Msg.KUJU_controll_content="控制智能插座的";s.Msg.KUJU_controll_action_0="關閉";s.Msg.KUJU_controll_action_1="打開";s.Msg.KUJU_get_temperature_humidity_data_title="獲取溫度感應器的";s.Msg.KUJU_get_motion_data_title="獲取移動感應器的";s.Msg.basic_motion_data="是否移動";s.Msg.basic_illumination_intensity="照明強度";s.Msg.KUJU_get_sensor_data_title="獲取";s.Msg.basic_water_sensor="漏水感應器";s.Msg.basic_door_sensor="門磁";s.Msg.wifiServices_WeTech_title="連接WeTech";s.Msg.wifiServices_WeTech_username="用戶名";s.Msg.wifiServices_WeTech_password="密碼";s.Msg.WeTech_controll_title="傳送數據至WeTech";s.Msg.WeTech_controll_content="指令";s.Msg.WeTech_controll_action_0="關閉";s.Msg.WeTech_controll_action_1="打開";s.Msg.WeTech_controll_action_2="停止";s.Msg.wifiServices_WeTech_get_gateway_device_id_list_title="獲取特定網關id";s.Msg.WIFIEASYMODE_WeTech_KEY5="中名字爲";s.Msg.WIFIEASYMODE_WeTech_KEY4="的設備id";s.Msg.WIFIEASYMODE_WeTech_KEY6="控制的3掣面掣 (for Light) id";s.Msg.WIFIEASYMODE_WeTech_KEY7="網關id";s.Msg.WIFIEASYMODE_WeTech_KEY8="控制的2掣面掣 (for Exhaust fan) id";s.Msg.WIFIEASYMODE_WeTech_KEY9="控制的Curtain Sensor (for projector Screen) id";s.Msg.WIFIEASYMODE_WeTech_KEY10="控制的冷氣IR id";s.Msg.WIFIEASYMODE_WeTech_KEY11="控制的TV IR (for TV and Projector) id";s.Msg.WIFIEASYMODE_WeTech_KEY12="Mac地址";s.Msg.WeTech_controll_air_content="模式";s.Msg.WeTech_controll_wind_speed_content="風速";s.Msg.WeTech_controll_temp_content="溫度(16℃-30℃)";s.Msg.WeTech_controll_IR_content="次序(0-255)";s.Msg.WeTech_controll_power_meter="獲取數值";s.Msg.WeTech_controll_power_meter_1="Power Meter的id";s.Msg.Wetech_controll_pm25_sensor="PM2.5檢測器";s.Msg.Wetech_controll_CO2_sensor="CO2檢測器";s.Msg.Wetech_controll_Temperature_sensor="溫度檢測器";s.Msg.Wetech_controll_Humidity_sensor="溼度檢測器";s.Msg.Wetech_controll_sensor_title="的id";s.Msg.WeTech_controll_mode_0="關閉";s.Msg.WeTech_controll_mode_1="自動";s.Msg.WeTech_controll_mode_2="製冷";s.Msg.WeTech_controll_mode_3="制熱";s.Msg.WeTech_controll_mode_4="供暖";s.Msg.WeTech_controll_mode_5="預冷";s.Msg.WeTech_controll_mode_6="送風";s.Msg.WeTech_controll_mode_7="除溼";s.Msg.WeTech_controll_mode_8="睡眠";s.Msg.WeTech_controll_mode_9="節能";s.Msg.WeTech_controll_mode_10="低";s.Msg.WeTech_controll_mode_11="中";s.Msg.WeTech_controll_mode_12="高";s.Msg.WeTech_controll_mode_13="自動";s.Msg.iot_service_tuya_title="連接塗鴉";s.Msg.iot_service_tuya_access_id="Access ID/Client ID";s.Msg.iot_service_tuya_access_secret="Access Secret/Client Secret";s.Msg.iot_service_tuya_setToken_text="當連接塗鴉獲取到訪問令牌的時候";s.Msg.iot_service_tuya_getDeviceList_text="獲取設備列表";s.Msg.iot_service_tuya_controll_light_belt_title="控制智能燈帶";s.Msg.iot_service_tuya_controll_light_belt_device_id="設備id";s.Msg.iot_service_tuya_controll_light_belt_des="狀態爲";s.Msg.iot_service_tuya_controll_light_belt_status_0="關閉";s.Msg.iot_service_tuya_controll_light_belt_status_1="打開";s.Msg.iot_service_tuya_controll_light_belt_status_2="柔光模式";s.Msg.iot_service_tuya_controll_light_belt_status_3="繽紛模式";s.Msg.iot_service_tuya_controll_light_belt_status_4="炫彩模式";s.Msg.iot_service_tuya_controll_light_belt_status_5="斑斕模式";s.Msg.iot_service_tuya_controll_light_belt_status_6="晚安情景";s.Msg.iot_service_tuya_controll_light_belt_status_7="閱讀情景";s.Msg.iot_service_tuya_controll_light_belt_status_8="聚會情景";s.Msg.iot_service_tuya_controll_light_belt_status_9="休閒情景";s.Msg.iot_service_tuya_controll_light_belt_color_value_title="控制智能燈帶";s.Msg.iot_service_tuya_controll_light_belt_color_value_title1="顏色爲";s.Msg.TURTLE_CREATE_NE_TURTLE="創建新的海龜";s.Msg.TURTLE_MAKE_TURTLE_MOVE_FORWARD_BY="讓海龜往前走";s.Msg.TURTLE_MAKE_TURTLE_MOVE_BACKWARD_BY="讓海龜後退";s.Msg.TURTLE_MAKE_TURN_LEFT_BY="讓海龜向左轉";s.Msg.TURTLE_DEGREE="度";s.Msg.TURTLE_MAKE_TURN_RIGHT_BY="讓海龜向右轉";s.Msg.TURTLE_MAKE_TURRLE_COLOR="設置海龜畫筆的顏色為";s.Msg.TURTLE_MAKE_TURRLE_PEN="讓海龜畫筆";s.Msg.TURTLE_MAKE_TURTLE_GOTO_LOCATION_X="讓海龜去地點 X:";s.Msg.TURTLE_MAKE_TURTLE_SET_POSITION="設定海龜畫筆的位置為 X:";s.Msg.TURTLE_MAKE_SET_HEADING="讓海龜旋轉至";s.Msg.TURTLE_RESET="重置畫筆的位置";s.Msg.TURTLE_CLEAR="清除";s.Msg.TURTLE_PEN_UP="抬起";s.Msg.TURTLE_PEN_DOWN="落下";s.Msg.SYSTEM_RUN="執行 Python 程式";s.Msg.SYSTEM_RUN_F="程式所在路徑:";s.Msg.SYSTEM_CREATE="創建文本檔案";s.Msg.SYSTEM_CREATE_FILE="創建檔案";s.Msg.SYSTEM_CREATE_F="檔名:";s.Msg.SYSTEM_CREATE_F_1="檔案路徑爲:";s.Msg.SYSTEM_WRITE="創建文本檔案";s.Msg.SYSTEM_OPEN_FILE="打開檔案";s.Msg.SYSTEM_WRITE_FILE="寫入檔案";s.Msg.SYSTEM_CLOSE_FILE="關閉檔案";s.Msg.SYSTEM_WRITE_F="檔案名稱:";s.Msg.SYSTEM_WRITE_W="寫入內容:";s.Msg.SYSTEM_WRITE_S="分隔符號為:";s.Msg.SYSTEM_WRITE_S_N="換欄";s.Msg.SYSTEM_WRITE_S_C="逗號";s.Msg.SYSTEM_WRITE_S_S="空格";s.Msg.SYSTEM_WRITE_S_SE="分號";s.Msg.SYSTEM_INPUT="讀取文本檔案為陣列";s.Msg.SYSTEM_INPUT_FILE="讀取檔案為陣列";s.Msg.Text_to_speech_initialization="在線文本轉語音初始化";s.Msg.Content_of_text="文本內容";s.Msg.text_conversion_voice="將文本內容轉化爲語音文件";s.Msg.Voice_path="音頻文件保存路徑";s.Msg.online_face_result="在線人臉檢測數量";s.Msg.online_face_loading="在線人臉檢測模型加載";s.Msg.online_face_init="在線人臉檢測初始化";s.Msg.online_face_init_path="檢測圖片路徑";s.Msg.online_voice_result="在線語音識別結果";s.Msg.online_voice_loading="在線語音識別加載";s.Msg.online_voice_init="在線語音識別初始化";s.Msg.online_voice_init_path="識別語音路徑";s.Msg.read_img_path_to="讀取圖片文件自";s.Msg.take_the_picture="將圖片";s.Msg.machine_translation_result="在線機器翻譯結果";s.Msg.machine_translation_load="在線機器翻譯加載";s.Msg.machine_translation_init="機器翻譯初始化";s.Msg.machine_translation_to="翻譯至";s.Msg.online_card_result="在線車牌識別結果";s.Msg.online_card_load="在線車牌識別加載";s.Msg.online_card_init="在線車牌識別初始化";s.Msg.online_object_init="在線物體識別初始化";s.Msg.online_object_load="在線物體識別加載";s.Msg.online_object_result="在線物體識別結果";s.Msg.handwritten_text_result="在線手寫文字識別結果";s.Msg.handwritten_text_load="在線手寫文字識別加載";s.Msg.handwritten_text_init="手寫文字識別初始化";s.Msg.handwritten_text_language_init="設置識別語種";s.Msg.system_voice="設置系統音量";s.Msg.gesture_result="手勢識別結果";s.Msg.gesture_load="手勢識別加載";s.Msg.gesture_init="手勢識別初始化";s.Msg.emotion_result="情緒識別結果";s.Msg.emotion_load="情緒識別加載";s.Msg.emotion_init="情緒識別初始化";s.Msg.set_dictionary="設定字典";s.Msg.dictionary_contain="字典包含(age、emotion、gender、expression)";s.Msg.emotion_result_age="年齡";s.Msg.emotion_result_emotion="情緒";s.Msg.emotion_result_gender="性別";s.Msg.emotion_result_expression="表情";s.Msg.formula_result="公式識別結果";s.Msg.formula_load="公式識別加載";s.Msg.formula_init="公式識別初始化";s.Msg.system_voice="設置系統音量";s.Msg.numpy_mnist_get_result="獲取識別結果";s.Msg.numpy_mnist_loading_model="加載已保存的模型";s.Msg.numpy_mnist_setting_training_argument="設置訓練參數";s.Msg.numpy_mnist_input_trait_dimensionality="輸入特徵的維度:";s.Msg.numpy_mnist_setting_training_argument_number_node="節點數:";s.Msg.numpy_mnist_output_dimensionality="輸出維度:";s.Msg.numpy_mnist_setting_training_argument_learning_rate="學習率:";s.Msg.numpy_mnist_setting_training_argument_frequency="訓練次數:";s.Msg.numpy_mnist_is_training_start="訓練模組啓動";s.Msg.numpy_mnist_loading_train_and_test_set="加載訓練集和測試集";s.Msg.numpy_mnist_train_set_url="訓練集路徑:";s.Msg.numpy_mnist_test_set_url="測試集路徑:";s.Msg.numpy_mnist_model_init="numpy + mnist 訓練模型初始化";s.Msg.numpy_mnist_clear="清除numpy模組";s.Msg;var r=r||{Msg:Object.create(null)};r.Msg.ADD_COMMENT="Add Comment";r.Msg.CANNOT_DELETE_VARIABLE_PROCEDURE="Can't delete the variable '%1' because it's part of the definition of the function '%2'";r.Msg.CHANGE_VALUE_TITLE="Change value:";r.Msg.CLEAN_UP="Clean up Blocks";r.Msg.COLLAPSED_WARNINGS_WARNING="Collapsed blocks contain warnings.";r.Msg.COLLAPSE_ALL="Collapse Blocks";r.Msg.COLLAPSE_BLOCK="Collapse Block";r.Msg.COLOUR_BLEND_COLOUR1="colour 1";r.Msg.COLOUR_BLEND_COLOUR2="colour 2";r.Msg.COLOUR_BLEND_HELPURL="https://meyerweb.com/eric/tools/color-blend/#:::rgbp";r.Msg.COLOUR_BLEND_RATIO="ratio";r.Msg.COLOUR_BLEND_TITLE="blend";r.Msg.COLOUR_BLEND_TOOLTIP="Blends two colours together with a given ratio (0.0 - 1.0).";r.Msg.COLOUR_PICKER_HELPURL="https://en.wikipedia.org/wiki/Color";r.Msg.COLOUR_PICKER_TOOLTIP="Choose a colour from the palette.";r.Msg.COLOUR_RANDOM_HELPURL="http://randomcolour.com";r.Msg.COLOUR_RANDOM_TITLE="random colour";r.Msg.COLOUR_RANDOM_TOOLTIP="Choose a colour at random.";r.Msg.COLOUR_RGB_BLUE="blue";r.Msg.COLOUR_RGB_GREEN="green";r.Msg.COLOUR_RGB_HELPURL="https://www.december.com/html/spec/colorpercompact.html";r.Msg.COLOUR_RGB_RED="red";r.Msg.COLOUR_RGB_TITLE="colour with";r.Msg.COLOUR_RGB_TOOLTIP="Create a colour with the specified amount of red, green, and blue. All values must be between 0 and 100.";r.Msg.CONTROLS_FLOW_STATEMENTS_HELPURL="https://github.com/google/blockly/wiki/Loops#loop-termination-blocks";r.Msg.CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK="break out of loop";r.Msg.CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE="continue with next iteration of loop";r.Msg.CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK="Break out of the containing loop.";r.Msg.CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE="Skip the rest of this loop, and continue with the next iteration.";r.Msg.CONTROLS_FLOW_STATEMENTS_WARNING="Warning: This block may only be used within a loop.";r.Msg.CONTROLS_FOREACH_HELPURL="https://github.com/google/blockly/wiki/Loops#for-each";r.Msg.CONTROLS_FOREACH_TITLE="for each item %1 in list %2";r.Msg.CONTROLS_FOREACH_TOOLTIP="For each item in a list, set the variable '%1' to the item, and then do some statements.";r.Msg.CONTROLS_FOR_HELPURL="https://github.com/google/blockly/wiki/Loops#count-with";r.Msg.CONTROLS_FOR_TITLE="count with %1 from %2 to %3 by %4";r.Msg.CONTROLS_FOR_TOOLTIP="Have the variable '%1' take on the values from the start number to the end number, counting by the specified interval, and do the specified blocks.";r.Msg.CONTROLS_IF_ELSEIF_TOOLTIP="Add a condition to the if block.";r.Msg.CONTROLS_IF_ELSE_TOOLTIP="Add a final, catch-all condition to the if block.";r.Msg.CONTROLS_IF_HELPURL="https://github.com/google/blockly/wiki/IfElse";r.Msg.CONTROLS_IF_IF_TOOLTIP="Add, remove, or reorder sections to reconfigure this if block.";r.Msg.CONTROLS_IF_MSG_ELSE="else";r.Msg.CONTROLS_IF_MSG_ELSEIF="else if";r.Msg.CONTROLS_IF_MSG_IF="if";r.Msg.CONTROLS_IF_TOOLTIP_1="If a value is true, then do some statements.";r.Msg.CONTROLS_IF_TOOLTIP_2="If a value is true, then do the first block of statements. Otherwise, do the second block of statements.";r.Msg.CONTROLS_IF_TOOLTIP_3="If the first value is true, then do the first block of statements. Otherwise, if the second value is true, do the second block of statements.";r.Msg.CONTROLS_IF_TOOLTIP_4="If the first value is true, then do the first block of statements. Otherwise, if the second value is true, do the second block of statements. If none of the values are true, do the last block of statements.";r.Msg.CONTROLS_REPEAT_HELPURL="https://en.wikipedia.org/wiki/For_loop";r.Msg.CONTROLS_REPEAT_INPUT_DO="do";r.Msg.CONTROLS_REPEAT_TITLE="repeat %1 times";r.Msg.CONTROLS_REPEAT_TOOLTIP="Do some statements several times.";r.Msg.CONTROLS_WHILEUNTIL_HELPURL="https://github.com/google/blockly/wiki/Loops#repeat";r.Msg.CONTROLS_WHILEUNTIL_OPERATOR_UNTIL="repeat until";r.Msg.CONTROLS_WHILEUNTIL_OPERATOR_WHILE="repeat while";r.Msg.CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL="While a value is false, then do some statements.";r.Msg.CONTROLS_WHILEUNTIL_TOOLTIP_WHILE="While a value is true, then do some statements.";r.Msg.DELETE_ALL_BLOCKS="Delete all %1 blocks?";r.Msg.DELETE_BLOCK="Delete Block";r.Msg.DELETE_VARIABLE="Delete the '%1' variable";r.Msg.DELETE_VARIABLE_CONFIRMATION="Delete %1 uses of the '%2' variable?";r.Msg.DELETE_X_BLOCKS="Delete %1 Blocks";r.Msg.DIALOG_CANCEL="Cancel";r.Msg.DIALOG_OK="OK";r.Msg.DISABLE_BLOCK="Disable Block";r.Msg.DUPLICATE_BLOCK="Duplicate";r.Msg.DUPLICATE_COMMENT="Duplicate Comment";r.Msg.ENABLE_BLOCK="Enable Block";r.Msg.EXPAND_ALL="Expand Blocks";r.Msg.EXPAND_BLOCK="Expand Block";r.Msg.EXTERNAL_INPUTS="External Inputs";r.Msg.HELP="Help";r.Msg.INLINE_INPUTS="Inline Inputs";r.Msg.LISTS_CREATE_EMPTY_HELPURL="https://github.com/google/blockly/wiki/Lists#create-empty-list";r.Msg.LISTS_CREATE_EMPTY_TITLE="create empty list";r.Msg.LISTS_CREATE_EMPTY_TOOLTIP="Returns a list, of length 0, containing no data records";r.Msg.LISTS_CREATE_WITH_CONTAINER_TITLE_ADD="list";r.Msg.LISTS_CREATE_WITH_CONTAINER_TOOLTIP="Add, remove, or reorder sections to reconfigure this list block.";r.Msg.LISTS_CREATE_WITH_HELPURL="https://github.com/google/blockly/wiki/Lists#create-list-with";r.Msg.LISTS_CREATE_WITH_INPUT_WITH="create list with";r.Msg.LISTS_CREATE_WITH_ITEM_TOOLTIP="Add an item to the list.";r.Msg.LISTS_CREATE_WITH_TOOLTIP="Create a list with any number of items.";r.Msg.LISTS_GET_INDEX_FIRST="first";r.Msg.LISTS_GET_INDEX_FROM_END="# from end";r.Msg.LISTS_GET_INDEX_FROM_START="#";r.Msg.LISTS_GET_INDEX_GET="get";r.Msg.LISTS_GET_INDEX_GET_REMOVE="get and remove";r.Msg.LISTS_GET_INDEX_LAST="last";r.Msg.LISTS_GET_INDEX_RANDOM="random";r.Msg.LISTS_GET_INDEX_REMOVE="remove";r.Msg.LISTS_GET_INDEX_TAIL="";r.Msg.LISTS_GET_INDEX_TOOLTIP_GET_FIRST="Returns the first item in a list.";r.Msg.LISTS_GET_INDEX_TOOLTIP_GET_FROM="Returns the item at the specified position in a list.";r.Msg.LISTS_GET_INDEX_TOOLTIP_GET_LAST="Returns the last item in a list.";r.Msg.LISTS_GET_INDEX_TOOLTIP_GET_RANDOM="Returns a random item in a list.";r.Msg.LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST="Removes and returns the first item in a list.";r.Msg.LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM="Removes and returns the item at the specified position in a list.";r.Msg.LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST="Removes and returns the last item in a list.";r.Msg.LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM="Removes and returns a random item in a list.";r.Msg.LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST="Removes the first item in a list.";r.Msg.LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM="Removes the item at the specified position in a list.";r.Msg.LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST="Removes the last item in a list.";r.Msg.LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM="Removes a random item in a list.";r.Msg.LISTS_GET_SUBLIST_END_FROM_END="to # from end";r.Msg.LISTS_GET_SUBLIST_END_FROM_START="to #";r.Msg.LISTS_GET_SUBLIST_END_LAST="to last";r.Msg.LISTS_GET_SUBLIST_HELPURL="https://github.com/google/blockly/wiki/Lists#getting-a-sublist";r.Msg.LISTS_GET_SUBLIST_START_FIRST="get sub-list from first";r.Msg.LISTS_GET_SUBLIST_START_FROM_END="get sub-list from # from end";r.Msg.LISTS_GET_SUBLIST_START_FROM_START="get sub-list from #";r.Msg.LISTS_GET_SUBLIST_TAIL="";r.Msg.LISTS_GET_SUBLIST_TOOLTIP="Creates a copy of the specified portion of a list.";r.Msg.LISTS_INDEX_FROM_END_TOOLTIP="%1 is the last item.";r.Msg.LISTS_INDEX_FROM_START_TOOLTIP="%1 is the first item.";r.Msg.LISTS_INDEX_OF_FIRST="find first occurrence of item";r.Msg.LISTS_INDEX_OF_HELPURL="https://github.com/google/blockly/wiki/Lists#getting-items-from-a-list";r.Msg.LISTS_INDEX_OF_LAST="find last occurrence of item";r.Msg.LISTS_INDEX_OF_TOOLTIP="Returns the index of the first/last occurrence of the item in the list. Returns %1 if item is not found.";r.Msg.LISTS_INLIST="in list";r.Msg.LISTS_ISEMPTY_HELPURL="https://github.com/google/blockly/wiki/Lists#is-empty";r.Msg.LISTS_ISEMPTY_TITLE="%1 is empty";r.Msg.LISTS_ISEMPTY_TOOLTIP="Returns true if the list is empty.";r.Msg.LISTS_LENGTH_HELPURL="https://github.com/google/blockly/wiki/Lists#length-of";r.Msg.LISTS_LENGTH_TITLE="length of %1";r.Msg.LISTS_LENGTH_TOOLTIP="Returns the length of a list.";r.Msg.LISTS_REPEAT_HELPURL="https://github.com/google/blockly/wiki/Lists#create-list-with";r.Msg.LISTS_REPEAT_TITLE="create list with item %1 repeated %2 times";r.Msg.LISTS_REPEAT_TOOLTIP="Creates a list consisting of the given value repeated the specified number of times.";r.Msg.LISTS_REVERSE_HELPURL="https://github.com/google/blockly/wiki/Lists#reversing-a-list";r.Msg.LISTS_REVERSE_MESSAGE0="reverse %1";r.Msg.LISTS_REVERSE_TOOLTIP="Reverse a copy of a list.";r.Msg.LISTS_SET_INDEX_HELPURL="https://github.com/google/blockly/wiki/Lists#in-list--set";r.Msg.LISTS_SET_INDEX_INPUT_TO="as";r.Msg.LISTS_SET_INDEX_INSERT="insert at";r.Msg.LISTS_SET_INDEX_SET="set";r.Msg.LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST="Inserts the item at the start of a list.";r.Msg.LISTS_SET_INDEX_TOOLTIP_INSERT_FROM="Inserts the item at the specified position in a list.";r.Msg.LISTS_SET_INDEX_TOOLTIP_INSERT_LAST="Append the item to the end of a list.";r.Msg.LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM="Inserts the item randomly in a list.";r.Msg.LISTS_SET_INDEX_TOOLTIP_SET_FIRST="Sets the first item in a list.";r.Msg.LISTS_SET_INDEX_TOOLTIP_SET_FROM="Sets the item at the specified position in a list.";r.Msg.LISTS_SET_INDEX_TOOLTIP_SET_LAST="Sets the last item in a list.";r.Msg.LISTS_SET_INDEX_TOOLTIP_SET_RANDOM="Sets a random item in a list.";r.Msg.LISTS_SORT_HELPURL="https://github.com/google/blockly/wiki/Lists#sorting-a-list";r.Msg.LISTS_SORT_ORDER_ASCENDING="ascending";r.Msg.LISTS_SORT_ORDER_DESCENDING="descending";r.Msg.LISTS_SORT_TITLE="sort %1 %2 %3";r.Msg.LISTS_SORT_TOOLTIP="Sort a copy of a list.";r.Msg.LISTS_SORT_TYPE_IGNORECASE="alphabetic, ignore case";r.Msg.LISTS_SORT_TYPE_NUMERIC="numeric";r.Msg.LISTS_SORT_TYPE_TEXT="alphabetic";r.Msg.LISTS_SPLIT_HELPURL="https://github.com/google/blockly/wiki/Lists#splitting-strings-and-joining-lists";r.Msg.LISTS_SPLIT_LIST_FROM_TEXT="make list from text";r.Msg.LISTS_SPLIT_TEXT_FROM_LIST="make text from list";r.Msg.LISTS_SPLIT_TOOLTIP_JOIN="Join a list of texts into one text, separated by a delimiter.";r.Msg.LISTS_SPLIT_TOOLTIP_SPLIT="Split text into a list of texts, breaking at each delimiter.";r.Msg.LISTS_SPLIT_WITH_DELIMITER="with delimiter";r.Msg.LOGIC_BOOLEAN_FALSE="false";r.Msg.LOGIC_BOOLEAN_HELPURL="https://github.com/google/blockly/wiki/Logic#values";r.Msg.LOGIC_BOOLEAN_TOOLTIP="Returns either true or false.";r.Msg.LOGIC_BOOLEAN_TRUE="true";r.Msg.LOGIC_COMPARE_HELPURL="https://en.wikipedia.org/wiki/Inequality_(mathematics)";r.Msg.LOGIC_COMPARE_TOOLTIP_EQ="Return true if both inputs equal each other.";r.Msg.LOGIC_COMPARE_TOOLTIP_GT="Return true if the first input is greater than the second input.";r.Msg.LOGIC_COMPARE_TOOLTIP_GTE="Return true if the first input is greater than or equal to the second input.";r.Msg.LOGIC_COMPARE_TOOLTIP_LT="Return true if the first input is smaller than the second input.";r.Msg.LOGIC_COMPARE_TOOLTIP_LTE="Return true if the first input is smaller than or equal to the second input.";r.Msg.LOGIC_COMPARE_TOOLTIP_NEQ="Return true if both inputs are not equal to each other.";r.Msg.LOGIC_NEGATE_HELPURL="https://github.com/google/blockly/wiki/Logic#not";r.Msg.LOGIC_NEGATE_TITLE="not %1";r.Msg.LOGIC_NEGATE_TOOLTIP="Returns true if the input is false. Returns false if the input is true.";r.Msg.LOGIC_NULL="null";r.Msg.LOGIC_NULL_HELPURL="https://en.wikipedia.org/wiki/Nullable_type";r.Msg.LOGIC_NULL_TOOLTIP="Returns null.";r.Msg.LOGIC_OPERATION_AND="and";r.Msg.LOGIC_OPERATION_HELPURL="https://github.com/google/blockly/wiki/Logic#logical-operations";r.Msg.LOGIC_OPERATION_OR="or";r.Msg.LOGIC_OPERATION_TOOLTIP_AND="Return true if both inputs are true.";r.Msg.LOGIC_OPERATION_TOOLTIP_OR="Return true if at least one of the inputs is true.";r.Msg.LOGIC_TERNARY_CONDITION="test";r.Msg.LOGIC_TERNARY_HELPURL="https://en.wikipedia.org/wiki/%3F:";r.Msg.LOGIC_TERNARY_IF_FALSE="if false";r.Msg.LOGIC_TERNARY_IF_TRUE="if true";r.Msg.LOGIC_TERNARY_TOOLTIP="Check the condition in 'test'. If the condition is true, returns the 'if true' value; otherwise returns the 'if false' value.";r.Msg.MATH_ADDITION_SYMBOL="+";r.Msg.MATH_ARITHMETIC_HELPURL="https://en.wikipedia.org/wiki/Arithmetic";r.Msg.MATH_ARITHMETIC_TOOLTIP_ADD="Return the sum of the two numbers.";r.Msg.MATH_ARITHMETIC_TOOLTIP_DIVIDE="Return the quotient of the two numbers.";r.Msg.MATH_ARITHMETIC_TOOLTIP_MINUS="Return the difference of the two numbers.";r.Msg.MATH_ARITHMETIC_TOOLTIP_MULTIPLY="Return the product of the two numbers.";r.Msg.MATH_ARITHMETIC_TOOLTIP_POWER="Return the first number raised to the power of the second number.";r.Msg.MATH_ATAN2_HELPURL="https://en.wikipedia.org/wiki/Atan2";r.Msg.MATH_ATAN2_TITLE="atan2 of X:%1 Y:%2";r.Msg.MATH_ATAN2_TOOLTIP="Return the arctangent of point (X, Y) in degrees from -180 to 180.";r.Msg.MATH_CHANGE_HELPURL="https://en.wikipedia.org/wiki/Programming_idiom#Incrementing_a_counter";r.Msg.MATH_CHANGE_TITLE="change %1 by %2";r.Msg.MATH_CHANGE_TOOLTIP="Add a number to variable '%1'.";r.Msg.MATH_CONSTANT_HELPURL="https://en.wikipedia.org/wiki/Mathematical_constant";r.Msg.MATH_CONSTANT_TOOLTIP="Return one of the common constants: π (3.141…), e (2.718…), φ (1.618…), sqrt(2) (1.414…), sqrt(½) (0.707…), or ∞ (infinity).";r.Msg.MATH_CONSTRAIN_HELPURL="https://en.wikipedia.org/wiki/Clamping_(graphics)";r.Msg.MATH_CONSTRAIN_TITLE="constrain %1 low %2 high %3";r.Msg.MATH_CONSTRAIN_TOOLTIP="Constrain a number to be between the specified limits (inclusive).";r.Msg.MATH_DIVISION_SYMBOL="÷";r.Msg.MATH_IS_DIVISIBLE_BY="is divisible by";r.Msg.MATH_IS_EVEN="is even";r.Msg.MATH_IS_NEGATIVE="is negative";r.Msg.MATH_IS_ODD="is odd";r.Msg.MATH_IS_POSITIVE="is positive";r.Msg.MATH_IS_PRIME="is prime";r.Msg.MATH_IS_TOOLTIP="Check if a number is an even, odd, prime, whole, positive, negative, or if it is divisible by certain number. Returns true or false.";r.Msg.MATH_IS_WHOLE="is whole";r.Msg.MATH_MODULO_HELPURL="https://en.wikipedia.org/wiki/Modulo_operation";r.Msg.MATH_MODULO_TITLE="remainder of %1 ÷ %2";r.Msg.MATH_MODULO_TOOLTIP="Return the remainder from dividing the two numbers.";r.Msg.MATH_MULTIPLICATION_SYMBOL="×";r.Msg.MATH_NUMBER_HELPURL="https://en.wikipedia.org/wiki/Number";r.Msg.MATH_NUMBER_TOOLTIP="A number.";r.Msg.MATH_ONLIST_HELPURL="";r.Msg.MATH_ONLIST_OPERATOR_AVERAGE="average of list";r.Msg.MATH_ONLIST_OPERATOR_MAX="max of list";r.Msg.MATH_ONLIST_OPERATOR_MEDIAN="median of list";r.Msg.MATH_ONLIST_OPERATOR_MIN="min of list";r.Msg.MATH_ONLIST_OPERATOR_MODE="modes of list";r.Msg.MATH_ONLIST_OPERATOR_RANDOM="random item of list";r.Msg.MATH_ONLIST_OPERATOR_STD_DEV="standard deviation of list";r.Msg.MATH_ONLIST_OPERATOR_SUM="sum of list";r.Msg.MATH_ONLIST_TOOLTIP_AVERAGE="Return the average (arithmetic mean) of the numeric values in the list.";r.Msg.MATH_ONLIST_TOOLTIP_MAX="Return the largest number in the list.";r.Msg.MATH_ONLIST_TOOLTIP_MEDIAN="Return the median number in the list.";r.Msg.MATH_ONLIST_TOOLTIP_MIN="Return the smallest number in the list.";r.Msg.MATH_ONLIST_TOOLTIP_MODE="Return a list of the most common item(s) in the list.";r.Msg.MATH_ONLIST_TOOLTIP_RANDOM="Return a random element from the list.";r.Msg.MATH_ONLIST_TOOLTIP_STD_DEV="Return the standard deviation of the list.";r.Msg.MATH_ONLIST_TOOLTIP_SUM="Return the sum of all the numbers in the list.";r.Msg.MATH_POWER_SYMBOL="^";r.Msg.MATH_RANDOM_FLOAT_HELPURL="https://en.wikipedia.org/wiki/Random_number_generation";r.Msg.MATH_RANDOM_FLOAT_TITLE_RANDOM="random fraction";r.Msg.MATH_RANDOM_FLOAT_TOOLTIP="Return a random fraction between 0.0 (inclusive) and 1.0 (exclusive).";r.Msg.MATH_RANDOM_INT_HELPURL="https://en.wikipedia.org/wiki/Random_number_generation";r.Msg.MATH_RANDOM_INT_TITLE="random integer from %1 to %2";r.Msg.MATH_RANDOM_INT_TOOLTIP="Return a random integer between the two specified limits, inclusive.";r.Msg.MATH_ROUND_HELPURL="https://en.wikipedia.org/wiki/Rounding";r.Msg.MATH_ROUND_OPERATOR_ROUND="round";r.Msg.MATH_ROUND_OPERATOR_ROUNDDOWN="round down";r.Msg.MATH_ROUND_OPERATOR_ROUNDUP="round up";r.Msg.MATH_ROUND_TOOLTIP="Round a number up or down.";r.Msg.MATH_SINGLE_HELPURL="https://en.wikipedia.org/wiki/Square_root";r.Msg.MATH_SINGLE_OP_ABSOLUTE="absolute";r.Msg.MATH_SINGLE_OP_ROOT="square root";r.Msg.MATH_SINGLE_TOOLTIP_ABS="Return the absolute value of a number.";r.Msg.MATH_SINGLE_TOOLTIP_EXP="Return e to the power of a number.";r.Msg.MATH_SINGLE_TOOLTIP_LN="Return the natural logarithm of a number.";r.Msg.MATH_SINGLE_TOOLTIP_LOG10="Return the base 10 logarithm of a number.";r.Msg.MATH_SINGLE_TOOLTIP_NEG="Return the negation of a number.";r.Msg.MATH_SINGLE_TOOLTIP_POW10="Return 10 to the power of a number.";r.Msg.MATH_SINGLE_TOOLTIP_ROOT="Return the square root of a number.";r.Msg.MATH_SUBTRACTION_SYMBOL="-";r.Msg.MATH_TRIG_ACOS="acos";r.Msg.MATH_TRIG_ASIN="asin";r.Msg.MATH_TRIG_ATAN="atan";r.Msg.MATH_TRIG_COS="cos";r.Msg.MATH_TRIG_HELPURL="https://en.wikipedia.org/wiki/Trigonometric_functions";r.Msg.MATH_TRIG_SIN="sin";r.Msg.MATH_TRIG_TAN="tan";r.Msg.MATH_TRIG_TOOLTIP_ACOS="Return the arccosine of a number.";r.Msg.MATH_TRIG_TOOLTIP_ASIN="Return the arcsine of a number.";r.Msg.MATH_TRIG_TOOLTIP_ATAN="Return the arctangent of a number.";r.Msg.MATH_TRIG_TOOLTIP_COS="Return the cosine of a degree (not radian).";r.Msg.MATH_TRIG_TOOLTIP_SIN="Return the sine of a degree (not radian).";r.Msg.MATH_TRIG_TOOLTIP_TAN="Return the tangent of a degree (not radian).";r.Msg.NEW_COLOUR_VARIABLE="Create colour variable...";r.Msg.NEW_NUMBER_VARIABLE="Create number variable...";r.Msg.NEW_STRING_VARIABLE="Create string variable...";r.Msg.NEW_VARIABLE="Create variable...";r.Msg.NEW_VARIABLE_TITLE="New variable name:";r.Msg.NEW_VARIABLE_TYPE_TITLE="New variable type:";r.Msg.ORDINAL_NUMBER_SUFFIX="";r.Msg.PROCEDURES_ALLOW_STATEMENTS="allow statements";r.Msg.PROCEDURES_BEFORE_PARAMS="with:";r.Msg.PROCEDURES_CALLNORETURN_HELPURL="https://en.wikipedia.org/wiki/Subroutine";r.Msg.PROCEDURES_CALLNORETURN_TOOLTIP="Run the user-defined function '%1'.";r.Msg.PROCEDURES_CALLRETURN_HELPURL="https://en.wikipedia.org/wiki/Subroutine";r.Msg.PROCEDURES_CALLRETURN_TOOLTIP="Run the user-defined function '%1' and use its output.";r.Msg.PROCEDURES_CALL_BEFORE_PARAMS="with:";r.Msg.PROCEDURES_CREATE_DO="Create '%1'";r.Msg.PROCEDURES_DEFNORETURN_COMMENT="Describe this function...";r.Msg.PROCEDURES_DEFNORETURN_DO="";r.Msg.PROCEDURES_DEFNORETURN_HELPURL="https://en.wikipedia.org/wiki/Subroutine";r.Msg.PROCEDURES_DEFNORETURN_PROCEDURE="do something";r.Msg.PROCEDURES_DEFNORETURN_TITLE="to";r.Msg.PROCEDURES_DEFNORETURN_TOOLTIP="Creates a function with no output.";r.Msg.PROCEDURES_DEFRETURN_HELPURL="https://en.wikipedia.org/wiki/Subroutine";r.Msg.PROCEDURES_DEFRETURN_RETURN="return";r.Msg.PROCEDURES_DEFRETURN_TOOLTIP="Creates a function with an output.";r.Msg.PROCEDURES_DEF_DUPLICATE_WARNING="Warning: This function has duplicate parameters.";r.Msg.PROCEDURES_HIGHLIGHT_DEF="Highlight function definition";r.Msg.PROCEDURES_IFRETURN_HELPURL="https://c2.com/cgi/wiki?GuardClause";r.Msg.PROCEDURES_IFRETURN_TOOLTIP="If a value is true, then return a second value.";r.Msg.PROCEDURES_IFRETURN_WARNING="Warning: This block may be used only within a function definition.";r.Msg.PROCEDURES_MUTATORARG_TITLE="input name:";r.Msg.PROCEDURES_MUTATORARG_TOOLTIP="Add an input to the function.";r.Msg.PROCEDURES_MUTATORCONTAINER_TITLE="inputs";r.Msg.PROCEDURES_MUTATORCONTAINER_TOOLTIP="Add, remove, or reorder inputs to this function.";r.Msg.REDO="Redo";r.Msg.REMOVE_COMMENT="Remove Comment";r.Msg.RENAME_VARIABLE="Rename variable...";r.Msg.RENAME_VARIABLE_TITLE="Rename all '%1' variables to:";r.Msg.TEXT_APPEND_HELPURL="https://github.com/google/blockly/wiki/Text#text-modification";r.Msg.TEXT_APPEND_TITLE="to %1 append text %2";r.Msg.TEXT_APPEND_TOOLTIP="Append some text to variable '%1'.";r.Msg.TEXT_CHANGECASE_HELPURL="https://github.com/google/blockly/wiki/Text#adjusting-text-case";r.Msg.TEXT_CHANGECASE_OPERATOR_LOWERCASE="to lower case";r.Msg.TEXT_CHANGECASE_OPERATOR_TITLECASE="to Title Case";r.Msg.TEXT_CHANGECASE_OPERATOR_UPPERCASE="to UPPER CASE";r.Msg.TEXT_CHANGECASE_TOOLTIP="Return a copy of the text in a different case.";r.Msg.TEXT_CHARAT_FIRST="get first letter";r.Msg.TEXT_CHARAT_FROM_END="get letter # from end";r.Msg.TEXT_CHARAT_FROM_START="get letter #";r.Msg.TEXT_CHARAT_HELPURL="https://github.com/google/blockly/wiki/Text#extracting-text";r.Msg.TEXT_CHARAT_LAST="get last letter";r.Msg.TEXT_CHARAT_RANDOM="get random letter";r.Msg.TEXT_CHARAT_TAIL="";r.Msg.TEXT_CHARAT_TITLE="in text %1 %2";r.Msg.TEXT_CHARAT_TOOLTIP="Returns the letter at the specified position.";r.Msg.TEXT_COUNT_HELPURL="https://github.com/google/blockly/wiki/Text#counting-substrings";r.Msg.TEXT_COUNT_MESSAGE0="count %1 in %2";r.Msg.TEXT_COUNT_TOOLTIP="Count how many times some text occurs within some other text.";r.Msg.TEXT_CREATE_JOIN_ITEM_TOOLTIP="Add an item to the text.";r.Msg.TEXT_CREATE_JOIN_TITLE_JOIN="join";r.Msg.TEXT_CREATE_JOIN_TOOLTIP="Add, remove, or reorder sections to reconfigure this text block.";r.Msg.TEXT_GET_SUBSTRING_END_FROM_END="to letter # from end";r.Msg.TEXT_GET_SUBSTRING_END_FROM_START="to letter #";r.Msg.TEXT_GET_SUBSTRING_END_LAST="to last letter";r.Msg.TEXT_GET_SUBSTRING_HELPURL="https://github.com/google/blockly/wiki/Text#extracting-a-region-of-text";r.Msg.TEXT_GET_SUBSTRING_INPUT_IN_TEXT="in text";r.Msg.TEXT_GET_SUBSTRING_START_FIRST="get substring from first letter";r.Msg.TEXT_GET_SUBSTRING_START_FROM_END="get substring from letter # from end";r.Msg.TEXT_GET_SUBSTRING_START_FROM_START="get substring from letter #";r.Msg.TEXT_GET_SUBSTRING_TAIL="";r.Msg.TEXT_GET_SUBSTRING_TOOLTIP="Returns a specified portion of the text.";r.Msg.TEXT_INDEXOF_HELPURL="https://github.com/google/blockly/wiki/Text#finding-text";r.Msg.TEXT_INDEXOF_OPERATOR_FIRST="find first occurrence of text";r.Msg.TEXT_INDEXOF_OPERATOR_LAST="find last occurrence of text";r.Msg.TEXT_INDEXOF_TITLE="in text %1 %2 %3";r.Msg.TEXT_INDEXOF_TOOLTIP="Returns the index of the first/last occurrence of the first text in the second text. Returns %1 if text is not found.";r.Msg.TEXT_ISEMPTY_HELPURL="https://github.com/google/blockly/wiki/Text#checking-for-empty-text";r.Msg.TEXT_ISEMPTY_TITLE="%1 is empty";r.Msg.TEXT_ISEMPTY_TOOLTIP="Returns true if the provided text is empty.";r.Msg.TEXT_JOIN_HELPURL="https://github.com/google/blockly/wiki/Text#text-creation";r.Msg.TEXT_JOIN_TITLE_CREATEWITH="create text with";r.Msg.TEXT_JOIN_TOOLTIP="Create a piece of text by joining together any number of items.";r.Msg.TEXT_LENGTH_HELPURL="https://github.com/google/blockly/wiki/Text#text-modification";r.Msg.TEXT_LENGTH_TITLE="length of %1";r.Msg.TEXT_LENGTH_TOOLTIP="Returns the number of letters (including spaces) in the provided text.";r.Msg.TEXT_PRINT_HELPURL="https://github.com/google/blockly/wiki/Text#printing-text";r.Msg.TEXT_PRINT_TITLE="print %1";r.Msg.TEXT_PRINT_TOOLTIP="Print the specified text, number or other value.";r.Msg.TEXT_PROMPT_HELPURL="https://github.com/google/blockly/wiki/Text#getting-input-from-the-user";r.Msg.TEXT_PROMPT_TOOLTIP_NUMBER="Prompt for user for a number.";r.Msg.TEXT_PROMPT_TOOLTIP_TEXT="Prompt for user for some text.";r.Msg.TEXT_PROMPT_TYPE_NUMBER="prompt for number with message";r.Msg.TEXT_PROMPT_TYPE_TEXT="prompt for text with message";r.Msg.TEXT_REPLACE_HELPURL="https://github.com/google/blockly/wiki/Text#replacing-substrings";r.Msg.TEXT_REPLACE_MESSAGE0="replace %1 with %2 in %3";r.Msg.TEXT_REPLACE_TOOLTIP="Replace all occurances of some text within some other text.";r.Msg.TEXT_REVERSE_HELPURL="https://github.com/google/blockly/wiki/Text#reversing-text";r.Msg.TEXT_REVERSE_MESSAGE0="reverse %1";r.Msg.TEXT_REVERSE_TOOLTIP="Reverses the order of the characters in the text.";r.Msg.TEXT_TEXT_HELPURL="https://en.wikipedia.org/wiki/String_(computer_science)";r.Msg.TEXT_TEXT_TOOLTIP="A letter, word, or line of text.";r.Msg.TEXT_TRIM_HELPURL="https://github.com/google/blockly/wiki/Text#trimming-removing-spaces";r.Msg.TEXT_TRIM_OPERATOR_BOTH="trim spaces from both sides of";r.Msg.TEXT_TRIM_OPERATOR_LEFT="trim spaces from left side of";r.Msg.TEXT_TRIM_OPERATOR_RIGHT="trim spaces from right side of";r.Msg.TEXT_TRIM_TOOLTIP="Return a copy of the text with spaces removed from one or both ends.";r.Msg.TODAY="Today";r.Msg.UNDO="Undo";r.Msg.UNNAMED_KEY="unnamed";r.Msg.VARIABLES_DEFAULT_NAME="item";r.Msg.VARIABLES_GET_CREATE_SET="Create 'set %1'";r.Msg.VARIABLES_GET_HELPURL="https://github.com/google/blockly/wiki/Variables#get";r.Msg.VARIABLES_GET_TOOLTIP="Returns the value of this variable.";r.Msg.VARIABLES_SET="set %1 to %2";r.Msg.VARIABLES_SET_CREATE_GET="Create 'get %1'";r.Msg.VARIABLES_SET_HELPURL="https://github.com/google/blockly/wiki/Variables#set";r.Msg.VARIABLES_SET_TOOLTIP="Sets this variable to be equal to the input.";r.Msg.VARIABLE_ALREADY_EXISTS="A variable named '%1' already exists.";r.Msg.VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE="A variable named '%1' already exists for another type: '%2'.";r.Msg.WORKSPACE_ARIA_LABEL="Blockly Workspace";r.Msg.WORKSPACE_COMMENT_DEFAULT_TEXT="Say something...";r.Msg.CONTROLS_FOREACH_INPUT_DO=r.Msg.CONTROLS_REPEAT_INPUT_DO;r.Msg.CONTROLS_FOR_INPUT_DO=r.Msg.CONTROLS_REPEAT_INPUT_DO;r.Msg.CONTROLS_IF_ELSEIF_TITLE_ELSEIF=r.Msg.CONTROLS_IF_MSG_ELSEIF;r.Msg.CONTROLS_IF_ELSE_TITLE_ELSE=r.Msg.CONTROLS_IF_MSG_ELSE;r.Msg.CONTROLS_IF_IF_TITLE_IF=r.Msg.CONTROLS_IF_MSG_IF;r.Msg.CONTROLS_IF_MSG_THEN=r.Msg.CONTROLS_REPEAT_INPUT_DO;r.Msg.CONTROLS_WHILEUNTIL_INPUT_DO=r.Msg.CONTROLS_REPEAT_INPUT_DO;r.Msg.LISTS_CREATE_WITH_ITEM_TITLE=r.Msg.VARIABLES_DEFAULT_NAME;r.Msg.LISTS_GET_INDEX_HELPURL=r.Msg.LISTS_INDEX_OF_HELPURL;r.Msg.LISTS_GET_INDEX_INPUT_IN_LIST=r.Msg.LISTS_INLIST;r.Msg.LISTS_GET_SUBLIST_INPUT_IN_LIST=r.Msg.LISTS_INLIST;r.Msg.LISTS_INDEX_OF_INPUT_IN_LIST=r.Msg.LISTS_INLIST;r.Msg.LISTS_SET_INDEX_INPUT_IN_LIST=r.Msg.LISTS_INLIST;r.Msg.MATH_CHANGE_TITLE_ITEM=r.Msg.VARIABLES_DEFAULT_NAME;r.Msg.PROCEDURES_DEFRETURN_COMMENT=r.Msg.PROCEDURES_DEFNORETURN_COMMENT;r.Msg.PROCEDURES_DEFRETURN_DO=r.Msg.PROCEDURES_DEFNORETURN_DO;r.Msg.PROCEDURES_DEFRETURN_PROCEDURE=r.Msg.PROCEDURES_DEFNORETURN_PROCEDURE;r.Msg.PROCEDURES_DEFRETURN_TITLE=r.Msg.PROCEDURES_DEFNORETURN_TITLE;r.Msg.TEXT_APPEND_VARIABLE=r.Msg.VARIABLES_DEFAULT_NAME;r.Msg.TEXT_CREATE_JOIN_ITEM_TITLE_ITEM=r.Msg.VARIABLES_DEFAULT_NAME;r.Msg.MATH_HUE="230";r.Msg.LOOPS_HUE="120";r.Msg.LISTS_HUE="260";r.Msg.LOGIC_HUE="210";r.Msg.VARIABLES_HUE="330";r.Msg.TEXTS_HUE="160";r.Msg.PROCEDURES_HUE="290";r.Msg.COLOUR_HUE="20";r.Msg.VARIABLES_DYNAMIC_HUE="310";r.Msg.TEXT_IS_NUMBER_HELPURL="";r.Msg.TEXT_IS_NUMBER_TOOLTIP="Judge the text %1 and return True or False";r.Msg.TEXT_IS_NUMBER_MESSAGE0="%1 %2";r.Msg.TEXT_IS_DIGIT="Is number";r.Msg.TEXT_IS_ALPHA="Is letter";r.Msg.TEXT_IS_ALNUM="Is mix of numbers and letters";r.Msg.REDO="Redo";r.Msg.UNDO="Undo";r.Msg.DELETE_VARIABLE='Delete "%1" variable';r.Msg.DELETE_VARIABLE_CONFIRMATION='Delete %1 of the "%2" variable?';r.Msg.CONTROLS_REPEAT_FOREVER="Repeat forever";r.Msg.CONTROLS_REPEAT_FOREVER_TOOLTIP="Do some statements forever times";r.Msg.TEXT_LIST_START="Create list [";r.Msg.TEXT_LIST_END="]";r.Msg.TEXT_TUPLE_START="Create tuple (";r.Msg.TEXT_TUPLE_END=")";r.Msg.TEXT_DICT_START="Create dictionary {";r.Msg.TEXT_DICT_END="}";r.Msg.TEXT_SET_START="Create set {";r.Msg.TEXT_SET_END="}";r.Msg.TEXT_SET_HELPURL="https://CocoRobox.readthedocs.io/zh_CN/latest/index.html";r.Msg.TUPLE_CREATE_EMPTY_TITLE="Create empty tuple";r.Msg.DICT_CREATE_EMPTY_TITLE="Create empty dictionary";r.Msg.SET_CREATE_EMPTY_TITLE="Create empty sets";r.Msg.TUPLE_CREATE_WITH_CONTAINER_TITLE_ADD="Tuple";r.Msg.DICT_CREATE_WITH_CONTAINER_TITLE_ADD="Dictionary";r.Msg.SET_CREATE_WITH_CONTAINER_TITLE_ADD="Sets";r.Msg.TUPLE_CREATE_WITH_CONTAINER_TOOLTIP="Add, remove, or rearrange sections to reconfigure this tuple block.";r.Msg.DICT_CREATE_WITH_CONTAINER_TOOLTIP="Add, remove, or rearrange sections to reconfigure this dictionary block.";r.Msg.TUPLE_CREATE_WITH_INPUT_WITH="Create tuple with";r.Msg.DICT_CREATE_WITH_INPUT_WITH="Create dictionary with";r.Msg.SET_CREATE_WITH_INPUT_WITH="Create sets with";r.Msg.TUPLE_CREATE_WITH_ITEM_TOOLTIP="Add an item to the tuple.";r.Msg.DICT_CREATE_WITH_ITEM_TOOLTIP="Add an item to the dictionary.";r.Msg.SET_CREATE_WITH_ITEM_TOOLTIP="Add an item to the sets.";r.Msg.LISTS_SORT_HELPURL="https://github.com/google/blockly/wiki/Lists#sorting-a-list";r.Msg.LISTS_SORT_ORDER_ASCENDING="Ascending";r.Msg.LISTS_SORT_ORDER_DESCENDING="Descending";r.Msg.LISTS_SORT_TITLE="Sort %1 %2 %3";r.Msg.LISTS_SORT_TOOLTIP="Sort a copy of a list.";r.Msg.LISTS_SORT_TYPE_IGNORECASE="By letter, ignore case";r.Msg.LISTS_SORT_TYPE_NUMERIC="By number";r.Msg.LISTS_SORT_TYPE_TEXT="By letter";r.Msg.labplus_mapping_MESSAGE0="Map %1 from %2 , %3 to %4 , %5";r.Msg.labplus_mapping_TOOLTIP="Map 10 of 0~100 to 0~200 and return the mapped value";r.Msg.labplus_mapping_HELPURL="";r.Msg.CocoRobo_OPEN="On";r.Msg.CocoRobo_CLOSE="Off";r.Msg.CocoRoboBOX_RGB_IMAGE_SHIFT_LEFT="Shift left";r.Msg.CocoRoboBOX_RGB_IMAGE_SHIFT_RIGHT="Shift right";r.Msg.CocoRoboBOX_RGB_IMAGE_SHIFT_UP="Shift up";r.Msg.CocoRoboBOX_RGB_IMAGE_SHIFT_DOWN="Shift down";r.Msg.CocoRobo_AI_LCD_SHOW_IMAGE_HEAT_GRAYSCALE="Grayscale";r.Msg.CocoRobo_AI_LCD_SHOW_IMAGE_HEAT_RAINBOW="Rainbow";r.Msg.CocoRobo_AI_LCD_SHOW_IMAGE_HEAT_NEGATE="Negate";r.Msg.CocoRobo_AI_LCD_SHOW_IMAGE_HEAT_INVERT="Invert";r.Msg.CocoRobo_AI_LCD_SHOW_IMAGE_DESCARTES_LINPOLAR="Line polar";r.Msg.CocoRobo_AI_LCD_SHOW_IMAGE_DESCARTES_LOGPOLAR="Log polar";r.Msg.CocoRobo_AI_SENSOR_PATTERN_GRAYSCALE="Grayscale";r.Msg.CocoRobo_AI_SENSOR_PATTERN_COLOR="Color";r.Msg.CocoRobo_AI_SENSOR_ENABLE_START="Start capturing image";r.Msg.CocoRobo_AI_SENSOR_ENABLE_STOP="Stop capturing image";r.Msg.CocoRobo_AI_SENSOR_LEVEL_MI_H="Horizontal mirror";r.Msg.CocoRobo_AI_SENSOR_LEVEL_MI_V="Vertical flip";r.Msg.CocoRobo_AI_SENSOR_SETS_CONTRAST="Contrast";r.Msg.CocoRobo_AI_SENSOR_SETS_BRIGHTNESS="Brightness";r.Msg.CocoRobo_AI_SENSOR_SETS_SATURATION="Saturation";r.Msg.CocoRobo_AI2_FACE_YOLO="FACE YOLO";r.Msg.CocoRobo_AI2_CLASS_20_YOLO="CLASS 20 YOLO";r.Msg.CocoRobo_AI_TRACE_COLOR_RECTANGLE="Rectangle";r.Msg.CocoRobo_AI_TRACE_COLOR_CROSS="Cross";r.Msg.TEXT_APPEND_TEXT_HELPURL="";r.Msg.TEXT_APPEND_TEXT_TOOLTIP="Append text after the specified text and return the result";r.Msg.TEXT_APPEND_TEXT_MESSAGE0="%1 append text %2";r.Msg.CocoRobo_AUDIO_SET_VOLUME_HELPURL="";r.Msg.CocoRobo_AUDIO_SET_VOLUME_MESSAGE0="Set Audio volume as %1";r.Msg.CocoRobo_AUDIO_SET_VOLUME_TOOLTIP="";r.Msg.CocoRobo_BLUEBIT_GET_MOTORPEED_HELPURL="";r.Msg.CocoRobo_BLUEBIT_GET_MOTORPEED_MESSAGE0="Expansion-board speed of DC motor %1";r.Msg.CocoRobo_BLUEBIT_GET_MOTORPEED_TOOLTIP="";r.Msg.CocoRobo_M1M2_LED_ON_HELPURL="";r.Msg.CocoRobo_M1M2_LED_ON_MESSAGE0="Expansion-board set led at %1 brightness %2";r.Msg.CocoRobo_M1M2_LED_ON_TOOLTIP="";r.Msg.CocoRobo_M1M2_LED_OFF_HELPURL="";r.Msg.CocoRobo_M1M2_LED_OFF_MESSAGE0="Expansion-board turn off led at %1";r.Msg.CocoRobo_M1M2_LED_OFF_TOOLTIP="";r.Msg.CocoRobo_BLUEBIT_HELPURL="http://wiki.labplus.cn/index.php?title=Bluebit";r.Msg.CocoRobo_BLUEBIT_ULTRASONIC_MESSAGE0="I2C ultrasonic value";r.Msg.CocoRobo_BLUEBIT_ULTRASONIC_TOOLTIP="";r.Msg.CocoRobo_BLUEBIT_ULTRASONIC_HELPURL="http://wiki.labplus.cn/index.php?title=Bluebit";r.Msg.CocoRobo_BLUEBIT_READ_DIGITAL_MESSAGE0="%1 on pin %2 be triggered";r.Msg.CocoRobo_BLUEBIT_READ_DIGITAL_TOOLTIP="";r.Msg.CocoRobo_BLUEBIT_READ_DIGITAL_HELPURL="http://wiki.labplus.cn/index.php?title=Bluebit";r.Msg.CocoRobo_BLUEBIT_READ_ANALOG_MESSAGE0="%1 on pin %2 analog value";r.Msg.CocoRobo_BLUEBIT_READ_ANALOG_TOOLTIP="";r.Msg.CocoRobo_BLUEBIT_READ_ANALOG_HELPURL="http://wiki.labplus.cn/index.php?title=Bluebit";r.Msg.CocoRobo_BLUEBIT_SET_ANALOG_MESSAGE0="Set LED on pin %2 value as %1";r.Msg.CocoRobo_BLUEBIT_SET_ANALOG_TOOLTIP="";r.Msg.CocoRobo_BLUEBIT_SET_ANALOG_HELPURL="http://wiki.labplus.cn/index.php?title=Bluebit";r.Msg.CocoRobo_BLUEBIT_LINE_FOLLOWER_MESSAGE0="Tracking sensor on pin %1 detected as black";r.Msg.CocoRobo_BLUEBIT_LINE_FOLLOWER_TOOLTIP="";r.Msg.CocoRobo_BLUEBIT_LINE_FOLLOWER_HELPURL="http://wiki.labplus.cn/index.php?title=Bluebit";r.Msg.CocoRobo_BLUEBIT_SET_TRUE_HELPURL="http://wiki.labplus.cn/index.php?title=Bluebit";r.Msg.CocoRobo_BLUEBIT_SET_TRUE_MESSAGE0="Turn on %1 on pin %2";r.Msg.CocoRobo_BLUEBIT_SET_TRUE_TOOLTIP="";r.Msg.CocoRobo_BLUEBIT_SET_FALSE_HELPURL="http://wiki.labplus.cn/index.php?title=Bluebit";r.Msg.CocoRobo_BLUEBIT_SET_FALSE_MESSAGE0="Turn off %1 on pin %2";r.Msg.CocoRobo_BLUEBIT_SET_FALSE_TOOLTIP="";r.Msg.CocoRobo_BLUEBIT_VOICE_RECORD_ON_HELPURL="http://wiki.labplus.cn/index.php?title=%E8%AF%AD%E9%9F%B3%E5%BD%95%E6%94%BE";r.Msg.CocoRobo_BLUEBIT_VOICE_RECORD_ON_TOOLTIP="";r.Msg.CocoRobo_BLUEBIT_VOICE_RECORD_ON_MESSAGE0="Turn on recorder %1 %2 REC %3 PLAY %4";r.Msg.CocoRobo_BLUEBIT_VOICE_RECORD_OFF_HELPURL="http://wiki.labplus.cn/index.php?title=%E8%AF%AD%E9%9F%B3%E5%BD%95%E6%94%BE";r.Msg.CocoRobo_BLUEBIT_VOICE_RECORD_OFF_TOOLTIP="";r.Msg.CocoRobo_BLUEBIT_VOICE_RECORD_OFF_MESSAGE0="Turn off recorder %1 REC %2 PLAY %3";r.Msg.CocoRobo_BLUEBIT_VOICE_RECORD_PLAY="PLAY";r.Msg.CocoRobo_BLUEBIT_VOICE_RECORD_REC="REC";r.Msg.STOP="STOP";r.Msg.CocoRobo_BLUEBIT_IR_RECEIVE="Infrared detection";r.Msg.CocoRobo_BLUEBIT_SOUND="Microphone";r.Msg.CocoRobo_BLUEBIT_LINE_FOLLOWER="Tracking sensor";r.Msg.CocoRobo_BLUEBIT_VIBRATION="Vibration sensor";r.Msg.CocoRobo_BLUEBIT_RFID="RF card";r.Msg.CocoRobo_BLUEBIT_FINGERPRINT_SCANNER="Fingerprint scanner";r.Msg.CocoRobo_BLUEBIT_PIR="PIR sensor";r.Msg.CocoRobo_BLUEBIT_MAGNETIC="Magnetic switch";r.Msg.CocoRobo_BLUEBIT_BUTTON="Button";r.Msg.CocoRobo_BLUEBIT_FAN="Fan";r.Msg.CocoRobo_BLUEBIT_LASER="Laser";r.Msg.CocoRobo_BLUEBIT_NTC_TEMP="NTC temperature";r.Msg.CocoRobo_BLUEBIT_WATER="Water level";r.Msg.CocoRobo_BLUEBIT_SOIL_MOISTURE="Soil moisture";r.Msg.CocoRobo_BLUEBIT_ROTATE_DIMMER="Rotate dimmer";r.Msg.CocoRobo_BLUEBIT_LINEAR_SLIDING_POTENTIOMETER="Inear sliding potentiometer";r.Msg.CocoRobo_BLUEBIT_ANALOG_LIGHT="Analog light";r.Msg.CocoRobo_BLUEBIT_LM35_TEMP="LM35 temperature";r.Msg.CocoRobo_BLUEBIT_MOTOR_ON_CLOCKWISE="Corotation";r.Msg.CocoRobo_BLUEBIT_MOTOR_ON_ANTICLOCKWISE="Reverse";r.Msg.CocoRobo_BLUEBIT_MOTOR_ON_HELPURL="http://wiki.labplus.cn/index.php?title=%E7%94%B5%E6%9C%BA%E9%A9%B1%E5%8A%A8";r.Msg.CocoRobo_BLUEBIT_MOTOR_ON_TOOLTIP="Speed:Map -100~100 to -1023~1023";r.Msg.CocoRobo_BLUEBIT_MOTOR_ON_MESSAGE0="Turn on DC motor %1 speed %2 pin AIN1 %3 pin AIN2 %4";r.Msg.CocoRobo_BLUEBIT_MOTOR_OFF_HELPURL="http://wiki.labplus.cn/index.php?title=%E7%94%B5%E6%9C%BA%E9%A9%B1%E5%8A%A8";r.Msg.CocoRobo_BLUEBIT_MOTOR_OFF_TOOLTIP="";r.Msg.CocoRobo_BLUEBIT_MOTOR_OFF_MESSAGE0="Stop DC motor %1 pin AIN1 %2 pin AIN2 %3";r.Msg.CocoRobo_BLUEBIT_SET_FAN_HELPURL="";r.Msg.CocoRobo_BLUEBIT_SET_FAN_TOOLTIP="";r.Msg.CocoRobo_BLUEBIT_SET_FAN_MESSAGE0="Expansion-board turn on the fan %1";r.Msg.CocoRobo_LEFT="LEFT";r.Msg.CocoRobo_RIGHT="RIGHT";r.Msg.CocoRobo_BLUEBIT_SET_FAN_OFF_HELPURL="";r.Msg.CocoRobo_BLUEBIT_SET_FAN_OFF_TOOLTIP="";r.Msg.CocoRobo_BLUEBIT_SET_FAN_OFF_MESSAGE0="Expansion-board turn off the fan %1";r.Msg.CocoRobo_BLUEBIT_4BUTTON_HELPURL="http://wiki.CocoRobo_BLUEBIT.cn/index.php?title=%E5%9B%9B%E6%8C%89%E9%94%AE";r.Msg.CocoRobo_BLUEBIT_4BUTTON_TOOLTIP="";r.Msg.CocoRobo_BLUEBIT_4BUTTON_MESSAGE0="Navigation button module pin %1 button %2 is pressed";r.Msg.BLUE="A";r.Msg.GREEN="B";r.Msg.RED="C";r.Msg.YELLOW="D";r.Msg.CocoRobo_BLUEBIT_JOYSTICK_HELPURL="";r.Msg.CocoRobo_BLUEBIT_JOYSTICK_TOOLTIP="";r.Msg.CocoRobo_BLUEBIT_JOYSTICK_MESSAGE0="Thumb joystick pin A0 %1 pin A1 %2 %3 axis";r.Msg.CocoRobo_BLUEBIT_MOTOR_ON_I2C_HELPURL="";r.Msg.CocoRobo_BLUEBIT_MOTOR_ON_I2C_TOOLTIP="Speed: 0~100";r.Msg.CocoRobo_BLUEBIT_MOTOR_ON_I2C_MESSAGE0="Expansion-board turn on DC motor %1 %2 speed %3";r.Msg.CocoRobo_BLUEBIT_BLUEBIT_MOTOR_OFF_I2C_HELPURL="";r.Msg.CocoRobo_BLUEBIT_MOTOR_OFF_I2C_TOOLTIP="Speed: 0~100";r.Msg.CocoRobo_BLUEBIT_MOTOR_OFF_I2C_MESSAGE0="Expansion-board stop DC motor";r.Msg.CocoRobo_BLUEBIT_CODED_THREE_MOTOR_ON_I2C_HELPURL="";r.Msg.CocoRobo_BLUEBIT_CODED_THREE_MOTOR_ON_I2C_TOOLTIP="Speed: -1023~1023";r.Msg.CocoRobo_BLUEBIT_CODED_THREE_MOTOR_ON_I2C_MESSAGE0="Coded motor mode%1 dial code%2 M1 speed%3 M2 speed%4";r.Msg.CocoRobo_BLUEBIT_CODED_STOP_MOTOR_ON_I2C_HELPURL="";r.Msg.CocoRobo_BLUEBIT_CODED_STOP_MOTOR_ON_I2C_TOOLTIP="Stop Coding Motor Rotation";r.Msg.CocoRobo_BLUEBIT_CODED_STOP_MOTOR_ON_I2C_MESSAGE0="Stop Coding Motor Rotation %1";r.Msg.CocoRobo_BLUEBIT_INIT_MIDI_HELPURL="";r.Msg.CocoRobo_BLUEBIT_INIT_MIDI_MESSAGE0="Initialize MIDI TX pin %1";r.Msg.CocoRobo_BLUEBIT_INIT_MIDI_TOOLTIP="";r.Msg.CocoRobo_BLUEBIT_MIDI_VOLUME_HELPURL="";r.Msg.CocoRobo_BLUEBIT_MIDI_VOLUME_MESSAGE0="Set MIDI volume as %1";r.Msg.CocoRobo_BLUEBIT_MIDI_VOLUME_TOOLTIP="Volume range:0~127";r.Msg.MIDI_PIANO="ACOUSTIC GRAND PIANO";r.Msg.MIDI_BRIGHTACOUSTICPIANO="BRIGHT ACOUSTIC PIANO";r.Msg.MIDI_ELECTRICGRANDPIANO="ELECTRIC GRAND PIANO";r.Msg.MIDI_HARPSICHORD="HARPSICHORD";r.Msg.MIDI_CELESTA="CELESTA";r.Msg.MIDI_GLOCKENSPIEL="GLOCKENSPIEL";r.Msg.MIDI_MUSICALBOX="MUSICAL BOX";r.Msg.MIDI_MARIMBA="MARIMBA";r.Msg.MIDI_XYLOPHONE="XYLOPHONE";r.Msg.MIDI_TUBULARBELL="TUBULAR BELL";r.Msg.MIDI_DULCIMER="DULCIMER";r.Msg.MIDI_VIBRAPHONE="VIBRAPHONE";r.Msg.MIDI_ORGAN="DRAWBAR ORGAN";r.Msg.MIDI_ACOUSTIC_GUITAR="ACOUSTIC GUITAR";r.Msg.MIDI_ELECTRIC_GUITAR="ELECTRIC GUITAR";r.Msg.MIDI_ACOUSTIC_BASS="ACOUSTIC BASS";r.Msg.MIDI_STRING_ENSEMBLE="STRING ENSEMBLE";r.Msg.MIDI_VIOLIN="VIOLIN";r.Msg.MIDI_TRUMPET="TRUMPET";r.Msg.MIDI_SAX="SAX";r.Msg.MIDI_STEEL_DRUMS="STEEL DRUMS";r.Msg.MIDI_LEAD="LEAD";r.Msg.MIDI_PAD="PAD";r.Msg.CocoRobo_BLUEBIT_MIDI_INSTRUMENT_HELPURL="";r.Msg.CocoRobo_BLUEBIT_MIDI_INSTRUMENT_MESSAGE0="Set MIDI instrument as %1";r.Msg.CocoRobo_BLUEBIT_MIDI_INSTRUMENT_TOOLTIP="";r.Msg.CocoRobo_BLUEBIT_MIDI_PLAY_HELPURL="";r.Msg.CocoRobo_BLUEBIT_MIDI_PLAY_MESSAGE0="MIDI %1 tone %2";r.Msg.CocoRobo_BLUEBIT_MIDI_PLAY_TOOLTIP="";r.Msg.CocoRobo_BLUEBIT_MATRIX_BRIGHTNESS_HELPURL="";r.Msg.CocoRobo_BLUEBIT_MATRIX_BRIGHTNESS_MESSAGE0="Set matrix`s brightness level as %1";r.Msg.CocoRobo_BLUEBIT_MATRIX_BRIGHTNESS_TOOLTIP="Brightness level:0~15";r.Msg.CocoRobo_BLUEBIT_MATRIX_FILL_HELPURL="";r.Msg.CocoRobo_BLUEBIT_MATRIX_FILL_MESSAGE0="Set matrix %1";r.Msg.CocoRobo_BLUEBIT_MATRIX_FILL_TOOLTIP="";r.Msg.CocoRobo_BLUEBIT_MATRIX_BITMAP_HELPURL="";r.Msg.CocoRobo_BLUEBIT_MATRIX_BITMAP_MESSAGE0="Set matrix %1 %2 %3 %4 %5 %6 %7 %8 %9 %10 %11 %12 %13 %14 %15 %16 %17 %18 %19 %20 %21 %22 %23 %24 %25 %26 %27 %28 %29 %30 %31 %32 %33 %34 %35 %36 %37 %38 %39 %40 %41 %42 %43 %44 %45 %46 %47 %48 %49 %50 %51 %52 %53 %54 %55 %56 %57 %58 %59 %60 %61 %62 %63 %64 %65 %66 %67 %68 %69 %70 %71 %72";r.Msg.CocoRobo_BLUEBIT_MATRIX_BITMAP_TOOLTIP="";r.Msg.CocoRobo_BLUEBIT_MATRIX_SHOW_HELPURL="";r.Msg.CocoRobo_BLUEBIT_MATRIX_SHOW_MESSAGE0="The setting of matrix takes effect";r.Msg.CocoRobo_BLUEBIT_MATRIX_SHOW_TOOLTIP="";r.Msg.CocoRobo_BLUEBIT_MP3_VOLUME_HELPURL="";r.Msg.CocoRobo_BLUEBIT_MP3_VOLUME_MESSAGE0="Set MP3 volume as %1";r.Msg.CocoRobo_BLUEBIT_MP3_VOLUME_TOOLTIP="Volume:0~30";r.Msg.CocoRobo_BLUEBIT_MP3_INIT_HELPURL="";r.Msg.CocoRobo_BLUEBIT_MP3_INIT_MESSAGE0="Init MP3 TX pin %1";r.Msg.CocoRobo_BLUEBIT_MP3_INIT_TOOLTIP="The tx pin of the cocorobo board is connected to the RXI pin of the music module";r.Msg.CocoRobo_BLUEBIT_MP3_VOLUME_PLUS_HELPURL="";r.Msg.CocoRobo_BLUEBIT_MP3_VOLUME_PLUS_MESSAGE0="MP3 volume %1";r.Msg.CocoRobo_BLUEBIT_MP3_VOLUME_PLUS_TOOLTIP="";r.Msg.CocoRobo_PLUS_1="Plus 1";r.Msg.CocoRobo_MINUS_1="Minus 1";r.Msg.CocoRobo_BLUEBIT_MP3_PLAY_SONG_HELPURL="";r.Msg.CocoRobo_BLUEBIT_MP3_PLAY_SONG_MESSAGE0="Mp3 plays song with order %1";r.Msg.CocoRobo_BLUEBIT_MP3_PLAY_SONG_TOOLTIP="";r.Msg.PAUSE="PAUSE";r.Msg.STOP="STOP";r.Msg.PLAY="GO ON";r.Msg.PLAYNEXT="NEXT SONG";r.Msg.PLAYPREV="LAST SONG";r.Msg.CocoRobo_BLUEBIT_MP3_CMD_HELPURL="";r.Msg.CocoRobo_BLUEBIT_MP3_CMD_MESSAGE0="MP3 play %1";r.Msg.CocoRobo_BLUEBIT_MP3_CMD_TOOLTIP="";r.Msg.LABPLUS_USB_SWITCH_ON="ON";r.Msg.LABPLUS_USB_SWITCH_OFF="OFF";r.Msg.CocoRobo_BLUEBIT_MP3_SINGLELOOP_HELPURL="";r.Msg.CocoRobo_BLUEBIT_MP3_SINGLELOOP_MESSAGE0="MP3 single-loop mode %1";r.Msg.CocoRobo_BLUEBIT_MP3_SINGLELOOP_TOOLTIP="";r.Msg.CocoRobo_BLUEBIT_EXTIO_IOMODE_HELPURL="";r.Msg.CocoRobo_BLUEBIT_EXTIO_IOMODE_MESSAGE0="Set EXT IO module`s IO %2 as %1";r.Msg.CocoRobo_BLUEBIT_EXTIO_IOMODE_TOOLTIP="IO: 0~7";r.Msg.LABPLUS_COMPITITION_INIT_EXTENDED_PINS_OUTPUT="OUTPUT";r.Msg.LABPLUS_COMPITITION_INIT_EXTENDED_PINS_INPUT="INPUT";r.Msg.CocoRobo_BLUEBIT_EXTIO_READIO_HELPURL="";r.Msg.CocoRobo_BLUEBIT_EXTIO_READIO_MESSAGE0="Value of EXT IO at IO %1";r.Msg.CocoRobo_BLUEBIT_EXTIO_READIO_TOOLTIP="";r.Msg.CocoRobo_BLUEBIT_EXTIO_WRITEIO_HELPURL="";r.Msg.CocoRobo_BLUEBIT_EXTIO_WRITEIO_MESSAGE0="Set EXT IO module`s IO %2 as %1";r.Msg.CocoRobo_BLUEBIT_EXTIO_WRITEIO_TOOLTIP="";r.Msg.CocoRobo_LCD_OBJECT_HELPURL="";r.Msg.CocoRobo_LCD_OBJECT_MESSAGE0="Initialise LCD1602";r.Msg.CocoRobo_LCD_OBJECT_TOOLTIP="";r.Msg.CocoRobo_LCD_PRINT_HELPURL="";r.Msg.CocoRobo_LCD_PRINT_MESSAGE0="LCD1602 display %1";r.Msg.CocoRobo_LCD_PRINT_TOOLTIP="";r.Msg.CocoRobo_LCD_HOME_HELPURL="";r.Msg.CocoRobo_LCD_HOME_MESSAGE0="LCD1602 cursor returns to the origin";r.Msg.CocoRobo_LCD_HOME_TOOLTIP="";r.Msg.CocoRobo_LCD_CURSOR_HELPURL="";r.Msg.CocoRobo_LCD_CURSOR_MESSAGE0="LCD1602 cursor %1";r.Msg.CocoRobo_LCD_CURSOR_TOOLTIP="";r.Msg.CocoRobo_LCD_SET_CURSOR_HELPURL="";r.Msg.CocoRobo_LCD_SET_CURSOR_MESSAGE0="LCD1602 starts with row %2 column %1";r.Msg.CocoRobo_LCD_SET_CURSOR_TOOLTIP="Row and column count from 0";r.Msg.CocoRobo_LCD_CLEAR_HELPURL="";r.Msg.CocoRobo_LCD_CLEAR_MESSAGE0="LCD1602 clear";r.Msg.CocoRobo_LCD_CLEAR_TOOLTIP="";r.Msg.CocoRobo_LCD_CURSOR_BLINK="BLINK";r.Msg.CocoRobo_LCD_CURSOR_NO_BLINK="NO BLINK";r.Msg.CocoRobo_LEFT_TO_RIGHT="LEFT TO RIGHT";r.Msg.CocoRobo_RIGHT_TO_LEFT="RIGHT TO LEFT";r.Msg.CocoRobo_LCD_TEXT_DIRECTION_HELPURL="";r.Msg.CocoRobo_LCD_TEXT_DIRECTION_MESSAGE0="LCD1602 text direction %1";r.Msg.CocoRobo_LCD_TEXT_DIRECTION_TOOLTIP="";r.Msg.CocoRobo_LCD_MOVE_HELPURL="";r.Msg.CocoRobo_LCD_MOVE_MESSAGE0="LCD1602 scrolls a column to %1";r.Msg.CocoRobo_LCD_MOVE_TOOLTIP="";r.Msg.CocoRobo_IR_TRANS_HELPURL="";r.Msg.CocoRobo_IR_TRANS_MESSAGE0="Infrared transmission of string with one byte length %1 tx pin %2";r.Msg.CocoRobo_IR_TRANS_TOOLTIP=`
- string with one byte length: 'A', 'b', '1' and so on
- `;r.Msg.OUTPUT_PIN_HELPURL="";r.Msg.OUTPUT_PIN_MESSAGE0="%1";r.Msg.OUTPUT_PIN_TOOLTIP="";r.Msg.INPUT_PIN_HELPURL="";r.Msg.INPUT_PIN_MESSAGE0="%1";r.Msg.INPUT_PIN_TOOLTIP="";r.Msg.READ_ANALOG_PIN_HELPURL="";r.Msg.READ_ANALOG_PIN_MESSAGE0="%1";r.Msg.READ_ANALOG_PIN_TOOLTIP="";r.Msg.SET_DIGITAL_HELPURL="";r.Msg.SET_DIGITAL_MESSAGE0="%1";r.Msg.SET_DIGITAL_TOOLTIP="";r.Msg.SET_ANALOG_HELPURL="";r.Msg.SET_ANALOG_MESSAGE0="%1";r.Msg.SET_ANALOG_TOOLTIP="";r.Msg.ALL_PIN_HELPURL="";r.Msg.ALL_PIN_MESSAGE0="%1";r.Msg.ALL_PIN_TOOLTIP="";r.Msg.PWM_PIN_HELPURL="";r.Msg.PWM_PIN_MESSAGE0="%1";r.Msg.PWM_PIN_TOOLTIP="";r.Msg.DH11_HUM_TEM_PIN_HELPURL="";r.Msg.DH11_HUM_TEM_PIN_MESSAGE0="%1";r.Msg.DH11_HUM_TEM_PIN_TOOLTIP="";r.Msg.UART_TX_PIN_HELPURL="";r.Msg.UART_TX_PIN_MESSAGE0="%1";r.Msg.UART_TX_PIN_TOOLTIP="";r.Msg.UART_RX_PIN_HELPURL="";r.Msg.UART_RX_PIN_MESSAGE0="%1";r.Msg.UART_RX_PIN_TOOLTIP="";r.Msg.I2C_PIN_HELPURL="";r.Msg.I2C_PIN_MESSAGE0="%1";r.Msg.I2C_PIN_TOOLTIP="";r.Msg.MQTT_COMMON_SETUP_HELPURL="https://CocoRobo.readthedocs.io/zh/master/library/cocorobo/umqtt.simple.html?highlight=mqtt#MQTTClient";r.Msg.MQTT_COMMON_SETUP_MESSAGE0="MQTT %1 client_id %2 server %3 port %4 user %5 password %6 keepalive %7";r.Msg.MQTT_COMMON_SETUP_TOOLTIP="";r.Msg.MQTT_TENCENT_SETUP_HELPURL="https://CocoRobo.readthedocs.io/zh/master/library/cocorobo/umqtt.simple.html?highlight=mqtt#MQTTClient";r.Msg.MQTT_TENCENT_SETUP_MESSAGE0="MQTT Tencent IoT %1 Server %2 Port %3 AppId %4 Device %5 -- Output -- %6 ReportTopic %7 ControlTopic %8";r.Msg.MQTT_TENCENT_SETUP_TOOLTIP="";r.Msg.MQTT_TENCENT_SETUPS_HELPURL="https://CocoRobo.readthedocs.io/zh/master/library/cocorobo/umqtt.simple.html?highlight=mqtt#MQTTClient";r.Msg.MQTT_TENCENT_SETUPS_MESSAGE0="MQTT Tencent IoT %1 Server %2 Port %3 AppId %4 Device %5 -- Output -- %6 ReportTopic %7 ControlTopic %8";r.Msg.MQTT_TENCENT_SETUPS_TOOLTIP="";r.Msg.MQTT_SETUP_HELPURL="https://CocoRobo.readthedocs.io/zh/master/tutorials/advance/iot/mqtt.html#id2";r.Msg.MQTT_SETUP_MESSAGE0="MQTT-Easy IoT %1 Server %2 Client ID %5 Iot_id %3 Iot_pwd %4";r.Msg.MQTT_SETUP_TOOLTIP="";r.Msg.MQTT_CONNECT_HELPURL="https://CocoRobo.readthedocs.io/zh/master/tutorials/advance/iot/mqtt.html#id2";r.Msg.MQTT_CONNECT_MESSAGE0="Connect to MQTT";r.Msg.MQTT_CONNECT_TOOLTIP="";r.Msg.MQTT_PUBLISH_HELPURL="https://CocoRobo.readthedocs.io/zh/master/tutorials/advance/iot/mqtt.html#id2";r.Msg.MQTT_PUBLISH_MESSAGE0="Publish %1 to topic %2";r.Msg.MQTT_PUBLISH_TOOLTIP="";r.Msg.MQTT_REC_FROM_TOPIC_HELPURL="https://CocoRobo.readthedocs.io/zh/master/tutorials/advance/iot/mqtt.html#id2";r.Msg.MQTT_REC_FROM_TOPIC_MESSAGE0="When recieved %2 from topic %1";r.Msg.MQTT_REC_FROM_TOPIC_TOOLTIP="";r.Msg.MQTT_RECEIVE_HELPURL="https://CocoRobo.readthedocs.io/zh/master/tutorials/advance/iot/mqtt.html#id2";r.Msg.MQTT_RECEIVE_MESSAGE0="When recieved %2 from topic %1";r.Msg.MQTT_RECEIVE_TOOLTIP='Parameter "topic" only accepts variable';r.Msg.MQTT_WAIT_MSG_HELPURL="https://CocoRobo.readthedocs.io/zh/master/tutorials/advance/iot/mqtt.html#id2";r.Msg.MQTT_WAIT_MSG_MESSAGE0="Wait for topic message in %1 mode";r.Msg.MQTT_WAIT_MSG_TOOLTIP="It is recommended to run in 'while True'";r.Msg.MQTT_DISCONNECT_HELPURL="https://CocoRobo.readthedocs.io/zh/master/tutorials/advance/iot/mqtt.html#id2";r.Msg.MQTT_DISCONNECT_MESSAGE0="Disconnect from MQTT";r.Msg.MQTT_DISCONNECT_TOOLTIP="";r.Msg.MQTT_LAST_WILL_HELPURL="https://CocoRobo.readthedocs.io/zh/master/library/cocorobo/umqtt.simple.html?highlight=mqtt#MQTTClient.set_last_will";r.Msg.MQTT_LAST_WILL_MESSAGE0="Set MQTT topic %2 last will message as %1";r.Msg.MQTT_LAST_WILL_TOOLTIP='Set the MQTT "last will" message. Should be called before connect().';r.Msg.CocoRobo_IR_RECV_HELPURL="";r.Msg.CocoRobo_IR_RECV_MESSAGE0="Infrared received int at rx pin %1";r.Msg.CocoRobo_IR_RECV_TOOLTIP="The first time the receive is always empty";r.Msg.CocoRobo_BLUEBIT_OLCD_PRINT_HELPURL="";r.Msg.CocoRobo_BLUEBIT_OLCD_PRINT_MESSAGE0="Bluebit LCD show %1 at x %2 y %3";r.Msg.CocoRobo_BLUEBIT_OLCD_PRINT_TOOLTIP="";r.Msg.CocoRobo_BLUEBIT_OLCD_INIT_HELPURL="";r.Msg.CocoRobo_BLUEBIT_OLCD_INIT_MESSAGE0="Bluebit LCD init at tx %1 rx %2";r.Msg.CocoRobo_BLUEBIT_OLCD_INIT_TOOLTIP="";r.Msg.CocoRobo_BLUEBIT_OLCD_CLEAR_HELPURL="";r.Msg.CocoRobo_BLUEBIT_OLCD_CLEAR_MESSAGE0="Bluebit LCD clear";r.Msg.CocoRobo_BLUEBIT_OLCD_CLEAR_TOOLTIP="";r.Msg.CocoRobo_BLUEBIT_OLCD_BMP_HELPURL="";r.Msg.CocoRobo_BLUEBIT_OLCD_BMP_MESSAGE0="Bluebit LCD show image x %1 y %2 width %3 height %4 with hex image data %5";r.Msg.CocoRobo_BLUEBIT_OLCD_BMP_TOOLTIP="";r.Msg.MICROBIT_GESTURE_SHAKE="Shake";r.Msg.MICROBIT_GESTURE_UP="Up";r.Msg.MICROBIT_GESTURE_DOWN="Down";r.Msg.MICROBIT_GESTURE_LEFT="Left";r.Msg.MICROBIT_GESTURE_RIGHT="Right";r.Msg.MICROBIT_GESTURE_FACE_UP="Upward";r.Msg.MICROBIT_GESTURE_FACE_DOWN="Down";r.Msg.MICROBIT_GESTURE_FREEFAIL="Free fall";r.Msg.MICROBIT_IMAGE_HEART="Heart";r.Msg.MICROBIT_IMAGE_HEART_SMALL="Heart (small)";r.Msg.MICROBIT_IMAGE_HAPPY="Happy";r.Msg.MICROBIT_IMAGE_SMILE="Smile Face";r.Msg.MICROBIT_IMAGE_SAD="Sad";r.Msg.MICROBIT_IMAGE_CONFUSED="Confusion";r.Msg.MICROBIT_IMAGE_ANGRY="Angry";r.Msg.MICROBIT_IMAGE_ASLEEP="Sleep";r.Msg.MICROBIT_IMAGE_SUPRISED="Surprise";r.Msg.MICROBIT_IMAGE_SILLY="Stupid";r.Msg.MICROBIT_IMAGE_FABULOUS="Wonderful";r.Msg.MICROBIT_IMAGE_MEH="Boredom";r.Msg.MICROBIT_IMAGE_YES="Yes";r.Msg.MICROBIT_IMAGE_NO="No";r.Msg.MICROBIT_IMAGE_CLOCK12="12 clock";r.Msg.MICROBIT_IMAGE_CLOCK11="11 clock";r.Msg.MICROBIT_IMAGE_CLOCK10="10 clock";r.Msg.MICROBIT_IMAGE_CLOCK9="9 clock";r.Msg.MICROBIT_IMAGE_CLOCK8="8 clock";r.Msg.MICROBIT_IMAGE_CLOCK7="7 clock";r.Msg.MICROBIT_IMAGE_CLOCK6="6 clock";r.Msg.MICROBIT_IMAGE_CLOCK5="5 clock";r.Msg.MICROBIT_IMAGE_CLOCK4="4 clock";r.Msg.MICROBIT_IMAGE_CLOCK3="3 clock";r.Msg.MICROBIT_IMAGE_CLOCK2="2 clock";r.Msg.MICROBIT_IMAGE_CLOCK1="1 clock";r.Msg.MICROBIT_IMAGE_ARROW_N="Arrow-North";r.Msg.MICROBIT_IMAGE_ARROW_NE="Arrow-Northeast";r.Msg.MICROBIT_IMAGE_ARROW_E="Arrow-east";r.Msg.MICROBIT_IMAGE_ARROW_SE="arrow-southeast";r.Msg.MICROBIT_IMAGE_ARROW_S="Arrow-South";r.Msg.MICROBIT_IMAGE_ARROW_SW="Arrow-southwest";r.Msg.MICROBIT_IMAGE_ARROW_W="Arrow-West";r.Msg.MICROBIT_IMAGE_ARROW_NW="Arrow-Northwest";r.Msg.MICROBIT_IMAGE_TRIANGLE="Triangle";r.Msg.MICROBIT_IMAGE_TRIANGLE_LEFT="Left triangle";r.Msg.MICROBIT_IMAGE_CHESSBOARD="Chessboard";r.Msg.MICROBIT_IMAGE_DIAMOND="Diamond";r.Msg.MICROBIT_IMAGE_DIAMOND_SMALL="Diamond (small)";r.Msg.MICROBIT_IMAGE_SQUARE="Square";r.Msg.MICROBIT_IMAGE_SQUARE_SMALL="Square (small)";r.Msg.MICROBIT_IMAGE_RABBIT="Rabbit";r.Msg.MICROBIT_IMAGE_COW="Cow";r.Msg.MICROBIT_IMAGE_MUSIC_CROTCHET="Quarter note";r.Msg.MICROBIT_IMAGE_MUSIC_QUAVER="Octave";r.Msg.MICROBIT_IMAGE_MUSIC_QUAVERS="Tremolo";r.Msg.MICROBIT_IMAGE_PITCHFORK="Fork";r.Msg.MICROBIT_IMAGE_XMAS="Christmas Tree";r.Msg.MICROBIT_IMAGE_PACMAN="Bean Eater";r.Msg.MICROBIT_IMAGE_TARGET="Target";r.Msg.MICROBIT_IMAGE_TSHIRT="T-shirt";r.Msg.MICROBIT_IMAGE_ROLLERSKATE="Roller Skating";r.Msg.MICROBIT_IMAGE_DUCK="Duck";r.Msg.MICROBIT_IMAGE_HOUSE="House";r.Msg.MICROBIT_IMAGE_TORTOISE="Tortoise";r.Msg.MICROBIT_IMAGE_BUTTERFLY="Butterfly";r.Msg.MICROBIT_IMAGE_STICKFIGURE="Line drawing";r.Msg.MICROBIT_IMAGE_GHOST="Ghost";r.Msg.MICROBIT_IMAGE_SWORD="Sword";r.Msg.MICROBIT_IMAGE_GIRAFFE="Giraffe";r.Msg.MICROBIT_IMAGE_SKULL="Head";r.Msg.MICROBIT_IMAGE_UMBRELLA="Umbrella";r.Msg.MICROBIT_IMAGE_SNAKE="Snake";r.Msg.MICROBIT_IMAGE_ALL_CLOCKS="All Clocks";r.Msg.MICROBIT_IMAGE_ALL_ARROWS="All arrows";r.Msg.CocoRobo_bme280_hum_tem_pre_MESSAGE0="Meteorological %1";r.Msg.CocoRobo_bme280_hum_tem_pre_TOOLTIP="%";r.Msg.CocoRobobox_sound_MESSAGE0="Sound value";r.Msg.CocoRobobox_sound_TOOLTIP="0~4095。";r.Msg.CocoRobobox_sound_HELPURL="https://CocoRobo.readthedocs.io/zh/doc_CocoRobobox/CocoRoboBox/lib/CocoRobo.html";r.Msg.CocoRoboBOX_SLIDER_HELPURL="https://CocoRobo.readthedocs.io/zh/doc_CocoRobobox/CocoRoboBox/lib/CocoRobo_box.html#CocoRobo-box";r.Msg.CocoRoboBOX_SLIDER_MESSAGE0="Slide bar";r.Msg.CocoRoboBOX_SLIDER_TOOLTIP="0~4095。";r.Msg.CocoRoboBOX_5BUTTON_HELPURL="https://CocoRobo.readthedocs.io/zh/doc_CocoRobobox/CocoRoboBox/lib/CocoRobo_box.html#CocoRobo-box";r.Msg.CocoRoboBOX_5BUTTON_MESSAGE0="Five way button%1";r.Msg.CocoRoboBOX_5BUTTON_TOOLTIP="";r.Msg.CocoRoboBOX_MOTOR_HELPURL="https://CocoRobo.readthedocs.io/zh/doc_CocoRobobox/CocoRoboBox/lib/CocoRobo_box.html#CocoRobo-box";r.Msg.CocoRoboBOX_MOTOR_MESSAGE0="Motor speed%1";r.Msg.CocoRoboBOX_MOTOR_TOOLTIP="";r.Msg.CocoRoboBOX_ULTRASONIC_HELPURL="https://CocoRobo.readthedocs.io/zh/doc_CocoRobobox/CocoRoboBox/lib/CocoRobo_box.html#CocoRobo_box.get_key";r.Msg.CocoRoboBOX_ULTRASONIC_MESSAGE0="Ultrasonic";r.Msg.CocoRoboBOX_ULTRASONIC_TOOLTIP="3~340CM";r.Msg.CocoRoboBOX_THEHUMANBODYINFRARE_HELPURL="https://CocoRobo.readthedocs.io/zh/doc_CocoRobobox/CocoRoboBox/lib/CocoRobo_box.html#CocoRobo_box.get_key";r.Msg.CocoRoboBOX_THEHUMANBODYINFRARE_MESSAGE0="Human body infrared";r.Msg.CocoRoboBOX_THEHUMANBODYINFRARE_TOOLTIP="";r.Msg.CocoRoboBOX_RGB_pixel_HELPURL="";r.Msg.CocoRoboBOX_RGB_pixel_MESSAGE0="Set column%1 line%2 R%3 G%4 B%5";r.Msg.CocoRoboBOX_RGB_pixel_TOOLTIP="";r.Msg.CocoRoboBOX_RGB_get_pixel_HELPURL="";r.Msg.CocoRoboBOX_RGB_get_pixel_MESSAGE0="Returns the RGB color of column%1, line%2";r.Msg.CocoRoboBOX_RGB_get_pixel_TOOLTIP="";r.Msg.CocoRoboBOX_RGB_ImageText_HELPURL="";r.Msg.CocoRoboBOX_RGB_ImageText_MESSAGE0="Scroll Display Text%1 Speed%2";r.Msg.CocoRoboBOX_RGB_ImageText_TOOLTIP="";r.Msg.CocoRoboBOX_RGB_Image_HELPURL="";r.Msg.CocoRoboBOX_RGB_Image_MESSAGE0="According to the image%1";r.Msg.CocoRoboBOX_RGB_Image_TOOLTIP="According to the image";r.Msg.CocoRoboBOX_RGB_SetImage_HELPURL="";r.Msg.CocoRoboBOX_RGB_SetImage_MESSAGE0="Create an image %1 The first line%2, the second line%3, the third line%4, the fourth line%5, the fifth line%6";r.Msg.CocoRoboBOX_RGB_SetImage_TOOLTIP="";r.Msg.CocoRoboBOX_RGB_SHOW_IMAGE_MESSAGE0="Display image/text %1";r.Msg.CocoRoboBOX_RGB_SHOW_IMAGE_TOOLTIP="";r.Msg.CocoRoboBOX_RGB_SHOW_IMAGE_HELPURL="";r.Msg.CocoRoboBOX_RGB_SHOW_IMAGEImport_MESSAGE0="Display image %1";r.Msg.CocoRoboBOX_RGB_SHOW_IMAGEImport_TOOLTIP="Display image。";r.Msg.CocoRoboBOX_RGB_SHOW_IMAGEImport_HELPURL="";r.Msg.CocoRoboBOX_RGB_SHOW_IMAGE_Copy_MESSAGE0="Copy image %1";r.Msg.CocoRoboBOX_RGB_SHOW_IMAGE_Copy_TOOLTIP="Copy image";r.Msg.CocoRoboBOX_RGB_SHOW_IMAGE_Copy_HELPURL="";r.Msg.CocoRoboBOX_RGB_ImageCot_HELPURL="";r.Msg.CocoRoboBOX_RGB_ImageCot_MESSAGE0="Cut image%1 column%2 rows%3 width%4 high%5";r.Msg.CocoRoboBOX_RGB_ImageCot_TOOLTIP="Cut image";r.Msg.CocoRoboBOX_RGB_IMAGE_BUILTINS_MESSAGE0="Built in image %1";r.Msg.CocoRoboBOX_RGB_IMAGE_BUILTINS_TOOLTIP="Select a built-in image.";r.Msg.CocoRoboBOX_RGB_IMAGE_BUILTINS_HELPURL="";r.Msg.CocoRoboBOX_RGB_IMAGE_SHIFT_MESSAGE0="Translation image %1 %2 %3 ";r.Msg.CocoRoboBOX_RGB_IMAGE_SHIFT_TOOLTIP="Move the image in a specific direction and return the result of the move.";r.Msg.CocoRoboBOX_RGB_IMAGE_SHIFT_HELPURL="";r.Msg.CocoRoboBOX_RGB_clear_HELPURL="";r.Msg.CocoRoboBOX_RGB_clear_MESSAGE0="Turn off all RGB";r.Msg.CocoRoboBOX_RGB_clear_TOOLTIP="";r.Msg.CocoRoboBOX_RGB_pixel_return_HELPURL="";r.Msg.CocoRoboBOX_RGB_pixel_return_MESSAGE0="Return %1 column %2 line colour";r.Msg.CocoRoboBOX_RGB_pixel_return_TOOLTIP="Return to the number of columns, row RGB color";r.Msg.CocoRoboBOX_TRIAXIAL_ACCELERATION_HELPURL="https://CocoRobo.readthedocs.io/zh/doc_CocoRobobox/CocoRobo_classroom_kit/lib/CocoRobo.html";r.Msg.CocoRoboBOX_TRIAXIAL_ACCELERATION_MESSAGE0="%1Triaxial acceleration";r.Msg.CocoRoboBOX_TRIAXIAL_ACCELERATION_TOOLTIP="Unit g, range-2~+2g。";r.Msg.CocoRoboBOX_TRIAXIAL_AUGULAR_VELOCITY_HELPURL="https://CocoRobo.readthedocs.io/zh/doc_CocoRobobox/CocoRobo_classroom_kit/lib/CocoRobo.html";r.Msg.CocoRoboBOX_TRIAXIAL_AUGULAR_VELOCITY_MESSAGE0="%1Triaxial angular velocity";r.Msg.CocoRoboBOX_TRIAXIAL_AUGULAR_VELOCITY_TOOLTIP="Range±500°/seconds";r.Msg.CocoRoboBOX_EULER_ANGLE_HELPURL="https://CocoRobo.readthedocs.io/zh/doc_CocoRobobox/CocoRobo_classroom_kit/lib/CocoRobo.html";r.Msg.CocoRoboBOX_EULER_ANGLE_MESSAGE0="%1Euler Angle";r.Msg.CocoRoboBOX_EULER_ANGLE_TOOLTIP="Returns the current euler Angle(Pitch,Roll,Yaw),Unit Angle";r.Msg.CocoRoboBOX_QUATERNION_HELPURL="https://CocoRobo.readthedocs.io/zh/doc_CocoRobobox/CocoRobo_classroom_kit/lib/CocoRobo.html";r.Msg.CocoRoboBOX_QUATERNION_MESSAGE0="%1quaternions";r.Msg.CocoRoboBOX_QUATERNION_TOOLTIP="Returns the current quaternion(w,x,y,z)";r.Msg.LIST_FIRST_INDEX_HELPURL="";r.Msg.LIST_FIRST_INDEX_MESSAGE0="Location of item%1 in list%2 %3";r.Msg.LIST_FIRST_INDEX_TOOLTIP="Returns the position where the specified string appears in the list %3";r.Msg.CocoRobo_AI_LCD_INIT_HELPURL="https://CocoRobo.readthedocs.io/zh/doc_CocoRobobox/CocoRobo_classroom_kit/lib/CocoRobo_classroom_kit.html#CocoRobo_classroom_kit.lcd.init";r.Msg.CocoRobo_AI_LCD_INIT_MESSAGE0="Screen Initialization ";r.Msg.CocoRobo_AI_LCD_INIT_TOOLTIP="";r.Msg.CocoRobo_AI_SENSOR_RESET_HELPURL="https://maixpy.sipeed.com/zh/libs/machine_vision/sensor.html#%E5%8D%95%E7%9B%AE%E6%91%84%E5%83%8F%E5%A4%B4%E9%87%8D%E7%BD%AE%E5%87%BD%E6%95%B0";r.Msg.CocoRobo_AI_SENSOR_RESET_MESSAGE0="Initialize the camera";r.Msg.CocoRobo_AI_SENSOR_RESET_TOOLTIP="";r.Msg.CocoRobo_AI_SENSOR_ENABLE_HELPURL="https://maixpy.sipeed.com/zh/libs/machine_vision/sensor.html#%E8%8E%B7%E5%8F%96%E5%9B%BE%E5%83%8F";r.Msg.CocoRobo_AI_SENSOR_ENABLE_MESSAGE0="Camera%1";r.Msg.CocoRobo_AI_SENSOR_ENABLE_TOOLTIP="";r.Msg.CocoRobo_AI_LCD_TEXT_HELPURL="https://maixpy.sipeed.com/zh/libs/machine_vision/lcd.html#%E4%BE%8B%E7%A8%8B-1%EF%BC%9A-%E6%98%BE%E7%A4%BA%E8%8B%B1%E6%96%87";r.Msg.CocoRobo_AI_LCD_TEXT_MESSAGE0="Display text x %1 y %2 content %3";r.Msg.CocoRobo_AI_LCD_TEXT_TOOLTIP="";r.Msg.CocoRobo_AI_SENSOR_SKIP_HELPURL="https://maixpy.sipeed.com/zh/libs/machine_vision/sensor.html#%E8%B7%B3%E5%B8%A7";r.Msg.CocoRobo_AI_SENSOR_SKIP_MESSAGE0="The number of frames skipped by the camera %1 Millisecond %2 ";r.Msg.CocoRobo_AI_SENSOR_SKIP_TOOLTIP="";r.Msg.CocoRobo_AI_SENSOR_RETURN_HELPURL="https://maixpy.sipeed.com/zh/libs/machine_vision/sensor.html#%E5%88%86%E8%BE%A8%E7%8E%87%E5%AE%BD%E5%BA%A6";r.Msg.CocoRobo_AI_SENSOR_RETURN_MESSAGE0="测 摄像头 获取%1";r.Msg.CocoRobo_AI_SENSOR_RETURN_TOOLTIP="";r.Msg.CocoRobo_AI_SENSOR_SETS_HELPURL="https://maixpy.sipeed.com/zh/libs/machine_vision/sensor.html#%E8%AE%BE%E7%BD%AE%E5%AF%B9%E6%AF%94%E5%BA%A6";r.Msg.CocoRobo_AI_SENSOR_SETS_MESSAGE0="Camera set %1 as %2";r.Msg.CocoRobo_AI_SENSOR_SETS_TOOLTIP="";r.Msg.CocoRobo_AI_SENSOR_AUTO_GAIN_HELPURL="https://maixpy.sipeed.com/zh/libs/machine_vision/sensor.html#%E8%AE%BE%E7%BD%AE%E8%87%AA%E5%8A%A8%E5%A2%9E%E7%9B%8A";r.Msg.CocoRobo_AI_SENSOR_AUTO_GAIN_MESSAGE0="Automatic gain of camera%1";r.Msg.CocoRobo_AI_SENSOR_AUTO_GAIN_TOOLTIP="";r.Msg.CocoRobo_AI_SENSOR_AUTO_WHITEBAL_HELPURL="https://maixpy.sipeed.com/zh/libs/machine_vision/sensor.html#%E8%AE%BE%E7%BD%AE%E8%87%AA%E5%8A%A8%E5%A2%9E%E7%9B%8A";r.Msg.CocoRobo_AI_SENSOR_AUTO_WHITEBAL_MESSAGE0="Camera White Balance%1";r.Msg.CocoRobo_AI_SENSOR_AUTO_WHITEBAL_TOOLTIP="";r.Msg.CocoRobo_AI_SENSOR_LEVEL_MI_HELPURL="https://maixpy.sipeed.com/zh/libs/machine_vision/sensor.html#%E8%AE%BE%E7%BD%AE%E6%B0%B4%E5%B9%B3%E9%95%9C%E5%83%8F";r.Msg.CocoRobo_AI_SENSOR_LEVEL_MI_MESSAGE0="Camera %1 %2";r.Msg.CocoRobo_AI_SENSOR_LEVEL_MI_TOOLTIP="";r.Msg.CocoRobo_AI_LCD_DISPLAY_HELPURL="https://CocoRobo.readthedocs.io/zh/doc_CocoRobobox/CocoRobo_classroom_kit/lib/CocoRobo_classroom_kit.html#CocoRobo_classroom_kit.lcd.display";r.Msg.CocoRobo_AI_LCD_DISPLAY_MESSAGE0="Screen display takes effect";r.Msg.CocoRobo_AI_LCD_DISPLAY_TOOLTIP="";r.Msg.CocoRobo_AI_LCD_DISPLAY_SIZE_HELPURL="https://CocoRobo.readthedocs.io/zh/doc_CocoRobobox/CocoRobo_classroom_kit/lib/CocoRobo_classroom_kit.html#CocoRobo_classroom_kit.lcd.display";r.Msg.CocoRobo_AI_LCD_DISPLAY_SIZE_MESSAGE0="Image display takes effect x%1 y%2 wide%3 high%4";r.Msg.CocoRobo_AI_LCD_DISPLAY_SIZE_TOOLTIP="";r.Msg.CocoRobo_AI_SENSOR_IMAGES_HELPURL="https://maixpy.sipeed.com/zh/libs/machine_vision/sensor.html#%E8%8E%B7%E5%8F%96%E5%9B%BE%E5%83%8F";r.Msg.CocoRobo_AI_SENSOR_IMAGES_MESSAGE0="Camera captures images";r.Msg.CocoRobo_AI_SENSOR_IMAGES_TOOLTIP="";r.Msg.CocoRobo_AI_IMAGE_FACEDETECT_HELPURL="https://maixpy.sipeed.com/zh/libs/Maix/kpu.html#%E8%BF%90%E8%A1%8Cyolo2%E7%BD%91%E7%BB%9C";r.Msg.CocoRobo_AI_IMAGE_FACEDETECT_MESSAGE0="Face recognition";r.Msg.CocoRobo_AI_IMAGE_FACEDETECT_TOOLTIP="";r.Msg.CocoRobo_AI_LCD_SHOW_REC_HELPURL="https://CocoRobo.readthedocs.io/zh/doc_CocoRobobox/CocoRobo_classroom_kit/lib/CocoRobo_classroom_kit.html#CocoRobo_classroom_kit.image.draw_rectangle";r.Msg.CocoRobo_AI_LCD_SHOW_REC_MESSAGE0="Rectangular%1 x%3 y%4 width%5 high%6 color R%7 G%8 B%9 coarsening%2";r.Msg.CocoRobo_AI_LCD_SHOW_REC_TOOLTIP="";r.Msg.CocoRobo_AI_LCD_SHOW_STRING_MESSAGE0="line x1%1 y1%2 reachx2%3 y2%4 Color isR%5 G%6 B%7 Thickening%8";r.Msg.CocoRobo_AI_LCD_SHOW_STRING_TOOLTIP="";r.Msg.CocoRobo_AI_LCD_SHOW_STRING_HELPURL="https://CocoRobo.readthedocs.io/zh/doc_CocoRobobox/CocoRobo_classroom_kit/lib/CocoRobo_classroom_kit.html#CocoRobo_classroom_kit.image.draw_rectangle";r.Msg.CocoRobo_AI_LCD_CLEAR_ALL_MESSAGE0="Clear screen display";r.Msg.CocoRobo_AI_LCD_CLEAR_ALL_TOOLTIP="";r.Msg.CocoRobo_AI_LCD_CLEAR_ALL_HELPURL="https://CocoRobo.readthedocs.io/zh/doc_CocoRobobox/CocoRobo_classroom_kit/lib/CocoRobo_classroom_kit.html#CocoRobo_classroom_kit.image.draw_rectangle";r.Msg.CocoRobo_AI_LCD_return_colour_MESSAGE0="LCD Return x%1 y%2 colour";r.Msg.CocoRobo_AI_LCD_return_colour_TOOLTIP="";r.Msg.CocoRobo_AI_LCD_return_colour_HELPURL="https://CocoRobo.readthedocs.io/zh/doc_CocoRobobox/CocoRobo_classroom_kit/lib/CocoRobo_classroom_kit.html#CocoRobo_classroom_kit.image.draw_rectangle";r.Msg.CocoRobo_AI_LCD_SHOW_CIRCLE_MESSAGE0="circular%1 x%2 y%3 radius%4 colour R%5 G%6 B%7 Thickening%8";r.Msg.CocoRobo_AI_LCD_SHOW_CIRCLE_TOOLTIP="";r.Msg.CocoRobo_AI_LCD_SHOW_CIRCLE_HELPURL="https://CocoRobo.readthedocs.io/zh/doc_CocoRobobox/CocoRobo_classroom_kit/lib/CocoRobo_classroom_kit.html#CocoRobo_classroom_kit.image.draw_rectangle";r.Msg.CocoRobo_AI_LCD_TEXT_MOST_HELPURL="https://CocoRobo.readthedocs.io/zh/doc_CocoRobobox/CocoRobo_classroom_kit/lib/CocoRobo_classroom_kit.html#CocoRobo_classroom_kit.image.draw_rectangle";r.Msg.CocoRobo_AI_LCD_TEXT_MOST_MESSAGE0="Display text x %1 y %2 content %3 colourR%4 G%5 B%6 size%7";r.Msg.CocoRobo_AI_LCD_TEXT_MOST_TOOLTIP="";r.Msg.CocoRobo_AI_LCD_SHOW_TEN_STRING_MESSAGE0="Cross line x%1 y%2 colourR%3 G%4 B%5 size%6 Thickening%7";r.Msg.CocoRobo_AI_LCD_SHOW_TEN_STRING_TOOLTIP="";r.Msg.CocoRobo_AI_LCD_SHOW_TEN_STRING_HELPURL="https://CocoRobo.readthedocs.io/zh/doc_CocoRobobox/CocoRobo_classroom_kit/lib/CocoRobo_classroom_kit.html#CocoRobo_classroom_kit.image.draw_rectangle";r.Msg.CocoRobo_AI_LCD_SHOW_ARROWS_MESSAGE0="Arrow x1%1 y1%2 x2%3 y2%4 colourR%5 G%6 B%7 Thickening%8";r.Msg.CocoRobo_AI_LCD_SHOW_ARROWS_TOOLTIP="";r.Msg.CocoRobo_AI_LCD_SHOW_ARROWS_HELPURL="https://CocoRobo.readthedocs.io/zh/doc_CocoRobobox/CocoRobo_classroom_kit/lib/CocoRobo_classroom_kit.html#CocoRobo_classroom_kit.image.draw_rectangle";r.Msg.CocoRobo_AI_LCD_SHOW_IMAGE_PIRCTURE_HELPURL=".https://CocoRobo.readthedocs.io/zh/doc_CocoRobobox/CocoRobo_classroom_kit/lib/CocoRobo_classroom_kit.html#CocoRobo_classroom_kit.lcd.display";r.Msg.CocoRobo_AI_LCD_SHOW_IMAGE_PIRCTURE_MESSAGE0="Display image path%1";r.Msg.CocoRobo_AI_LCD_SHOW_IMAGE_PIRCTURE_TOOLTIP="";r.Msg.CocoRobo_AI_LCD_SHOW_IMAGE_HEAT_HELPURL="https://CocoRobo.readthedocs.io/zh/doc_CocoRobobox/CocoRobo_classroom_kit/lib/CocoRobo_classroom_kit.html#CocoRobo_classroom_kit.image.invert";r.Msg.CocoRobo_AI_LCD_SHOW_IMAGE_HEAT_MESSAGE0="Image conversion to%1";r.Msg.CocoRobo_AI_LCD_SHOW_IMAGE_HEAT_TOOLTIP="";r.Msg.CocoRobo_AI_LCD_SHOW_IMAGE_DESCARTES_HELPURL="https://CocoRobo.readthedocs.io/zh/doc_CocoRobobox/CocoRobo_classroom_kit/lib/CocoRobo_classroom_kit.html#CocoRobo_classroom_kit.image.linpolar";r.Msg.CocoRobo_AI_LCD_SHOW_IMAGE_DESCARTES_MESSAGE0="Image from Cartesian coordinates to%1 Reprojection of coordinates %2";r.Msg.CocoRobo_AI_LCD_SHOW_IMAGE_DESCARTES_TOOLTIP="";r.Msg.CocoRobo_AI_LCD_SHOW_IMAGE_EROSION_HELPURL="https://CocoRobo.readthedocs.io/zh/doc_CocoRobobox/CocoRobo_classroom_kit/lib/CocoRobo_classroom_kit.html#CocoRobo_classroom_kit.image.dilate";r.Msg.CocoRobo_AI_LCD_SHOW_IMAGE_EROSION_MESSAGE0="Image Expansion Level%1";r.Msg.CocoRobo_AI_LCD_SHOW_IMAGE_EROSION_TOOLTIP="";r.Msg.CocoRobo_AI_LCD_SHOW_IMAGE_MIDDLE_HELPURL="https://CocoRobo.readthedocs.io/zh/doc_CocoRobobox/CocoRobo_classroom_kit/lib/CocoRobo_classroom_kit.html#CocoRobo_classroom_kit.image.midpoint";r.Msg.CocoRobo_AI_LCD_SHOW_IMAGE_MIDDLE_MESSAGE0="Image Point Filtering Level%1 Wave filtering%2";r.Msg.CocoRobo_AI_LCD_SHOW_IMAGE_MIDDLE_TOOLTIP="";r.Msg.CocoRobo_AI_LCD_SHOW_IMAGE_MODE_HELPURL="https://CocoRobo.readthedocs.io/zh/doc_CocoRobobox/CocoRobo_classroom_kit/lib/CocoRobo_classroom_kit.html#CocoRobo_classroom_kit.image.modehttps://CocoRobo.readthedocs.io/zh/doc_CocoRobobox/CocoRobo_classroom_kit/lib/CocoRobo_classroom_kit.html#CocoRobo_classroom_kit.image.mode";r.Msg.CocoRobo_AI_LCD_SHOW_IMAGE_MODE_MESSAGE0="Image Modal Filtering Level%1";r.Msg.CocoRobo_AI_LCD_SHOW_IMAGE_MODE_TOOLTIP="";r.Msg.CocoRobo_AI_LCD_SHOW_IMAGE_INDISTINCT_HELPURL="https://CocoRobo.readthedocs.io/zh/doc_CocoRobobox/CocoRobo_classroom_kit/lib/CocoRobo_classroom_kit.html#CocoRobo_classroom_kit.image.mean";r.Msg.CocoRobo_AI_LCD_SHOW_IMAGE_INDISTINCT_MESSAGE0="Image Fuzzy Filtering Level%1";r.Msg.CocoRobo_AI_LCD_SHOW_IMAGE_INDISTINCT_TOOLTIP="";r.Msg.CocoRobo_AI_LCD_SHOW_IMAGE_CARTOON_HELPURL="https://CocoRobo.readthedocs.io/zh/doc_CocoRobobox/CocoRobo_classroom_kit/lib/CocoRobo_classroom_kit.html#CocoRobo_classroom_kit.image.cartoon";r.Msg.CocoRobo_AI_LCD_SHOW_IMAGE_CARTOON_MESSAGE0="Image Cartoonization Level%1 Initial Pixel Difference%2 Adjacent pixel difference%3";r.Msg.CocoRobo_AI_LCD_SHOW_IMAGE_CARTOON_TOOLTIP="";r.Msg.CocoRobo_AI_LCD_SHOW_IMAGE_3D_HELPURL="https://CocoRobo.readthedocs.io/zh/doc_CocoRobobox/CocoRobo_classroom_kit/lib/CocoRobo_classroom_kit.html#CocoRobo_classroom_kit.image.rotation_corr";r.Msg.CocoRobo_AI_LCD_SHOW_IMAGE_3D_MESSAGE0="Image 3D Rotation Up and Down%1 Rotate left and right%2 degrees%3 or so move%4 up and down move%5 zoom%6";r.Msg.CocoRobo_AI_LCD_SHOW_IMAGE_3D_TOOLTIP="";r.Msg.CocoRobo_AI_LCD_SHOW_ECTYPE_HELPURL="https://CocoRobo.readthedocs.io/zh/doc_CocoRobobox/CocoRobo_classroom_kit/lib/CocoRobo_classroom_kit.html#CocoRobo_classroom_kit.image.copy";r.Msg.CocoRobo_AI_LCD_SHOW_ECTYPE_MESSAGE0="Save a copy of the image to the SD card image name%1 Image display area x%2 y%3 wide%4 high%5";r.Msg.CocoRobo_AI_LCD_SHOW_ECTYPE_TOOLTIP="";r.Msg.CocoRobo_AI_LCD_SHOW_ECTYPE_SHOW_HELPURL="https://CocoRobo.readthedocs.io/zh/doc_CocoRobobox/CocoRobo_classroom_kit/lib/CocoRobo_classroom_kit.html#CocoRobo_classroom_kit.image.save";r.Msg.CocoRobo_AI_LCD_SHOW_ECTYPE_SHOW_MESSAGE0="Create a copy of the image object to copy the image area x%1 y%2 wide%3 high%4";r.Msg.CocoRobo_AI_LCD_SHOW_ECTYPE_SHOW_TOOLTIP="";r.Msg.CocoRobo_AI2_20CLASS_TRACKING_HELPURL="https://CocoRobo.readthedocs.io/zh/doc_CocoRobobox/CocoRobo_classroom_kit/lib/CocoRobo_classroom_kit.html#CocoRobo_classroom_kit.model.select_model";r.Msg.CocoRobo_AI2_20CLASS_TRACKING_MESSAGE0="20 kinds of recognition";r.Msg.CocoRobo_AI2_20CLASS_TRACKING_TOOLTIP="";r.Msg.CocoRobo_AI2_NUMBER_DISCERN_HELPURL="https://CocoRobo.readthedocs.io/zh/doc_CocoRobobox/CocoRobo_classroom_kit/lib/CocoRobo_classroom_kit.html#CocoRobo_classroom_kit.model.select_model";r.Msg.CocoRobo_AI2_NUMBER_DISCERN_MESSAGE0="Handwritten Number Recognition";r.Msg.CocoRobo_AI2_NUMBER_DISCERN_TOOLTIP="";r.Msg.CocoRobo_AI_LCD_PIXEL_COLOUR_HELPURL="https://CocoRobo.readthedocs.io/zh/doc_CocoRobobox/CocoRobo_classroom_kit/lib/CocoRobo_classroom_kit.html?highlight=get_pixel#CocoRobo_classroom_kit.image.set_pixel";r.Msg.CocoRobo_AI_LCD_PIXEL_COLOUR_MESSAGE0="Screen x%1 y%2 Display color R%3 G%4 B%5";r.Msg.CocoRobo_AI_LCD_PIXEL_COLOUR_TOOLTIP="";r.Msg.CocoRobo_AI_LCD_COLOUR_HELPURL="https://CocoRobo.readthedocs.io/zh/doc_CocoRobobox/CocoRobo_classroom_kit/lib/CocoRobo_classroom_kit.html#CocoRobo_classroom_kit.lcd.clear";r.Msg.CocoRobo_AI_LCD_COLOUR_MESSAGE0="Screen Initialization Display Color R%1 G%2 B%3";r.Msg.CocoRobo_AI_LCD_COLOUR_TOOLTIP="";r.Msg.CocoRobo_AI_SENSOR_PATTERN_HELPURL="https://CocoRobo.readthedocs.io/zh/doc_CocoRobobox/CocoRobo_classroom_kit/lib/CocoRobo_classroom_kit.html#CocoRobo_classroom_kit.camera.set_pixformat";r.Msg.CocoRobo_AI_SENSOR_PATTERN_MESSAGE0="Initialize the camera, set pixel mode as %1";r.Msg.CocoRobo_AI_SENSOR_PATTERN_TOOLTIP="";r.Msg.CocoRobo_AI_TRACE_CILOR_DISPLAYTEN_HELPURL="";r.Msg.CocoRobo_AI_TRACE_CILOR_DISPLAYTEN_MESSAGE0="Tracking color display%1";r.Msg.CocoRobo_AI_TRACE_CILOR_DISPLAYTEN_TOOLTIP="";r.Msg.CocoRobo_AI2_FACE_TRACKING_HELPURL="https://CocoRobo.readthedocs.io/zh/doc_CocoRobobox/CocoRobo_classroom_kit/lib/CocoRobo_classroom_kit.html#CocoRobo_classroom_kit.model.select_model";r.Msg.CocoRobo_AI2_FACE_TRACKING_MESSAGE0='Set the training model to "Face ID"';r.Msg.CocoRobo_AI2_FACE_TRACKING_TOOLTIP="It can recognize and track faces, display face size and so on";r.Msg.CocoRobo_AI2_PHOTOGRAPH_TRACKING_HELPURL="https://CocoRobo.readthedocs.io/zh/doc_CocoRobobox/CocoRobo_classroom_kit/lib/CocoRobo_classroom_kit.html#CocoRobo_classroom_kit.model.select_model";r.Msg.CocoRobo_AI2_PHOTOGRAPH_TRACKING_MESSAGE0='Call the camera for "Face ID"';r.Msg.CocoRobo_AI2_PHOTOGRAPH_TRACKING_TOOLTIP="It can recognize and track faces, display face size and so on";r.Msg.CocoRobo_AI2_RESULT_FACE_HELPURL="https://CocoRobo.readthedocs.io/zh/doc_CocoRobobox/CocoRobo_classroom_kit/lib/CocoRobo_classroom_kit.html#CocoRobo_classroom_kit.model.select_model";r.Msg.CocoRobo_AI2_RESULT_FACE_MESSAGE0='Get the recognition result of "Face ID"';r.Msg.CocoRobo_AI2_RESULT_FACE_TOOLTIP="After acquisition and identification All the parameters";r.Msg.CocoRobo_AI2_RESULT_FACE_X_HELPURL="https://CocoRobo.readthedocs.io/zh/doc_CocoRobobox/CocoRobo_classroom_kit/lib/CocoRobo_classroom_kit.html#CocoRobo_classroom_kit.model.select_model";r.Msg.CocoRobo_AI2_RESULT_FACE_X_MESSAGE0='Get the X coordinate of the "Face ID" result';r.Msg.CocoRobo_AI2_RESULT_FACE_X_TOOLTIP="After acquisition and identification x coordinates";r.Msg.CocoRobo_AI2_RESULT_FACE_Y_HELPURL="https://CocoRobo.readthedocs.io/zh/doc_CocoRobobox/CocoRobo_classroom_kit/lib/CocoRobo_classroom_kit.html#CocoRobo_classroom_kit.model.select_model";r.Msg.CocoRobo_AI2_RESULT_FACE_Y_MESSAGE0='Get the Y coordinate of the "Face ID" result';r.Msg.CocoRobo_AI2_RESULT_FACE_Y_TOOLTIP="After acquisition and identification y coordinates";r.Msg.CocoRobo_AI2_RESULT_FACE_W_HELPURL="https://CocoRobo.readthedocs.io/zh/doc_CocoRobobox/CocoRobo_classroom_kit/lib/CocoRobo_classroom_kit.html#CocoRobo_classroom_kit.model.select_model";r.Msg.CocoRobo_AI2_RESULT_FACE_W_MESSAGE0='Get the width of the "Face ID" result';r.Msg.CocoRobo_AI2_RESULT_FACE_W_TOOLTIP="After acquisition and identification width";r.Msg.CocoRobo_AI2_RESULT_FACE_H_HELPURL="https://CocoRobo.readthedocs.io/zh/doc_CocoRobobox/CocoRobo_classroom_kit/lib/CocoRobo_classroom_kit.html#CocoRobo_classroom_kit.model.select_model";r.Msg.CocoRobo_AI2_RESULT_FACE_H_MESSAGE0='Get the height of the "Face ID" result';r.Msg.CocoRobo_AI2_RESULT_FACE_H_TOOLTIP="After acquisition and identification height";r.Msg.CocoRobo_AI2_RESULT_FACE_VALUE_HELPURL="https://CocoRobo.readthedocs.io/zh/doc_CocoRobobox/CocoRobo_classroom_kit/lib/CocoRobo_classroom_kit.html#CocoRobo_classroom_kit.model.select_model";r.Msg.CocoRobo_AI2_RESULT_FACE_VALUE_MESSAGE0='Get the confidence of the "Face ID" result';r.Msg.CocoRobo_AI2_RESULT_FACE_VALUE_TOOLTIP="After acquisition and identification Confidence";r.Msg.CocoRobo_AI2_RESULT_FACE_OBJNUM_HELPURL="https://CocoRobo.readthedocs.io/zh/doc_CocoRobobox/CocoRobo_classroom_kit/lib/CocoRobo_classroom_kit.html#CocoRobo_classroom_kit.model.select_model";r.Msg.CocoRobo_AI2_RESULT_FACE_OBJNUM_MESSAGE0='Get the object count of the "Face ID" result';r.Msg.CocoRobo_AI2_RESULT_FACE_OBJNUM_TOOLTIP="After acquisition and identification number";r.Msg.CocoRobo_AI2_20class_TRACKING_HELPURL="https://CocoRobo.readthedocs.io/zh/doc_CocoRobobox/CocoRobo_classroom_kit/lib/CocoRobo_classroom_kit.html#CocoRobo_classroom_kit.model.select_model";r.Msg.CocoRobo_AI2_20class_TRACKING_MESSAGE0='Set the training model to "20 Class ID"';r.Msg.CocoRobo_AI2_20class_TRACKING_TOOLTIP="Can identify 20 types, respectively are 0-19 for aircraft, bicycle, bird, boat, bottle, bus, car, cat, chair, cow, dining table, dog, house, motorcycle, person, potted plant, sheep, sofa, train, TV";r.Msg.CocoRobo_AI2_PHOTOGRAPH_20TRACKING_HELPURL="https://CocoRobo.readthedocs.io/zh/doc_CocoRobobox/CocoRobo_classroom_kit/lib/CocoRobo_classroom_kit.html#CocoRobo_classroom_kit.model.select_model";r.Msg.CocoRobo_AI2_PHOTOGRAPH_20TRACKING_MESSAGE0='Call the camera for "20 Class ID"';r.Msg.CocoRobo_AI2_PHOTOGRAPH_20TRACKING_TOOLTIP="";r.Msg.CocoRobo_AI2_RESULT_20CLASS_HELPURL="https://CocoRobo.readthedocs.io/zh/doc_CocoRobobox/CocoRobo_classroom_kit/lib/CocoRobo_classroom_kit.html#CocoRobo_classroom_kit.model.select_model";r.Msg.CocoRobo_AI2_RESULT_20CLASS_MESSAGE0='Get the recognition result of "20 Class ID"';r.Msg.CocoRobo_AI2_RESULT_20CLASS_TOOLTIP="After acquisition and identification All the parameters";r.Msg.CocoRobo_AI2_RESULT_20CLASS_X_HELPURL="https://CocoRobo.readthedocs.io/zh/doc_CocoRobobox/CocoRobo_classroom_kit/lib/CocoRobo_classroom_kit.html#CocoRobo_classroom_kit.model.select_model";r.Msg.CocoRobo_AI2_RESULT_20CLASS_X_MESSAGE0='Get the X coordinate of the "20 Class ID" result';r.Msg.CocoRobo_AI2_RESULT_20CLASS_X_TOOLTIP="After acquisition and identification x coordinates";r.Msg.CocoRobo_AI2_RESULT_20CLASS_Y_HELPURL="https://CocoRobo.readthedocs.io/zh/doc_CocoRobobox/CocoRobo_classroom_kit/lib/CocoRobo_classroom_kit.html#CocoRobo_classroom_kit.model.select_model";r.Msg.CocoRobo_AI2_RESULT_20CLASS_Y_MESSAGE0='Get the Y coordinate of the "20 Class ID" result';r.Msg.CocoRobo_AI2_RESULT_20CLASS_Y_TOOLTIP="After acquisition and identification y coordinates";r.Msg.CocoRobo_AI2_RESULT_20CLASS_W_HELPURL="https://CocoRobo.readthedocs.io/zh/doc_CocoRobobox/CocoRobo_classroom_kit/lib/CocoRobo_classroom_kit.html#CocoRobo_classroom_kit.model.select_model";r.Msg.CocoRobo_AI2_RESULT_20CLASS_W_MESSAGE0='Get the width of the "20 Class ID" result';r.Msg.CocoRobo_AI2_RESULT_20CLASS_W_TOOLTIP="After acquisition and identification width";r.Msg.CocoRobo_AI2_RESULT_20CLASS_H_HELPURL="https://CocoRobo.readthedocs.io/zh/doc_CocoRobobox/CocoRobo_classroom_kit/lib/CocoRobo_classroom_kit.html#CocoRobo_classroom_kit.model.select_model";r.Msg.CocoRobo_AI2_RESULT_20CLASS_H_MESSAGE0='Get the height of the "20 Class ID" result';r.Msg.CocoRobo_AI2_RESULT_20CLASS_H_TOOLTIP="After acquisition and identification height";r.Msg.CocoRobo_AI2_RESULT_20CLASS_VALUE_HELPURL="https://CocoRobo.readthedocs.io/zh/doc_CocoRobobox/CocoRobo_classroom_kit/lib/CocoRobo_classroom_kit.html#CocoRobo_classroom_kit.model.select_model";r.Msg.CocoRobo_AI2_RESULT_20CLASS_VALUE_MESSAGE0='Get the confidence of the "20 Class ID" result';r.Msg.CocoRobo_AI2_RESULT_20CLASS_VALUE_TOOLTIP="After acquisition and identification Confidence";r.Msg.CocoRobo_AI2_RESULT_20CLASS_OBJNUM_HELPURL="https://CocoRobo.readthedocs.io/zh/doc_CocoRobobox/CocoRobo_classroom_kit/lib/CocoRobo_classroom_kit.html#CocoRobo_classroom_kit.model.select_model";r.Msg.CocoRobo_AI2_RESULT_20CLASS_OBJNUM_MESSAGE0='Get the object count of the "20 Class ID" result';r.Msg.CocoRobo_AI2_RESULT_20CLASS_OBJNUM_TOOLTIP="After acquisition and identification number";r.Msg.CocoRobo_AI2_RESULT_20CLASS_CLASSID_HELPURL="https://CocoRobo.readthedocs.io/zh/doc_CocoRobobox/CocoRobo_classroom_kit/lib/CocoRobo_classroom_kit.html#CocoRobo_classroom_kit.model.select_model";r.Msg.CocoRobo_AI2_RESULT_20CLASS_CLASSID_MESSAGE0='Get the type name of the "20 Class ID" result';r.Msg.CocoRobo_AI2_RESULT_20CLASS_CLASSID_TOOLTIP="Can identify 20 types, respectively are 0-19 for aircraft, bicycle, bird, boat, bottle, bus, car, cat, chair, cow, dining table, dog, house, motorcycle, person, potted plant, sheep, sofa, train, TV";r.Msg.CocoRobo_AI2_RESULT_20CLASS_INDEX_HELPURL="https://CocoRobo.readthedocs.io/zh/doc_CocoRobobox/CocoRobo_classroom_kit/lib/CocoRobo_classroom_kit.html#CocoRobo_classroom_kit.model.select_model";r.Msg.CocoRobo_AI2_RESULT_20CLASS_INDEX_MESSAGE0='Get the type count of the "20 Class ID" result';r.Msg.CocoRobo_AI2_RESULT_20CLASS_INDEX_TOOLTIP="After acquisition and identification type number";r.Msg.CocoRobo_AI2_NUMBER_DISCERN_HELPURL="https://CocoRobo.readthedocs.io/zh/doc_CocoRobobox/CocoRobo_classroom_kit/lib/CocoRobo_classroom_kit.html#CocoRobo_classroom_kit.model.select_model";r.Msg.CocoRobo_AI2_NUMBER_DISCERN_MESSAGE0='Set the training model to "Number ID"';r.Msg.CocoRobo_AI2_NUMBER_DISCERN_TOOLTIP="Select training model handwritten numerals";r.Msg.CocoRobo_AI2_RESULT_NUMBER_DISCERN_HELPURL="https://CocoRobo.readthedocs.io/zh/doc_CocoRobobox/CocoRobo_classroom_kit/lib/CocoRobo_classroom_kit.html#CocoRobo_classroom_kit.model.select_model";r.Msg.CocoRobo_AI2_RESULT_NUMBER_DISCERN_MESSAGE0='Call the camera for "Number ID"';r.Msg.CocoRobo_AI2_RESULT_NUMBER_DISCERN_TOOLTIP="Call camera identification";r.Msg.CocoRobo_AI2_NUMBER_DETECT_ALL_HELPURL="https://CocoRobo.readthedocs.io/zh/doc_CocoRobobox/CocoRobo_classroom_kit/lib/CocoRobo_classroom_kit.html#id2";r.Msg.CocoRobo_AI2_NUMBER_DETECT_ALL_MESSAGE0='Get the recognition result of "Number ID"';r.Msg.CocoRobo_AI2_NUMBER_DETECT_ALL_TOOLTIP="Handwritten digit recognition parameters";r.Msg.CocoRobo_AI2_NUMBER_DETECT_NUMBER_HELPURL="https://CocoRobo.readthedocs.io/zh/doc_CocoRobobox/CocoRobo_classroom_kit/lib/CocoRobo_classroom_kit.html#id2";r.Msg.CocoRobo_AI2_NUMBER_DETECT_NUMBER_MESSAGE0='Get the digital of the "Number ID" result';r.Msg.CocoRobo_AI2_NUMBER_DETECT_NUMBER_TOOLTIP="Handwritten digits recognize Numbers";r.Msg.CocoRobo_AI2_NUMBER_DETECT_ADIENCE_HELPURL="https://CocoRobo.readthedocs.io/zh/doc_CocoRobobox/CocoRobo_classroom_kit/lib/CocoRobo_classroom_kit.html#id2";r.Msg.CocoRobo_AI2_NUMBER_DETECT_ADIENCE_MESSAGE0='Get the confidence of the "Number ID" result';r.Msg.CocoRobo_AI2_NUMBER_DETECT_ADIENCE_TOOLTIP="Handwritten digit recognition digital confidence";r.Msg.CocoRobo_AI_TRACE_COLOR_HELPURL="https://CocoRobo.readthedocs.io/zh/doc_CocoRobobox/CocoRobo_classroom_kit/lib/CocoRobo_classroom_kit.html#CocoRobo_classroom_kit.image.find_blobs";r.Msg.CocoRobo_AI_TRACE_COLOR_MESSAGE0="Trace color block LAB color %1 bounding box less than %2 pixels less than %3 filter";r.Msg.CocoRobo_AI_TRACE_COLOR_TOOLTIP="Track the color piece";r.Msg.CocoRobo_AI_TRACE_CILOR_DISPLAYTEN_HELPURL="";r.Msg.CocoRobo_AI_TRACE_CILOR_DISPLAYTEN_MESSAGE0="Trace color display%1";r.Msg.CocoRobo_AI_TRACE_CILOR_DISPLAYTEN_TOOLTIP="";r.Msg.CocoRobo_AI_BLOB_ALL_HELPURL="https://CocoRobo.readthedocs.io/zh/doc_CocoRobobox/CocoRobo_classroom_kit/lib/CocoRobo_classroom_kit.html#blob";r.Msg.CocoRobo_AI_BLOB_ALL_MESSAGE0="Color piece block all parameters";r.Msg.CocoRobo_AI_BLOB_ALL_TOOLTIP="Returns blob class -- a color block object";r.Msg.CocoRobo_AI_BLOB_X_HELPURL="https://CocoRobo.readthedocs.io/zh/doc_CocoRobobox/CocoRobo_classroom_kit/lib/CocoRobo_classroom_kit.html#blob";r.Msg.CocoRobo_AI_BLOB_X_MESSAGE0="Color piece x coordinates";r.Msg.CocoRobo_AI_BLOB_X_TOOLTIP="Returns blob class -- a color block object";r.Msg.CocoRobo_AI_BLOB_Y_HELPURL="https://CocoRobo.readthedocs.io/zh/doc_CocoRobobox/CocoRobo_classroom_kit/lib/CocoRobo_classroom_kit.html#blob";r.Msg.CocoRobo_AI_BLOB_Y_MESSAGE0="Color piece y coordinates";r.Msg.CocoRobo_AI_BLOB_Y_TOOLTIP="Returns blob class -- a color block object";r.Msg.CocoRobo_AI_BLOB_W_HELPURL="https://CocoRobo.readthedocs.io/zh/doc_CocoRobobox/CocoRobo_classroom_kit/lib/CocoRobo_classroom_kit.html#blob";r.Msg.CocoRobo_AI_BLOB_W_MESSAGE0="Color piece width";r.Msg.CocoRobo_AI_BLOB_W_TOOLTIP="Returns blob class -- a color block object";r.Msg.CocoRobo_AI_BLOB_H_HELPURL="https://CocoRobo.readthedocs.io/zh/doc_CocoRobobox/CocoRobo_classroom_kit/lib/CocoRobo_classroom_kit.html#blob";r.Msg.CocoRobo_AI_BLOB_H_MESSAGE0="Color piece height";r.Msg.CocoRobo_AI_BLOB_H_TOOLTIP="Returns blob class -- a color block object";r.Msg.CocoRobo_AI_BLOB_NUMBER_HELPURL="https://CocoRobo.readthedocs.io/zh/doc_CocoRobobox/CocoRobo_classroom_kit/lib/CocoRobo_classroom_kit.html#blob";r.Msg.CocoRobo_AI_BLOB_NUMBER_MESSAGE0="Color piece number";r.Msg.CocoRobo_AI_BLOB_NUMBER_TOOLTIP="Returns blob class -- a color block object";r.Msg.CocoRobo_AI_BLOB_CENTER_X_HELPURL="https://CocoRobo.readthedocs.io/zh/doc_CocoRobobox/CocoRobo_classroom_kit/lib/CocoRobo_classroom_kit.html#blob";r.Msg.CocoRobo_AI_BLOB_CENTER_X_MESSAGE0="Color piece center x coordinates";r.Msg.CocoRobo_AI_BLOB_CENTER_X_TOOLTIP="Returns blob class -- a color block object";r.Msg.CocoRobo_AI_BLOB_CENTER_Y_HELPURL="https://CocoRobo.readthedocs.io/zh/doc_CocoRobobox/CocoRobo_classroom_kit/lib/CocoRobo_classroom_kit.html#blob";r.Msg.CocoRobo_AI_BLOB_CENTER_Y_MESSAGE0="Color piece center y coordinates";r.Msg.CocoRobo_AI_BLOB_CENTER_Y_TOOLTIP="Returns blob class -- a color block object";r.Msg.CocoRobo_AI_BLOB_ORTHOGON_HELPURL="https://CocoRobo.readthedocs.io/zh/doc_CocoRobobox/CocoRobo_classroom_kit/lib/CocoRobo_classroom_kit.html#blob";r.Msg.CocoRobo_AI_BLOB_ORTHOGON_MESSAGE0="Color piece rectangular";r.Msg.CocoRobo_AI_BLOB_ORTHOGON_TOOLTIP="Returns blob class -- a color block object";r.Msg.CocoRobo_DRILL_WEIGHT_MESSAGE0="Initialize training%1";r.Msg.CocoRobo_DRILL_WEIGHT_TOOLTIP="";r.Msg.CocoRobo_DRILL_WEIGHT_HELPURL="";r.Msg.CocoRobo_DRILL_LINEAR_REGRESSION_HELPURL="";r.Msg.CocoRobo_DRILL_LINEAR_REGRESSION_MESSAGE0="Instantiate the linear regression line";r.Msg.CocoRobo_DRILL_LINEAR_REGRESSION_TOOLTIP="";r.Msg.CocoRobo_DRILL_TITLE_HELPURL="";r.Msg.CocoRobo_DRILL_TITLE_MESSAGE0=" title%1 size%2";r.Msg.CocoRobo_DRILL_TITLE_TOOLTIP="";r.Msg.CocoRobo_DRILL_LABEL_HELPURL="";r.Msg.CocoRobo_DRILL_LABEL_MESSAGE0="Label%1 title%2 size%3";r.Msg.CocoRobo_DRILL_LABEL_TOOLTIP="";r.Msg.CocoRobo_DRILL_DRILL_REALITY_HELPURL="";r.Msg.CocoRobo_DRILL_DRILL_REALITY_MESSAGE0="Real data lines Sign marks%1 The color of r%2 g%3 b%4 title%5";r.Msg.CocoRobo_DRILL_DRILL_REALITY_TOOLTIP="";r.Msg.CocoRobo_DRILL_PREDICTED_REALITY_HELPURL="";r.Msg.CocoRobo_DRILL_PREDICTED_REALITY_MESSAGE0="Predict linear regression lines Sign marks%1 The color of r%2 g%3 b%4 title%5";r.Msg.CocoRobo_DRILL_PREDICTED_REALITY_TOOLTIP="";r.Msg.CocoRobo_DRILL_LEGEND_HELPURL="";r.Msg.CocoRobo_DRILL_LEGEND_MESSAGE0="Show legend";r.Msg.CocoRobo_DRILL_LEGEND_TOOLTIP="";r.Msg.CocoRobo_DRILL_SHOW_HELPURL="";r.Msg.CocoRobo_DRILL_SHOW_MESSAGE0="Display images";r.Msg.CocoRobo_DRILL_SHOW_TOOLTIP="";r.Msg.CocoRobo_DRILL_DRILL_PRINT_HELPURL="";r.Msg.CocoRobo_DRILL_DRILL_PRINT_MESSAGE0="Returns the corresponding key value%1";r.Msg.CocoRobo_DRILL_DRILL_PRINT_TOOLTIP="";r.Msg.CocoRoboS_FLOWER_DE_LUCE_INITIALIZE_HELPURL="";r.Msg.CocoRoboS_FLOWER_DE_LUCE_INITIALIZE_MESSAGE0="Initialize Iris dataset";r.Msg.CocoRoboS_FLOWER_DE_LUCE_INITIALIZE_TOOLTIP="";r.Msg.CocoRoboS_FLOWER_DE_LUCE_PCA_HELPURL="";r.Msg.CocoRoboS_FLOWER_DE_LUCE_PCA_MESSAGE0="Flower-de-luce Principal component analysis";r.Msg.CocoRoboS_FLOWER_DE_LUCE_PCA_TOOLTIP="";r.Msg.CocoRoboS_FLOWER_DE_LUCE_FA3D_HELPURL="";r.Msg.CocoRoboS_FLOWER_DE_LUCE_FA3D_MESSAGE0="Flower-de-luce Factor analysis 3D";r.Msg.CocoRoboS_FLOWER_DE_LUCE_FA3D_TOOLTIP="";r.Msg.CocoRoboS_FLOWER_DE_LUCE_FA_HELPURL="";r.Msg.CocoRoboS_FLOWER_DE_LUCE_FA_MESSAGE0="Flower-de-luce Factor analysis";r.Msg.CocoRoboS_FLOWER_DE_LUCE_FA_TOOLTIP="";r.Msg.CocoRoboS_FLOWER_DE_LUCE_PCA_DISPLAY_HELPURL="";r.Msg.CocoRoboS_FLOWER_DE_LUCE_PCA_DISPLAY_MESSAGE0="Predicting graphic flower-de-luce type%1 Render content x%3 y%4 Present species%2 color r%5 g%6 b%7 title%8 upward merge%9";r.Msg.CocoRoboS_FLOWER_DE_LUCE_PCA_DISPLAY_TOOLTIP="";r.Msg.CocoRoboS_FLOWER_DE_LUCE_DATA_HELPURL="";r.Msg.CocoRoboS_FLOWER_DE_LUCE_DATA_MESSAGE0="Predicting graphic Render content x%1 y%2 Present species%3 color r%4 g%5 b%6 title%7";r.Msg.CocoRoboS_FLOWER_DE_LUCE_DATA_TOOLTIP="";r.Msg.CocoRoboS_FLOWER_DE_LUCE_DATA3D_HELPURL="";r.Msg.CocoRoboS_FLOWER_DE_LUCE_DATA3D_MESSAGE0="3D Predicting graphic Render content x%1 y%2 z%3 color r%4 g%5 b%6 title%7";r.Msg.CocoRoboS_FLOWER_DE_LUCE_DATA3D_TOOLTIP="";r.Msg.CocoRoboS_FLOWER_DE_LUCE_TITLE_HELPURL="";r.Msg.CocoRoboS_FLOWER_DE_LUCE_TITLE_MESSAGE0=" Title%1 size%2";r.Msg.CocoRoboS_FLOWER_DE_LUCE_TITLE_TOOLTIP="";r.Msg.CocoRoboS_FLOWER_DE_LUCE_LABEL_HELPURL="";r.Msg.CocoRoboS_FLOWER_DE_LUCE_LABEL_MESSAGE0="Label%1 title%2 size%3";r.Msg.CocoRoboS_FLOWER_DE_LUCE_LABEL_TOOLTIP="";r.Msg.CocoRoboS_FLOWER_DE_LUCE_TITLE3D_HELPURL="";r.Msg.CocoRoboS_FLOWER_DE_LUCE_TITLE3D_MESSAGE0="3D title%1 size%2";r.Msg.CocoRoboS_FLOWER_DE_LUCE_TITLE3D_TOOLTIP="";r.Msg.CocoRoboS_FLOWER_DE_LUCE_LABEL3D_HELPURL="";r.Msg.CocoRoboS_FLOWER_DE_LUCE_LABEL3D_MESSAGE0="3D label%1 title%2 size%3";r.Msg.CocoRoboS_FLOWER_DE_LUCE_LABEL3D_TOOLTIP="";r.Msg.CocoRoboS_FLOWER_DE_LUCE_LEGEND_HELPURL="";r.Msg.CocoRoboS_FLOWER_DE_LUCE_LEGEND_MESSAGE0="Show legend";r.Msg.CocoRoboS_FLOWER_DE_LUCE_LEGEND_TOOLTIP="";r.Msg.CocoRoboS_FLOWER_DE_LUCE_SHOW_HELPURL="";r.Msg.CocoRoboS_FLOWER_DE_LUCE_SHOW_MESSAGE0="Display images";r.Msg.CocoRoboS_FLOWER_DE_LUCE_SHOW_TOOLTIP="";r.Msg.CocoRoboS_FLOWER_DE_LUCE_LOAD_IRIS_HELPURL="";r.Msg.CocoRoboS_FLOWER_DE_LUCE_LOAD_IRIS_MESSAGE0="X and y coordinates of calyx and petals";r.Msg.CocoRoboS_FLOWER_DE_LUCE_LOAD_IRIS_TOOLTIP="There are 150 records, representing 50 Iris-setosa, Iris-versicolor and Iris-virginica respectively";r.Msg.CocoRoboS_FLOWER_DE_LUCE_Iris_setosa="Iris setosa";r.Msg.CocoRoboS_FLOWER_DE_LUCE_Iris_versicolor="Iris versicolor";r.Msg.CocoRoboS_FLOWER_DE_LUCE_Iris_virginica="Iris virginica";r.Msg.CocoRoboS_FLOWER_DE_LUCE_scatter_diagram="Scatter diagram";r.Msg.CocoRoboS_FLOWER_DE_LUCE_kde_diagram="Kde diagram";r.Msg.CocoRoboS_FLOWER_DE_LUCE_box_diagram="Box diagram";r.Msg.CocoRoboS_FLOWER_DE_LUCE_merge="Merge";r.Msg.CocoRoboS_FLOWER_DE_LUCE_not_merge="Don it merge";r.Msg.CocoRoboS_FLOWER_DE_LUCE_calyx_length="Calyx length";r.Msg.CocoRoboS_FLOWER_DE_LUCE_calyx_width="Calyx width";r.Msg.CocoRoboS_FLOWER_DE_LUCE_petal_length="Petal length";r.Msg.CocoRoboS_FLOWER_DE_LUCE_petal_width="Petal width";r.Msg.CocoRobo_DRILL_DRILL_full_line="Full line";r.Msg.CocoRobo_DRILL_DRILL_dash_line="Dash line";r.Msg.CocoRobo_DRILL_DRILL_chain_line="Chain line";r.Msg.CocoRobo_DRILL_DRILL_imaginary_line="Imaginary line";r.Msg.CocoRobo_DRILL_DRILL_dot="Dot";r.Msg.CocoRobo_DRILL_DRILL_pixel="Pixel";r.Msg.CocoRobo_DRILL_DRILL_solid_rim="Solid rim";r.Msg.CocoRobo_DRILL_DRILL_down_triangle="Down triangle";r.Msg.CocoRobo_DRILL_DRILL_up_triangle="Up triangle";r.Msg.CocoRobo_DRILL_DRILL_right_triangle="Right triangle";r.Msg.CocoRobo_DRILL_DRILL_left_triangle="Left triangle";r.Msg.CocoRobo_DRILL_DRILL_down_flower_triangle="Down flower triangle";r.Msg.CocoRobo_DRILL_DRILL_up_flower_triangle="Up flower triangle";r.Msg.CocoRobo_DRILL_DRILL_right_flower_triangle="Right flower triangle";r.Msg.CocoRobo_DRILL_DRILL_left_flower_triangle="Left flower triangle";r.Msg.CocoRobo_DRILL_DRILL_solid_square="Solid square";r.Msg.CocoRobo_DRILL_DRILL_solid_pentagon="Solid pentagon";r.Msg.CocoRobo_DRILL_DRILL_star="Star";r.Msg.CocoRobo_DRILL_DRILL_vertical_hexagon="Vertical hexagon";r.Msg.CocoRobo_DRILL_DRILL_across_hexagon="Across hexagon";r.Msg.CocoRobo_DRILL_DRILL_cross="Cross";r.Msg.CocoRobo_DRILL_DRILL_X="X";r.Msg.CocoRobo_DRILL_DRILL_rhombus="Rhombus";r.Msg.CocoRobo_DRILL_DRILL_thin_rhombus="Thin rhombus";r.Msg.CocoRobo_DRILL_DRILL_vertical_line="Vertical line";r.Msg.CocoRoboS_CONVERT_PICTURE_HELPURL=" ";r.Msg.CocoRoboS_CONVERT_PICTURE_MESSAGE0=" Vonvert image to 28 ^ 2 binary image %1 pending image storage path %2 processed image storage path %3 format %4";r.Msg.CocoRoboS_CONVERT_PICTURE_TOOLTIP="Control board passes WIF to voice assistant via serial port ";r.Msg.CocoRoboS_NUMBER_REPERTOIRE_HELPURL=" ";r.Msg.CocoRoboS_NUMBER_REPERTOIRE_MESSAGE0=" find parse handwritten numeric data store path %1";r.Msg.CocoRoboS_NUMBER_REPERTOIRE_TOOLTIP="Use handwritten number library ";r.Msg.CocoRoboS_SHOW_NUMBER_PATH_HELPURL=" ";r.Msg.CocoRoboS_SHOW_NUMBER_PATH_MESSAGE0=" handwritten digital image storage path %1";r.Msg.CocoRoboS_SHOW_NUMBER_PATH_TOOLTIP="Path of handwritten digital image ";r.Msg.CocoRoboS_SHOW_NUMBER_HELPURL=" ";r.Msg.CocoRoboS_SHOW_NUMBER_MESSAGE0=" display handwritten digital image ";r.Msg.CocoRoboS_SHOW_NUMBER_TOOLTIP="Display handwritten digital image ";r.Msg.CocoRoboS_NUMBER_RECOGNITION_HELPURL=" ";r.Msg.CocoRoboS_NUMBER_RECOGNITION_MESSAGE0=" identify handwritten digital image storage path %1";r.Msg.CocoRoboS_NUMBER_RECOGNITION_TOOLTIP="Path to recognize handwritten digital image ";r.Msg.CocoRoboS_NUMBER_PLACEHOLDER_HELPURL=" ";r.Msg.CocoRoboS_NUMBER_PLACEHOLDER_MESSAGE0=" create variable %1 initialize neural network tensor variable name %2";r.Msg.CocoRoboS_NUMBER_PLACEHOLDER_TOOLTIP=" ";r.Msg.CocoRobo_DRILL_RESHAPE_MESSAGE0="Create variable %1 and convert the input photo variable %2 into neural network output tensor %3";r.Msg.CocoRobo_DRILL_RESHAPE_TOOLTIP=" ";r.Msg.CocoRobo_DRILL_RESHAPE_HELPURL=" ";r.Msg.CocoRobo_NUMBER_CONV_WEIGHT_MESSAGE0="Create variable %1 Shared variable name %2 initialization mode %3";r.Msg.CocoRobo_NUMBER_CONV_WEIGHT_TOOLTIP=" ";r.Msg.CocoRobo_NUMBER_CONV_WEIGHT_HELPURL=" ";r.Msg.CocoRobo_NUMBER_INITIALIZER_MESSAGE0="Produce truncated normal distribution random number output tensor %1 standard deviation %2";r.Msg.CocoRobo_NUMBER_INITIALIZER_TOOLTIP=" ";r.Msg.CocoRobo_NUMBER_INITIALIZER_HELPURL=" ";r.Msg.CocoRobo_NUMBER_CONSTANT_MESSAGE0="Create constant value %1 output tensor %2";r.Msg.CocoRobo_NUMBER_CONSTANT_TOOLTIP=" ";r.Msg.CocoRobo_NUMBER_CONSTANT_HELPURL=" ";r.Msg.CocoRobo_NUMBER_CONV2D_MESSAGE0="Neural network output tensor %1 Shared variable %2 step size %3 fill %4";r.Msg.CocoRobo_NUMBER_CONV2D_TOOLTIP=" ";r.Msg.CocoRobo_NUMBER_CONV2D_HELPURL=" ";r.Msg.CocoRobo_NUMBER_CONV_BIASES_MESSAGE0="Tensor %1";r.Msg.CocoRobo_NUMBER_CONV_BIASES_TOOLTIP=" ";r.Msg.CocoRobo_NUMBER_CONV_BIASES_HELPURL=" ";r.Msg.CocoRobo_NUMBER_CONV_CONV2D_MESSAGE0="Convolution two-dimensional variable %1 %2";r.Msg.CocoRobo_NUMBER_CONV_CONV2D_TOOLTIP=" ";r.Msg.CocoRobo_NUMBER_CONV_CONV2D_HELPURL=" ";r.Msg.CocoRobo_NUMBER_RELU_MESSAGE0="Create variable %1 Relu forward drive function convolution 2d layer %2";r.Msg.CocoRobo_NUMBER_RELU_TOOLTIP=" ";r.Msg.CocoRobo_NUMBER_RELU_HELPURL=" ";r.Msg.CocoRobo_NUMBER_MAX_POOL_MESSAGE0="Pooling 2d layer variable %1 convolution layer %2 pooling window %3 step size %4 fill %5";r.Msg.CocoRobo_NUMBER_MAX_POOL_TOOLTIP=" ";r.Msg.CocoRobo_NUMBER_MAX_POOL_HELPURL=" ";r.Msg.CocoRobo_NUMBER_MATMUL_MESSAGE0="The corresponding elements of the two parameters are multiplied x%1 y%2";r.Msg.CocoRobo_NUMBER_MATMUL_TOOLTIP=" ";r.Msg.CocoRobo_NUMBER_MATMUL_HELPURL=" ";r.Msg.CocoRobo_NUMBER_ADD_MESSAGE0="Full connection layer variable %1 add elements of two parameters x%2 y%3";r.Msg.CocoRobo_NUMBER_ADD_TOOLTIP=" ";r.Msg.CocoRobo_NUMBER_ADD_HELPURL=" ";r.Msg.CocoRobo_NUMBER_SOFTMAX_MESSAGE0="Create variable %1 prediction model accuracy variable name %2";r.Msg.CocoRobo_NUMBER_SOFTMAX_TOOLTIP=" ";r.Msg.CocoRobo_NUMBER_SOFTMAX_HELPURL=" ";r.Msg.CocoRobo_NUMBER_REDUCE_MEAN_MESSAGE0="Create variable %1 loss function %2";r.Msg.CocoRobo_NUMBER_REDUCE_MEAN_TOOLTIP=" ";r.Msg.CocoRobo_NUMBER_REDUCE_MEAN_HELPURL=" ";r.Msg.CocoRobo_NUMBER_LOG_MESSAGE0="Natural logarithm %1";r.Msg.CocoRobo_NUMBER_LOG_TOOLTIP=" ";r.Msg.CocoRobo_NUMBER_LOG_HELPURL=" ";r.Msg.CocoRobo_NUMBER_REDUCE_SUM_MESSAGE0="Compress sum %1 dimension %2";r.Msg.CocoRobo_NUMBER_REDUCE_SUM_TOOLTIP="Because the log function is monotonically increasing, logP(Y|X) will also reach its maximum value, so maximizing P(Y|X) after adding a negative sign in front is equivalent to minimizing L.";r.Msg.CocoRobo_NUMBER_REDUCE_SUM_HELPURL="https://www.cnblogs.com/guoyaohua/p/9217206.html";r.Msg.CocoRobo_NUMBER_TRAIN_MESSAGE0="Optimize learning rate %1";r.Msg.CocoRobo_NUMBER_TRAIN_TOOLTIP=" ";r.Msg.CocoRobo_NUMBER_TRAIN_HELPURL=" ";r.Msg.CocoRobo_NUMBER_MINIMIZE_MESSAGE0="Create variable %1 optimize tensor %2";r.Msg.CocoRobo_NUMBER_MINIMIZE_TOOLTIP=" ";r.Msg.CocoRobo_NUMBER_MINIMIZE_HELPURL=" ";r.Msg.CocoRobo_NUMBER_INIT_MESSAGE0="Initialization model complete ";r.Msg.CocoRobo_NUMBER_INIT_TOOLTIP=" ";r.Msg.CocoRobo_NUMBER_INIT_HELPURL=" ";r.Msg.CocoRobo_NUMBER_TRAIN_TEST_MESSAGE0="Select handwritten number set %1 number %2";r.Msg.CocoRobo_NUMBER_TRAIN_TEST_TOOLTIP=" ";r.Msg.CocoRobo_NUMBER_TRAIN_TEST_HELPURL=" ";r.Msg.CocoRobo_NUMBER_SESSION_RUN_MESSAGE0="Start data stream graph session to compute session %1 picture %2 tag %3";r.Msg.CocoRobo_NUMBER_SESSION_RUN_TOOLTIP=" ";r.Msg.CocoRobo_NUMBER_SESSION_RUN_HELPURL=" ";r.Msg.CocoRobo_NUMBER_SESSION_RUN2_MESSAGE0="Start data stream graph session to compute session %1 picture %2 tag %3";r.Msg.CocoRobo_NUMBER_SESSION_RUN2_TOOLTIP=" ";r.Msg.CocoRobo_NUMBER_SESSION_RUN2_HELPURL=" ";r.Msg.CocoRobo_NUMBER_SESSION_RUN3_MESSAGE0="Prediction model %1 fit %2 session %3";r.Msg.CocoRobo_NUMBER_SESSION_RUN3_TOOLTIP=" ";r.Msg.CocoRobo_NUMBER_SESSION_RUN3_HELPURL=" ";r.Msg.CocoRobo_NUMBER_EQUAL_MESSAGE0="Whether each dimension of two tensors is equalx%1 y%2";r.Msg.CocoRobo_NUMBER_EQUAL_TOOLTIP="";r.Msg.CocoRobo_NUMBER_EQUAL_HELPURL="";r.Msg.CocoRobo_NUMBER_ARGMAX_MESSAGE0="Tensor%1 %2Compare the index that returns the maximum value";r.Msg.CocoRobo_NUMBER_ARGMAX_TOOLTIP="";r.Msg.CocoRobo_NUMBER_ARGMAX_HELPURL="";r.Msg.CocoRobo_NUMBER_CAST_MESSAGE0="Floating point %1";r.Msg.CocoRobo_NUMBER_CAST_TOOLTIP="";r.Msg.CocoRobo_NUMBER_CAST_HELPURL="";r.Msg.CocoRoboS_NUMBER_SAVER_SAVE_HELPURL="";r.Msg.CocoRoboS_NUMBER_SAVER_SAVE_MESSAGE0="Handwritten numeral recognition model variable name %1 store path%2";r.Msg.CocoRoboS_NUMBER_SAVER_SAVE_TOOLTIP="MNIST Handwritten numeral recognition model Save the path";r.Msg.CocoRoboS_NUMBER_SAVER_RESTORE_HELPURL="";r.Msg.CocoRoboS_NUMBER_SAVER_RESTORE_MESSAGE0="Load model %1 store path%2";r.Msg.CocoRoboS_NUMBER_SAVER_RESTORE_TOOLTIP="Load model";r.Msg.CocoRoboS_NUMBER_SAME="SAME";r.Msg.CocoRoboS_NUMBER_VALID="VALID";r.Msg.CocoRoboS_NUMBER_train="Train";r.Msg.CocoRoboS_NUMBER_test="Test";r.Msg.CocoRoboS_NUMBER_row="Row";r.Msg.CocoRoboS_NUMBER_rank="Rank";r.Msg.CocoRoboS_FACE_RECOGNITION_CAMERA_HELPURL="";r.Msg.CocoRoboS_FACE_RECOGNITION_CAMERA_MESSAGE0="Call camera %1";r.Msg.CocoRoboS_FACE_RECOGNITION_CAMERA_TOOLTIP="Call the built-in camera in the notebook, so the parameter is 0. If there are other cameras, the parameter can be adjusted to 1,2";r.Msg.CocoRoboS_FACE_RECOGNITION_CAMERA_OFF_HELPURL="";r.Msg.CocoRoboS_FACE_RECOGNITION_CAMERA_OFF_MESSAGE0="Off the camera";r.Msg.CocoRoboS_FACE_RECOGNITION_CAMERA_OFF_TOOLTIP="";r.Msg.CocoRoboS_FACE_RECOGNITION_WINDOWS_DELETE_HELPURL="";r.Msg.CocoRoboS_FACE_RECOGNITION_WINDOWS_DELETE_MESSAGE0="Delete all Windows";r.Msg.CocoRoboS_FACE_RECOGNITION_WINDOWS_DELETE_TOOLTIP="";r.Msg.CocoRoboS_FACE_RECOGNITION_IMPORT_MODEL_SITE_HELPURL="";r.Msg.CocoRoboS_FACE_RECOGNITION_IMPORT_MODEL_SITE_MESSAGE0="Load model store path%1";r.Msg.CocoRoboS_FACE_RECOGNITION_IMPORT_MODEL_SITE_TOOLTIP="";r.Msg.CocoRoboS_FACE_RECOGNITION_READ_IMAGES_HELPURL="";r.Msg.CocoRoboS_FACE_RECOGNITION_READ_IMAGES_MESSAGE0="Read the picture from the camera";r.Msg.CocoRoboS_FACE_RECOGNITION_READ_IMAGES_TOOLTIP="Ret True if the image is read, otherwise false;The second parameter is frame, which is the image of the currently captured frame.";r.Msg.CocoRoboS_FACE_RECOGNITION_GRAY_IMAGES_HELPURL="";r.Msg.CocoRoboS_FACE_RECOGNITION_GRAY_IMAGES_MESSAGE0="Grayscale image";r.Msg.CocoRoboS_FACE_RECOGNITION_GRAY_IMAGES_TOOLTIP="";r.Msg.CocoRoboS_FACE_RECOGNITION_DETECTION_FACES_HELPURL="";r.Msg.CocoRoboS_FACE_RECOGNITION_DETECTION_FACES_MESSAGE0="Each time the face is detected, the image size is reduced proportionally%1";r.Msg.CocoRoboS_FACE_RECOGNITION_DETECTION_FACES_TOOLTIP="";r.Msg.CocoRoboS_FACE_DISPLAY_RECOGNITION_ORTHOGON_HELPURL="";r.Msg.CocoRoboS_FACE_DISPLAY_RECOGNITION_ORTHOGON_MESSAGE0="Face area displays rectangular box color r%1 g%2 b%3";r.Msg.CocoRoboS_FACE_DISPLAY_RECOGNITION_ORTHOGON_TOOLTIP="";r.Msg.CocoRoboS_FACE_RECOGNITIONR_PSTORAGE_PICTURE_HELPURL="";r.Msg.CocoRoboS_FACE_RECOGNITIONR_PSTORAGE_PICTURE_MESSAGE0="Save the image location%1 ID%2 Serial number%3";r.Msg.CocoRoboS_FACE_RECOGNITIONR_PSTORAGE_PICTURE_TOOLTIP="";r.Msg.CocoRoboS_FACE_RECOGNITIONR_PRESERVE_PICTURE_HELPURL="";r.Msg.CocoRoboS_FACE_RECOGNITIONR_PRESERVE_PICTURE_MESSAGE0="Window to display the image filename%1";r.Msg.CocoRoboS_FACE_RECOGNITIONR_PRESERVE_PICTURE_TOOLTIP="";r.Msg.CocoRoboS_FACE_RECOGNITIONR_ESC_HELPURL="";r.Msg.CocoRoboS_FACE_RECOGNITIONR_ESC_MESSAGE0="Exit via esc key";r.Msg.CocoRoboS_FACE_RECOGNITIONR_ESC_TOOLTIP="Use only when the window is on top";r.Msg.CocoRoboS_FACE_RECOGNITIONR_HELPURL="";r.Msg.CocoRoboS_FACE_RECOGNITIONR_MESSAGE0="Gets the coordinate value of the face in the image face%1";r.Msg.CocoRoboS_FACE_RECOGNITIONR_TOOLTIP="";r.Msg.CocoRoboS_FACE_RECOGNITION_JUDGE_FACES_HELPURL="";r.Msg.CocoRoboS_FACE_RECOGNITION_JUDGE_FACES_MESSAGE0="If the image is read";r.Msg.CocoRoboS_FACE_RECOGNITION_JUDGE_FACES_TOOLTIP="";r.Msg.CocoRoboS_FACE_RECOGNITION_JUDGE_CAMERA_HELPURL="";r.Msg.CocoRoboS_FACE_RECOGNITION_JUDGE_CAMERA_MESSAGE0="Whether to turn on the camera";r.Msg.CocoRoboS_FACE_RECOGNITION_JUDGE_CAMERA_TOOLTIP="";r.Msg.CocoRoboS_FACE_RECOGNITION_ACQUIRE_ID_PICTURE_HELPURL="";r.Msg.CocoRoboS_FACE_RECOGNITION_ACQUIRE_ID_PICTURE_MESSAGE0="Get photos and id Photo storage path%1";r.Msg.CocoRoboS_FACE_RECOGNITION_ACQUIRE_ID_PICTURE_TOOLTIP="";r.Msg.CocoRoboS_FACE_RECOGNITION_INITIALIZE_TRANI_MODEL_HELPURL="";r.Msg.CocoRoboS_FACE_RECOGNITION_INITIALIZE_TRANI_MODEL_MESSAGE0="Initialize Training model";r.Msg.CocoRoboS_FACE_RECOGNITION_INITIALIZE_TRANI_MODEL_TOOLTIP="";r.Msg.CocoRoboS_FACE_RECOGNITION_START_DRILL_HELPURL="";r.Msg.CocoRoboS_FACE_RECOGNITION_START_DRILL_MESSAGE0="Start Training model";r.Msg.CocoRoboS_FACE_RECOGNITION_START_DRILL_TOOLTIP="";r.Msg.CocoRoboS_FACE_RECOGNITION_STORAGE_DRILL_MODEL_HELPURL="";r.Msg.CocoRoboS_FACE_RECOGNITION_STORAGE_DRILL_MODEL_MESSAGE0="%1Training model store path%2";r.Msg.CocoRoboS_FACE_RECOGNITION_STORAGE_DRILL_MODEL_TOOLTIP="";r.Msg.CocoRoboS_FACE_RECOGNITION_DRILL_NUMBERS_HELPURL="";r.Msg.CocoRoboS_FACE_RECOGNITION_DRILL_NUMBERS_MESSAGE0="Face model training number";r.Msg.CocoRoboS_FACE_RECOGNITION_DRILL_NUMBERS_TOOLTIP="";r.Msg.CocoRoboS_FACE_RECOGNITION_FONT_HELPURL="";r.Msg.CocoRoboS_FACE_RECOGNITION_FONT_MESSAGE0="Window display Recognized name%1 Set font to%2 color r%3 g%4 b%5";r.Msg.CocoRoboS_FACE_RECOGNITION_FONT_TOOLTIP="";r.Msg.CocoRoboS_FACE_RECOGNITION_PERCENT_HELPURL="";r.Msg.CocoRoboS_FACE_RECOGNITION_PERCENT_MESSAGE0="Window display Confidence of identification%1 Set font to%2 color r%3 g%4 b%5";r.Msg.CocoRoboS_FACE_RECOGNITION_PERCENT_TOOLTIP="";r.Msg.CocoRoboS_FACE_RECOGNITION_FORECAST_FACE_INITIALIZE_HELPURL="";r.Msg.CocoRoboS_FACE_RECOGNITION_FORECAST_FACE_INITIALIZE_MESSAGE0="Predict human face name%1 Degree of confidence%2";r.Msg.CocoRoboS_FACE_RECOGNITION_FORECAST_FACE_INITIALIZE_TOOLTIP="";r.Msg.CocoRoboS_FACE_RECOGNITION_FORECAST_Write="Write";r.Msg.CocoRoboS_FACE_RECOGNITION_FORECAST_Read="Read";r.Msg.FIRST="First";r.Msg.LAST="Last";r.Msg.CocoRobo_USOCKET_BLOCK="Block";r.Msg.CocoRobo_USOCKET_UNBLOCK="Unblock";r.Msg.CocoRobo_USOCKET_SETSOCKOPT_HELPURL="http://docs.micropython.org/en/latest/library/usocket.html#usocket.socket";r.Msg.CocoRobo_USOCKET_SETSOCKOPT_MESSAGE0="Set socket %1 with af %2 and type %3";r.Msg.CocoRobo_USOCKET_SETSOCKOPT_TOOLTIP="Sets the value of a given socket option. The required symbolic constants are defined in the socket module (SO_*, etc.). This value can be an integer or a class byte object representing a buffer.";r.Msg.CocoRobo_USOCKET_READ_HELPURL="http://docs.micropython.org/en/latest/library/usocket.html#usocket.socket.read";r.Msg.CocoRobo_USOCKET_READ_MESSAGE0="Read %2 bytes from socket %1 and returns a byte object";r.Msg.CocoRobo_USOCKET_READ_TOOLTIP="If no number of read is given, run in a mode similar to socket.readall ()";r.Msg.CocoRobo_USOCKET_SETBLOCKING_HELPURL="http://docs.micropython.org/en/latest/library/usocket.html#usocket.socket.setblocking";r.Msg.CocoRobo_USOCKET_SETBLOCKING_MESSAGE0="Set socket %1 as %2 mode ";r.Msg.CocoRobo_USOCKET_SETBLOCKING_TOOLTIP="";r.Msg.CocoRobo_USOCKET_SETTIMEOUT_HELPURL="http://docs.micropython.org/en/latest/library/usocket.html#usocket.socket.settimeout";r.Msg.CocoRobo_USOCKET_SETTIMEOUT_MESSAGE0="Socket %1 sets timeout as %2 seconds";r.Msg.CocoRobo_USOCKET_SETTIMEOUT_TOOLTIP="";r.Msg.CocoRobo_USOCKET_SENDALL_HELPURL="http://docs.micropython.org/en/latest/library/usocket.html#usocket.socket.send";r.Msg.CocoRobo_USOCKET_SENDALL_MESSAGE0="Socket%1 sends%2 continuously and returns the number of bytes sent";r.Msg.CocoRobo_USOCKET_SENDALL_TOOLTIP="Send all data to sockets. Sockets must be connected to remote sockets. Unlike send (), this method will attempt to send all data by sending blocks continuously.";r.Msg.CocoRobo_USOCKET_SENDS_HELPURL="http://docs.micropython.org/en/latest/library/usocket.html#usocket.socket.send";r.Msg.CocoRobo_USOCKET_SENDS_MESSAGE0="Socket %1 send %2 and returns the number of bytes sent";r.Msg.CocoRobo_USOCKET_SENDS_TOOLTIP="Send data to the socket. The socket must be connected to a remote socket. Returns number of bytes sent, which may be smaller than the length of data (“short write”).";r.Msg.CocoRobo_USOCKET_SEND_HELPURL="http://docs.micropython.org/en/latest/library/usocket.html#usocket.socket.send";r.Msg.CocoRobo_USOCKET_SEND_MESSAGE0="Socket %1 send %2 and returns the number of bytes sent";r.Msg.CocoRobo_USOCKET_SEND_TOOLTIP="Send data to the socket. The socket must be connected to a remote socket. Returns number of bytes sent, which may be smaller than the length of data (“short write”).";r.Msg.CocoRobo_LINE_BREAK_HELPURL="";r.Msg.CocoRobo_LINE_BREAK_MESSAGE0="Escape character %1";r.Msg.CocoRobo_LINE_BREAK_TOOLTIP="Escape character";r.Msg.CocoRobo_USOCKET_SENDTO_HELPURL="http://docs.micropython.org/en/latest/library/usocket.html#usocket.socket.sendto";r.Msg.CocoRobo_USOCKET_SENDTO_MESSAGE0="Socket %1 send %2 to address %3";r.Msg.CocoRobo_USOCKET_SENDTO_TOOLTIP="Send data to the socket. The socket should not be connected to a remote socket, since the destination socket is specified by address.";r.Msg.CocoRobo_USOCKET_RECV_HELPURL="http://docs.micropython.org/en/latest/library/usocket.html#usocket.socket.recv";r.Msg.CocoRobo_USOCKET_RECV_MESSAGE0="Socket %1 receives with maximum amount %2 and returns received data object";r.Msg.CocoRobo_USOCKET_RECV_TOOLTIP="";r.Msg.CocoRobo_TEXT_ESC_HELPURL="";r.Msg.CocoRobo_TEXT_ESC_MESSAGE0="Text ESC %1";r.Msg.CocoRobo_TEXT_ESC_TOOLTIP="Text ESC";r.Msg.CocoRobo_USOCKET_RECVFROM_HELPURL="http://docs.micropython.org/en/latest/library/usocket.html#usocket.socket.recvfrom";r.Msg.CocoRobo_USOCKET_RECVFROM_MESSAGE0="Socket %1 receives with maximum amount %2 and returns received data tuple";r.Msg.CocoRobo_USOCKET_RECVFROM_TOOLTIP="Tuple format: (bytes, address)";r.Msg.CocoRobo_USOCKET_CONNECT_HELPURL="http://docs.micropython.org/en/latest/library/usocket.html#usocket.socket.connect";r.Msg.CocoRobo_USOCKET_CONNECT_MESSAGE0="Socket %1 connect to host %2 with port %3";r.Msg.CocoRobo_USOCKET_CONNECT_TOOLTIP="";r.Msg.CocoRobo_USOCKET_GETADDRINFO_HELPURL="http://docs.micropython.org/en/latest/library/usocket.html#usocket.socket.getaddrinfo";r.Msg.CocoRobo_USOCKET_GETADDRINFO_MESSAGE0="Parse host %1 with port %2 and return ip";r.Msg.CocoRobo_USOCKET_GETADDRINFO_TOOLTIP="Internet required";r.Msg.CocoRobo_USOCKET_ACCEPT_HELPURL="http://docs.micropython.org/en/latest/library/usocket.html#usocket.socket.accept";r.Msg.CocoRobo_USOCKET_ACCEPT_MESSAGE0="Socket %1 receive connection request and return socket tuple";r.Msg.CocoRobo_USOCKET_ACCEPT_TOOLTIP=`Receive connection request.Socket needs to specify an address and listen to the connection.The return value is (conn, address)
- conn: A new socket object that can be used to send and receive message
- address: Client address connected to the server`;r.Msg.CocoRobo_USOCKET_LISTEN_HELPURL="http://docs.micropython.org/en/latest/library/usocket.html#usocket.socket.listen";r.Msg.CocoRobo_USOCKET_LISTEN_MESSAGE0="Listen to socket %1 with backlog as %2";r.Msg.CocoRobo_USOCKET_LISTEN_TOOLTIP="backlog : Maximum number of accepted sockets, at least 0, default reasonable value if not specified";r.Msg.CocoRobo_USOCKET_BIND_HELPURL="http://docs.micropython.org/en/latest/library/usocket.html#usocket.socket.bind";r.Msg.CocoRobo_USOCKET_BIND_MESSAGE0="Socket %1 bind with address %2 and port %3";r.Msg.CocoRobo_USOCKET_BIND_TOOLTIP="";r.Msg.CocoRobo_USOCKET_CLOSE_HELPURL="http://docs.micropython.org/en/latest/library/usocket.html#usocket.socket.close";r.Msg.CocoRobo_USOCKET_CLOSE_MESSAGE0="Close socket %1";r.Msg.CocoRobo_USOCKET_CLOSE_TOOLTIP="";r.Msg.CocoRobo_USOCKET_INIT_HELPURL="http://docs.micropython.org/en/latest/library/usocket.html#usocket.socket";r.Msg.CocoRobo_USOCKET_INIT_MESSAGE0="Create socket %1 with af %2 and type %3";r.Msg.CocoRobo_USOCKET_INIT_TOOLTIP=`AF_INET:=2 — TCP/IP – IPv4
- AF_INET6 :=10 — TCP/IP – IPv6
- SOCK_STREAM:=1 — TCP stream
- SOCK_DGRAM:=2 — UDP datagram
- SOCK_RAW :=3 — Original socket
- SO_REUSEADDR : =4 — Socket reusable
- `;r.Msg.CocoRobo_GET_POST_HELPURL="";r.Msg.CocoRobo_GET_POST_MESSAGE0="%1 request url %2 submit fields %3";r.Msg.CocoRobo_GET_POST_TOOLTIP="";r.Msg.CocoRobo_UREQUESTS_GET_POST_HELPURL="";r.Msg.CocoRobo_UREQUESTS_GET_POST_TOOLTIP="";r.Msg.CocoRobo_UREQUESTS_GET_POST_MESSAGE0="%1 request url %2 submit fields %3";r.Msg.CocoRobo_UREQUESTS_POST_FILE_HELPURL="";r.Msg.CocoRobo_UREQUESTS_POST_FILE_TOOLTIP="";r.Msg.CocoRobo_UREQUESTS_POST_FILE_MESSAGE0="Post submit file %1 request url %2 file path %3 mime type %4 fields %5";r.Msg.CocoRobo_RESPONSE_HELPURL="";r.Msg.CocoRobo_RESPONSE_MESSAGE0="Return response content as %1";r.Msg.CocoRobo_RESPONSE_TOOLTIP="";r.Msg.STRING="String";r.Msg._BYTE="Byte";r.Msg.TEXT="Text";r.Msg.CocoRobo_RESPONSE_ATTRIBUTE_HELPURL="";r.Msg.CocoRobo_RESPONSE_ATTRIBUTE_MESSAGE0="Response attribute %1";r.Msg.CocoRobo_RESPONSE_ATTRIBUTE_TOOLTIP="";r.Msg.MICROBIT_MICROBIT_SLEEP_MESSAGE0="Waiting for %1 %2";r.Msg.CocoRobo_MS="Millisecond(ms)";r.Msg.CocoRobo_US="Microsecond(μs)";r.Msg.CocoRobo_TIME_DIFFERENCE_HELPURL="";r.Msg.CocoRobo_TIME_DIFFERENCE_MESSAGE0="Return time difference from %1 to %2";r.Msg.CocoRobo_TIME_DIFFERENCE_TOOLTIP="Measure the period between successive calls to ticks_ms (), ticks_us ()";r.Msg.CocoRobo_TYPE_HELPURL="";r.Msg.CocoRobo_TYPE_MESSAGE0="Type %1";r.Msg.CocoRobo_TYPE_TOOLTIP="Returns the type of the current value";r.Msg.CocoRobo_TYPE_IS_HELPURL="";r.Msg.CocoRobo_TYPE_IS_MESSAGE0="Type %1 is %2";r.Msg.CocoRobo_TYPE_IS_TOOLTIP="Set the type of the current value to %2 and return the result";r.Msg.CocoRobo_EVAL_HELPURL="";r.Msg.CocoRobo_EVAL_MESSAGE0="Eval %1";r.Msg.CocoRobo_EVAL_TOOLTIP="Simulate a string expression and return the result";r.Msg.CocoRobo_RETURN_HELPURL="";r.Msg.CocoRobo_RETURN_MESSAGE0="Return %1";r.Msg.CocoRobo_RETURN_TOOLTIP="Return a value";r.Msg.CocoRobo_BLUEBIT_AMBIENTLIGHT_HELPURL="";r.Msg.CocoRobo_BLUEBIT_AMBIENTLIGHT_MESSAGE0="I2C digital ray";r.Msg.CocoRobo_BLUEBIT_AMBIENTLIGHT_TOOLTIP="";r.Msg.CocoRobo_WIFI_ALL_CONFIG_HELPURL="";r.Msg.CocoRobo_WIFI_ALL_CONFIG_MESSAGE0="Wi-Fi configuration information";r.Msg.CocoRobo_WIFI_ALL_CONFIG_TOOLTIP="Returns all wifi configuration information as tuples";r.Msg.CocoRobo_WIFI_ISCONNECTED_HELPURL="";r.Msg.CocoRobo_WIFI_ISCONNECTED_MESSAGE0="Has connected to Wi-Fi";r.Msg.CocoRobo_WIFI_ISCONNECTED_TOOLTIP="";r.Msg.CocoRobo_INIT_ASSISTANT_WIFI_HELPURL="";r.Msg.CocoRobo_INIT_ASSISTANT_WIFI_MESSAGE0="Wi-Fi Connect voice assistant Wi-Fi name%1 password%2";r.Msg.CocoRobo_INIT_ASSISTANT_WIFI_TOOLTIP="Control board passes WIF to voice assistant through serial port";r.Msg.CocoRobo_INIT_ASSISTANT_PROFILE_HELPURL="";r.Msg.CocoRobo_INIT_ASSISTANT_PROFILE_TOOLTIP="Files need to be uploaded to the board on the file system first";r.Msg.CocoRobo_INIT_ASSISTANT_PROFILE_MESSAGE0="Read Voice Assistant Text Files %1";r.Msg.CocoRobo_BLUEBIT_SEG_DISPLAY_HELPURL="";r.Msg.CocoRobo_BLUEBIT_SEG_DISPLAY_MESSAGE0="Digital tube display %1";r.Msg.CocoRobo_BLUEBIT_SEG_DISPLAY_TOOLTIP="-999~9999";r.Msg.CocoRobo_BLUEBIT_SEG_CLEAR_HELPURL="";r.Msg.CocoRobo_BLUEBIT_SEG_CLEAR_MESSAGE0="Clear the digital tube display";r.Msg.CocoRobo_BLUEBIT_SEG_CLEAR_TOOLTIP="";r.Msg.CocoRobo_MACHINE_RESET_HELPURL="";r.Msg.CocoRobo_MACHINE_RESET_MESSAGE0="Reset";r.Msg.CocoRobo_MACHINE_RESET_TOOLTIP="Same as pressing an external reset button";r.Msg.CocoRobo_BLUEBIT_GET_COLOR_HELPURL="";r.Msg.CocoRobo_BLUEBIT_GET_COLOR_MESSAGE0="I2C RGB color %1";r.Msg.CocoRobo_BLUEBIT_GET_COLOR_TOOLTIP="";r.Msg.CocoRobo_BLUEBIT_GET_ALL_COLOR_HELPURL="";r.Msg.CocoRobo_BLUEBIT_GET_ALL_COLOR_MESSAGE0="I2C RGB color";r.Msg.CocoRobo_BLUEBIT_GET_ALL_COLOR_TOOLTIP="Returns as list";r.Msg.CocoRobo_BLUEBIT_GET_COLOR_HSV_HELPURL="";r.Msg.CocoRobo_BLUEBIT_GET_COLOR_HSV_MESSAGE0="I2C HSV color %1";r.Msg.CocoRobo_BLUEBIT_GET_COLOR_HSV_TOOLTIP="HSV(Hue, Saturation, Value)";r.Msg.CocoRobo_BLUEBIT_GET_ALL_COLOR_HSV_HELPURL="";r.Msg.CocoRobo_BLUEBIT_GET_ALL_COLOR_HSV_MESSAGE0="I2C HSV color";r.Msg.CocoRobo_BLUEBIT_GET_ALL_COLOR_HSV_TOOLTIP="HSV(Hue, Saturation, Value)";r.Msg.CocoRobo_BLUEBIT_GET_FORCE_MEASURE_HELPURL="";r.Msg.CocoRobo_BLUEBIT_GET_FORCE_MEASURE_MESSAGE0="I2C force sensor Dial code %1";r.Msg.CocoRobo_BLUEBIT_GET_FORCE_MEASURE_TOOLTIP="I2C Address Corresponds to the Requirements of Coding Switches";r.Msg.CocoRobo_BLUEBIT_GET_ELECTRICITY_MEASURE_HELPURL="";r.Msg.CocoRobo_BLUEBIT_GET_ELECTRICITY_MEASURE_MESSAGE0="I2C current sensor Dial code %1";r.Msg.CocoRobo_BLUEBIT_GET_ELECTRICITY_MEASURE_TOOLTIP="I2C Address Corresponds to the Requirements of Coding Switches";r.Msg.CocoRobo_BLUEBIT_GET_VOLTAGE_MEASURE_HELPURL="";r.Msg.CocoRobo_BLUEBIT_GET_VOLTAGE_MEASURE_MESSAGE0="I2C voltage sensor Dial code %1";r.Msg.CocoRobo_BLUEBIT_GET_VOLTAGE_MEASURE_TOOLTIP="I2C Address Corresponds to the Requirements of Coding Switches";r.Msg.CocoRobo_BLUEBIT_GET_MAGNETIC_MEASURE_HELPURL="";r.Msg.CocoRobo_BLUEBIT_GET_MAGNETIC_MEASURE_MESSAGE0="I2C magnetic sensor Dial code %1";r.Msg.CocoRobo_BLUEBIT_GET_MAGNETIC_MEASURE_TOOLTIP="I2C Address Corresponds to the Requirements of Coding Switches";r.Msg.CocoRobo_BLUEBIT_GET_PH_MEASURE_HELPURL="";r.Msg.CocoRobo_BLUEBIT_GET_PH_MEASURE_MESSAGE0="I2C PH sensor Dial code %1";r.Msg.CocoRobo_BLUEBIT_GET_PH_MEASURE_TOOLTIP="I2C Address Corresponds to the Requirements of Coding Switches";r.Msg.CocoRobo_BLUEBIT_GET_TDS_MEASURE_HELPURL="";r.Msg.CocoRobo_BLUEBIT_GET_TDS_MEASURE_MESSAGE0="I2C TDS sensor Dial code %1";r.Msg.CocoRobo_BLUEBIT_GET_TDS_MEASURE_TOOLTIP="I2C Address Corresponds to the Requirements of Coding Switches";r.Msg.CocoRobo_BLUEBIT_GET_PRESSURE_MEASURE_HELPURL="";r.Msg.CocoRobo_BLUEBIT_GET_PRESSURE_MEASURE_MESSAGE0="I2C Pressure sensor Dial code %1";r.Msg.CocoRobo_BLUEBIT_GET_PRESSURE_MEASURE_TOOLTIP="I2C Address Corresponds to the Requirements of Coding Switches";r.Msg.CocoRobo_BLUEBIT_GET_PHOTOGATE_TIMER_MEASURE_HELPURL="";r.Msg.CocoRobo_BLUEBIT_GET_PHOTOGATE_TIMER_MEASURE_MESSAGE0="I2C Photogate Timer sensor Dial code %1";r.Msg.CocoRobo_BLUEBIT_GET_PHOTOGATE_TIMER_MEASURE_TOOLTIP="I2C Address Corresponds to the Requirements of Coding Switches";r.Msg.CocoRobo_RED="Red";r.Msg.CocoRobo_GREEN="Green";r.Msg.CocoRobo_BLUE="Blue";r.Msg.CocoRobo_MUSIC_PIN_P6="Default";r.Msg.CocoRobo_MUSIC_PIN_P6_HELPURL="";r.Msg.CocoRobo_MUSIC_PIN_P6_MESSAGE0="%1";r.Msg.CocoRobo_MUSIC_PIN_P6_TOOLTIP="";r.Msg.MICROBIT_MUSIC_PLAY_BUILT_IN_MESSAGE0="Play music %1 wait %2 loop %3 Pin %4";r.Msg.MICROBIT_MUSIC_PLAY_BUILT_IN_TOOLTIP="Play the built-in music, you can set the standby mode and loop playback.";r.Msg.MICROBIT_MUSIC_PLAY_BUILT_IN_HELPURL="https://microbit-micropython.readthedocs.io/en/latest/music.html#built-in-melodies";r.Msg.MICROBIT_MUSIC_PITCH_MESSAGE0="Play tone %1 %2 delay %3 millisecond(s) at Pin %4";r.Msg.MICROBIT_MUSIC_PITCH_TOOLTIP="Plays the tone for the set length of time.";r.Msg.MICROBIT_MUSIC_PITCH_HELPURL="https://microbit-micropython.readthedocs.io/en/latest/music.html#music.pitch";r.Msg.MICROBIT_MUSIC_PLAY_LIST_OF_NOTES_MESSAGE0="At Pin %5 play note list %1 wait %2 %3 loop %4";r.Msg.MICROBIT_MUSIC_PLAY_LIST_OF_NOTES_TOOLTIP="Play a list of notes, such as C4:4, G4:8, etc., the notes are in string form, the default pin is P6 of the cocorobo board";r.Msg.MICROBIT_MUSIC_PLAY_LIST_OF_NOTES_HELPURL="https://CocoRobo.readthedocs.io/zh/latest/tutorials/basics/buzz.html";r.Msg.MICROBIT_MUSIC_RESET_HELPURL="https://microbit-micropython.readthedocs.io/en/latest/music.html#music.reset";r.Msg.MICROBIT_MUSIC_RESET_MESSAGE0="Restore music settings";r.Msg.MICROBIT_MUSIC_RESET_TOOLTIP="Restore all music settings (current beats, scales, and periods) to their default values.";r.Msg.MICROBIT_MUSIC_STOP_HELPURL="https://microbit-micropython.readthedocs.io/en/latest/music.html#music.stop";r.Msg.MICROBIT_MUSIC_STOP_MESSAGE0="Stop playing music at Pin %1";r.Msg.MICROBIT_MUSIC_STOP_TOOLTIP="The default pin is P6 of the cocorobo board";r.Msg.MICROBIT_MUSIC_SET_TEMPO_MESSAGE0="Set each beat equal to %1 notes, the number of beats per minute is %2";r.Msg.MICROBIT_MUSIC_SET_TEMPO_TOOLTIP="Set the playback speed (beat). A certain number of tick represents a beat, the number of beats per minute per beat (BPM beats per minute).";r.Msg.MICROBIT_MUSIC_SET_TEMPO_HELPURL="https://microbit-micropython.readthedocs.io/en/latest/music.html#music.set_tempo";r.Msg.MICROBIT_MUSIC_SET_TEMPO_SPEED_MESSAGE0="Set the playback speed to %1 times";r.Msg.MICROBIT_MUSIC_SET_TEMPO_SPEED_TOOLTIP="The 4th note is 1 beat, and the number of beats per minute is 120 by default, which is 1 times the playback speed.";r.Msg.MICROBIT_MUSIC_SET_TEMPO_SPEED_HELPURL="https://microbit-micropython.readthedocs.io/en/latest/music.html#music.set_tempo";r.Msg.MICROBIT_MUSIC_GET_TEMPO_MESSAGE0="Current beats";r.Msg.MICROBIT_MUSIC_GET_TEMPO_TOOLTIP="Get current beats: Taps per beat, beats per minute (BPM).";r.Msg.MICROBIT_MUSIC_GET_TEMPO_HELPURL="https://microbit-micropython.readthedocs.io/en/latest/music.html#music.get_tempo";r.Msg.CocoRobo_BLUEBIT_HUM_TEM_HELPURL="";r.Msg.CocoRobo_BLUEBIT_HUM_TEM_TOOLTIP="";r.Msg.CocoRobo_BLUEBIT_HUM_TEM_MESSAGE0="I2C %1";r.Msg.CocoRobo_BLUEBIT_TEMPERATURE="Temperature";r.Msg.CocoRobo_BLUEBIT_HUMIDITY="Humidity";r.Msg.CocoRobo_UART_INIT_HELPURL="";r.Msg.CocoRobo_UART_INIT_MESSAGE0="Initialize serial port %4 as baudrate %1 tx %2 rx %3";r.Msg.CocoRobo_UART_INIT_TOOLTIP="CocoRobo board supports 3 sets of serial ports. 0 for repl, remaining 1, 2 sets of serial ports available. All pins can be used as the input of serial port rx, except P2, p3, p4, p10 can only be used as input, and all the other pins can be used as output tx. in theory.";r.Msg.CocoRobo_UART_DEINIT_HELPURL="";r.Msg.CocoRobo_UART_DEINIT_MESSAGE0="Close serial port %1";r.Msg.CocoRobo_UART_DEINIT_TOOLTIP="Turn off the UART bus";r.Msg.CocoRobo_UART_WRITE_STR_HELPURL="";r.Msg.CocoRobo_UART_WRITE_STR_MESSAGE0="Serial port %1 write string %2 %3";r.Msg.CocoRobo_UART_WRITE_STR_TOOLTIP=`Write a text to the bus.
- Return value: The number of bytes to write or None to time out.`;r.Msg.CocoRobo_UART_WRITE_HEX_HELPURL="";r.Msg.CocoRobo_UART_WRITE_HEX_MESSAGE0="Serial port %1 write hex string %2 %3";r.Msg.CocoRobo_UART_WRITE_HEX_TOOLTIP="";r.Msg.CocoRobo_UART_HAS_DATA_HELPURL="";r.Msg.CocoRobo_UART_HAS_DATA_MESSAGE0="Serial port %1 has readable data";r.Msg.CocoRobo_UART_HAS_DATA_TOOLTIP=`Returns an integer that counts the number of characters that can be read without blocking.
- If there are no characters available, it will return 0, if there are characters, it will return a positive number.
- This method can return 1 even if there are multiple readable characters.`;r.Msg.CocoRobo_UART_READLINE_HELPURL="";r.Msg.CocoRobo_UART_READLINE_MESSAGE0="Serial port %1 read a line of data";r.Msg.CocoRobo_UART_READLINE_TOOLTIP=`Read a line and end with a newline character.
- Return value: Read row or None timeout.`;r.Msg.CocoRobo_UART_READ_HELPURL="";r.Msg.CocoRobo_UART_READ_MESSAGE0="Serial port %1 read data";r.Msg.CocoRobo_UART_READ_TOOLTIP=`Read as much serial data as possible.
- Return value: A list of bytes containing the bytes read. Returns None if the read times out.`;r.Msg.CocoRobo_UART_READ_LENGTH_HELPURL="";r.Msg.CocoRobo_UART_READ_LENGTH_MESSAGE0="Serial port %1 read data with length as %2";r.Msg.CocoRobo_UART_READ_LENGTH_TOOLTIP=`Read the specified length bytes data.
- Return value: A list of bytes containing the bytes read. Returns None if the read times out.`;r.Msg.CocoRobo_UART_WRITE_BYTE_HELPURL="";r.Msg.CocoRobo_UART_WRITE_BYTE_MESSAGE0="Serial port %1 write a byte %2";r.Msg.CocoRobo_UART_WRITE_BYTE_TOOLTIP=`The parameter is a integer as 0~255
- Write a byte to the bus.
- Return value: The number of bytes to write or None to time out.`;r.Msg.CocoRobo_UART_WRITE_BYTES_HELPURL="";r.Msg.CocoRobo_UART_WRITE_BYTES_MESSAGE0="Serial port %1 write bytes %2";r.Msg.CocoRobo_UART_WRITE_BYTES_TOOLTIP=`Write some bytes to the bus.
- Return value: The number of bytes to write or None to time out.`;r.Msg.TEXT_FORMAT_MESSAGE0="Format string %1 % %2";r.Msg.TEXT_FORMAT_TOOLTIP='Use "%" to format the string and return the result';r.Msg.TEXT_FORMAT_HELPURL="";r.Msg.TEXT_FORMAT2_MESSAGE0="Format string %1 with %2";r.Msg.TEXT_FORMAT2_TOOLTIP='Use "format" to format the string and return the result';r.Msg.TEXT_FORMAT2_HELPURL="";r.Msg.CocoRobo_BAUDRATE_HELPURL="";r.Msg.CocoRobo_BAUDRATE_MESSAGE0="%1";r.Msg.CocoRobo_BAUDRATE_TOOLTIP="";r.Msg.CocoRobo_HIGH_LOW_HELPURL="";r.Msg.CocoRobo_HIGH_LOW_MESSAGE0="%1";r.Msg.CocoRobo_HIGH_LOW_TOOLTIP="";r.Msg.CocoRobo_TEN_CONVERT_TO_HELPURL="";r.Msg.CocoRobo_TEN_CONVERT_TO_MESSAGE0="Decimal int num %1 converted to %2 string";r.Msg.CocoRobo_TEN_CONVERT_TO_TOOLTIP="Convert a decimal integer to a %2 string and return the result";r.Msg.CocoRobo_BIN="BIN";r.Msg.CocoRobo_OCT="OCT";r.Msg.CocoRobo_HEX="HEX";r.Msg.CocoRobo_CONVERT_TO_TEN_HELPURL="";r.Msg.CocoRobo_CONVERT_TO_TEN_MESSAGE0="%1 string %2 converted to decimal int num";r.Msg.CocoRobo_CONVERT_TO_TEN_TOOLTIP="Convert a %2 string to a decimal integer and return the result";r.Msg.CocoRobo_TEN_CONVERTED_TO_BYTES_HELPURL="";r.Msg.CocoRobo_TEN_CONVERTED_TO_BYTES_MESSAGE0="Decimal int num %2 converted to %1 bytes";r.Msg.CocoRobo_TEN_CONVERTED_TO_BYTES_TOOLTIP="Convert a decimal integer to %1 bytes and return the result";r.Msg.CocoRobo_INT_TO_CHR_HELPURL="";r.Msg.CocoRobo_INT_TO_CHR_MESSAGE0="Shaping number %1 converted to character in ASCII";r.Msg.CocoRobo_INT_TO_CHR_TOOLTIP="ASCII is a computer coding system based on the Latin alphabet, mainly used to display modern English and other Western European languages";r.Msg.CocoRobo_STR_TO_HEX_HELPURL="";r.Msg.CocoRobo_STR_TO_HEX_MESSAGE0="String %1 converted to hex bytes";r.Msg.CocoRobo_STR_TO_HEX_TOOLTIP="Returns two hexadecimal numbers separated by spaces in the result";r.Msg.CocoRobo_CHR_TO_INT_HELPURL="";r.Msg.CocoRobo_CHR_TO_INT_MESSAGE0="Character in ASCII %1 converted to shaping number";r.Msg.CocoRobo_CHR_TO_INT_TOOLTIP="ASCII is a computer coding system based on the Latin alphabet, mainly used to display modern English and other Western European languages";r.Msg.CocoRobo_HEX_TO_BIN_STR_HELPURL="";r.Msg.CocoRobo_HEX_TO_BIN_STR_MESSAGE0="Hex string %1 converted to bin bytes";r.Msg.CocoRobo_HEX_TO_BIN_STR_TOOLTIP="Convert hexadecimal string to binary byte and return the result";r.Msg.CocoRobo_DATA_TO_BASE64_HELPURL="";r.Msg.CocoRobo_DATA_TO_BASE64_MESSAGE0="Encoding data %1 in base64 and return byte object";r.Msg.CocoRobo_DATA_TO_BASE64_TOOLTIP="Base64 encoding is a process from binary to character";r.Msg.CocoRobo_BASE64_TO_DATA_HELPURL="";r.Msg.CocoRobo_BASE64_TO_DATA_MESSAGE0="Decoding base64 data %1 and return byte object";r.Msg.CocoRobo_BASE64_TO_DATA_TOOLTIP="Base64 encoding is a process from binary to character";r.Msg.CocoRobo_UJSON_DUMPS_HELPURL="";r.Msg.CocoRobo_UJSON_DUMPS_MESSAGE0="%1 converted to json string";r.Msg.CocoRobo_UJSON_DUMPS_TOOLTIP="Key in json format must be a string, and value can be a legitimate json data type (string, number, object, array, Boolean, or none";r.Msg.CocoRobo_UJSON_LOADS_HELPURL="";r.Msg.CocoRobo_UJSON_LOADS_MESSAGE0="Parse json string %1 and return the object";r.Msg.CocoRobo_UJSON_LOADS_TOOLTIP="Key in json format must be a string, and value can be a legitimate json data type (string, number, object, array, Boolean, or none";r.Msg.CocoRobo_code_annotation_HELPURL="";r.Msg.CocoRobo_code_annotation_MESSAGE0="Comment # %1";r.Msg.CocoRobo_code_annotation_TOOLTIP="Generate code comments";r.Msg.CocoRobo_SETS_PIN_MODE_HELPURL="https://CocoRobo.readthedocs.io/zh/master/board/hardware.html#CocoRobopindesc";r.Msg.CocoRobo_SETS_PIN_MODE_TOOLTIP="Right-click help to view the pin declaration";r.Msg.CocoRobo_SETS_PIN_MODE_MESSAGE0="Set pin %1 as %2 mode %3 and set the value to %4";r.Msg.CocoRobo_SET_PIN_IN="Input";r.Msg.CocoRobo_SET_PIN_PUSH_PULL_OUT="Push-pull output";r.Msg.CocoRobo_SET_PIN_LEAKY_OUT="Leaky output";r.Msg.CocoRobo_SET_PIN_NO_PULL="No pull";r.Msg.CocoRobo_SET_PIN_DOWN_PULL="Ppull down";r.Msg.CocoRobo_SET_PIN_UP_PULL="Pull up";r.Msg.CocoRobo_LOCK_OBJECT_ACQUIRE_LOCK_HELPURL="";r.Msg.CocoRobo_LOCK_OBJECT_ACQUIRE_LOCK_MESSAGE0="Thread lock object %1 requests lock";r.Msg.CocoRobo_LOCK_OBJECT_ACQUIRE_LOCK_TOOLTIP="";r.Msg.CocoRobo_START_NEW_THREAD_HELPURL="";r.Msg.CocoRobo_START_NEW_THREAD_MESSAGE0="Thread %1";r.Msg.CocoRobo_START_NEW_THREAD_TOOLTIP="";r.Msg.CocoRobo_BLYNK_TERMINAL_WIDGET_VPIN_HELPURL="";r.Msg.CocoRobo_BLYNK_TERMINAL_WIDGET_VPIN_MESSAGE0="Custom terminal widget on virtual pin V %1";r.Msg.CocoRobo_BLYNK_TERMINAL_WIDGET_VPIN_TOOLTIP="";r.Msg.CocoRobo_BLYNK_SYNC_VIRTUAL_HELPURL="";r.Msg.CocoRobo_BLYNK_SYNC_VIRTUAL_MESSAGE0="Synchronizing the status of virtual pin V %1";r.Msg.CocoRobo_BLYNK_SYNC_VIRTUAL_TOOLTIP="";r.Msg.CocoRobo_BLYNK_ON_DISCONNECTED_HELPURL="";r.Msg.CocoRobo_BLYNK_ON_DISCONNECTED_MESSAGE0="When Blynk disconnected";r.Msg.CocoRobo_BLYNK_ON_DISCONNECTED_TOOLTIP="";r.Msg.CocoRobo_BLYNK_ON_CONNECTED_HELPURL="";r.Msg.CocoRobo_BLYNK_ON_CONNECTED_MESSAGE0="When Blynk connected";r.Msg.CocoRobo_BLYNK_ON_CONNECTED_TOOLTIP="";r.Msg.CocoRobo_BLYNKTIMER_RUN_HELPURL="";r.Msg.CocoRobo_BLYNKTIMER_RUN_MESSAGE0="Run the BlynkTimer processes";r.Msg.CocoRobo_BLYNKTIMER_RUN_TOOLTIP="It is recommended to put this block in 'repeat forever' block";r.Msg.CocoRobo_BLYNK_RUN_HELPURL="";r.Msg.CocoRobo_BLYNK_RUN_MESSAGE0="Run the Blynk processes";r.Msg.CocoRobo_BLYNK_RUN_TOOLTIP="It is recommended to put this block in 'repeat forever' block";r.Msg.CocoRobo_BLYNK_APP_NOTIFY_HELPURL="";r.Msg.CocoRobo_BLYNK_APP_NOTIFY_MESSAGE0="Blynk APP notifies %1";r.Msg.CocoRobo_BLYNK_APP_NOTIFY_TOOLTIP="";r.Msg.CocoRobo_BLYNKTIMER_HELPURL="";r.Msg.CocoRobo_BLYNKTIMER_MESSAGE0="BlynkTimer number %1 mode %2 period %3 seconds";r.Msg.CocoRobo_BLYNKTIMER_TOOLTIP=`Note:
- the serial number of the timer is automatically obtained, from top to bottom, starting from 0 and continuous, don\`t do this"timer 0, timer 2", the exposed serial number parameter is convenient to view here!
- Parameter:
- no_timers_err=False - disable exception raise if all all timers were stopped`;r.Msg.CocoRobo_BLYNK_STOP_TIMERS_HELPURL="";r.Msg.CocoRobo_BLYNK_STOP_TIMERS_MESSAGE0="Stop Blynk timer %1";r.Msg.CocoRobo_BLYNK_STOP_TIMERS_TOOLTIP=`Note:
- the serial number of the timer is automatically obtained, from top to bottom, starting from 0 and continuous, don\`t do this"timer 0, timer 2", the exposed serial number parameter is convenient to view here!
- Parameter:
- no_timers_err=False - disable exception raise if all all timers were stopped`;r.Msg.CocoRobo_UART_INPUT_HELPURL="";r.Msg.CocoRobo_UART_INPUT_MESSAGE0="Get input text from serial port, title %1";r.Msg.CocoRobo_UART_INPUT_TOOLTIP="";r.Msg.CocoRobo_BLYNK_SET_PROPERTY_HELPURL="";r.Msg.CocoRobo_BLYNK_SET_PROPERTY_MESSAGE0="Set property %1 and value %2 to virtual pin";r.Msg.CocoRobo_BLYNK_SET_PROPERTY_TOOLTIP="Placed in a read or write event, the virtual pin is determined by the event,the component bound to the pin will have the added property";r.Msg.CocoRobo_BLYNK_EMAIL_HELPURL="";r.Msg.CocoRobo_BLYNK_EMAIL_MESSAGE0="Email to pre-set email address with %1 subject %2 body %3";r.Msg.CocoRobo_BLYNK_EMAIL_TOOLTIP="";r.Msg.CocoRobo_BLYNK_GET_TIMERS_HELPURL="";r.Msg.CocoRobo_BLYNK_GET_TIMERS_MESSAGE0="Available Blynk timers";r.Msg.CocoRobo_BLYNK_GET_TIMERS_TOOLTIP="";r.Msg.CocoRobo_BLYNK_SENSOR_DATA_TO_APP_HELPURL="";r.Msg.CocoRobo_BLYNK_SENSOR_DATA_TO_APP_MESSAGE0="Send data %1 to Blynk APP's virtual pin V %2";r.Msg.CocoRobo_BLYNK_SENSOR_DATA_TO_APP_TOOLTIP="Virtual pin: V0 ~ V255";r.Msg.CocoRobo_BLYNK_APP_DATA_HELPURL="";r.Msg.CocoRobo_BLYNK_APP_DATA_MESSAGE0="When received value %2 of virtual pin V %1 from Blynk APP";r.Msg.CocoRobo_BLYNK_APP_DATA_TOOLTIP="Virtual pin: V0 ~ V255";r.Msg.CocoRobo_BLYNK_SETUP_HELPURL="";r.Msg.CocoRobo_BLYNK_SETUP_MESSAGE0="Blynk Settings %1 server %2 port %3 authorization code %4";r.Msg.CocoRobo_BLYNK_SETUP_TOOLTIP=`The server can be set to "blynk-cloud.com" or "blynk.cocorobo.cn"
- The default port is 8080
- Note: The mobile APP access port is 9443.`;r.Msg.INT_TO_CHR_HELPURL="";r.Msg.INT_TO_CHR_MESSAGE0="Int %1 to ASCII single character";r.Msg.INT_TO_CHR_TOOLTIP="";r.Msg.a123_HELPURL="";r.Msg.a123_MESSAGE0="新 %1";r.Msg.a123_TOOLTIP="";r.Msg.CocoRobo_ONENET_DISCONNECT_MESSAGE0="Disconnect from OneNET";r.Msg.CocoRobo_ONENET_DISCONNECT_TOOLTIP="";r.Msg.CocoRobo_ONENET_DISCONNECT_HELPURL="";r.Msg.CocoRobo_ONENET_RECV_MESSAGE0="When received message %1 from OneNET";r.Msg.CocoRobo_ONENET_RECV_TOOLTIP="";r.Msg.CocoRobo_ONENET_RECV_HELPURL="";r.Msg.CocoRobo_ONENET_RECV_MSG_MESSAGE0="When received specific message %1 from OneNET";r.Msg.CocoRobo_ONENET_RECV_MSG_TOOLTIP="";r.Msg.CocoRobo_ONENET_RECV_MSG_HELPURL="";r.Msg.CocoRobo_ONENET_PUB_VALUE_MESSAGE0="Publish data to OneNET, name %1 value %2";r.Msg.CocoRobo_ONENET_PUB_VALUE_TOOLTIP="";r.Msg.CocoRobo_ONENET_PUB_VALUE_HELPURL="";r.Msg.CocoRobo_ONENET_PUB_DICT_MESSAGE0="Publish data to OneNET %1";r.Msg.CocoRobo_ONENET_PUB_DICT_TOOLTIP="";r.Msg.CocoRobo_ONENET_PUB_DICT_HELPURL="";r.Msg.CocoRobo_HCSR04_DISTANCE_HELPURL="https://CocoRobo-lib.readthedocs.io/zh/master/hcsr04/index.html#hcsr04";r.Msg.CocoRobo_HCSR04_DISTANCE_MESSAGE0="%1 hcsr04 untrasonic distance, unit %2";r.Msg.CocoRobo_HCSR04_DISTANCE_TOOLTIP="";r.Msg.CocoRobo_HCSR04_DISTANCE_MM_HELPURL="https://CocoRobo-lib.readthedocs.io/zh/master/hcsr04/index.html#hcsr04";r.Msg.CocoRobo_HCSR04_DISTANCE_MM_MESSAGE0="%1 hcsr04 untrasonic(mm)";r.Msg.CocoRobo_HCSR04_DISTANCE_MM_TOOLTIP="";r.Msg.CocoRobo_HCSR04_OBJ_HELPURL="https://CocoRobo-lib.readthedocs.io/zh/master/hcsr04/index.html#hcsr04";r.Msg.CocoRobo_HCSR04_OBJ_MESSAGE0="Hcsr04 ultrasonic initialize name %1 trigger %2 echo %3";r.Msg.CocoRobo_HCSR04_OBJ_TOOLTIP="";r.Msg.CocoRobo_PM2_5_LitresAir_HELPURL="";r.Msg.CocoRobo_PM2_5_LitresAir_MESSAGE0="RX pin %1 Number of particles with diameter of %2 in 0.1 liter air";r.Msg.CocoRobo_PM2_5_LitresAir_TOOLTIP="";r.Msg.CocoRobo_PM2_5_MIC_HELPURL="";r.Msg.CocoRobo_PM2_5_MIC_MESSAGE0="RX pin %1 PM value concentration %2";r.Msg.CocoRobo_PM2_5_MIC_TOOLTIP="";r.Msg.CocoRobo_IR_REMOTE_RECV_MESSAGE0="Infrared receive %1 callback address %2 callback command %3";r.Msg.CocoRobo_IR_REMOTE_RECV_HELPURL="";r.Msg.CocoRobo_IR_REMOTE_RECV_TOOLTIP="";r.Msg.CocoRobo_IR_REMOTE_SEND_MESSAGE0="Infrared send %1 address %2 command %3";r.Msg.CocoRobo_IR_REMOTE_SEND_HELPURL="";r.Msg.CocoRobo_IR_REMOTE_SEND_TOOLTIP="";r.Msg.CocoRobo_ONENET_PUB_VALUE2_MESSAGE0="Publish data to Wechat app, name %1 value %2";r.Msg.CocoRobo_ONENET_PUB_VALUE2_TOOLTIP="";r.Msg.CocoRobo_ONENET_PUB_VALUE2_HELPURL="";r.Msg.CocoRobo_ONENET_ACCEPT_MESSAGE="If received message";r.Msg.CocoRobo_ONENET="OneNET settings";r.Msg.CocoRobo_ONENET_WECHAT_APP="Wechat app settings";r.Msg.CocoRobo_ONENET_OPTION_BOARDS="Optional cocorobo boards";r.Msg.CocoRobo_ONENET_TITLE="OneNET";r.Msg.CocoRobo_SERVER="Server";r.Msg.CocoRobo_DEVICE_ID="Device_id";r.Msg.CocoRobo_PRODUCT_ID="Product_id";r.Msg.CocoRobo_API_KEY="Product_APIKey";r.Msg.CocoRobo_TOPIC="Topic";r.Msg.CocoRobo_ONENET_CALLBACK="Callback function";r.Msg.CocoRobo_ONENET_CALLBACK_TITLE="OneNET callback";r.Msg.CocoRobo_ONENET_OPTION_BOARDS_HELPURL="";r.Msg.CocoRobo_ONENET_OPTION_BOARDS_MESSAGE0="Choose cocorobo App %1 in WeChat App";r.Msg.CocoRobo_ONENET_OPTION_BOARDS_TOOLTIP="";r.Msg.TEXT_TO_BYTE_MESSAGE0="Convert %1 to bytes";r.Msg.TEXT_TO_BYTE_TOOLTIP="Supported data type as string";r.Msg.TEXT_TO_BYTE_HELPURL="";r.Msg.OTHER_TO_BYTE_MESSAGE0="Convert Non-text %1 to bytes";r.Msg.OTHER_TO_BYTE_TOOLTIP="";r.Msg.OTHER_TO_BYTE_HELPURL="";r.Msg.CocoRobo_BYTES_DECODE_HELPURL="";r.Msg.CocoRobo_BYTES_DECODE_MESSAGE0="Convert bytes %1 to string";r.Msg.CocoRobo_BYTES_DECODE_TOOLTIP="Return the result of the specified byte to string";r.Msg.CocoRobo_ONENET_TOOLTIP="Create a OneNET connection";r.Msg.CocoRobo_ONENET_INIT_WIFI_MESSAGE0="IoT make sure to connect to Wi-Fi with SSID %1 & Password %2";r.Msg.CocoRobo_ONENET_INIT_WIFI_TOOLTIP="Let the board access the Wi-Fi environment";r.Msg.CocoRobo_ONENET_INIT_WIFI_HELPURL="";r.Msg.CocoRobo_ONENET_RECV_FROM_WECHAT_APP_HELPURL="";r.Msg.CocoRobo_ONENET_RECV_FROM_WECHAT_APP_MESSAGE0="When receives %1 and %2 from WeChat App";r.Msg.CocoRobo_ONENET_RECV_FROM_WECHAT_APP_TOOLTIP="";r.Msg.CocoRobo_MAC_ADDRESS_HELPURL="";r.Msg.CocoRobo_MAC_ADDRESS_MESSAGE0="MAC Address";r.Msg.CocoRobo_MAC_ADDRESS_TOOLTIP="";r.Msg.CocoRobo_RADIO_REC_HELPURL="";r.Msg.CocoRobo_RADIO_REC_MESSAGE0="Radio received";r.Msg.CocoRobo_RADIO_REC_TOOLTIP="Received data is bytes";r.Msg.CocoRobo_RADIO_SEND_HELPURL="";r.Msg.CocoRobo_RADIO_SEND_MESSAGE0="Radio sends %1";r.Msg.CocoRobo_RADIO_SEND_TOOLTIP="Channel: 1~13";r.Msg.CocoRobo_RADIO_CHANNEL_HELPURL="";r.Msg.CocoRobo_RADIO_CHANNEL_MESSAGE0="Set radio channel %1";r.Msg.CocoRobo_RADIO_CHANNEL_TOOLTIP="Channel: 1~13";r.Msg.CocoRobo_RADIO_ON_OFF_HELPURL="";r.Msg.CocoRobo_RADIO_ON_OFF_MESSAGE0="%1 radio";r.Msg.CocoRobo_RADIO_ON_OFF_TOOLTIP="Channel: 1~13";r.Msg.CocoRobo_RADIO_RECV_MESSAGE0="When receiving broadcast message %1 from Radio";r.Msg.CocoRobo_RADIO_RECV_TOOLTIP="Channel: 1~13";r.Msg.CocoRobo_RADIO_RECV_HELPURL="";r.Msg.CocoRobo_RADIO_RECV_MSG_MESSAGE0="When receiving specific broadcast message %1 from Radio";r.Msg.CocoRobo_RADIO_RECV_MSG_TOOLTIP="Channel: 1~13";r.Msg.CocoRobo_RADIO_RECV_MSG_HELPURL="";r.Msg.CocoRobo_DISPCHAR_MODE_1="Normal";r.Msg.CocoRobo_DISPCHAR_MODE_2="Rev";r.Msg.CocoRobo_DISPCHAR_MODE_3="Trans";r.Msg.CocoRobo_AUDIO_XUNFEI_TTS_HELPURL="";r.Msg.CocoRobo_AUDIO_XUNFEI_TTS_MESSAGE0="TTS play text %1";r.Msg.CocoRobo_AUDIO_XUNFEI_TTS_TOOLTIP='The "Online Speech Synthesis" service needs to be enabled on the "Xunfei Open Platform" www.xfyun.cn';r.Msg.CocoRobo_AUDIO_XUNFEI_TTS_CONFIG_HELPURL="https://CocoRobo.readthedocs.io/zh/master/extboard/tutorials/tutorials_parrot.html#id3";r.Msg.CocoRobo_AUDIO_XUNFEI_TTS_CONFIG_MESSAGE0="TTS config APPID %1 APIKey %2";r.Msg.CocoRobo_AUDIO_XUNFEI_TTS_CONFIG_TOOLTIP=`Enter the APPID and APIKey obtained on the "Xunfei Open Platform" www.xfyun.cn
- Note: To set the IP whitelist`;r.Msg.CocoRobo_AUDIO_PLAY_HELPURL="";r.Msg.CocoRobo_AUDIO_PLAY_MESSAGE0="Audio play %1";r.Msg.CocoRobo_AUDIO_PLAY_TOOLTIP=`Need active speakers
- P8 left channel
- P9 right channel
- GND ground
- parameter:
- the url of the network mp3, or the mp3 that has been uploaded to the cocorobo board, e.g 'music_1.mp3'`;r.Msg.CocoRobo_AUDIO_DEINIT_HELPURL="";r.Msg.CocoRobo_AUDIO_DEINIT_MESSAGE0="Deinit Audio";r.Msg.CocoRobo_AUDIO_DEINIT_TOOLTIP="Create a cache for controlling the audio decoding";r.Msg.CocoRobo_AUDIO_CMD_HELPURL="";r.Msg.CocoRobo_AUDIO_CMD_MESSAGE0="Audio %1";r.Msg.CocoRobo_AUDIO_CMD_TOOLTIP="";r.Msg.CocoRobo_AUDIO_INIT_HELPURL="";r.Msg.CocoRobo_AUDIO_INIT_MESSAGE0="Initialize Audio";r.Msg.CocoRobo_AUDIO_INIT_TOOLTIP="Create a cache for controlling the audio decoding";r.Msg.CocoRobo_RECORD_INIT_HELPURL="";r.Msg.CocoRobo_RECORD_INIT_MESSAGE0="Testing -- initialize Recording";r.Msg.CocoRobo_RECORD_INIT_TOOLTIP=`Recording initialization.
- This block is in the test, need cocorobo board v1.1 or above hardware version.`;r.Msg.CocoRobo_RECORD_DEINIT_HELPURL="";r.Msg.CocoRobo_RECORD_DEINIT_MESSAGE0="Testing -- release cache of Recording";r.Msg.CocoRobo_RECORD_DEINIT_TOOLTIP=`Release the cache after the recording ends.
- This block is in the test, need cocorobo board v1.1 or above hardware version.`;r.Msg.CocoRobo_RECORD_WAV_HELPURL="";r.Msg.CocoRobo_RECORD_WAV_MESSAGE0="Testing -- record audio with storage path %1 and duration %2 second(s)";r.Msg.CocoRobo_RECORD_WAV_TOOLTIP=`Record audio and store it in *.wav format.
- This block is in the test, need cocorobo board v1.1 or above hardware version.`;r.Msg.CocoRobo_ASR_HELPURL="";r.Msg.CocoRobo_ASR_MESSAGE0="Testing -- return the result of speech recognition";r.Msg.CocoRobo_ASR_TOOLTIP=`Speech command need to be completed in 2 seconds.
- This block is in the test, need cocorobo board v1.1 or above hardware version.`;r.Msg.CocoRobo_HELPURL="https://CocoRobox.readthedocs.io/zh_CN/latest/CocoRoboX.html";r.Msg.CocoRobo_button_A="P5 (button A)";r.Msg.CocoRobo_button_B="P11 (button B)";r.Msg.CocoRobo_PIN7_RGB="P7 (Onboard RGB)";r.Msg.CocoRobo_PWM_PIN_P7="P7 (cocorobo board)";r.Msg.CocoRobo_PWM_PIN_P9="P9 (cocorobo box)";r.Msg.CocoRobo_tem="Temperature";r.Msg.CocoRobo_hum="Humidity";r.Msg.CocoRobo_pre="Air pressure";r.Msg.CocoRobo_left_right="Left-right";r.Msg.CocoRobo_front_back="Front-back";r.Msg.CocoRobo_vertical="Vertical";r.Msg.CocoRobo_horizontal="Horizontal";r.Msg.CocoRobo_run_in_back="Background";r.Msg.CocoRobo_run_in_front="Foreground";r.Msg.CocoRobo_draw="Draw";r.Msg.CocoRobo_clear="Clear";r.Msg.CocoRobo_s="Second";r.Msg.CocoRobo_ms="Millisecond";r.Msg.CocoRobo_us="Microsecond";r.Msg.CocoRobo_year="Year";r.Msg.CocoRobo_month="Month";r.Msg.CocoRobo_date="Day";r.Msg.CocoRobo_hour="Hour";r.Msg.CocoRobo_minute="Minute";r.Msg.CocoRobo_week="Week number";r.Msg.CocoRobo_days="Days number";r.Msg.CocoRobo_ORDER="#";r.Msg.CocoRobo_REVERSE_ORDER="Countdown #";r.Msg.MATH_RANDOM_RANDRANGE_HELPURL="https://CocoRobox.readthedocs.io/zh_CN/latest/CocoRoboX.html";r.Msg.MATH_RANDOM_RANDRANGE_TOOLTIP="Returns a random number in the specified incremental cardinality set, the base value defaults to 1";r.Msg.MATH_RANDOM_RANDRANGE_MESSAGE0="Random number increments from increment interval [%1 , %2) by step %3";r.Msg.MATH_KEEP_DECIMAL_HELPURL="";r.Msg.MATH_KEEP_DECIMAL_TOOLTIP="Returns the result of the specified value keeping the decimal point";r.Msg.MATH_KEEP_DECIMAL_MESSAGE0="%1 keep %2 decimal places";r.Msg.CocoRobo_MIN="Min value";r.Msg.CocoRobo_MAX="Max value";r.Msg.CocoRobo_LENTH="length";r.Msg.TUPLE_MIN_MAX_LEN_HELPURL="https://CocoRobox.readthedocs.io/zh_CN/latest/CocoRoboX.html";r.Msg.TUPLE_MIN_MAX_LEN_TOOLTIP="Return %2 of tuple";r.Msg.TUPLE_MIN_MAX_LEN_MESSAGE0="Tuple %1 %2";r.Msg.TUPLE_ITEM_EXIST_HELPURL="https://CocoRobox.readthedocs.io/zh_CN/latest/CocoRoboX.html";r.Msg.TUPLE_ITEM_EXIST_TOOLTIP="Determine whether the specified value is included, and return True or False";r.Msg.TUPLE_ITEM_EXIST_MESSAGE0="Tuple %1 include %2";r.Msg.LIST_ITEM_EXIST_HELPURL="https://CocoRobox.readthedocs.io/zh_CN/latest/CocoRoboX.html";r.Msg.LIST_ITEM_EXIST_TOOLTIP="The list contains a specific string";r.Msg.LIST_ITEM_EXIST_MESSAGE0="List %1 include %2";r.Msg.PARTS_OF_TUPLE_HELPURL="https://CocoRobox.readthedocs.io/zh_CN/latest/CocoRoboX.html";r.Msg.PARTS_OF_TUPLE_TOOLTIP="The sequence count starts from 0, and the reverse count starts from 1.";r.Msg.PARTS_OF_TUPLE_MESSAGE0="Return tuple %1 from the %2 to the last item";r.Msg.PARTS_OF_TUPLE2_HELPURL="https://CocoRobox.readthedocs.io/zh_CN/latest/CocoRoboX.html";r.Msg.PARTS_OF_TUPLE2_TOOLTIP=`Incremental order fetching
- Example:
- reciprocal number 5 to reciprocal number 2;
- 0th to 5th`;r.Msg.PARTS_OF_TUPLE2_MESSAGE0="Return tuple %1 takes %2 %3 items to %4 %5 items";r.Msg.PARTS_OF_LIST_HELPURL="https://CocoRobox.readthedocs.io/zh_CN/latest/CocoRoboX.html";r.Msg.PARTS_OF_LIST_TOOLTIP=`Incremental order fetching
- Example:
- reciprocal number 5 to reciprocal number 2;
- 0th to 5th`;r.Msg.PARTS_OF_LIST_MESSAGE0="Return list %1 takes %2 %3 items to %4 %5 items";r.Msg.LIST_TO_TUPLE_HELPURL="https://CocoRobox.readthedocs.io/zh_CN/latest/CocoRoboX.html";r.Msg.LIST_TO_TUPLE_TOOLTIP="List conversion to tuple";r.Msg.LIST_TO_TUPLE_MESSAGE0="List %1 conversion to tuple";r.Msg.tuple_create_with_MESSAGE0="Define tuple %1 = %2 ";r.Msg.tuple_create_with_TOOLTIP="When you only have one element, you need to add a comma after the element";r.Msg.tuple_create_with_HELPURL="https://CocoRobox.readthedocs.io/zh_CN/latest/CocoRoboX.html";r.Msg.tuple_order_item_MESSAGE0="Tuple %1 %2 %3 item";r.Msg.tuple_order_item_TOOLTIP="The sequence count starts from 0, and the reverse count starts from 1.";r.Msg.tuple_order_item_HELPURL="https://CocoRobox.readthedocs.io/zh_CN/latest/CocoRoboX.html";r.Msg.LIST_ORDER_ITEM_MESSAGE0="List %1 %2 %3 item";r.Msg.LIST_ORDER_ITEM_TOOLTIP="The sequence count starts from 0, and the reverse count starts from 1.";r.Msg.LIST_ORDER_ITEM_HELPURL="https://CocoRobox.readthedocs.io/zh_CN/latest/CocoRoboX.html";r.Msg.SET_LIST_ORDER_ITEM_MESSAGE0="Set list %1 %2 %3 item as %4";r.Msg.SET_LIST_ORDER_ITEM_TOOLTIP="The sequence count starts from 0, and the reverse count starts from 1.";r.Msg.SET_LIST_ORDER_ITEM_HELPURL="https://CocoRobox.readthedocs.io/zh_CN/latest/CocoRoboX.html";r.Msg.INSERT_LIST_ORDER_ITEM_MESSAGE0="Insert list %1 %2 %3 item as %4";r.Msg.INSERT_LIST_ORDER_ITEM_TOOLTIP="The sequence count starts from 0, and the reverse count starts from 1.";r.Msg.INSERT_LIST_ORDER_ITEM_HELPURL="https://CocoRobox.readthedocs.io/zh_CN/latest/CocoRoboX.html";r.Msg.SET_TUPLE_ORDER_ITEM_MESSAGE0="Set tuple %1 %2 %3 item as %4";r.Msg.SET_TUPLE_ORDER_ITEM_TOOLTIP="The sequence count starts from 0, and the reverse count starts from 1.";r.Msg.SET_TUPLE_ORDER_ITEM_HELPURL="https://CocoRobox.readthedocs.io/zh_CN/latest/CocoRoboX.html";r.Msg.DICT_CREATE_WITH_HELPURL="https://CocoRobox.readthedocs.io/zh_CN/latest/CocoRoboX.html";r.Msg.DICT_CREATE_WITH_TOOLTIP="Define a dictionary";r.Msg.DICT_CREATE_WITH_MESSAGE0="Define dictionary %1 = %2";r.Msg.SET_CREATE_WITH_HELPURL="https://CocoRobox.readthedocs.io/zh_CN/latest/CocoRoboX.html";r.Msg.SET_CREATE_WITH_TOOLTIP="Define collection";r.Msg.SET_CREATE_WITH_MESSAGE0="Define set %1 = %2";r.Msg.SET_UPDATE_WITH_HELPURL="https://CocoRobox.readthedocs.io/zh_CN/latest/CocoRoboX.html";r.Msg.SET_UPDATE_WITH_TOOLTIP="Add parameters as strings, lists, tuples, sets, dictionaries (add only key). For existing elements, do not do anything";r.Msg.SET_UPDATE_WITH_MESSAGE0="Update set %1 with %2";r.Msg.INTERSECTION_OF_SETS_HELPURL="https://CocoRobox.readthedocs.io/zh_CN/latest/CocoRoboX.html";r.Msg.INTERSECTION_OF_SETS_TOOLTIP="Return %1 of both collection";r.Msg.INTERSECTION_OF_SETS_MESSAGE0="%1 of set %2 and set %3";r.Msg.CocoRobo_INTERSECTION="Intersection";r.Msg.CocoRobo_UNION="Union";r.Msg.CocoRobo_DIFFERENCE="Difference";r.Msg.SETS_UPDATE_WAYS_HELPURL="https://CocoRobox.readthedocs.io/zh_CN/latest/CocoRoboX.html";r.Msg.SETS_UPDATE_WAYS_TOOLTIP="The collection is updated to the %3 of the specified collection";r.Msg.SETS_UPDATE_WAYS_MESSAGE0="Update set %1 as the %3 with set %2";r.Msg.SUBSET_SUPERSET_HELPURL="https://CocoRobox.readthedocs.io/zh_CN/latest/CocoRoboX.html";r.Msg.SUBSET_SUPERSET_TOOLTIP="Collection is %3 of collection";r.Msg.SUBSET_SUPERSET_MESSAGE0="Set %1 is %3 of set %2";r.Msg.CocoRobo_SUBSET="Subset";r.Msg.CocoRobo_SUPERSET="Superset";r.Msg.GET_SETS_POP_HELPURL="https://CocoRobox.readthedocs.io/zh_CN/latest/CocoRoboX.html";r.Msg.GET_SETS_POP_TOOLTIP="Return the collection with random items removed";r.Msg.GET_SETS_POP_MESSAGE0="Return a random item from the set %1, and remove it";r.Msg.LEN_OF_SETS_HELPURL="https://CocoRobox.readthedocs.io/zh_CN/latest/CocoRoboX.html";r.Msg.LEN_OF_SETS_TOOLTIP="Returns the length of the specified collection";r.Msg.LEN_OF_SETS_MESSAGE0="Length of set %1";r.Msg.CREATE_EMPTY_SET_HELPURL="https://CocoRobox.readthedocs.io/zh_CN/latest/CocoRoboX.html";r.Msg.CREATE_EMPTY_SET_TOOLTIP="";r.Msg.CREATE_EMPTY_SET_MESSAGE0="Create empty sets %1";r.Msg.BIT_INVERSION_HELPURL="https://CocoRobox.readthedocs.io/zh_CN/latest/CocoRoboX.html";r.Msg.BIT_INVERSION_TOOLTIP="Reverse each binary bit of data";r.Msg.BIT_INVERSION_MESSAGE0="Invert each binary bit of the data %1";r.Msg.TUPLE_CREATE_WITH_ITEMS_INSERT_HELPURL="https://CocoRobox.readthedocs.io/zh_CN/latest/CocoRoboX.html";r.Msg.TUPLE_CREATE_WITH_ITEMS_INSERT_TOOLTIP="The sequence count starts from 0, and the reverse count starts from 1.";r.Msg.SET_CREATE_WITH_ITEMS_INSERT_HELPURL="https://CocoRobox.readthedocs.io/zh_CN/latest/CocoRoboX.html";r.Msg.SET_CREATE_WITH_ITEMS_INSERT_TOOLTIP="Items can be strings, assigned variables, tuples";r.Msg.DICT_CREATE_WITH_ITEMS_INSERT_HELPURL="https://CocoRobox.readthedocs.io/zh_CN/latest/CocoRoboX.html";r.Msg.DICT_CREATE_WITH_ITEMS_INSERT_TOOLTIP="Initialize the dictionary";r.Msg.DICT_KEY_VALUE_HELPURL="https://CocoRobox.readthedocs.io/zh_CN/latest/CocoRoboX.html";r.Msg.DICT_KEY_VALUE_TOOLTIP="Returns the value of the specified key of the dictionary";r.Msg.DICT_KEY_VALUE_MESSAGE0="Value of the key %2 in dictionary %1";r.Msg.ADD_DICT_KEY_VALUE_HELPURL="https://CocoRobox.readthedocs.io/zh_CN/latest/CocoRoboX.html";r.Msg.ADD_DICT_KEY_VALUE_TOOLTIP="Update the key if the key already exists";r.Msg.ADD_DICT_KEY_VALUE_MESSAGE0="Add key %2 & value %3 to dictionary %1";r.Msg.DICT_LENGTH_HELPURL="https://CocoRobox.readthedocs.io/zh_CN/latest/CocoRoboX.html";r.Msg.DICT_LENGTH_TOOLTIP="Returns the length of the dictionary";r.Msg.DICT_LENGTH_MESSAGE0="Length of dictionary %1";r.Msg.DICT_KEY_EXIST_HELPURL="https://CocoRobox.readthedocs.io/zh_CN/latest/CocoRoboX.html";r.Msg.DICT_KEY_EXIST_TOOLTIP="Determine whether the dictionary contains the specified key, and return True or False";r.Msg.DICT_KEY_EXIST_MESSAGE0="Dictionary %1 include key %2";r.Msg.DICT_KEY_OR_VAL_LIST_HELPURL="https://CocoRobox.readthedocs.io/zh_CN/latest/CocoRoboX.html";r.Msg.DICT_KEY_OR_VAL_LIST_TOOLTIP="Return list of %2 in dictionary";r.Msg.DICT_KEY_OR_VAL_LIST_MESSAGE0="List of %2 in dictionary %1";r.Msg.DICT_KEYS="KEY";r.Msg.DICT_VALUES="VALUE";r.Msg.CocoRobo_lists_append_MESSAGE0="Add item %2 at the end of list %1";r.Msg.CocoRobo_lists_append_TOOLTIP="Add item to the end of the list";r.Msg.CocoRobo_lists_append_HELPURL="https://CocoRobox.readthedocs.io/zh_CN/latest/CocoRoboX.html";r.Msg.CocoRobo_lists_extend_MESSAGE0="List %1 append list %2";r.Msg.CocoRobo_lists_extend_TOOLTIP="Append list to list";r.Msg.CocoRobo_lists_extend_HELPURL="https://CocoRobox.readthedocs.io/zh_CN/latest/CocoRoboX.html";r.Msg.CocoRobo_lists_clear_MESSAGE0="Clear list %1";r.Msg.CocoRobo_lists_clear_TOOLTIP="Clear the list";r.Msg.CocoRobo_lists_clear_HELPURL="https://CocoRobox.readthedocs.io/zh_CN/latest/CocoRoboX.html";r.Msg.CocoRobo_Timer_value_MESSAGE0="Timer %1 count value";r.Msg.CocoRobo_Timer_value_TOOLTIP="Get and return the current count value of the timer";r.Msg.CocoRobo_Timer_deinit_MESSAGE0="Clear timer / event %1";r.Msg.CocoRobo_Timer_deinit_TOOLTIP="Cancel the initialization of the timer. Stop timer and disable timer peripherals";r.Msg.CocoRobo_Interrupt_AB_HELPURL="https://CocoRobo.readthedocs.io/zh/latest/tutorials/basics/buttons.html#id3";r.Msg.CocoRobo_Interrupt_AB_TOOLTIP="";r.Msg.CocoRobo_Interrupt_AB_MESSAGE0="When the button %1 is %2";r.Msg.CocoRobo_Interrupt_pin_HELPURL="https://CocoRobo.readthedocs.io/zh/latest/tutorials/basics/io/digital_io.html#id3";r.Msg.CocoRobo_Interrupt_pin_TOOLTIP="Rising edge trigger: from low level to high level; falling edge trigger: from high level to low level";r.Msg.CocoRobo_Interrupt_pin_MESSAGE0="When pin %1 level is from %2";r.Msg.CocoRobo_Interrupt_pin_IRQ_FALLING="↘ high to low";r.Msg.CocoRobo_Interrupt_pin_IRQ_RISING="↗ low to high";r.Msg.CocoRobo_IRQ_FALLING="Pressed";r.Msg.CocoRobo_IRQ_RISING="Released";r.Msg.CocoRobo_PERIODIC="Repeated mode";r.Msg.CocoRobo_ONE_SHOT="Delayed mode";r.Msg.CocoRobo_IS_SHAKED_MESSAGE0="The board %1";r.Msg.CocoRobo_IS_SHAKED_HELPURL="";r.Msg.CocoRobo_IS_SHAKED_TOOLTIP="";r.Msg.CocoRobo_IS_SHAKED="Was shaked";r.Msg.CocoRobo_IS_THROWN="Was thrown";r.Msg.CocoRobo_SHAKE_DETECTOR_MESSAGE0="When the board %1";r.Msg.CocoRobo_SHAKE_DETECTOR_HELPURL="";r.Msg.CocoRobo_SHAKE_DETECTOR_TOOLTIP="";r.Msg.CocoRobo_IS_TILTED_MESSAGE0="The board is %1";r.Msg.CocoRobo_IS_TILTED_HELPURL="";r.Msg.CocoRobo_IS_TILTED_TOOLTIP="";r.Msg.CocoRobo_TILT_DETECTOR_MESSAGE0="When the board is %1";r.Msg.CocoRobo_TILT_DETECTOR_HELPURL="";r.Msg.CocoRobo_TILT_DETECTOR_TOOLTIP="";r.Msg.CocoRobo_DIRECTION_FORWARD="Tilt forward";r.Msg.CocoRobo_DIRECTION_BACK="Tilt back";r.Msg.CocoRobo_DIRECTION_RIGHT="Tilt right";r.Msg.CocoRobo_DIRECTION_LEFT="Tilt left";r.Msg.CocoRobo_DIRECTION_NONE="Flat";r.Msg.CocoRobo_TOUCH_EVENT_MESSAGE0="When the touchpad %1 is %2";r.Msg.CocoRobo_TOUCH_EVENT_HELPURL="";r.Msg.CocoRobo_TOUCH_EVENT_TOOLTIP="";r.Msg.CocoRobo_TOUCH_EVENT_PRESSED="Pressed";r.Msg.CocoRobo_TOUCH_EVENT_UNPRESSED="Unpressed";r.Msg.CocoRobo_CUSTOM_EVENT_MESSAGE0="Event %1 : when %2";r.Msg.CocoRobo_CUSTOM_EVENT_HELPURL="";r.Msg.CocoRobo_CUSTOM_EVENT_TOOLTIP=`Custom events use port 1/2/4/7/8/9/10, shared with Timers, cannot access one port at the same time.
- Max up to 4 events/timers at the same time.
- If there is conflict, try changing the number.`;r.Msg.CocoRobo_music_HELPURL="https://CocoRobox.readthedocs.io/zh_CN/latest/CocoRoboX.html";r.Msg.CocoRobo_music_range_pitch_TOOLTIP="Duration is the length of a single frequency";r.Msg.CocoRobo_music_range_pitch_MESSAGE0="Play tone from %1 to %2 step %3 duration %4 ms Pin %5";r.Msg.CocoRobo_neopixel_init_HELPURL="https://CocoRobox.readthedocs.io/zh_CN/latest/CocoRoboX.html";r.Msg.CocoRobo_neopixel_init_TOOLTIP="";r.Msg.CocoRobo_neopixel_init_MESSAGE0="Initialize light strip with Name %1 Pin %2 Quantity %3";r.Msg.CocoRobo_NEOPIXEL_RAINBOW_HELPURL="https://CocoRobox.readthedocs.io/zh_CN/latest/CocoRoboX.html";r.Msg.CocoRobo_NEOPIXEL_RAINBOW_TOOLTIP="";r.Msg.CocoRobo_NEOPIXEL_RAINBOW_MESSAGE0="Define rainbow effect of light strip with Name %1 Quantity %2 bright %3 offset %4";r.Msg.CocoRobo_NEOPIXEL_BRIGHTNESS_HELPURL="https://CocoRobo.readthedocs.io/zh/master/library/micropython/neopixel.html#NeoPixel.brightness";r.Msg.CocoRobo_NEOPIXEL_BRIGHTNESS_TOOLTIP="Adjust the brightness range of 0 to 100";r.Msg.CocoRobo_NEOPIXEL_BRIGHTNESS_MESSAGE0="Light strip %1 set brightness as %2";r.Msg.CocoRobo_neopixel_single_TOOLTIP="";r.Msg.CocoRobo_neopixel_single_MESSAGE0="Light strip %1 # %2 R %3 G %4 B %5";r.Msg.CocoRobo_neopixel_single_gui_MESSAGE0="Light strip %1 # %2 color as %3";r.Msg.CocoRobo_neopixel_single_gui_TOOLTIP="";r.Msg.CocoRobo_neopixel_show_TOOLTIP="";r.Msg.CocoRobo_neopixel_show_MESSAGE0="Light strip %1 setting take effect";r.Msg.CocoRobo_neopixel_off_TOOLTIP="";r.Msg.CocoRobo_neopixel_off_MESSAGE0="Light strip %1 off";r.Msg.CocoRobo_neopixel_all_TOOLTIP="";r.Msg.CocoRobo_neopixel_all_MESSAGE0="Light strip %1 full bright R %2 G %3 B %4";r.Msg.CocoRobo_neopixel_all_gui_TOOLTIP="";r.Msg.CocoRobo_neopixel_all_gui_MESSAGE0="Light strip %1 full bright with color %2";r.Msg.CocoRobo_time_localtime_MESSAGE0="Local time %1";r.Msg.CocoRobo_time_localtime_TOOLTIP=`Week number: return 0 to 6, Monday is 0, Sunday is 6
- Days number: return the position of the day in the year
- It is recommended to connect wifi and get network time first.`;r.Msg.CocoRobo_WiFi_config_MESSAGE0="Wi-Fi configuration information %1";r.Msg.CocoRobo_WiFi_config_TOOLTIP="";r.Msg.CocoRobo_time_ticks_HELPURL="https://CocoRobox.readthedocs.io/zh_CN/latest/CocoRoboX.html";r.Msg.CocoRobo_time_ticks_MESSAGE0="Run time %1";r.Msg.CocoRobo_time_ticks_TOOLTIP="";r.Msg.CocoRobo_Timer_MESSAGE0="Set timer %1 %2 , cycle %3 millisecond(s)";r.Msg.CocoRobo_Timer_TOOLTIP=`Create timer n, n=1-14.
- Max up to 4 timers at the same time.
- If there is conflict, try changing the number.
- 3 for internal program,
- 5/6 for servo system and ADC,
- 11 is used for shaked event,
- 12 is used for touchpad event,
- 13 is used for Radio or DHT11/DHT22 timing value,
- 14 is used for OneNET or tilt detection,
- others ports are shared with custom events.`;r.Msg.CocoRobo_Timer_HELPURL="https://CocoRobox.readthedocs.io/zh_CN/latest/blocks/index.html";r.Msg.CocoRobo_bme280_hum_tem_pre_MESSAGE0="BME280 %1";r.Msg.CocoRobo_bme280_hum_tem_pre_TOOLTIP="Air pressure unit is 'Pa', temperature unit is 'Celsius', ambient humidity unit is '%'";r.Msg.CocoRobo_init_bluetooth_MESSAGE0="Initialize Bluetooth Name %1";r.Msg.CocoRobo_init_bluetooth_TOOLTIP="Initialize Bluetooth Name";r.Msg.CocoRobo_OnOff_bluetooth_MESSAGE0="Bluetooth device %1 broadcasting";r.Msg.CocoRobo_OnOff_bluetooth_TOOLTIP="Bluetooth devices turn on or off broadcasting";r.Msg.CocoRobo_HID_consumer_bluetooth_MESSAGE0="HID Consumption Equipment%1 Status%2";r.Msg.CocoRobo_HID_consumer_bluetooth_TOOLTIP="Controllers that simulate HID consumer devices, such as Bluetooth remote controls";r.Msg.CocoRobo_HID_mouse_bluetooth_MESSAGE0="HID Mouse button%1";r.Msg.CocoRobo_HID_mouse_bluetooth_TOOLTIP="HID Mouse button";r.Msg.CocoRobo_HID_mouse_pointer_bluetooth_MESSAGE0="Mouse pointer movement x%2 y%1";r.Msg.CocoRobo_HID_mouse_pointer_bluetooth_TOOLTIP="Relative Displacement of Mouse Pointer Coordinates X and Y,Range -1023 ~ 1023";r.Msg.CocoRobo_HID_release_mouse_bluetooth_MESSAGE0="Mouse Release Key";r.Msg.CocoRobo_HID_release_mouse_bluetooth_TOOLTIP="Mouse device";r.Msg.CocoRobo_HID_keyboard_bluetooth_MESSAGE0="HID Keyboard device keys%1";r.Msg.CocoRobo_HID_keyboard_bluetooth_TOOLTIP="HID keyboard equipment";r.Msg.CocoRobo_HID_keyboard_group_bluetooth_MESSAGE0="HID device keys%1 combination keys%2";r.Msg.CocoRobo_HID_keyboard_group_bluetooth_TOOLTIP='If you want to use multiple keystrokes to combine instructions, you can use "|" or arithmetic';r.Msg.CocoRobo_HID_keyboard_part_bluetooth_MESSAGE0="HID Device combination key%1";r.Msg.CocoRobo_HID_keyboard_part_bluetooth_TOOLTIP='If you want to use multiple key combinations of instructions, you can use "|" or operation';r.Msg.CocoRobo_HID_release_keyboard_bluetooth_MESSAGE0="Keyboard Release Key";r.Msg.CocoRobo_HID_release_keyboard_bluetooth_TOOLTIP="Keyboard equipment";r.Msg.CocoRobo_init_wifi_MESSAGE0="Connect to Wi-Fi with SSID %1 & Password %2";r.Msg.CocoRobo_init_wifi_TOOLTIP="Let the board access the Wi-Fi environment";r.Msg.CocoRobo_dis_WiFi_MESSAGE0="Disconnect Wi-Fi connection";r.Msg.CocoRobo_dis_WiFi_TOOLTIP="";r.Msg.CocoRobo_ENABLE_APWIFI_HELPURL="https://CocoRobo.readthedocs.io/zh/master/tutorials/basics/network/network_basics.html#ap";r.Msg.CocoRobo_ENABLE_APWIFI_TOOLTIP=`The password can be empty or alphanumeric with more than 8 digits.
- AP mode is only used for communication between the control boards. It cannot be used as a hotspot to make other devices access the Internet.`;r.Msg.CocoRobo_ENABLE_APWIFI_MESSAGE0="Open AP mode with SSID %1 & Password %2 Channel %3";r.Msg.CocoRobo_disable_APWiFi_MESSAGE0="Close AP mode";r.Msg.CocoRobo_disable_APWiFi_TOOLTIP="";r.Msg.CocoRobo_ntptime_settime_MESSAGE0="Synchronize network time";r.Msg.CocoRobo_ntptime_settime_TOOLTIP="NTP time synchronization is a time synchronization network technology";r.Msg.CocoRobo_ntptime_timezone_E1="UTC+1";r.Msg.CocoRobo_ntptime_timezone_E2="UTC+2";r.Msg.CocoRobo_ntptime_timezone_E3="UTC+3";r.Msg.CocoRobo_ntptime_timezone_E4="UTC+4";r.Msg.CocoRobo_ntptime_timezone_E5="UTC+5";r.Msg.CocoRobo_ntptime_timezone_E6="UTC+6";r.Msg.CocoRobo_ntptime_timezone_E7="UTC+7";r.Msg.CocoRobo_ntptime_timezone_E8="UTC+8";r.Msg.CocoRobo_ntptime_timezone_E9="UTC+9";r.Msg.CocoRobo_ntptime_timezone_E10="UTC+10";r.Msg.CocoRobo_ntptime_timezone_E11="UTC+11";r.Msg.CocoRobo_ntptime_timezone_E12="UTC+12";r.Msg.CocoRobo_ntptime_timezone_0="UTC";r.Msg.CocoRobo_ntptime_timezone_W1="UTC-1";r.Msg.CocoRobo_ntptime_timezone_W2="UTC-2";r.Msg.CocoRobo_ntptime_timezone_W3="UTC-3";r.Msg.CocoRobo_ntptime_timezone_W4="UTC-4";r.Msg.CocoRobo_ntptime_timezone_W5="UTC-5";r.Msg.CocoRobo_ntptime_timezone_W6="UTC-6";r.Msg.CocoRobo_ntptime_timezone_W7="UTC-7";r.Msg.CocoRobo_ntptime_timezone_W8="UTC-8";r.Msg.CocoRobo_ntptime_timezone_W9="UTC-9";r.Msg.CocoRobo_ntptime_timezone_W10="UTC-10";r.Msg.CocoRobo_ntptime_timezone_W11="UTC-11";r.Msg.CocoRobo_ntptime_timezone_W12="UTC-12";r.Msg.FILE_TO_LIST_HELPURL="";r.Msg.FILE_TO_LIST_TOOLTIP="Read the text file content of the specified path (only in UTF-8 format) and converts it to a list format, separated by the selected separator.";r.Msg.FILE_TO_LIST_MESSAGE0="Convert the text file %1 to a list separated by %2";r.Msg.FILE_TO_BIN_HELPURL="";r.Msg.FILE_TO_BIN_TOOLTIP="Reads the contents of the file in the specified path in binary format.";r.Msg.FILE_TO_BIN_MESSAGE0="Read the binary content of file %1";r.Msg.CocoRobo_INIT_FILE_HELPURL="";r.Msg.CocoRobo_INIT_FILE_TOOLTIP="Initializes a text file, creates a file if it does not exist, and clears the content if it exists.";r.Msg.CocoRobo_INIT_FILE_MESSAGE0="initialize text file %1";r.Msg.CocoRobo_WRITE_FILE_HELPURL="";r.Msg.CocoRobo_WRITE_FILE_TOOLTIP="Writes content to a text file of the specified path, and creates a file if the file does not exist.";r.Msg.CocoRobo_WRITE_FILE_MESSAGE0="Write content %2 to the text file %1 separated by %3";r.Msg.CocoRobo_SDCARD_INIT_HELPURL="https://CocoRobo.readthedocs.io/zh/master/library/cocorobo/sdcard.html#sdcard.SDCard";r.Msg.CocoRobo_SDCARD_INIT_TOOLTIP=`Sck: P13
- mosi: P15
- miso: P14
- sdcard: P16
- Make sure that the pins of the SPI bus are connected to the micro SD card which is formatted by using the FAT or FAT32 file system.`;r.Msg.CocoRobo_SDCARD_INIT_MESSAGE0="Initialize SD card";r.Msg.CocoRobo_SDCARD_MOUNT_HELPURL="https://CocoRobo.readthedocs.io/zh/master/library/cocorobo/sdcard.html#sdcard.SDCard";r.Msg.CocoRobo_SDCARD_MOUNT_TOOLTIP="Mount the SD card to the specified path.";r.Msg.CocoRobo_SDCARD_MOUNT_MESSAGE0="Mount SD card to path %1";r.Msg.CocoRobo_ENTER="Rnter";r.Msg.CocoRobo_COMMA="Comma";r.Msg.CocoRobo_SEMICOLON="Semicolon";r.Msg.CocoRobo_SPACE="Space";r.Msg.CocoRobo_def_clock_MESSAGE0="Initialize clock %1 x %2 y %3 radius %4";r.Msg.CocoRobo_def_clock_TOOLTIP="";r.Msg.CocoRobo_settime_clock_MESSAGE0="Clock %1 read time";r.Msg.CocoRobo_settime_clock_TOOLTIP="";r.Msg.CocoRobo_draw_clear_clock_MESSAGE0="%1 clock %2";r.Msg.CocoRobo_draw_clear_clock_TOOLTIP="";r.Msg.CocoRobo_tinywebio_start_MESSAGE0="Start TinyWebIO service, run in %1";r.Msg.CocoRobo_tinywebio_start_TOOLTIP="Wi-Fi is required to start the service, and the TinyWebIO service provides a remote control interface for the App Inventor application.";r.Msg.CocoRobo_tinywebio_client_setup_HELPURL="";r.Msg.CocoRobo_tinywebio_client_setup_TOOLTIP=`Items send to the server (separated by comma)
- buttona/b Button status
- touchpadp/y/t/h/o/n Touch button value
- light Light value
- sound Sound value
- accelerometer Triaxial acceleration value
- id the board identification
- time timestamp
- pind<n> digital IO pin
- pina<n> analog IO pin
- ----------
- Items read from the server (separated by comma)
- rgb0/ 1/2 RGB lamp bead
- oled LCD display
- music music
- servo<n> steering gear
- pind<n> digital IO pin
- pina<n> analog IO pin`;r.Msg.CocoRobo_tinywebio_client_setup_MESSAGE0="Setup TinyWebIO client params %1 TinyWebDB server address %2 items send to the server %3 items read from the server %4 access server time interval(ms) %5";r.Msg.CocoRobo_tinywebio_client_action_HELPURL="";r.Msg.CocoRobo_tinywebio_client_action_TOOLTIP="";r.Msg.CocoRobo_tinywebio_client_action_MESSAGE0="%1 TinyWebIO client";r.Msg.CocoRobo_tinywebio_client_action_start="Start";r.Msg.CocoRobo_tinywebio_client_action_stop="Stop";r.Msg.CocoRobo_CUSTOM_CODE_HELPURL="";r.Msg.CocoRobo_CUSTOM_CODE_TOOLTIP="";r.Msg.CocoRobo_CUSTOM_CODE_MESSAGE0="%1 custom code %2 %3";r.Msg.CocoRobo_CUSTOM_TYPE_IMPORT="Topping";r.Msg.CocoRobo_CUSTOM_TYPE_NORMAL="Normal";r.Msg.CocoRobo_servo_angle0_MESSAGE0="Set the servo %1 angle as %2";r.Msg.CocoRobo_servo_angle_MESSAGE0="Set the servo %1 angle as %2 pulse width from %3 us to %4 us actuation range as %5";r.Msg.CocoRobo_servo_angle_TOOLTIP="Power cable Vcc (red) connected to expansion-board power port V, ground line GND (brown) connected to expansion-board ground port G, control signal line (orange) connected to selected expansion-board pins";r.Msg.CocoRobo_dh11_hum_tem_MESSAGE0="DHT11 %1 %2";r.Msg.CocoRobo_dh11_hum_tem_TOOLTIP='"+" on the DHT11 connects the power port of the expansion-board V, "-" connects the ground port of the expansion-board G, "out" connects the pin0 of the expansion-board';r.Msg.CocoRobo_DH22_HUM_TEM_MESSAGE0="DHT22 %1 %2";r.Msg.CocoRobo_DH22_HUM_TEM_TOOLTIP="";r.Msg.CocoRobo_DH22_HUM_TEM_HELPURL="https://CocoRobo.readthedocs.io/zh/latest/classic/dht11.html?highlight=DHT";r.Msg.CocoRobo_music_note_MESSAGE0="Note %1 %2 : %3";r.Msg.CocoRobo_music_note_TOOLTIP="Note, such as C4:4";r.Msg.CocoRobo_return_list_MESSAGE0="Define list %1 = %2";r.Msg.CocoRobo_return_list_TOOLTIP="Define a list";r.Msg.CocoRobo_display_Show_MESSAGE0="LCD setting take effect";r.Msg.CocoRobo_display_Show_TOOLTIP="";r.Msg.CocoRobo_display_DispChar_MESSAGE0="Display text %3 at x %1 y %2 text mode %4";r.Msg.CocoRobo_display_DispChar_TOOLTIP="LCD resolution 128x64";r.Msg.CocoRobo_display_DispChar_HELPURL="https://CocoRobo.readthedocs.io/zh/master/library/cocorobo/CocoRobo.html?highlight=lcd#lcd.DispChar";r.Msg.CocoRobo_display_DispChar_5lines_MESSAGE0="LCD line %1 shows %2 text mode %3";r.Msg.CocoRobo_display_DispChar_5lines_TOOLTIP="LCD resolution 128x64";r.Msg.CocoRobo_line1="1";r.Msg.CocoRobo_line2="2";r.Msg.CocoRobo_line3="3";r.Msg.CocoRobo_line4="4";r.Msg.CocoRobo_line5="5";r.Msg.CocoRobo_CLEAR_DISPCHAR_5LINES_MESSAGE0="LCD clear line %1";r.Msg.CocoRobo_CLEAR_DISPCHAR_5LINES_TOOLTIP="LCD resolution 128x64";r.Msg.CocoRobo_CLEAR_DISPCHAR_5LINES_HELPURL="";r.Msg.CocoRobo_display_fill_O="initialize";r.Msg.CocoRobo_display_fill_0="Clear";r.Msg.CocoRobo_display_fill_1="Full bright";r.Msg.CocoRobo_display_invert_0="Black background";r.Msg.CocoRobo_display_invert_1="White background";r.Msg.CocoRobo_display_show="Show";r.Msg.CocoRobo_display_fill_MESSAGE0="LCD display initialize";r.Msg.GLCDD="Get LCD display's %1";r.Msg.CocoRobo_display_fill_TOOLTIP="";r.Msg.CocoRobo_display_pixel_0="Dark";r.Msg.CocoRobo_display_pixel_1="Bright";r.Msg.CocoRobo_display_pixel_MESSAGE0="Draw a point x %1 y %2 as %3";r.Msg.CocoRobo_display_pixel_TOOLTIP="";r.Msg.CocoRobo_display_hline_0="Erase";r.Msg.CocoRobo_display_hline_1="Draw";r.Msg.CocoRobo_display_hline_MESSAGE0="%1 horizontal line %2 x %3 y %4 length %5";r.Msg.CocoRobo_display_hline_TOOLTIP="";r.Msg.CocoRobo_ProgressBar_MESSAGE0="Progress bar %1 x %2 y %3 width %4 height %5 progress %6";r.Msg.CocoRobo_ProgressBar_TOOLTIP="";r.Msg.CocoRobo_stripBar_MESSAGE0="Column bar %1 x %2 y %3 width %4 height %5 progress %6";r.Msg.CocoRobo_stripBar_TOOLTIP="";r.Msg.CocoRobo_QR_CODE_HELPURL="https://CocoRobo.readthedocs.io/zh/master/library/cocorobo/gui.html#gui.UI.qr_code";r.Msg.CocoRobo_QR_CODE_TOOLTIP="";r.Msg.CocoRobo_QR_CODE_MESSAGE0="Display QR code %3 at x %1 y %2 with size %4";r.Msg.CocoRobo_DISPLAY_MODE_0="Erase";r.Msg.CocoRobo_DISPLAY_MODE_1="Draw";r.Msg.CocoRobo_DISPLAY_HOLLOW="Hollow";r.Msg.CocoRobo_DISPLAY_SOLID="Solid";r.Msg.CocoRobo_DISPLAY_HVLINE_MESSAGE0="%1 %2 line %3 x %4 y %5 length %6";r.Msg.CocoRobo_DISPLAY_HVLINE_TOOLTIP="";r.Msg.CocoRobo_DISPLAY_SHAPE_RECT_MESSAGE0="%1 %2 rectangle %3 x %4 y %5 width %6 height %7";r.Msg.CocoRobo_DISPLAY_SHAPE_RECT_TOOLTIP="";r.Msg.CocoRobo_DISPLAY_SHAPE_CIRCLE_MESSAGE0="%1 %2 circle %3 x %4 y %5 radius %6";r.Msg.CocoRobo_DISPLAY_SHAPE_CIRCLE_TOOLTIP="";r.Msg.CocoRobo_DISPLAY_SHAPE_TRIANGLE_MESSAGE0="%1 %2 triangle %3 x1 %4 y1 %5 x2 %6 y2 %7 x3 %8 y3 %9";r.Msg.CocoRobo_DISPLAY_SHAPE_TRIANGLE_TOOLTIP="";r.Msg.CocoRobo_RGB_0="0 #";r.Msg.CocoRobo_RGB_1="1 #";r.Msg.CocoRobo_RGB_2="2 #";r.Msg.CocoRobo_RGB_ALL="all";r.Msg.CocoRobo_SET_RGB_LIST_COLOR_MESSAGE0="Set %1 RGB light(s) color to %2";r.Msg.CocoRobo_SET_RGB_LIST_COLOR_TOOLTIP="1/30 of the original brightness can better display the color difference";r.Msg.CocoRobo_SET_RGB_LIST_NUMBER_MESSAGE0="Set %1 RGB light(s) color to R%2 G%3 B%4";r.Msg.CocoRobo_SET_RGB_LIST_NUMBER_TOOLTIP="1/30 of the original brightness can better display the color difference";r.Msg.CocoRobo_OFF_RGB_LIST_MESSAGE0="Turn off %1 RGB light(s)";r.Msg.CocoRobo_OFF_RGB_LIST_TOOLTIP="";r.Msg.CocoRobo_MUSIC_PLAY_MESSAGE0="Play music %1 Pin %2";r.Msg.CocoRobo_MUSIC_PLAY_TOOLTIP="Play the built-in music";r.Msg.CocoRobo_MUSIC_PLAY_UNTIL_END_MESSAGE0="Play music %1 until end, Pin %2";r.Msg.CocoRobo_MUSIC_PLAY_UNTIL_END_TOOLTIP="Play the built-in music";r.Msg.CocoRobo_MUSIC_GE_CHANG_ZU_GUO="GE_CHANG_ZU_GUO";r.Msg.CocoRobo_MUSIC_DONG_FANG_HONG="DONG_FANG_HONG";r.Msg.CocoRobo_MUSIC_CAI_YUN_ZHUI_YUE="CAI_YUN_ZHUI_YUE";r.Msg.CocoRobo_MUSIC_ZOU_JIN_XIN_SHI_DAI="ZOU_JIN_XIN_SHI_DAI";r.Msg.CocoRobo_MUSIC_MO_LI_HUA="MO_LI_HUA";r.Msg.CocoRobo_MUSIC_YI_MENG_SHAN_XIAO_DIAO="YI_MENG_SHAN_XIAO_DIAO";r.Msg.CocoRobo_display_vline_MESSAGE0="%1 vertical line %2 x %3 y %4 length %5";r.Msg.CocoRobo_display_vline_TOOLTIP="";r.Msg.CocoRobo_display_line_MESSAGE0="%1 line %2 x1 %3 y1 %4 to x2 %5 y2 %6";r.Msg.CocoRobo_display_line_TOOLTIP="";r.Msg.CocoRobo_display_rect_MESSAGE0="%1 border %2 x %3 y %4 width %5 height %6";r.Msg.CocoRobo_display_rect_TOOLTIP="";r.Msg.CocoRobo_display_RoundRect_MESSAGE0="%1 arc border %2 x %3 y %4 width %5 height %6 radius %7";r.Msg.CocoRobo_display_RoundRect_TOOLTIP="";r.Msg.CocoRobo_display_fill_rect_MESSAGE0="%1 rectangle %2 x %3 y %4 width %5 height %6";r.Msg.CocoRobo_display_fill_rect_TOOLTIP="";r.Msg.CocoRobo_display_fill_circle_MESSAGE0="%1 solid circle %2 x %3 y %4 radius %5";r.Msg.CocoRobo_display_fill_circle_TOOLTIP="";r.Msg.CocoRobo_display_circle_MESSAGE0="%1 hollow circle %2 x %3 y %4 radius %5";r.Msg.CocoRobo_display_circle_TOOLTIP="";r.Msg.CocoRobo_display_triangle_MESSAGE0="%1 hollow triangle %2 x %3 y %4 x2 %5 y2 %6 x3 %7 y3 %8";r.Msg.CocoRobo_display_triangle_TOOLTIP="";r.Msg.CocoRobo_display_fill_triangle_MESSAGE0="%1 solid triangle %2 x %3 y %4 x2 %5 y2 %6 x3 %7 y3 %8";r.Msg.CocoRobo_display_fill_triangle_TOOLTIP="";r.Msg.CocoRobo_display_Bitmap_MESSAGE0="%1 pattern x %2 y %3 width %4 height %5 with hex image data %6";r.Msg.CocoRobo_display_Bitmap_TOOLTIP="Display hex image data at a specified position on the LCD screen";r.Msg.CocoRobo_GET_PBM_DATA_MESSAGE0="Get inner image %1 Pattern %2";r.Msg.CocoRobo_GET_PBM_DATA_TOOLTIP="Supports * .PBM or * .PBM format monochrome image files, retrieves image file data of specified path, and returns a tuple object";r.Msg.CocoRobo_GET_PBM_DATA_HELPURL="https://CocoRobo.readthedocs.io/zh/master/library/cocorobo/gui.html#image";r.Msg.CocoRobo_GET_PBM_DATA_CUSTOM_MESSAGE0="Get custom image%1 mode%2";r.Msg.CocoRobo_DISPLAY_PBM_DATA_MESSAGE0="Display image at x %1 y %2 with data %3";r.Msg.CocoRobo_DISPLAY_PBM_DATA_TOOLTIP="Monochromatic image files supporting * .PBM or * .PBM formats";r.Msg.CocoRobo_DISPLAY_PBM_DATA_HELPURL="https://CocoRobo.readthedocs.io/zh/master/library/cocorobo/gui.html#image";r.Msg.CocoRobo_BITMAP_FROM_FILE_MESSAGE0="Display image at x %1 y %2 with data %5 width %3 height %4";r.Msg.CocoRobo_BITMAP_FROM_FILE_TOOLTIP="";r.Msg.CocoRobo_BITMAP_FROM_FILE_HELPURL="";r.Msg.CocoRobo_horizontal="Horizontal";r.Msg.CocoRobo_vertical="Vertical";r.Msg.CocoRobo_front="Front";r.Msg.CocoRobo_reverse="Reverse";r.Msg.CocoRobo_FONT_DIGIFACE_11="Digiface 11px";r.Msg.CocoRobo_FONT_DIGIFACE_16="Digiface 16px";r.Msg.CocoRobo_FONT_DIGIFACE_21="Digiface 21px";r.Msg.CocoRobo_FONT_DIGIFACE_30="Digiface 30px";r.Msg.CocoRobo_FONT_DIGIFACE_44="Digiface 44px";r.Msg.CocoRobo_FONT_DIGIFACE_IT_30="Digiface Italic 30px";r.Msg.CocoRobo_FONT_DIGIFACE_IT_42="Digiface Italic 42px";r.Msg.CocoRobo_FONT_DVSM_12="DejaVu Sans Mono 12px";r.Msg.CocoRobo_FONT_DVSM_16="DejaVu Sans Mono 16px";r.Msg.CocoRobo_FONT_DVSM_21="DejaVu Sans Mono 21px";r.Msg.CocoRobo_FONT_DVSMB_12="DejaVu Sans Mono Bold 12px";r.Msg.CocoRobo_FONT_DVSMB_16="DejaVu Sans Mono Bold 16px";r.Msg.CocoRobo_FONT_DVSMB_21="DejaVu Sans Mono Bold 21px";r.Msg.CocoRobo_FONT_WRAP="Auto wrap";r.Msg.CocoRobo_FONT_NO_WRAP="No wrap";r.Msg.CocoRobo_FACE_1="Heart";r.Msg.CocoRobo_FACE_2="Small heart";r.Msg.CocoRobo_FACE_3="Happy";r.Msg.CocoRobo_FACE_4="Smile";r.Msg.CocoRobo_FACE_5="Sad";r.Msg.CocoRobo_FACE_6="Confused";r.Msg.CocoRobo_FACE_7="Angry";r.Msg.CocoRobo_FACE_8="Sleep";r.Msg.CocoRobo_FACE_9="Surprise";r.Msg.CocoRobo_FACE_10="Silly";r.Msg.CocoRobo_FACE_11="Wonderful";r.Msg.CocoRobo_FACE_12="Bored";r.Msg.CocoRobo_FACE_ROCK="Rock";r.Msg.CocoRobo_FACE_PAPER="Paper";r.Msg.CocoRobo_FACE_SCISSORS="Scissors";r.Msg.CocoRobo_FACE_ROCK_S="Small rock";r.Msg.CocoRobo_FACE_PAPER_S="Small paper";r.Msg.CocoRobo_FACE_SCISSORS_S="Small scissors";r.Msg.CocoRobo_DISPLAY_FONT_MESSAGE0="Display text %3 at x %1 y %2, using %4 font with %5";r.Msg.CocoRobo_DISPLAY_FONT_TOOLTIP="";r.Msg.CocoRobo_DISPLAY_FONT_HELPURL="";r.Msg.CocoRobo_button_is_pressed_MESSAGE0="Button %1 is pressed";r.Msg.CocoRobo_button_is_pressed_TOOLTIP="";r.Msg.CocoRobo_touchPad_value_MESSAGE0="Button %1 is touched";r.Msg.CocoRobo_touchPad_value_TOOLTIP="";r.Msg.CocoRobo_touchPad_value_num_MESSAGE0="Button %1 touch value";r.Msg.CocoRobo_touchPad_value_num_TOOLTIP="";r.Msg.CocoRobo_read_digital_MESSAGE0="Pin %1 digital value";r.Msg.CocoRobo_read_digital_TOOLTIP="";r.Msg.CocoRobo_read_DS18B20_MESSAGE0="DS18B20 waterproof temperature sensor at pin %1";r.Msg.CocoRobo_read_DS18B20_TOOLTIP="";r.Msg.CocoRobo_read_DS18B20_HELPURL="http://docs.micropython.org/en/latest/esp32/quickref.html?highlight=onewire#onewire-driver";r.Msg.CocoRobo_set_digital_MESSAGE0="Set pin %2 digital value to %1";r.Msg.CocoRobo_set_digital_TOOLTIP="";r.Msg.CocoRobo_read_analog_MESSAGE0="Pin %1 analog value";r.Msg.CocoRobo_read_analog_TOOLTIP="";r.Msg.CocoRobo_set_analog_MESSAGE0="Set pin %2 analog value (PWM) to %1";r.Msg.CocoRobo_set_analog_TOOLTIP="The analog output is a pulse width modulated signal output through the IO pin, which outputs a specified voltage value, referred to as PWM.";r.Msg.CocoRobo_set_RGB_MESSAGE0="Set %1 RGB light color to R %2 G %3 B %4";r.Msg.CocoRobo_set_RGB_TOOLTIP="1/30 of the original brightness can better display the color difference";r.Msg.CocoRobo_set_RGB_color_MESSAGE0="Set %1 RGB light color to %2";r.Msg.CocoRobo_set_RGB_color_TOOLTIP="1/30 of the original brightness can better display the color difference";r.Msg.CocoRobo_set_RGB_all_MESSAGE0="Set all RGB lights color to R %1 G %2 B %3";r.Msg.CocoRobo_set_RGB_all_TOOLTIP="1/30 of the original brightness can better display the color difference";r.Msg.CocoRobo_set_RGB_color_all_MESSAGE0="Set all RGB lights color to %1";r.Msg.CocoRobo_set_RGB_color_all_TOOLTIP="1/30 of the original brightness can better display the color difference";r.Msg.CocoRobo_fresh_RGB_MESSAGE0="RGB lights settings take effect";r.Msg.CocoRobo_fresh_RGB_TOOLTIP="";r.Msg.CocoRobo_off_RGB_MESSAGE0="Turn off all RGB lights";r.Msg.CocoRobo_off_RGB_TOOLTIP="";r.Msg.CocoRobo_buzz_state_MESSAGE0="Stop playing music";r.Msg.CocoRobo_buzz_state_TOOLTIP="";r.Msg.CocoRobo_buzz_freq_MESSAGE0="Play continuous tone %1 at Pin %2";r.Msg.CocoRobo_buzz_freq_TOOLTIP="";r.Msg.CocoRobo_buzz_tone_MESSAGE0="Play tone %1";r.Msg.CocoRobo_buzz_tone_TOOLTIP="";r.Msg.CocoRobo_MUSIC_TONE_TEMPO_HELPURL="";r.Msg.CocoRobo_MUSIC_TONE_TEMPO_TOOLTIP="The default pin is P6 of the cocorobo board";r.Msg.CocoRobo_MUSIC_TONE_TEMPO_MESSAGE0="play musical note %1 at Pin %2";r.Msg.CocoRobo_MUSIC_TONE_HELPURL="";r.Msg.CocoRobo_MUSIC_TONE_TOOLTIP="";r.Msg.CocoRobo_MUSIC_TONE_MESSAGE0="Tone %1";r.Msg.CocoRobo_MUSIC_MUSICAL_NOTE_HELPURL="";r.Msg.CocoRobo_MUSIC_MUSICAL_NOTE_TOOLTIP="";r.Msg.CocoRobo_MUSIC_MUSICAL_NOTE_MESSAGE0="Note %1 beat %2";r.Msg.CocoRobo_MUSIC_TICK_HELPURL="";r.Msg.CocoRobo_MUSIC_TICK_TOOLTIP="";r.Msg.CocoRobo_MUSIC_TICK_MESSAGE0="Beat %1";r.Msg.CocoRobo_4_LINES_HELPURL="";r.Msg.CocoRobo_4_LINES_TOOLTIP="";r.Msg.CocoRobo_4_LINES_MESSAGE0="%1";r.Msg.NUMBER_1="1";r.Msg.NUMBER_1_2="1/2";r.Msg.NUMBER_1_4="1/4";r.Msg.NUMBER_2="2";r.Msg.NUMBER_4="4";r.Msg.CocoRobo_read_sound_MESSAGE0="Sound value";r.Msg.CocoRobo_read_sound_TOOLTIP="";r.Msg.CocoRobo_read_light_MESSAGE0="Light value";r.Msg.CocoRobo_read_light_TOOLTIP="";r.Msg.CocoRobo_accelerometer_get_MESSAGE0="%1 axis acceleration";r.Msg.CocoRobo_accelerometer_get_TOOLTIP="";r.Msg.CocoRobo_ACCELEROMETER_RANGE_2G="±2g";r.Msg.CocoRobo_ACCELEROMETER_RANGE_4G="±4g";r.Msg.CocoRobo_ACCELEROMETER_RANGE_8G="±8g";r.Msg.CocoRobo_ACCELEROMETER_RANGE_16G="±16g";r.Msg.CocoRobo_ACCELEROMETER_RES_10_BIT="10bits";r.Msg.CocoRobo_ACCELEROMETER_RES_12_BIT="12bits";r.Msg.CocoRobo_ACCELEROMETER_RES_14_BIT="14bits";r.Msg.CocoRobo_ACCELEROMETER_SET_RANGE_TOOLTIP="Set the acceleration range, the default is ±2g。";r.Msg.CocoRobo_ACCELEROMETER_SET_RANGE_MESSAGE0="Set acceleration range to %1";r.Msg.CocoRobo_ACCELEROMETER_SET_RESOLUSTION_TOOLTIP="Set the acceleration resolution, the default is 10bits。";r.Msg.CocoRobo_ACCELEROMETER_SET_RESOLUSTION_MESSAGE0="seSett acceleration resolution to %1";r.Msg.CocoRobo_ACCELEROMETER_SET_OFFSET_TOOLTIP=`Calibrate the acceleration value deviation of the three axes (x, y, z) of the accelerometer.
- In general, calibration is not required, and calibration is only required when the acceleration deviation is large.
- x , y , z are the adjustment deviation values, and the correction range is ±1g.
- Note: Calibration data will not be saved after power off.`;r.Msg.CocoRobo_ACCELEROMETER_SET_OFFSET_MESSAGE0="Calibration acceleration value with %1 X axis deviation %2 Y axis deviation %3 Z axis deviation %4";r.Msg.CocoRobo_COMPASS_GET_AXIS_TOOLTIP="Only applicable to cocorobo board 2.0 and above";r.Msg.CocoRobo_COMPASS_GET_AXIS_MESSAGE0="Magnetic force of %1 axis";r.Msg.CocoRobo_COMPASS_GET_ANGLE_TOOLTIP="Only applicable to cocorobo board 2.0 and above";r.Msg.CocoRobo_COMPASS_GET_ANGLE_MESSAGE0="Compass direction";r.Msg.CocoRobo_TILT_ANGLE_HELPURL="";r.Msg.CocoRobo_TILT_ANGLE_TOOLTIP="";r.Msg.CocoRobo_TILT_ANGLE_MESSAGE0="%1 axis tilt angle";r.Msg.CocoRobo_random_choice_MESSAGE0="Random item %1";r.Msg.CocoRobo_random_choice_TOOLTIP="Return a random item in a list or string in String format";r.Msg.CocoRobo_i2c_init_MESSAGE0="Initialize I2C with baudrate %1";r.Msg.CocoRobo_i2c_init_TOOLTIP="SCL pin 19, SDA pin 20, sharing I2C bus with internal LCD and accelerometer";r.Msg.CocoRobo_dev_i2c_init_MESSAGE0="Initialize I2C SCL %2 SDA %3 baudrate %1";r.Msg.CocoRobo_dev_i2c_init_TOOLTIP="";r.Msg.CocoRobo_dev_i2c_init_HELPURL="https://CocoRobo.readthedocs.io/zh/master/library/micropython/machine/machine.I2C.html#machine.I2C";r.Msg.MACHINE_TIME_PULSE_US_HELPURL="https://CocoRobo.readthedocs.io/zh/master/library/micropython/machine/machine.html?highlight=machine.time_pulse_us#machine.time_pulse_us";r.Msg.MACHINE_TIME_PULSE_US_MESSAGE0="Duration(us) of external %2 pulse level at %1";r.Msg.MACHINE_TIME_PULSE_US_TOOLTIP="";r.Msg.BYTES="Bytes";r.Msg.CocoRobo_i2c_read_write_MESSAGE0="I2C address %1 is written to %2";r.Msg.CocoRobo_i2c_read_write_TOOLTIP=`Address format: [Number]
- Written format: [Number, String]`;r.Msg.CocoRobo_i2c_readfrom_MESSAGE0="I2C address %1 read bytes number %2";r.Msg.CocoRobo_i2c_readfrom_TOOLTIP=`Address format: Number
- Return: a string of bytes objects that read data`;r.Msg.AUTH="Please authorize this app to enable your work to be saved and to allow it to be shared by you.";r.Msg.CHAT="Chat with your collaborator by typing in this box!";r.Msg.TRY_EXCEPT_FINALLY="Finally";r.Msg.TRY_EXCEPT_FINALLY_TOOLTIP="";r.Msg.TRY_EXCEPT_EXCEPT="Except";r.Msg.TRY_EXCEPT_EXCEPT_TOOLTIP="";r.Msg.TRY_EXCEPT_TRY="Try";r.Msg.TRY_EXCEPT_TRY_TOOLTIP="";r.Msg.TRY_EXCEPT_HELPURL="https://CocoRobox.readthedocs.io/zh_CN/latest/index.html";r.Msg.LISTS_POP_HELPURL="";r.Msg.LISTS_POP_TOOLTIP="";r.Msg.LISTS_POP_MESSAGE0="Remove %2 item in list %1";r.Msg.MATH_CONVERT_HELPURL="";r.Msg.MATH_CONVERT_MESSAGE0="%1 %2";r.Msg.MATH_CONVERT_TOOLTIP="Conversion data type";r.Msg.MATH_DIVISION_CONSULT_HELPURL="";r.Msg.MATH_DIVISION_CONSULT_TITLE="The integer part of the quotient %1 ÷ %2";r.Msg.MATH_DIVISION_CONSULT_TOOLTIP="Returns the integer part of the quotient of two numbers";r.Msg.MATH_NUMBER_BITS_OPS_HELPURL="";r.Msg.MATH_NUMBER_BITS_OPS_MESSAGE0="%1 %2 %3";r.Msg.MATH_NUMBER_BITS_OPS_TOOLTIP="Bitwise operations on numbers";r.Msg.ME="Me";r.Msg.CocoRobo_PRINT_TO_CHART_TOOLTIP="";r.Msg.CocoRobo_PRINT_TO_CHART_EMPTY_TITLE="Print data to chart";r.Msg.CocoRobo_PRINT_TO_CHART_INPUT_WITH="Print data to chart";r.Msg.CocoRobo_PRINT_TO_CHART_ITEM_TITLE="Data";r.Msg.CocoRobo_PRINT_TO_CHART_ITEM_TOOLTIP="";r.Msg.CocoRobo_PRINT_TO_CHART_CONTAINER_TITLE_ADD="Data content";r.Msg.CocoRobo_PRINT_TO_CHART_CONTAINER_TOOLTIP="";r.Msg.CocoRobo_INIT_CHART_TOOLTIP="";r.Msg.CocoRobo_INIT_CHART_EMPTY_TITLE="Init chart column headers";r.Msg.CocoRobo_INIT_CHART_INPUT_WITH="Init chart column headers";r.Msg.CocoRobo_INIT_CHART_ITEM_TITLE="Header";r.Msg.CocoRobo_INIT_CHART_ITEM_TOOLTIP="";r.Msg.CocoRobo_INIT_CHART_CONTAINER_TITLE_ADD="Column header";r.Msg.CocoRobo_INIT_CHART_CONTAINER_TOOLTIP="";r.Msg.MICROBIT_IMAGE_CREATE1_MESSAGE0="Create image %1 line 1 %2 line 2 %3 line 3 %4 line 4 %5 line 5 %6";r.Msg.MICROBIT_IMAGE_CREATE1_TOOLTIP="Create new image.";r.Msg.MICROBIT_IMAGE_CREATE1_HELPURL="";r.Msg.ADD_COMMENT="Add Comment";r.Msg.CHANGE_VALUE_TITLE="Change value:";r.Msg.COLLAPSE_ALL="Collapse Blocks";r.Msg.COLLAPSE_BLOCK="Collapse Block";r.Msg.COLOUR_BLEND_COLOUR1="Colour 1";r.Msg.COLOUR_BLEND_COLOUR2="Colour 2";r.Msg.COLOUR_BLEND_HELPURL="http://meyerweb.com/eric/tools/color-blend/";r.Msg.COLOUR_BLEND_RATIO="Ratio";r.Msg.COLOUR_BLEND_TITLE="Blend";r.Msg.COLOUR_BLEND_TOOLTIP="Blends two colours together with a given ratio (0.0 - 1.0).";r.Msg.COLOUR_PICKER_HELPURL="https://en.wikipedia.org/wiki/Color";r.Msg.COLOUR_PICKER_TOOLTIP="Choose a colour from the palette.";r.Msg.COLOUR_RANDOM_HELPURL="http://randomcolour.com";r.Msg.COLOUR_RANDOM_TITLE="Random colour";r.Msg.COLOUR_RANDOM_TOOLTIP="Choose a colour at random.";r.Msg.COLOUR_RGB_BLUE="Blue";r.Msg.COLOUR_RGB_GREEN="Green";r.Msg.COLOUR_RGB_HELPURL="http://www.december.com/html/spec/colorper.html";r.Msg.COLOUR_RGB_RED="Red";r.Msg.COLOUR_RGB_TITLE="Colour with";r.Msg.COLOUR_RGB_TOOLTIP="Create a colour with the specified amount of red, green, and blue. All values must be between 0 and 100.";r.Msg.CONTROLS_FLOW_STATEMENTS_HELPURL="https://github.com/google/blockly/wiki/Loops#loop-termination-blocks";r.Msg.CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK="Break out of loop";r.Msg.CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE="Continue with next iteration of loop";r.Msg.CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK="Break out of the containing loop.";r.Msg.CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE="Skip the rest of this loop, and continue with the next iteration.";r.Msg.CONTROLS_FLOW_STATEMENTS_WARNING="Warning: This block may only be used within a loop.";r.Msg.CONTROLS_FOREACH_HELPURL="https://github.com/google/blockly/wiki/Loops#for-each";r.Msg.CONTROLS_FOREACH_TITLE="For each item %1 in list %2";r.Msg.CONTROLS_FOREACH_TOOLTIP="For each item in a list, set the variable '%1' to the item, and then do some statements.";r.Msg.CONTROLS_FOR_HELPURL="https://github.com/google/blockly/wiki/Loops#count-with";r.Msg.CONTROLS_FOR_TITLE="Count with %1 from %2 to %3 by %4";r.Msg.CONTROLS_FOR_TOOLTIP="Have the variable '%1' take on the values from the start number to the end number, counting by the specified interval, and do the specified blocks.";r.Msg.CONTROLS_IF_ELSEIF_TOOLTIP="Add a condition to the if block.";r.Msg.CONTROLS_IF_ELSE_TOOLTIP="Add a final, catch-all condition to the if block.";r.Msg.CONTROLS_IF_HELPURL="https://github.com/google/blockly/wiki/IfElse";r.Msg.CONTROLS_IF_IF_TOOLTIP="Add, remove, or reorder sections to reconfigure this if block.";r.Msg.CONTROLS_IF_MSG_ELSE="Else";r.Msg.CONTROLS_IF_MSG_ELSEIF="Else if";r.Msg.CONTROLS_IF_MSG_IF="If";r.Msg.CONTROLS_IF_TOOLTIP_1="If a value is true, then do some statements.";r.Msg.CONTROLS_IF_TOOLTIP_2="If a value is true, then do the first block of statements. Otherwise, do the second block of statements.";r.Msg.CONTROLS_IF_TOOLTIP_3="If the first value is true, then do the first block of statements. Otherwise, if the second value is true, do the second block of statements.";r.Msg.CONTROLS_IF_TOOLTIP_4="If the first value is true, then do the first block of statements. Otherwise, if the second value is true, do the second block of statements. If none of the values are true, do the last block of statements.";r.Msg.CONTROLS_REPEAT_HELPURL="https://en.wikipedia.org/wiki/For_loop";r.Msg.CONTROLS_REPEAT_INPUT_DO="Do";r.Msg.CONTROLS_REPEAT_TITLE="Repeat %1 times";r.Msg.CONTROLS_REPEAT_TOOLTIP="Do some statements several times.";r.Msg.CONTROLS_WHILEUNTIL_HELPURL="https://github.com/google/blockly/wiki/Loops#repeat";r.Msg.CONTROLS_WHILEUNTIL_OPERATOR_UNTIL="Repeat until";r.Msg.CONTROLS_WHILEUNTIL_OPERATOR_WHILE="Repeat while";r.Msg.CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL="While a value is false, then do some statements.";r.Msg.CONTROLS_WHILEUNTIL_TOOLTIP_WHILE="While a value is true, then do some statements.";r.Msg.DELETE_BLOCK="Delete Block";r.Msg.DELETE_X_BLOCKS="Delete %1 Blocks";r.Msg.DISABLE_BLOCK="Disable Block";r.Msg.DUPLICATE_BLOCK="Duplicate";r.Msg.ENABLE_BLOCK="Enable Block";r.Msg.EXPAND_ALL="Expand Blocks";r.Msg.EXPAND_BLOCK="Expand Block";r.Msg.EXTERNAL_INPUTS="External Inputs";r.Msg.HELP="Help";r.Msg.INLINE_INPUTS="Inline Inputs";r.Msg.LISTS_CREATE_EMPTY_HELPURL="https://github.com/google/blockly/wiki/Lists#create-empty-list";r.Msg.LISTS_CREATE_EMPTY_TITLE="Create empty list";r.Msg.LISTS_CREATE_EMPTY_TOOLTIP="Returns a list, of length 0, containing no data records";r.Msg.LISTS_CREATE_WITH_CONTAINER_TITLE_ADD="List";r.Msg.LISTS_CREATE_WITH_CONTAINER_TOOLTIP="Add, remove, or reorder sections to reconfigure this list block.";r.Msg.SET_CREATE_WITH_CONTAINER_TOOLTIP="Add, remove, or reorder sections to reconfigure this set block.";r.Msg.LISTS_CREATE_WITH_HELPURL="https://github.com/google/blockly/wiki/Lists#create-list-with";r.Msg.LISTS_CREATE_WITH_INPUT_WITH="Create list with";r.Msg.LISTS_CREATE_WITH_ITEM_TOOLTIP="Add an item to the list.";r.Msg.LISTS_CREATE_WITH_TOOLTIP="Create a list with any number of items.";r.Msg.LISTS_GET_INDEX_FIRST="First";r.Msg.LISTS_GET_INDEX_FROM_END="# from end";r.Msg.LISTS_GET_INDEX_FROM_START="#";r.Msg.LISTS_GET_INDEX_GET="Get";r.Msg.LISTS_GET_INDEX_GET_REMOVE="Get and remove";r.Msg.LISTS_GET_INDEX_LAST="Last";r.Msg.LISTS_GET_INDEX_RANDOM="Random";r.Msg.LISTS_GET_INDEX_REMOVE="Remove";r.Msg.LISTS_GET_INDEX_TAIL="";r.Msg.LISTS_GET_INDEX_TOOLTIP_GET_FIRST="Returns the first item in a list.";r.Msg.LISTS_GET_INDEX_TOOLTIP_GET_FROM_END="Returns the item at the specified position in a list. #1 is the last item.";r.Msg.LISTS_GET_INDEX_TOOLTIP_GET_FROM_START="Returns the item at the specified position in a list. #1 is the first item.";r.Msg.LISTS_GET_INDEX_TOOLTIP_GET_LAST="Returns the last item in a list.";r.Msg.LISTS_GET_INDEX_TOOLTIP_GET_RANDOM="Returns a random item in a list.";r.Msg.LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST="Removes and returns the first item in a list.";r.Msg.LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM_END="Removes and returns the item at the specified position in a list. #1 is the last item.";r.Msg.LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM_START="Removes and returns the item at the specified position in a list. #1 is the first item.";r.Msg.LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST="Removes and returns the last item in a list.";r.Msg.LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM="Removes and returns a random item in a list.";r.Msg.LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST="Removes the first item in a list.";r.Msg.LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM_END="Removes the item at the specified position in a list. #1 is the last item.";r.Msg.LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM_START="Removes the item at the specified position in a list. #1 is the first item.";r.Msg.LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST="Removes the last item in a list.";r.Msg.LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM="Removes a random item in a list.";r.Msg.LISTS_GET_SUBLIST_END_FROM_END="To # from end";r.Msg.LISTS_GET_SUBLIST_END_FROM_START="To #";r.Msg.LISTS_GET_SUBLIST_END_LAST="To last";r.Msg.LISTS_GET_SUBLIST_HELPURL="https://github.com/google/blockly/wiki/Lists#getting-a-sublist";r.Msg.LISTS_GET_SUBLIST_START_FIRST="Get sub-list from first";r.Msg.LISTS_GET_SUBLIST_START_FROM_END="Get sub-list from # from end";r.Msg.LISTS_GET_SUBLIST_START_FROM_START="Get sub-list from #";r.Msg.LISTS_GET_SUBLIST_TAIL="";r.Msg.LISTS_GET_SUBLIST_TOOLTIP="Creates a copy of the specified portion of a list.";r.Msg.LISTS_INDEX_OF_FIRST="Find first occurrence of item";r.Msg.LISTS_INDEX_OF_HELPURL="https://github.com/google/blockly/wiki/Lists#getting-items-from-a-list";r.Msg.LISTS_INDEX_OF_LAST="Find last occurrence of item";r.Msg.LISTS_INDEX_OF_TOOLTIP="Returns the index of the first/last occurrence of the item in the list. Returns 0 if text is not found.";r.Msg.LISTS_INLIST="In list";r.Msg.LISTS_ISEMPTY_HELPURL="https://github.com/google/blockly/wiki/Lists#is-empty";r.Msg.LISTS_ISEMPTY_TITLE="%1 is empty";r.Msg.LISTS_ISEMPTY_TOOLTIP="Returns true if the list is empty.";r.Msg.LISTS_LENGTH_HELPURL="https://github.com/google/blockly/wiki/Lists#length-of";r.Msg.LISTS_LENGTH_TITLE="Length of %1";r.Msg.LISTS_LENGTH_TOOLTIP="Returns the length of a list.";r.Msg.LISTS_REPEAT_HELPURL="https://github.com/google/blockly/wiki/Lists#create-list-with";r.Msg.LISTS_REPEAT_TITLE="Create list with item %1 repeated %2 times";r.Msg.LISTS_REPEAT_TOOLTIP="Creates a list consisting of the given value repeated the specified number of times.";r.Msg.LISTS_SET_INDEX_HELPURL="https://github.com/google/blockly/wiki/Lists#in-list--set";r.Msg.LISTS_SET_INDEX_INPUT_TO="As";r.Msg.LISTS_SET_INDEX_INSERT="Insert at";r.Msg.LISTS_SET_INDEX_SET="Set";r.Msg.LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST="Inserts the item at the start of a list.";r.Msg.LISTS_SET_INDEX_TOOLTIP_INSERT_FROM_END="Inserts the item at the specified position in a list. #1 is the last item.";r.Msg.LISTS_SET_INDEX_TOOLTIP_INSERT_FROM_START="Inserts the item at the specified position in a list. #1 is the first item.";r.Msg.LISTS_SET_INDEX_TOOLTIP_INSERT_LAST="Append the item to the end of a list.";r.Msg.LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM="Inserts the item randomly in a list.";r.Msg.LISTS_SET_INDEX_TOOLTIP_SET_FIRST="Sets the first item in a list.";r.Msg.LISTS_SET_INDEX_TOOLTIP_SET_FROM_END="Sets the item at the specified position in a list. #1 is the last item.";r.Msg.LISTS_SET_INDEX_TOOLTIP_SET_FROM_START="Sets the item at the specified position in a list. #1 is the first item.";r.Msg.LISTS_SET_INDEX_TOOLTIP_SET_LAST="Sets the last item in a list.";r.Msg.LISTS_SET_INDEX_TOOLTIP_SET_RANDOM="Sets a random item in a list.";r.Msg.LISTS_SPLIT_HELPURL="https://github.com/google/blockly/wiki/Lists#splitting-strings-and-joining-lists";r.Msg.LISTS_SPLIT_LIST_FROM_TEXT="Make list from text";r.Msg.LISTS_SPLIT_TEXT_FROM_LIST="Make text from list";r.Msg.LISTS_SPLIT_TOOLTIP_JOIN="Join a list of texts into one text, separated by a delimiter.";r.Msg.LISTS_SPLIT_TOOLTIP_SPLIT="Split text into a list of texts, breaking at each delimiter.";r.Msg.LISTS_SPLIT_WITH_DELIMITER="With delimiter";r.Msg.LOGIC_BOOLEAN_FALSE="False";r.Msg.LOGIC_BOOLEAN_HELPURL="https://github.com/google/blockly/wiki/Logic#values";r.Msg.LOGIC_BOOLEAN_TOOLTIP="Returns either true or false.";r.Msg.LOGIC_BOOLEAN_TRUE="True";r.Msg.LOGIC_COMPARE_HELPURL="https://en.wikipedia.org/wiki/Inequality_(mathematics)";r.Msg.LOGIC_COMPARE_TOOLTIP_EQ="Return true if both inputs equal each other.";r.Msg.LOGIC_COMPARE_TOOLTIP_GT="Return true if the first input is greater than the second input.";r.Msg.LOGIC_COMPARE_TOOLTIP_GTE="Return true if the first input is greater than or equal to the second input.";r.Msg.LOGIC_COMPARE_TOOLTIP_LT="Return true if the first input is smaller than the second input.";r.Msg.LOGIC_COMPARE_TOOLTIP_LTE="Return true if the first input is smaller than or equal to the second input.";r.Msg.LOGIC_COMPARE_TOOLTIP_NEQ="Return true if both inputs are not equal to each other.";r.Msg.LOGIC_NEGATE_HELPURL="https://github.com/google/blockly/wiki/Logic#not";r.Msg.LOGIC_NEGATE_TITLE="Not %1";r.Msg.LOGIC_NEGATE_TOOLTIP="Returns true if the input is false. Returns false if the input is true.";r.Msg.LOGIC_NULL="Null";r.Msg.LOGIC_NULL_HELPURL="https://en.wikipedia.org/wiki/Nullable_type";r.Msg.LOGIC_NULL_TOOLTIP="Returns null.";r.Msg.LOGIC_OPERATION_AND="And";r.Msg.LOGIC_OPERATION_HELPURL="https://github.com/google/blockly/wiki/Logic#logical-operations";r.Msg.LOGIC_OPERATION_OR="Or";r.Msg.LOGIC_OPERATION_TOOLTIP_AND="Return true if both inputs are true.";r.Msg.LOGIC_OPERATION_TOOLTIP_OR="Return true if at least one of the inputs is true.";r.Msg.LOGIC_TERNARY_CONDITION="Test";r.Msg.LOGIC_TERNARY_HELPURL="https://en.wikipedia.org/wiki/%3F:";r.Msg.LOGIC_TERNARY_IF_FALSE="If false";r.Msg.LOGIC_TERNARY_IF_TRUE="If true";r.Msg.LOGIC_TERNARY_TOOLTIP="Check the condition in 'test'. If the condition is true, returns the 'if true' value; otherwise returns the 'if false' value.";r.Msg.MATH_ADDITION_SYMBOL="+";r.Msg.MATH_ARITHMETIC_HELPURL="https://en.wikipedia.org/wiki/Arithmetic";r.Msg.MATH_ARITHMETIC_TOOLTIP_ADD="Return the sum of the two numbers.";r.Msg.MATH_ARITHMETIC_TOOLTIP_DIVIDE="Return the quotient of the two numbers.";r.Msg.MATH_ARITHMETIC_TOOLTIP_MINUS="Return the difference of the two numbers.";r.Msg.MATH_ARITHMETIC_TOOLTIP_MULTIPLY="Return the product of the two numbers.";r.Msg.MATH_ARITHMETIC_TOOLTIP_POWER="Return the first number raised to the power of the second number.";r.Msg.MATH_CHANGE_HELPURL="https://en.wikipedia.org/wiki/Programming_idiom#Incrementing_a_counter";r.Msg.MATH_CHANGE_TITLE="Change %1 by %2";r.Msg.MATH_CHANGE_TOOLTIP="Add a number to variable '%1'.";r.Msg.MATH_CONSTANT_HELPURL="https://en.wikipedia.org/wiki/Mathematical_constant";r.Msg.MATH_CONSTANT_TOOLTIP="Return one of the common constants: π (3.141…), e (2.718…), φ (1.618…), sqrt(2) (1.414…), sqrt(½) (0.707…), or ∞ (infinity).";r.Msg.MATH_CONSTRAIN_HELPURL="https://en.wikipedia.org/wiki/Clamping_%28graphics%29";r.Msg.MATH_CONSTRAIN_TITLE="Constrain %1 low %2 high %3";r.Msg.MATH_CONSTRAIN_TOOLTIP="Constrain a number to be between the specified limits (inclusive).";r.Msg.MATH_DIVISION_SYMBOL="÷";r.Msg.MATH_IS_DIVISIBLE_BY="Is divisible by";r.Msg.MATH_IS_EVEN="Is even";r.Msg.MATH_IS_NEGATIVE="Is negative";r.Msg.MATH_IS_ODD="Is odd";r.Msg.MATH_IS_POSITIVE="Is positive";r.Msg.MATH_IS_PRIME="Is prime";r.Msg.MATH_IS_TOOLTIP="Check if a number is an even, odd, prime, whole, positive, negative, or if it is divisible by certain number. Returns true or false.";r.Msg.MATH_IS_WHOLE="Is whole";r.Msg.MATH_MODULO_HELPURL="https://en.wikipedia.org/wiki/Modulo_operation";r.Msg.MATH_MODULO_TITLE="Remainder of %1 ÷ %2";r.Msg.MATH_MODULO_TOOLTIP="Return the remainder from dividing the two numbers.";r.Msg.MATH_MULTIPLICATION_SYMBOL="×";r.Msg.MATH_NUMBER_HELPURL="https://en.wikipedia.org/wiki/Number";r.Msg.MATH_NUMBER_TOOLTIP="A number.";r.Msg.MATH_ONLIST_HELPURL="";r.Msg.MATH_ONLIST_OPERATOR_AVERAGE="Average of list";r.Msg.MATH_ONLIST_OPERATOR_MAX="Max of list";r.Msg.MATH_ONLIST_OPERATOR_MEDIAN="Median of list";r.Msg.MATH_ONLIST_OPERATOR_MIN="Min of list";r.Msg.MATH_ONLIST_OPERATOR_MODE="Modes of list";r.Msg.MATH_ONLIST_OPERATOR_RANDOM="Random item of list";r.Msg.MATH_ONLIST_OPERATOR_STD_DEV="Standard deviation of list";r.Msg.MATH_ONLIST_OPERATOR_SUM="Sum of list";r.Msg.MATH_ONLIST_TOOLTIP_AVERAGE="Return the average (arithmetic mean) of the numeric values in the list.";r.Msg.MATH_ONLIST_TOOLTIP_MAX="Return the largest number in the list.";r.Msg.MATH_ONLIST_TOOLTIP_MEDIAN="Return the median number in the list.";r.Msg.MATH_ONLIST_TOOLTIP_MIN="Return the smallest number in the list.";r.Msg.MATH_ONLIST_TOOLTIP_MODE="Return a list of the most common item(s) in the list.";r.Msg.MATH_ONLIST_TOOLTIP_RANDOM="Return a random element from the list.";r.Msg.MATH_ONLIST_TOOLTIP_STD_DEV="Return the standard deviation of the list.";r.Msg.MATH_ONLIST_TOOLTIP_SUM="Return the sum of all the numbers in the list.";r.Msg.MATH_POWER_SYMBOL="**";r.Msg.MATH_RANDOM_FLOAT_HELPURL="https://en.wikipedia.org/wiki/Random_number_generation";r.Msg.MATH_RANDOM_FLOAT_TITLE_RANDOM="random fraction";r.Msg.MATH_RANDOM_FLOAT_TOOLTIP="Return a random fraction between 0.0 (inclusive) and 1.0 (exclusive).";r.Msg.MATH_RANDOM_INT_HELPURL="https://en.wikipedia.org/wiki/Random_number_generation";r.Msg.MATH_RANDOM_INT_TITLE="random integer from %1 to %2";r.Msg.MATH_RANDOM_INT_TOOLTIP="Return a random integer between the two specified limits, inclusive.";r.Msg.MATH_ROUND_HELPURL="https://en.wikipedia.org/wiki/Rounding";r.Msg.MATH_ROUND_OPERATOR_ROUND="Round";r.Msg.MATH_ROUND_OPERATOR_ROUNDDOWN="Round down";r.Msg.MATH_ROUND_OPERATOR_ROUNDUP="Round up";r.Msg.MATH_ROUND_TOOLTIP="Round a number up or down.";r.Msg.MATH_SINGLE_HELPURL="https://en.wikipedia.org/wiki/Square_root";r.Msg.MATH_SINGLE_OP_ABSOLUTE="Absolute";r.Msg.MATH_SINGLE_OP_ROOT="Square root";r.Msg.MATH_SINGLE_TOOLTIP_ABS="Return the absolute value of a number.";r.Msg.MATH_SINGLE_TOOLTIP_EXP="Return e to the power of a number.";r.Msg.MATH_SINGLE_TOOLTIP_LN="Return the natural logarithm of a number.";r.Msg.MATH_SINGLE_TOOLTIP_LOG10="Return the base 10 logarithm of a number.";r.Msg.MATH_SINGLE_TOOLTIP_NEG="Return the negation of a number.";r.Msg.MATH_SINGLE_TOOLTIP_POW10="Return 10 to the power of a number.";r.Msg.MATH_SINGLE_TOOLTIP_ROOT="Return the square root of a number.";r.Msg.MATH_SUBTRACTION_SYMBOL="-";r.Msg.MATH_TRIG_ACOS="Acos";r.Msg.MATH_TRIG_ASIN="Asin";r.Msg.MATH_TRIG_ATAN="Atan";r.Msg.MATH_TRIG_COS="Cos";r.Msg.MATH_TRIG_HELPURL="https://en.wikipedia.org/wiki/Trigonometric_functions";r.Msg.MATH_TRIG_SIN="Sin";r.Msg.MATH_TRIG_TAN="Tan";r.Msg.MATH_TRIG_TOOLTIP_ACOS="Return the arccosine of a number.";r.Msg.MATH_TRIG_TOOLTIP_ASIN="Return the arcsine of a number.";r.Msg.MATH_TRIG_TOOLTIP_ATAN="Return the arctangent of a number.";r.Msg.MATH_TRIG_TOOLTIP_COS="Return the cosine of a degree (not radian).";r.Msg.MATH_TRIG_TOOLTIP_SIN="Return the sine of a degree (not radian).";r.Msg.MATH_TRIG_TOOLTIP_TAN="Return the tangent of a degree (not radian).";r.Msg.NEW_VARIABLE="New variable...";r.Msg.NEW_VARIABLE_TITLE="New variable name:";r.Msg.ORDINAL_NUMBER_SUFFIX="";r.Msg.PROCEDURES_ALLOW_STATEMENTS="Allow statements";r.Msg.PROCEDURES_BEFORE_PARAMS="With:";r.Msg.PROCEDURES_CALLNORETURN_CALL="";r.Msg.PROCEDURES_CALLNORETURN_HELPURL="https://en.wikipedia.org/wiki/Procedure_%28computer_science%29";r.Msg.PROCEDURES_CALLNORETURN_TOOLTIP="Run the user-defined function '%1'.";r.Msg.PROCEDURES_CALLRETURN_HELPURL="https://en.wikipedia.org/wiki/Procedure_%28computer_science%29";r.Msg.PROCEDURES_CALLRETURN_TOOLTIP="Run the user-defined function '%1' and use its output.";r.Msg.PROCEDURES_CALL_BEFORE_PARAMS="With:";r.Msg.PROCEDURES_CREATE_DO="Create '%1'";r.Msg.PROCEDURES_DEFNORETURN_COMMENT="";r.Msg.PROCEDURES_DEFNORETURN_DO="";r.Msg.PROCEDURES_DEFNORETURN_HELPURL="https://en.wikipedia.org/wiki/Procedure_%28computer_science%29";r.Msg.PROCEDURES_DEFNORETURN_PROCEDURE="My_func";r.Msg.PROCEDURES_DEFNORETURN_TITLE="To";r.Msg.PROCEDURES_DEFNORETURN_TOOLTIP="Creates a function with no output.";r.Msg.PROCEDURES_DEFRETURN_HELPURL="https://en.wikipedia.org/wiki/Procedure_%28computer_science%29";r.Msg.PROCEDURES_DEFRETURN_RETURN="Return";r.Msg.PROCEDURES_DEFRETURN_TOOLTIP="Creates a function with an output.";r.Msg.PROCEDURES_DEF_DUPLICATE_WARNING="Warning: This function has duplicate parameters.";r.Msg.PROCEDURES_HIGHLIGHT_DEF="Highlight function definition";r.Msg.PROCEDURES_IFRETURN_TOOLTIP="If a value is true, then return a second value.";r.Msg.PROCEDURES_IFRETURN_WARNING="Warning: This block may be used only within a function definition.";r.Msg.PROCEDURES_MUTATORARG_TITLE="Input name:";r.Msg.PROCEDURES_MUTATORARG_TOOLTIP="Add an input to the function.";r.Msg.PROCEDURES_MUTATORCONTAINER_TITLE="Inputs";r.Msg.PROCEDURES_MUTATORCONTAINER_TOOLTIP="Add, remove, or reorder inputs to this function.";r.Msg.REMOVE_COMMENT="Remove Comment";r.Msg.RENAME_VARIABLE="Rename variable...";r.Msg.RENAME_VARIABLE_TITLE="Rename all '%1' variables to:";r.Msg.TEXT_APPEND_APPENDTEXT="append text";r.Msg.TEXT_APPEND_HELPURL="https://github.com/google/blockly/wiki/Text#text-modification";r.Msg.TEXT_APPEND_TO="To";r.Msg.TEXT_APPEND_TOOLTIP="Append some text to variable '%1'.";r.Msg.TEXT_CHANGECASE_HELPURL="https://github.com/google/blockly/wiki/Text#adjusting-text-case";r.Msg.TEXT_CHANGECASE_OPERATOR_LOWERCASE="To lower case";r.Msg.TEXT_CHANGECASE_OPERATOR_TITLECASE="To Title Case";r.Msg.TEXT_CHANGECASE_OPERATOR_UPPERCASE="To UPPER CASE";r.Msg.TEXT_CHANGECASE_TOOLTIP="Return a copy of the text in a different case.";r.Msg.TEXT_CHARAT_FIRST="Get first letter";r.Msg.TEXT_CHARAT_FROM_END="Get letter # from end";r.Msg.TEXT_CHARAT_FROM_START="Get letter #";r.Msg.TEXT_CHARAT_HELPURL="https://github.com/google/blockly/wiki/Text#extracting-text";r.Msg.TEXT_CHARAT_INPUT_INTEXT="In text";r.Msg.TEXT_CHARAT_LAST="Get last letter";r.Msg.TEXT_CHARAT_RANDOM="Get random letter";r.Msg.TEXT_CHARAT_TAIL="";r.Msg.TEXT_CHARAT_TOOLTIP="Returns the letter at the specified position.";r.Msg.TEXT_CREATE_JOIN_ITEM_TOOLTIP="Add an item to the text.";r.Msg.TEXT_CREATE_JOIN_TITLE_JOIN="Join";r.Msg.TEXT_CREATE_JOIN_TOOLTIP="Add, remove, or reorder sections to reconfigure this text block.";r.Msg.TEXT_GET_SUBSTRING_END_FROM_END="To letter # from end";r.Msg.TEXT_GET_SUBSTRING_END_FROM_START="To letter #";r.Msg.TEXT_GET_SUBSTRING_END_LAST="To last letter";r.Msg.TEXT_GET_SUBSTRING_HELPURL="https://github.com/google/blockly/wiki/Text#extracting-a-region-of-text";r.Msg.TEXT_GET_SUBSTRING_INPUT_IN_TEXT="in text";r.Msg.TEXT_GET_SUBSTRING_START_FIRST="Get substring from first letter";r.Msg.TEXT_GET_SUBSTRING_START_FROM_END="Get substring from letter # from end";r.Msg.TEXT_GET_SUBSTRING_START_FROM_START="Get substring from letter #";r.Msg.TEXT_GET_SUBSTRING_TAIL="";r.Msg.TEXT_GET_SUBSTRING_TOOLTIP="Returns a specified portion of the text.";r.Msg.TEXT_INDEXOF_HELPURL="https://github.com/google/blockly/wiki/Text#finding-text";r.Msg.TEXT_INDEXOF_INPUT_INTEXT="In text";r.Msg.TEXT_INDEXOF_OPERATOR_FIRST="Find first occurrence of text";r.Msg.TEXT_INDEXOF_OPERATOR_LAST="Find last occurrence of text";r.Msg.TEXT_INDEXOF_TAIL="";r.Msg.TEXT_INDEXOF_TOOLTIP="Returns the index of the first/last occurrence of first text in the second text. Returns 0 if text is not found.";r.Msg.TEXT_ISEMPTY_HELPURL="https://github.com/google/blockly/wiki/Text#checking-for-empty-text";r.Msg.TEXT_ISEMPTY_TITLE="%1 is empty";r.Msg.TEXT_ISEMPTY_TOOLTIP="Returns true if the provided text is empty.";r.Msg.TEXT_JOIN_HELPURL="https://github.com/google/blockly/wiki/Text#text-creation";r.Msg.TEXT_JOIN_TITLE_CREATEWITH="Create text with";r.Msg.TEXT_JOIN_TOOLTIP="Create a piece of text by joining together any number of items.";r.Msg.TEXT_LENGTH_HELPURL="https://github.com/google/blockly/wiki/Text#text-modification";r.Msg.TEXT_LENGTH_TITLE="Length of %1";r.Msg.TEXT_LENGTH_TOOLTIP="Returns the number of letters (including spaces) in the provided text.";r.Msg.TEXT_PRINT_HELPURL="https://github.com/google/blockly/wiki/Text#printing-text";r.Msg.TEXT_PRINT_TITLE="Print %1";r.Msg.TEXT_PRINT_TOOLTIP="Print the specified text, number or other value.";r.Msg.TEXT_PROMPT_HELPURL="https://github.com/google/blockly/wiki/Text#getting-input-from-the-user";r.Msg.TEXT_PROMPT_TOOLTIP_NUMBER="Prompt for user for a number.";r.Msg.TEXT_PROMPT_TOOLTIP_TEXT="Prompt for user for some text.";r.Msg.TEXT_PROMPT_TYPE_NUMBER="Prompt for number with message";r.Msg.TEXT_PROMPT_TYPE_TEXT="Prompt for text with message";r.Msg.TEXT_TEXT_HELPURL="https://en.wikipedia.org/wiki/String_(computer_science)";r.Msg.TEXT_TEXT_TOOLTIP="A letter, word, or line of text.";r.Msg.TEXT_TRIM_HELPURL="https://github.com/google/blockly/wiki/Text#trimming-removing-spaces";r.Msg.TEXT_TRIM_OPERATOR_BOTH="Trim spaces from both sides of";r.Msg.TEXT_TRIM_OPERATOR_LEFT="Trim spaces from left side of";r.Msg.TEXT_TRIM_OPERATOR_RIGHT="Trim spaces from right side of";r.Msg.TEXT_TRIM_TOOLTIP="Return a copy of the text with spaces removed from one or both ends.";r.Msg.TODAY="Today";r.Msg.VARIABLES_DEFAULT_NAME="Item";r.Msg.VARIABLES_GET_CREATE_SET="Create 'set %1'";r.Msg.VARIABLES_GET_HELPURL="https://github.com/google/blockly/wiki/Variables#get";r.Msg.VARIABLES_GET_TOOLTIP="Returns the value of this variable.";r.Msg.VARIABLES_SET="Set %1 to %2";r.Msg.VARIABLES_SET_CREATE_GET="Create 'get %1'";r.Msg.VARIABLES_SET_HELPURL="https://github.com/google/blockly/wiki/Variables#set";r.Msg.VARIABLES_SET_TOOLTIP="Sets this variable to be equal to the input.";r.Msg.PROCEDURES_DEFRETURN_TITLE=r.Msg.PROCEDURES_DEFNORETURN_TITLE;r.Msg.CONTROLS_IF_IF_TITLE_IF=r.Msg.CONTROLS_IF_MSG_IF;r.Msg.CONTROLS_WHILEUNTIL_INPUT_DO=r.Msg.CONTROLS_REPEAT_INPUT_DO;r.Msg.CONTROLS_IF_MSG_THEN=r.Msg.CONTROLS_REPEAT_INPUT_DO;r.Msg.PROCEDURES_DEFRETURN_PROCEDURE=r.Msg.PROCEDURES_DEFNORETURN_PROCEDURE;r.Msg.CONTROLS_IF_ELSE_TITLE_ELSE=r.Msg.CONTROLS_IF_MSG_ELSE;r.Msg.PROCEDURES_CALLRETURN_CALL=r.Msg.PROCEDURES_CALLNORETURN_CALL;r.Msg.LISTS_GET_SUBLIST_INPUT_IN_LIST=r.Msg.LISTS_INLIST;r.Msg.LISTS_GET_INDEX_INPUT_IN_LIST=r.Msg.LISTS_INLIST;r.Msg.MATH_CHANGE_TITLE_ITEM=r.Msg.VARIABLES_DEFAULT_NAME;r.Msg.PROCEDURES_DEFRETURN_DO=r.Msg.PROCEDURES_DEFNORETURN_DO;r.Msg.CONTROLS_IF_ELSEIF_TITLE_ELSEIF=r.Msg.CONTROLS_IF_MSG_ELSEIF;r.Msg.LISTS_GET_INDEX_HELPURL=r.Msg.LISTS_INDEX_OF_HELPURL;r.Msg.CONTROLS_FOREACH_INPUT_DO=r.Msg.CONTROLS_REPEAT_INPUT_DO;r.Msg.CONTROLS_FOR_INPUT_DO=r.Msg.CONTROLS_REPEAT_INPUT_DO;r.Msg.LISTS_CREATE_WITH_ITEM_TITLE=r.Msg.VARIABLES_DEFAULT_NAME;r.Msg.TEXT_APPEND_VARIABLE=r.Msg.VARIABLES_DEFAULT_NAME;r.Msg.TEXT_CREATE_JOIN_ITEM_TITLE_ITEM=r.Msg.VARIABLES_DEFAULT_NAME;r.Msg.LISTS_INDEX_OF_INPUT_IN_LIST=r.Msg.LISTS_INLIST;r.Msg.LISTS_SET_INDEX_INPUT_IN_LIST=r.Msg.LISTS_INLIST;r.Msg.LISTS_CREATE_WITH_ITEM_TITLE=r.Msg.VARIABLES_DEFAULT_NAME;r.Msg.TUPLE_CREATE_WITH_ITEM_TITLE=r.Msg.VARIABLES_DEFAULT_NAME;r.Msg.DICT_CREATE_WITH_ITEM_TITLE=r.Msg.VARIABLES_DEFAULT_NAME;r.Msg.SET_CREATE_WITH_ITEM_TITLE=r.Msg.VARIABLES_DEFAULT_NAME;r.Msg.TEXT_APPEND_VARIABLE=r.Msg.VARIABLES_DEFAULT_NAME;r.Msg.TEXT_CREATE_JOIN_ITEM_TITLE_ITEM=r.Msg.VARIABLES_DEFAULT_NAME;r.Msg.MATH_CHANGE_TITLE_ITEM=r.Msg.VARIABLES_DEFAULT_NAME;r.Msg.LABPLUS_USB_SWITCH_ON="Turn on";r.Msg.LABPLUS_USB_SWITCH_OFF="Turn off";r.Msg.LABPLUS_MOTOR_ON_ANTICLOCKWISE="Toggle";r.Msg.XUNFEI_SPEECH_TTS_HELPURL="";r.Msg.XUNFEI_SPEECH_TTS_TOOLTIP='The synthesized audio file format can only be "*.pcm"';r.Msg.XUNFEI_SPEECH_TTS_MESSAGE0="[iFLYTEK] synthetic audio %1 APPID %2 APISecret %3 APIKey %4 text %5 transfer to audio file %6";r.Msg.XUNFEI_SPEECH_IAT_HELPURL="";r.Msg.XUNFEI_SPEECH_IAT_TOOLTIP='The audio formats that can be recognized are "*.pcm" and "*.wav"';r.Msg.XUNFEI_SPEECH_IAT_MESSAGE0="[iFLYTEK] identify audio %1 APPID %2 APISecret %3 APIKey %4 audio file to be identified %5";r.Msg.XUNFEI_SPEECH_IAT_RESULT_HELPURL="";r.Msg.XUNFEI_SPEECH_IAT_RESULT_TOOLTIP="";r.Msg.XUNFEI_SPEECH_IAT_RESULT_MESSAGE0="[iFLYTEK] identify result";r.Msg.CocoRobo_NAME_PYTHON_ENVIRONMENT_HELPURL="";r.Msg.CocoRobo_NAME_PYTHON_ENVIRONMENT_MESSAGE0="Declared python runtime environment";r.Msg.CocoRobo_NAME_PYTHON_ENVIRONMENT_TOOLTIP="";r.Msg.CocoRobo_LARK_GET_ALL_COLOR_MESSAGE0="LARK I2C RGB color";r.Msg.CocoRobo_LARK_GET_ALL_COLOR_TOOLTIP="Returns as list";r.Msg.CocoRobo_LARK_GET_COLOR_TOOLTIP="";r.Msg.CocoRobo_LARK_GET_COLOR_MESSAGE0="LARK I2C RGB color %1";r.Msg.CocoRobo_lARK_RED="RED";r.Msg.CocoRobo__LARK_GREEN="GREEN";r.Msg.CocoRobo__LARK_BLUE="BLUE";r.Msg.CocoRobo_LARK_GET_ALL_COLOR_HSV_TOOLTIP="HSV(Hue, Saturation, Value)";r.Msg.CocoRobo_LARKT_GET_ALL_COLOR_HSV_MESSAGE0="LARK I2C HSV color";r.Msg.CocoRobo_LARK_GET_COLOR_HSV_TOOLTIP="HSV(Hue, Saturation, Value)";r.Msg.CocoRobo_LARK_GET_COLOR_HSV_MESSAGE0="LARK I2C HSV color %1";r.Msg.CocoRobo_LARK_GET_COLOR_STRING_TOOLTIP="";r.Msg.CocoRobo_LARK_GET_COLOR_STRING_MESSAGE0="LARK GET COLOR";r.Msg.CocoRobo_LARK_DISCERN_COLOR_TOOLTIP="";r.Msg.CocoRobo_LARK_DISCERN_COLOR_MESSAGE0="LARK GET COLOR %1";r.Msg.CocoRobo_LARK_RED="RED";r.Msg.CocoRobo_LARK_GREEN="GREEN";r.Msg.CocoRobo_LARK_BLUE="BLUE";r.Msg.CocoRobo_LARK_ORANGE="ORANGE";r.Msg.CocoRobo_LARK_YELLOW="YELLOW";r.Msg.CocoRobo_LARK_PURPLE="PURPLE";r.Msg.CocoRobo_LARK_CYAN="CYAN";r.Msg.CocoRobo_LARK_NONE="NO COLOR";r.Msg.CocoRobo_LARK_NULL="FAIL THE COLOR";r.Msg.CocoRobo_LARK_ULTRASONIC_TOOLTIP="";r.Msg.CocoRobo_LARK_ULTRASONIC_MESSAGE0="LARK I2C ultrasonic value";r.Msg.CocoRobo_LARK_MOTOR_SET_I2C_TOOLTIP="";r.Msg.CocoRobo_LARK_MOTOR_SET_I2C_MESSAGE0="LARK I2C SET MOTOR %1 SPEED %2";r.Msg.CocoRobo_LARK_GET_LINE_ON_I2C_TOOLTIP="";r.Msg.CocoRobo_LARK_GET_LINE_ON_I2C_MESSAGE0="LARK I2C GET %1 VALUE";r.Msg.CocoRobo_LARK_GET_LINE_RIGHT_ON_I2C="RIGHT";r.Msg.CocoRobo_LARK_GET_LINE_LEFT_ON_I2C="LEFT";r.Msg.CocoRobo_LARK_SEARCH_LINE_ON_I2C_TOOLTIP="";r.Msg.CocoRobo_LARK_SEARCH_LINE_ON_I2C_MESSAGE0="LARK I2C SEARCH TOUCH LINE %1";r.Msg.CocoRobo_LARK_SEARCH_LEFT="LEFT";r.Msg.CocoRobo_LARK_SEARCH_RIGHT="RIGHT";r.Msg.CocoRobo_LARK_SEARCH_BOTH="ALL";r.Msg.CocoRobo_LARK_SEARCH_NONE="NOT";r.Msg.CocoRobo_LARK__CAR_GET_ALL_COLOR_TOOLTIP="Returns as list";r.Msg.CocoRobo_LARK__CAR_GET_ALL_COLOR_MESSAGE0="HORSE GET COLOR";r.Msg.CocoRobo_LARK_CAR_GET_COLOR_TOOLTIP="";r.Msg.CocoRobo_LARK_CAR_GET_COLOR_MESSAGE0="HORSE GET COLOR %1";r.Msg.CocoRobo_lARK_CAR_RED="RED";r.Msg.CocoRobo__LARK_CAR_GREEN="GREEN";r.Msg.CocoRobo__LARK_CAR_BLUE="BLUE";r.Msg.CocoRobo_LARK_CAR_GET_ALL_COLOR_HSV_TOOLTIP="HSV(Hue, Saturation, Value)";r.Msg.CocoRobo_LARKT_CAR_GET_ALL_COLOR_HSV_MESSAGE0="HORSE I2C HSV color";r.Msg.CocoRobo_LARK_CAR_GET_COLOR_HSV_TOOLTIP="HSV(Hue, Saturation, Value)";r.Msg.CocoRobo_LARK_CAR_GET_COLOR_HSV_MESSAGE0="HORSE I2C HSV %1";r.Msg.CocoRobo_LARK_CAR_GET_COLOR_STRING_TOOLTIP="";r.Msg.CocoRobo_LARK_CAR_GET_COLOR_STRING_MESSAGE0="HORSE GET COLOR";r.Msg.CocoRobo_LARK_CAR_DISCERN_COLOR_TOOLTIP="";r.Msg.CocoRobo_LARK_CAR_DISCERN_COLOR_MESSAGE0="HORSE GET %1";r.Msg.CocoRobo_LARK_CAR_RED="RED";r.Msg.CocoRobo_LARK_CAR_GREEN="Green";r.Msg.CocoRobo_LARK_CAR_BLUE="Blue";r.Msg.CocoRobo_LARK_CAR_ORANGE="Orange";r.Msg.CocoRobo_LARK_CAR_YELLOW="Yellow";r.Msg.CocoRobo_LARK_CAR_PURPLE="Purple";r.Msg.CocoRobo_LARK_CAR_CYAN="Cyan";r.Msg.CocoRobo_LARK_CAR_NONE="None";r.Msg.CocoRobo_LARK_CAR_NULL="Null";r.Msg.CocoRobo_LARK_CAR_ULTRASONIC_TOOLTIP="";r.Msg.CocoRobo_LARK_CAR_ULTRASONIC_MESSAGE0="Horse Get Ultrasoinc";r.Msg.CocoRobo_LARK_CAR_GET_LINE_ON_I2C_TOOLTIP="";r.Msg.CocoRobo_LARK_CAR_GET_LINE_ON_I2C_MESSAGE0="HORSE GET %1 LINE VALUE";r.Msg.CocoRobo_LARK_CAR_GET_LINE_RIGHT_ON_I2C="RIGHT";r.Msg.CocoRobo_LARK_CAR_GET_LINE_LEFT_ON_I2C="LEFT";r.Msg.CocoRobo_LARK_CAR_SEARCH_LINE_ON_I2C_TOOLTIP="";r.Msg.CocoRobo_LARK_CAR_SEARCH_LINE_ON_I2C_MESSAGE0="HORSE I2C SEARCH TOUCH LINE %1";r.Msg.CocoRobo_LARK_CAR_SEARCH_LEFT="LEFT TOUCHED";r.Msg.CocoRobo_LARK_CAR_SEARCH_RIGHT="RIGHT TOUCHED";r.Msg.CocoRobo_LARK_CAR_SEARCH_BOTH="BOTH TOUCHED";r.Msg.CocoRobo_LARK_CAR_SEARCH_NONE="NOT TOUCHED";r.Msg.CocoRobo_LARK_MOTOR_SET_I2C_TOOLTIP="";r.Msg.CocoRobo_LARK_MOTOR_SET_I2C_MESSAGE0="HOSRE MOTION %1 SPEED %2";r.Msg.CocoRobo_LARK_CAR_MOTION_LEFT="Trun Left";r.Msg.CocoRobo_LARK_CAR_MOTION_RIGHT="Trun Right";r.Msg.CocoRobo_LARK_CAR_MOTION_FORWARD="forward";r.Msg.CocoRobo_LARK_CAR_MOTION_BACKWARD="Backward";r.Msg.CocoRobo_LARK_CAR_MOTION_STOP="Stop";r.Msg.Math_Degrad_RAD_TOOLTIP="Returns the result of converting the degrees to radians";r.Msg.Math_Degrad_DEG_TOOLTIP="Returns the result of converting radians to degrees";r.Msg.Text_Split_String_By_Delimiter_TOOLTIP="Split the string with delimiters and generate a list ";r.Msg.Text_List_TOOLTIP="Initialization list [0,0,0]";r.Msg.Text_Dict_TOOLTIP="Initialize the dictionary";r.Msg.Text_Tuple_TOOLTIP="Initialize the tuple";r.Msg.Text_Set_TOOLTIP="Initialize the collection";r.Msg.Iot_System_Run_TOOLTIP="Run the program file in the specified path";r.Msg.Esp32_Main_Controller_Io_From_Digital_Pin_TOOLTIP="Return %1 to get the digital signal value of a specific pin";r.Msg.Esp32_Main_Controller_Io_Set_Digital_Pin_TOOLTIP="%1 set a specific pin to a specified level";r.Msg.Esp32_Main_Controller_Io_Set_Analog_Pin_TOOLTIP="IoT module sets pins and controls the analog output of %1";r.Msg.Ai_Main_Controller_Io_Set_Analog_Pin_TOOLTIP="A.I. module sets pins and controls the analog output of %1";r.Msg.Esp32_Main_Controller_Io_From_Analog_Pin_TOOLTIP="The IoT module obtains the analog signal value of a specific pin";r.Msg.Esp32_Main_Controller_Io_High_Low_TOOLTIP="Return %1";r.Msg.esp32_main_controller_io_analog_pin_1_TOOLTIP="Return A.I. Module GPIO #%1";r.Msg.esp32_main_controller_io_analog_pin_2_TOOLTIP="Return IoT Module GPIO #%1";r.Msg.Iot_System_Create_TOOLTIP="Create a text file with the specified name";r.Msg.Iot_System_Write_TOOLTIP="Create a text file with the specified name and write the content, with %1 as the separator";r.Msg.Iot_System_Input_TOOLTIP="Read the text file with the specified name as a list, with %1 as the separator";r.Msg.Esp32_Get_Current_Date_TOOLTIP="Get %1 of local time";r.Msg.Esp32_Main_Controller_Time_Timer_Init_TOOLTIP="%1 initialize timer";r.Msg.Esp32_Main_Controller_Time_Timer_Get_Current_TOOLTIP="%1 get timer elapsed time";r.Msg.Esp32_Main_Controller_Time_Timer_Clear_TOOLTIP="%1 clear timer";r.Msg.Esp32_Main_Controller_Time_Period_Timer_TOOLTIP="%1 enables the periodic repetition timer and runs the specified conditions at regular intervals";r.Msg.Esp32_Main_Controller_Time_Period_Timer_Clear_TOOLTIP="%1 clear cycle repeat timer";r.Msg.serial_Comm_Print_TOOLTIP="Serial printing";r.Msg.Serial_Write_Data_TOOLTIP="Use %1 to send data to other devices through the serial port";r.Msg.Serial_Read_Data_Setup_TOOLTIP="Use %1 to obtain data sent by other devices through the serial port to initialize";r.Msg.Serial_Read_Data_TOOLTIP="Get a certain bit of data in the received serial port data from serial_data";r.Msg.Serial_Read_Data_all_TOOLTIP="Get the data of the serial port and save it to serial_data";r.Msg.Serial_Send_Data_To_Microbit_TOOLTIP="Send data to Microbit on %1 module";r.Msg.Trd_Party_Sensor_Hcsr04_TOOLTIP="Initialize ultrasonic sensor %1";r.Msg.Trd_Party_Sensor_Hcsr04_Read_TOOLTIP="Read the distance detection value from a specific ultrasonic sensor and return";r.Msg.Esp32_Main_Controller_Led_Strip_Setup_TOOLTIP="%1 Initialize the LED strip";r.Msg.Esp32_Main_Controller_Led_strip_set_bright_TOOLTIP="Set the brightness of the LED strip";r.Msg.Iot_Led_Matrix_Color_Picker_TOOLTIP="Convert hexadecimal color code to RGB color value and return";r.Msg.Led_Strip_Color_Rgb_TOOLTIP="Return RGB color value";r.Msg.Esp32_Main_Controller_Led_Strip_Set_TOOLTIP="%1 lights up the LED strip";r.Msg.Led_Strip_Show_Above_TOOLTIP="%1 makes the light strip show the above effect";r.Msg.Esp32_Main_Controller_Button_Read_Pressed_TOOLTIP="When button %1 is pressed";r.Msg.Esp32_Main_Controller_Button_Read_Released_TOOLTIP="When button %1 is released";r.Msg.Esp32_Main_Controller_Button_Read_Value_TOOLTIP="Read the level state of button %1";r.Msg.Esp32_Main_Controller_Touch_Read_Touched_TOOLTIP="When touch area %1 is touched";r.Msg.Esp32_Main_Controller_Touch_Read_Untouched_TOOLTIP="When touch area %1 is not touched";r.Msg.Esp32_Main_Controller_Touch_Read_Value_TOOLTIP="Get the capacitance change value of the touch area %1";r.Msg.Esp32_Main_Controller_Set_Led_Turnon_TOOLTIP="Set to light up the specified LED light";r.Msg.Esp32_Main_Controller_Set_Led_Turnoff_TOOLTIP="Set to turn off the specified LED light";r.Msg.Esp32_Main_Controller_Set_Led_Drawpixel_On_TOOLTIP="Light up the specified LED light";r.Msg.Esp32_Main_Controller_Set_Led_Drawpixel_Off_TOOLTIP="Turn off the specified LED light";r.Msg.Esp32_Main_Controller_Set_Buzzer_TOOLTIP="Buzzer set tone frequency";r.Msg.Esp32_Main_Controller_Turn_Off_Buzzer_TOOLTIP="Turn off the buzzer";r.Msg.Esp32_Main_Controller_Get_Environmental_Value_TOOLTIP="Get %1 value(Take longer than 1 second to get the value)";r.Msg.Esp32_Main_Controller_Motion_When_Shaking_STATEMENT_TOOLTIP="Perform operation when module %1 is shaking";r.Msg.Esp32_Main_Controller_Motion_When_Tilting_STATEMENT_TOOLTIP="Perform operation when module %1 is tilted";r.Msg.Esp32_Main_Controller_Motion_Acceleration_TOOLTIP="Get the acceleration of the %1 axis";r.Msg.Esp32_Main_Controller_Motion_Rotation_Measurement_TOOLTIP="Get the rotation measurement of the %1 axis";r.Msg.Esp32_Main_Controller_Motion_Tilt_Angle_TOOLTIP="Get the tilt angle of the %1 axis";r.Msg.Esp32_Main_Controller_Get_Light_TOOLTIP="Get light value";r.Msg.Esp32_Main_Controller_Wifi_Connect_Internet_TOOLTIP="Connect to WiFi network";r.Msg.Esp32_Main_Controller_Get_Wifi_Connection_Status_TOOLTIP="Get WiFi connection status";r.Msg.Esp32_Main_Controller_Wifi_Get_Info_TOOLTIP="Get WiFi configuration information %1";r.Msg.Esp32_Main_Controller_Wifi_Ntptime_TOOLTIP="Synchronize network time";r.Msg.Esp32_Main_Controller_Wifi_Disconnect_TOOLTIP="Disconnect WiFi connection";r.Msg.Esp32_Main_Controller_Wifi_Enable_Hotspot_Mode_TOOLTIP="Create WiFi hotspot";r.Msg.Esp32_Main_Controller_Wifi_Acquiring_Equipment_TOOLTIP="Get the list of currently connected devices";r.Msg.Esp32_Main_Controller_Get_Wifi_Devices_Number_TOOLTIP="Get the number of currently connected devices";r.Msg.Esp32_Main_Controller_Wifi_Close_TOOLTIP="Turn off WiFi hotspot";r.Msg.Esp32_Network_Http_Get_TOOLTIP="Send http get request";r.Msg.Esp32_Network_Http_Post_TOOLTIP="Send http post request";r.Msg.CocoRobo_get_TOOLTIP="Get %1 of HTTP response content";r.Msg.Esp32_Network_Http_Get_Data_From_Local_Server_TOOLTIP="Get the data requested from the local HTTP server, the data type is %1";r.Msg.Esp32_Network_Http_Server_Setup_TOOLTIP="HTTP server initialization";r.Msg.Esp32_Network_Http_Server_Route_TOOLTIP="When the specified path is requested, set the request attribute to %1 request and perform the operation";r.Msg.Esp32_Network_Http_Server_Route_Respond_TOOLTIP="The HTTP server sets the response content and sets the return data type to %1";r.Msg.Esp32_Network_Http_Server_Get_Data_TOOLTIP="The HTTP server gets the data received from the client, the type is %1";r.Msg.Esp32_Web_Ws_Setup_Send_TOOLTIP="Real-time communication sender initialization";r.Msg.Esp32_Web_Ws_Send_TOOLTIP="Send messages via real-time communication";r.Msg.Esp32_Web_Ws_Setup_Receive_TOOLTIP="Real-time communication receiver initialization";r.Msg.Esp32_Web_Ws_Receive_Statement_TOOLTIP="When real-time communication receives a message, run the operation";r.Msg.Esp32_Web_Ws_Receive_Get_Data_TOOLTIP="Get the message received from real-time communication, the type is %1";r.Msg.Iot_Service_Cococloud_TOOLTIP="Send data to CocoCloud specified event";r.Msg.Iot_Service_Cococloud_Read_TOOLTIP="Get the data in the specified event of CocoCloud";r.Msg.Iot_Service_Cococloud_Read_Data_TOOLTIP="Get the data of the specified attribute in the CocoCloud event";r.Msg.Esp32_Main_Controller_Ifttt_Send_Data_TOOLTIP="Send data to IFTTT Webhooks event";r.Msg.Esp32_Main_Controller_Ifttt_Touched_TOOLTIP="Trigger the specified IFTTT event";r.Msg.Iot_Service_Thingspeak_TOOLTIP="Send data to the specified ThingSpeak channel";r.Msg.Iot_Service_Thingspeak_Read_TOOLTIP="Find the data of ThingSpeak specified channel";r.Msg.Iot_Service_Thingspeak_Read_Total_TOOLTIP="Get the total amount of data in the ThingSpeak channel";r.Msg.Iot_Service_Thingspeak_Read_Specific_TOOLTIP="Get the value of the specified Field of the specified data in the ThingSpeak channel";r.Msg.Iot_System_Restart_TOOLTIP="Reboot the system";r.Msg.Iot_System_Get_TOOLTIP="Get the remaining space in the module";r.Msg.Iot_System_Mac_TOOLTIP="Get the MAC address of the module";r.Msg.Iot_System_Get_Cocorobo_Id_TOOLTIP="Get the IoT device ID";r.Msg.iot_system_get_cocorobo_firmware_version_TOOLTIP="Get the IoT Current firmware version number";r.Msg.iot_system_delete_TOOLTIP="Delete file with the specified name";r.Msg.ai_system_get_cocorobo_firmware_version_TOOLTIP="Get the AI Current firmware version number";r.Msg.ai_System_Get_TOOLTIP="Get the Remaining Space in Memory";r.Msg.ai_System_sd_Get_TOOLTIP="Get the Remaining Space in SD card";r.Msg.ai_system_thread_TOOLTIP="Enable multithreading to perform related operations";r.Msg.Iot_Lcd_Screeninit_TOOLTIP="LCD screen initialization";r.Msg.Iot_Lcd_Screen_TOOLTIP="Fill the LCD screen with color %1";r.Msg.Iot_Lcd_Fill_Screen_With_Rgb_TOOLTIP="Fill the LCD screen with the specified color";r.Msg.Iot_Lcd_Set_Color_TOOLTIP="Convert hexadecimal color code to RGB color value and return";r.Msg.Iot_Lcd_Rgb_Value_Input_TOOLTIP="Return the specified rgb value";r.Msg.Iot_Lcd_Drawpixel_TOOLTIP="Draw pixel on the screen";r.Msg.Iot_Lcd_Linecarvas_TOOLTIP="Draw line on the screen";r.Msg.Iot_Lcd_Ractanglecarvas_TOOLTIP="Draw %1 rectangle on the screen";r.Msg.Iot_Lcd_Textcarvas_TOOLTIP="Draw text on screen";r.Msg.Iot_Lcd_Draw_ZedGraph_TOOLTIP="Draw %1 statistical chart on the screen";r.Msg.iot_lcd_clear_screen_TOOLTIP="Clear LCD Screen";r.Msg.Iot_Led_Matrix_Setup_TOOLTIP="IoT module initialization LED light screen";r.Msg.Iot_Led_Matrix_Set_Bright_TOOLTIP="Set the brightness of the light screen";r.Msg.Iot_Led_Matrix_xy_TOOLTIP="Set ranks";r.Msg.Iot_Led_Matrix_wh_TOOLTIP="Set width and height";r.Msg.Iot_Led_Matrix_Rgb_Value_Input_TOOLTIP="Return the specified rgb value";r.Msg.Iot_Led_Matrix_Draw_Pixel_TOOLTIP="IoT module LED light screen drawing pixel";r.Msg.Iot_Led_Matrix_Draw_Rectangle_TOOLTIP="IoT module LED light screen drawing rectangle";r.Msg.Iot_Led_Matrix_Show_Above_TOOLTIP="The IoT module LED light screen display takes effect";r.Msg.Esp32_Motor_Setup_TOOLTIP="IoT module motor driver initialization";r.Msg.Esp32_Motor_Run_TOOLTIP="The IoT module sets the specified motor to rotate in the specified direction at the specified speed";r.Msg.Esp32_Main_Controller_Servo_Setup_TOOLTIP="IoT module servo initialization";r.Msg.Esp32_Main_Controller_Servo_Set_TOOLTIP="The IoT module sets the servo at the specified pin to rotate to the specified angle";r.Msg.x_iot_read_gamepad_button_pressed_TOOLTIP="When the button %1 on the gamepad is pressed";r.Msg.x_iot_read_gamepad_button_released_TOOLTIP="When the button %1 on the gamepad is released";r.Msg.x_iot_read_gamepad_button_xr_TOOLTIP="Get the level value of the button %1 on the gamepad";r.Msg.x_iot_read_gamepad_joystick_check_TOOLTIP="When Game Pad Joystick is %1";r.Msg.x_iot_read_gamepad_joystick_TOOLTIP="Get the analog value of the joystick %1 on the gamepad";r.Msg.esp32_nbiot_setup_TOOLTIP="Initialize NB-IoT module communication on %1 module";r.Msg.esp32_nbiot_get_power_status_TOOLTIP="Get the NB-IoT module activation status";r.Msg.esp32_nbiot_get_network_status_TOOLTIP="Get the NB-IoT module network connection status";r.Msg.esp32_nbiot_get_network_ip_TOOLTIP="Obtain the NB-IoT module network IP address";r.Msg.iot_service_nbiot_cococloud_TOOLTIP="NB-IoT module sends data to CocoCloud";r.Msg.esp32_nbiot_onenet_init_TOOLTIP="NB-IoT module connected to OneNET";r.Msg.esp32_nbiot_onenet_connection_status_TOOLTIP="NB-IoT module obtains OneNET connection status";r.Msg.iot_service_nbiot_onenet_TOOLTIP="NB-IoT module sends data to OneNET";r.Msg.esp32_nbiot_onenet_read_value_TOOLTIP="Get the instructions sent by the NB-IoT module from OneNET";r.Msg.iot_service_nbiot_onenet_read_TOOLTIP="When the NB-IoT module receives a message from OneNET, run the operation";r.Msg.esp32_ble_setup_sender_TOOLTIP="BLE (Bluetooth Low Energy) sender initialized";r.Msg.esp32_ble_send_data_TOOLTIP="BLE sends the specified data";r.Msg.esp32_ble_setup_receiver_TOOLTIP="BLE (Bluetooth Low Energy) Receiver initialized";r.Msg.esp32_ble_get_data_TOOLTIP="Returns data received by BLE";r.Msg.esp32_ble_sender_connected_TOOLTIP="Sender is Connected";r.Msg.esp32_ble_receiver_connected_TOOLTIP="Receiver is Connected";r.Msg.ai_k210_button_read_pressed_TOOLTIP="When button %1 is pressed";r.Msg.ai_k210_button_read_released_TOOLTIP="When button %1 is released";r.Msg.ai_k210_led_light_up_TOOLTIP="Set %1 to light up";r.Msg.ai_basic_light_up_led_analog_TOOLTIP="Set the light brightness of %1";r.Msg.ai_k210_led_light_off_TOOLTIP="Set %1 turn off";r.Msg.ai_system_restart_TOOLTIP="Reboot the system";r.Msg.ai_system_off_TOOLTIP="To turn it off";r.Msg.ai_system_refresh_TOOLTIP="Refreshing a file directory";r.Msg.ai_system_run_TOOLTIP="Run the Python program in the specified path";r.Msg.ai_mphone_init_TOOLTIP="Microphone initialization";r.Msg.mphone_audio_spectrum_init_TOOLTIP="Start reading the audio spectrum";r.Msg.ai_mphone_read_sound_sensitivity_TOOLTIP="Get the audio spectrum collected by the microphone";r.Msg.ai_mphone_Record_audio_init_TOOLTIP="Microphone recording audio initialization";r.Msg.ai_mphone_Record_audio_start_TOOLTIP="Start recording and saving the audio";r.Msg.ai_audio_stop_recording_TOOLTIP="Stop recording audio";r.Msg.ai_img_save_TOOLTIP="Save the canvas locally and set the image compression quality";r.Msg.ai_lcd_invert_color_TOOLTIP="Invert the color of the canvas";r.Msg.ai_lcd_resizecanvas_TOOLTIP="Adjust the canvas to the specified size";r.Msg.ai_lcd_color_scheme_TOOLTIP="Convert the canvas to %1";r.Msg.ai_lcd_img_cut_TOOLTIP="The canvas is clipped as specified";r.Msg.ai_vision_color_analyze_TOOLTIP="Gets the color analysis result for the specified area of the canvas";r.Msg.ai_vision_find_blobs_TOOLTIP="Searches the canvas for the specified color palette";r.Msg.ai_vision_get_threshold_default_TOOLTIP="Sets the default color for color tracing to %1";r.Msg.ai_vision_get_blobs_TOOLTIP="Gets the recognition result for tracing the specified color";r.Msg.ai_vision_get_statistics_TOOLTIP="Obtain the results of color channel information analysis on canvas";r.Msg.ai_vision_get_histogram_TOOLTIP="Gets the result of a standardized histogram operation from the canvas";r.Msg.ai_vision_get_histogram_percentile_TOOLTIP="The CDF value of the histogram channel is obtained from the histogram calculation results";r.Msg.ai_vision_get_histogram_percentile_detail_TOOLTIP="%1 of the percentage value obtained from the histogram calculation results";r.Msg.ai_vision_lab_rgb_conversion_TOOLTIP="Run the color conversion %1";r.Msg.ai_vision_rgb_grayscale_conversion_TOOLTIP="Run the color conversion %1";r.Msg.ai_vision_find_qrcode_TOOLTIP="Get the detection result of QR code in canvas";r.Msg.ai_vision_qrcode_get_info_TOOLTIP="Gets %1 of the detected QR code from the variable";r.Msg.ai_vision_find_apriltag_TOOLTIP="Get the detection result of AprilTag in the canvas";r.Msg.ai_vision_apriltag_get_info_TOOLTIP="Gets %1 for detecting AprilTag from the variable";r.Msg.ai_vision_find_datamatrices_TOOLTIP="Gets the detection result of the data matrix in the canvas";r.Msg.ai_vision_datamatrices_get_info_TOOLTIP="Gets %1 of the detection data matrix from the variable";r.Msg.ai_vision_find_barcodes_TOOLTIP="Gets the detection result of the bar code in the canvas";r.Msg.ai_vision_barcodes_get_info_TOOLTIP="Gets %1 of the detected bar code from the variable";r.Msg.ai_vision_find_circles_TOOLTIP="Look for the circle on the canvas";r.Msg.ai_vision_get_circles_TOOLTIP="Gets the result of looking for a circle";r.Msg.ai_vision_find_rects_TOOLTIP="Look for the rectangular on the canvas";r.Msg.ai_vision_get_rects_TOOLTIP="Gets the result of looking for a rectangular";r.Msg.ai_vision_find_lines_TOOLTIP="Look for the straight line on the canvas";r.Msg.ai_vision_get_lines_TOOLTIP="Gets the result of looking for a straight line";r.Msg.ai_video_set_TOOLTIP="Video playback requirements:Video file format——AVI,Video coding format——MJPG,Audio coding format——PCM";r.Msg.ai_video_status_TOOLTIP="Get the status of video playback";r.Msg.ai_video_stop_play_TOOLTIP="End video file playback";r.Msg.speech_recognition_new_setup_TOOLTIP="Speech recognition initialization";r.Msg.speech_recognition_new_recording_sample_start_TOOLTIP="Start recording voice clips";r.Msg.speech_recognition_new_start_recognition_TOOLTIP="Start doing speech recognition";r.Msg.speech_recognition_new_recognition_get_result_TOOLTIP="The result of speech recognition is the specified fragment";r.Msg.speech_recognition_new_recognition_get_any_result_TOOLTIP="When speech recognition gets any result, do the following";r.Msg.speech_recognition_phonetic_to_pinyin_setup_TOOLTIP="Phonetic to Pinyin initialization";r.Msg.ai_speech_recognition_phonetic_to_pinyin_get_result_TOOLTIP="Get the result of speech to pinyin";r.Msg.ai_speech_recognition_phonetic_to_pinyin_set_param_TOOLTIP="Set phonetic recognition parameters";r.Msg.speech_recognition_phonetic_to_pinyin_start_recognition_TOOLTIP="Speech Recognition: Start Phonetic Recognition";r.Msg.speech_recognition_phonetic_to_pinyin_stop_recognition_TOOLTIP="Speech Recognition: End Phonetic Recognition";r.Msg.speech_recognition_phonetic_to_pinyin_pause_recognition_TOOLTIP="Speech Recognition: Pause Phonetic Recognition";r.Msg.ai_model_allinit_TOOLTIP="Initialize the %1";r.Msg.ai_model_allload_TOOLTIP="Load the %1";r.Msg.ai_model_index_mnist_TOOLTIP="Get the detection result of handwritten digit detection model";r.Msg.ai_model_get_TOOLTIP="Gets %1 of the tested objects detected from the variable";r.Msg.ai_model_look_TOOLTIP="Any tested objects detected";r.Msg.ai_model_look_attribute_TOOLTIP="Tested Objects attribute";r.Msg.ai_model_xy_TOOLTIP="Gets %1 of the detected face from the variable";r.Msg.ai_model_human_xy_TOOLTIP="Gets %1 of the detected human body from the variable";r.Msg.ai_model_face_TOOLTIP="Recognized Any Human Face";r.Msg.ai_model_face_attribute_TOOLTIP="Face attribute";r.Msg.ai_model_customized_init_setup_definition_TOOLTIP="Before the program of the custom model runs, release the memory";r.Msg.ai_model_customized_init_setup_TOOLTIP="Initializes the custom model";r.Msg.ai_model_customized_load_setup_TOOLTIP="Loads the custom model";r.Msg.ai_model_customized_if_got_TOOLTIP="The object for the custom model has been identified";r.Msg.ai_model_customized_attribute_TOOLTIP="Custom model object attribute";r.Msg.ai_model_customized_get_result_TOOLTIP="Gets %1 from the variable from the recognition to the custom model result";r.Msg.ai_model_face_setup_TOOLTIP="Initializing customized Face Recognition";r.Msg.ai_model_face_init_TOOLTIP="Custom initializes the face recognition model";r.Msg.ai_face_detection_model_TOOLTIP="Initialize face detection model";r.Msg.ai_face_point_detection_model_TOOLTIP="Initialization of face 5-point key point detection model";r.Msg.ai_face_Vitter_eigenvalue_model_TOOLTIP="Initialization of face 196 Vitter eigenvalue model";r.Msg.ai_model_face_load_point_detection_model_TOOLTIP="Loading face 5-point key point detection model,and make certain settings";r.Msg.ai_model_Calculation_of_196_eigenvalues_TOOLTIP="Calculate 196 dimension eigenvalues of running face feature model";r.Msg.ai_model_class_TOOLTIP="Custom Initializing class recognition model";r.Msg.ai_model_getface_TOOLTIP="Custom Recognized face from customized model";r.Msg.ai_model_getclass_TOOLTIP="Recognized object from customized model";r.Msg.ai_model_face_start_recognition_TOOLTIP="Loading face detection model, and set the image source";r.Msg.ai_model_face_model_load_finish_TOOLTIP="Face detection model loading completed";r.Msg.ai_model_face_gather_TOOLTIP="Gather new face data and save face data";r.Msg.ai_model_face_data_load_TOOLTIP="Load saved face data";r.Msg.ai_model_face_gather_num_judge_TOOLTIP="Completed the face acquisition";r.Msg.ai_model_face_model_list_TOOLTIP="Face detection attribute";r.Msg.ai_model_face_recognition_TOOLTIP="Gather or load face data and carry out face recognition";r.Msg.ai_model_face_recognition_get_result_TOOLTIP="Face recognition gets arbitrary results";r.Msg.ai_model_show_face_TOOLTIP="Image processing and display";r.Msg.ai_model_class_setup_TOOLTIP="Initializing customized Class Recognition";r.Msg.ai_class_model_TOOLTIP="Initialize custom object feature extraction model";r.Msg.ai_class_model_cluster_TOOLTIP="Initialize custom object clustering parameters";r.Msg.ai_model_class_start_load_TOOLTIP="Set the image source and process the image";r.Msg.ai_model_class_gather_TOOLTIP="Start gathering class";r.Msg.ai_model_class_data_load_TOOLTIP="Loading class data";r.Msg.ai_model_class_gather_load_finish_TOOLTIP="Collect or load object data";r.Msg.ai_model_class_cluster_train_TOOLTIP="Start extract object features, and then cluster training";r.Msg.ai_model_class_recognition_TOOLTIP="Start object recognition";r.Msg.k210_wifi_enable_disable_TOOLTIP="Set the Wi-Fi to %1";r.Msg.k210_wifi_scan_TOOLTIP="Start scanning nearby Wi-Fi hotspots";r.Msg.k210_wifi_scan_get_TOOLTIP="Get the results of the Wi-Fi scan as a list";r.Msg.k210_wifi_connect_hotspot_TOOLTIP="Connect to the specified Wi-Fi network";r.Msg.k210_wifi_get_connection_status_TOOLTIP="Gets the status of your Wi-Fi connection";r.Msg.k210_wifi_get_config_TOOLTIP="Gets the device specification information for a Wi-Fi connection";r.Msg.ai_lcd_screeninit_TOOLTIP="LCD screen initialization";r.Msg.ai_lcd_rotation_TOOLTIP="Turns the LCD screen direction by the specified Angle";r.Msg.ai_lcd_filp_TOOLTIP="Whether to mirror the LCD screen";r.Msg.ai_lcd_screen_TOOLTIP="Fill the LCD screen with %1 color";r.Msg.ai_lcd_fill_screen_with_rgb_TOOLTIP="Fills the LCD screen with the specified RGB value";r.Msg.ai_lcd_clear_TOOLTIP="Clear the screen";r.Msg.ai_lcd_rgb_value_input_TOOLTIP="Returns the specified RGB value";r.Msg.ai_lcd_XY_TOOLTIP="Returns the specified x and y";r.Msg.ai_lcd_WH_TOOLTIP="Returns the specified width and height";r.Msg.ai_lcd_createnonecarvas_TOOLTIP="Creates a blank canvas of the specified size";r.Msg.ai_lcd_fillcanvas_TOOLTIP="Fills the canvas with the specified color";r.Msg.ai_lcd_createcarvas_TOOLTIP="Create an image canvas";r.Msg.ai_lcd_showcarvas_set_cord_TOOLTIP="Sets the starting point coordinates of the canvas";r.Msg.ai_lcd_textcarvas_TOOLTIP="Draw text on the canvas";r.Msg.ai_lcd_characterscarvas_TOOLTIP="Draw Hanzi characters on the canvas";r.Msg.ai_lcd_linecarvas_TOOLTIP="Draw a straight line on the canvas";r.Msg.ai_lcd_ractanglecarvas_TOOLTIP="Draws %1 rectangle on the canvas";r.Msg.ai_lcd_drawcirclecarvas_TOOLTIP="Draw the %1 circle on the canvas";r.Msg.ai_lcd_draw_cross_sign_TOOLTIP="Draw a cross symbol on the canvas";r.Msg.ai_lcd_draw_arrow_sign_TOOLTIP="Draw the arrow on the canvas";r.Msg.ai_lcd_draw_image_on_canvas_TOOLTIP="Draw the picture on the canvas";r.Msg.ai_lcd_draw_sensor_image_on_canvas_TOOLTIP="Draw the Image Captured from Camera on the canvas";r.Msg.ai_lcd_showcarvas_set_display_TOOLTIP="Show canvas";r.Msg.ai_lcd_clearcanvas_TOOLTIP="Clear everything in the canvas";r.Msg.ai_lcd_qrcode_TOOLTIP="Draw QR code on the canvas";r.Msg.ai_led_matrix_setup_TOOLTIP="A.I. module initialization LED light screen";r.Msg.ai_led_matrix_set_bright_TOOLTIP="Set the brightness of the light screen";r.Msg.ai_led_matrix_xy_TOOLTIP="Set ranks";r.Msg.ai_led_matrix_wh_TOOLTIP="Set width and height";r.Msg.ai_led_matrix_rgb_value_input_TOOLTIP="Return the specified rgb value";r.Msg.ai_led_matrix_draw_pixel_TOOLTIP="A.I. module LED light screen drawing pixel";r.Msg.ai_led_matrix_draw_rectangle_TOOLTIP="A.I. module LED light screen drawing rectangle";r.Msg.ai_led_matrix_show_above_TOOLTIP="Show pattern";r.Msg.ai_led_matrix_clear_screen_TOOLTIP="Clear light screen";r.Msg.ai_audio_init_speaker_TOOLTIP="Horn initialization";r.Msg.ai_audio_play_song_speaker_TOOLTIP="Play audio files(Single tune circulation)";r.Msg.ai_audio_play_song_speaker_list_loop_TOOLTIP="Play audio files(Sequential play)";r.Msg.ai_audio_play_music_file_list_random_TOOLTIP="Play audio files(Random play)";r.Msg.ai_audio_play_state_speaker_TOOLTIP="Get the play state of playing file";r.Msg.ai_audio_play_finish_speaker_TOOLTIP="End audio playing";r.Msg.ai_audio_set_speaker_TOOLTIP="Set Playing Volume";r.Msg.ai_audio_files_list_TOOLTIP="Get the list of audio files in the current path";r.Msg.ai_camera_init_TOOLTIP="Camera Initialization";r.Msg.ai_camera_fit_to_screen_size_TOOLTIP="Set the size of the camera's capture image";r.Msg.ai_camera_windows_TOOLTIP="Adjust the size of the image captured by the camera";r.Msg.ai_camera_snapshot_TOOLTIP="Gets the image captured by the camera";r.Msg.ai_camera_lens_corr_TOOLTIP="GCorrect wide Angle lens screen";r.Msg.ai_camera_image_property_change_TOOLTIP="Set the state of the camera image %1";r.Msg.ai_camera_bcs_operation_TOOLTIP="Set %1 of the camera image";r.Msg.ai_video_record_setup_TOOLTIP="Start recording and saving the video";r.Msg.ai_video_get_TOOLTIP="Record the canvas";r.Msg.ai_video_stop_TOOLTIP="Stop recording video";r.Msg.ai_motor_setup_TOOLTIP="A.I. module motor driver initialization";r.Msg.ai_motor_run_TOOLTIP="The A.I. module sets the specified motor to rotate in the specified direction at the specified speed";r.Msg.extension_servo_setup_on_ai_TOOLTIP="module servo initialization";r.Msg.extension_servo_write_on_ai_TOOLTIP="module sets the servo at the specified pin to rotate to the specified angle";r.Msg.x_ai_read_gamepad_button_pressed_TOOLTIP="When the button %1 on the gamepad is pressed";r.Msg.x_ai_read_gamepad_button_released_TOOLTIP="When the button %1 on the gamepad is released";r.Msg.x_ai_read_gamepad_button_xr_TOOLTIP="Get the level value of the button %1 on the gamepad";r.Msg.x_ai_read_gamepad_joystick_check_TOOLTIP="When Game Pad Joystick is %1";r.Msg.x_ai_read_gamepad_joystick_TOOLTIP="Get the analog value of the joystick %1 on the gamepad";r.Msg.CocoRobo_try_except_TOOLTIP="Detect errors in the try statement block so that the except statement catches exception information and handles it";r.Msg.CocoRobo_try_except_finally_TOOLTIP="Detect errors in the try block so that the except statement catches exception information and handles it, and the finally statement executes regardless of whether an exception is generated";r.Msg.Pedometer_Init_TOOLTIP="Initialize Pedometer";r.Msg.Pedometer_Run_TOOLTIP="Run Pedometer";r.Msg.Pedometer_Get_TOOLTIP="Get Count";r.Msg.ai_vision_canvas_area_tuple_TOOLTIP="Create area tuple";r.Msg.ai_vision_lane_tracking_setup_TOOLTIP="Initialization of road tracking recognition";r.Msg.ai_vision_from_canvas_TOOLTIP="Run road tracking recognition";r.Msg.ai_vision_lane_tracking_run_get_TOOLTIP="Obtain the result of road tracking recognition";r.Msg.MLX90614_SETUP_TOOLTIP="%1 MLX90614 sensor initialization";r.Msg.MLX90614_READ_AMBIENT_TOOLTIP="Get Current Ambient Temperature";r.Msg.MLX90614_READ_OBJECT_TOOLTIP="Get Targeted Object's Temperature";r.Msg.DHT_SETUP_TOOLTIP="%1 DHT sensor initialization";r.Msg.PM25_SETUP_TOOLTIP="%1 PM2.5 sensor initialization";r.Msg.PM25_REDD_DATA_TOOLTIP="Get PM2.5 value";r.Msg.RTC_setup_TOOLTIP="RTC Module initialization";r.Msg.RTC_setDateTime_TOOLTIP="Set Date,Time and Week";r.Msg.RTC_GETDATE_TOOLTIP="Get Current Date %1";r.Msg.RTC_GETTIME_TOOLTIP="Get Current Time %1";r.Msg.RTC_getWeek_TOOLTIP="Get Current Week";r.Msg.RTC_SETDATE_TOOLTIP="Set Current Date %1 to a specific value";r.Msg.RTC_SETTIME_TOOLTIP="Set Current Time %1 to a specific value";r.Msg.RTC_setWeek_TOOLTIP="Set Current Week to a specific value";r.Msg.RTC_getDateTime_TOOLTIP="Get Date,Time and Week";r.Msg.robot_dog_movement_action_TOOLTIP="Speech control robot dog initialization";r.Msg.robot_dog_phonetic_to_pinyin_get_result_TOOLTIP="Get the result of speech recognition";r.Msg.robot_dog_setup_TOOLTIP="Robot dog initialization";r.Msg.robot_dog_action_TOOLTIP="The robot dog executes the %1 instruction";r.Msg.robot_dog_servo_movement_TOOLTIP="Set a specific leg specific joint servo to rotate to a specific degree";r.Msg.robot_dog_servo_speed_TOOLTIP="Set the specific speed to %1";r.Msg.robot_dog_servo_movement_location_TOOLTIP="Set the position of the toe of a specific leg in a specific direction to a specific value";r.Msg.robot_dog_open_gyroscope_TOOLTIP="%1 Gyroscope";r.Msg.robot_dog_open_performance_mode_TOOLTIP="%1 Performance mode of Robot dog";r.Msg.robot_dog_open_calibration_mode_TOOLTIP="%1 Robot dog calibration mode";r.Msg.robot_dog_get_power_TOOLTIP="Get the current power of the robot dog";r.Msg.robot_dog_servo_movement_distance_TOOLTIP="Set the step size of the robot dog to execute the translation movement in %1 direction to a specific value";r.Msg.robot_dog_servo_movement_rotate_TOOLTIP="Set the rotation speed of the robot dog in %1 direction to a specific value";r.Msg.robot_dog_servo_movement_standing_still_TOOLTIP="Set the robot dog to perform standing still at a fixed frequency with a specific leg lifting height";r.Msg.robot_dog_servo_movement_distance_cycle_TOOLTIP="Set the step size of the robot dog to execute the translation movement in %1 direction to a specific value for a specific second";r.Msg.robot_dog_servo_movement_rotate_cycle_TOOLTIP="Set the rotation speed of the robot dog in %1 direction to a specific value for a specific second";r.Msg.robot_dog_servo_movement_standing_still_cycle_TOOLTIP="Set the robot dog to perform standing still at a fixed frequency with a specific leg lifting height for a specific second";r.Msg.robot_dog_servo_movement_distance_still_TOOLTIP="Set the robot dog %1 direction translation specific millimeter";r.Msg.robot_dog_servo_movement_distance_still_cycle_TOOLTIP="Set the robot dog to translate %1 in a specific cycle";r.Msg.robot_dog_servo_movement_rotate_still_TOOLTIP="Set a specific value for the dog to rotate around the %1 axis";r.Msg.robot_dog_servo_movement_rotate_still_cycle_TOOLTIP="Set the robot dog to rotate around the %1 axis at a specific cycle";r.Msg.robot_dog_servo_movement_distance_still_cycle_stop_TOOLTIP="Stop the cycle translation of the robot dog towards %1";r.Msg.robot_dog_servo_movement_rotate_still_cycle_stop_TOOLTIP="Stop the cycle of the robot dog around the %1 axis";r.Msg.robot_dog_get_servo_angle_TOOLTIP="Gets the angle of the steering gear for a specific leg joint";r.Msg.robot_dog_get_rotate_angle_TOOLTIP="Gets the angle of gyro about %1 axis";r.Msg.Take_off_TOOLTIP="Set the takeoff altitude of the UAV with the specified number to the specified cm";r.Msg.uav_fly_mode_TOOLTIP="Set the specified number UAV to switch the specified flight mode";r.Msg.xy_speed_TOOLTIP="Set the horizontal speed of the UAV with the specified number to the specified value";r.Msg.z_speed_TOOLTIP="Set the vertical speed of the UAV with the specified number to the specified value";r.Msg.follow_line_TOOLTIP="Set the specified number of UAV to patrol the line in the specified direction";r.Msg.mobile_distance_TOOLTIP="Set the specified number UAV to fly the specified distance in the specified direction";r.Msg.move_search_dot_TOOLTIP=" and look for small black pieces";r.Msg.move_search_tag_TOOLTIP=" and find the specified label";r.Msg.move_search_blob_TOOLTIP=" and find the specified color block";r.Msg.go_to_TOOLTIP="Set the specified number UAV direct to the specified label";r.Msg.go_to_tag_TOOLTIP=" and set the specified height";r.Msg.uav_rotation_TOOLTIP="Set the specified number UAV rotation angle";r.Msg.uav_fly_height_TOOLTIP="Sets the height of the UAV with the specified number";r.Msg.filp_ctrl_TOOLTIP="Set the specified number of revolutions of UAV in the specified direction";r.Msg.led_ctrl_TOOLTIP="Sets the light color of the specified number UAV";r.Msg.off_led_ctrl_TOOLTIP="Set the specified number UAV to turn off the light";r.Msg.uav_detection_TOOLTIP="Set the specified number and UAV detects the specified object";r.Msg.mangne_ctrl_TOOLTIP="Set the specified number of UAV operation electromagnets";r.Msg.servo_ctrl_TOOLTIP="Set the steering gear angle of the UAV with the specified number as the specified value";r.Msg.role_ctrl_TOOLTIP="Set the command of the UAV with the specified number as the specified command";r.Msg.lock_dir_TOOLTIP="Set the specified number UAV management head direction";r.Msg.shoot_crtl_TOOLTIP="Set the specified number of UAV to emit laser";r.Msg.switch_crtl_TOOLTIP="Sets the status of the UAV of the specified number to on or off";r.Msg.ai_crtl_TOOLTIP="Set the specified number, and the UAV AI switches to the specified mode";r.Msg.ai_learing_TOOLTIP="Set the ID of UAV learning of the specified number as the specified value";r.Msg.ai_forget_TOOLTIP="Set the specified number, and the UAV forgets all the learned data";r.Msg.ai_set_name_TOOLTIP="Set the name of the specified ID of the specified number UAV as the specified value";r.Msg.ai_save_img_TOOLTIP="Set the specified number and save the photos taken or screenshots of UAV to SD card";r.Msg.fly_ctrl_TOOLTIP="Set the status of the UAV with the specified number";r.Msg.uav_detection_if_TOOLTIP="The specified number UAV detects the specified object";r.Msg.uav_detection_if_line_TOOLTIP="The specified number UAV detects the specified direction wire";r.Msg.uav_get_distance_of_obstacles_TOOLTIP="Gets the obstacle distance of the specified number UAV in the specified direction";r.Msg.uav_get_value_TOOLTIP="Gets the specified value of the specified number UAV";r.Msg.uav_get_AI_value_TOOLTIP="Gets AI recognition results of UAV with specified number";r.Msg.uav_get_electronic_balance_value_TOOLTIP="Gets the scale reading of the UAV with the specified number";r.Msg.uav_get_shooting_value_TOOLTIP="Gets firing data of UAV with specified number";r.Msg.uav_get_msg_value_TOOLTIP="Get the message data of UAV with specified number";r.Msg.esp32_expand_io_from_digital_pin_TOOLTIP="Get the digital signal value of GPIO # %1";r.Msg.esp32_expand_io_set_digital_pin_TOOLTIP="Set the GPIO # %1 to the specified level";r.Msg.esp32_expand_io_set_analog_pin_TOOLTIP="Set GPIO # %1 PWM Output to the specified value";r.Msg.iot_service_KUJU_setup_TOOLTIP="Connect to KUJU through account and password";r.Msg.iot_service_KUJU_controll_TOOLTIP="Send data to KUJU control Smart Plug";r.Msg.iot_service_KUJU_get_temperature_humidity_data_TOOLTIP="Obtain the specific value of the temperature sensor";r.Msg.iot_service_KUJU_get_motion_data_TOOLTIP="Obtain the specific value of the motion sensor";r.Msg.iot_service_KUJU_get_sensor_data_TOOLTIP="Obtain the specific value of the specific sensor";r.Msg.wifiServices_WeTech_setup_TOOLTIP="Connect specific gateway of specific account under WeTech";r.Msg.wifiServices_WeTech_controll_derail_TOOLTIP="Send data to WeTech to control the on and off of specific three-way lamp surface switch";r.Msg.wifiServices_WeTech_controll_derail_second_way_TOOLTIP="Send data to WeTech to control the on and off of specific Second-way lamp surface switch";r.Msg.wifiServices_WeTech_controll_derail_curtain_sensor_TOOLTIP="Send data to WeTech to control the specific Curtain Sensor's (for projector Screen) status";r.Msg.wifiServices_WeTech_controll_derail_air_conditioning_mode_TOOLTIP="Send data to WeTech to control the specific Air Conditioner's pattern";r.Msg.wifiServices_WeTech_controll_derail_wind_speed_mode_TOOLTIP="Send data to WeTech to control the specific Air Conditioner's wind speed";r.Msg.wifiServices_WeTech_controll_derail_temp_TOOLTIP="Send data to WeTech to control the specific Air Conditioner's temperature";r.Msg.wifiServices_WeTech_controll_derail_all_mode_TOOLTIP="Send data to WeTech to control the specific Air Conditioner";r.Msg.wifiServices_WeTech_controll_derail_IR_TOOLTIP="Send data to WeTech to control the specific TV IR (for TV and Projector)";r.Msg.wifiServices_WeTech_controll_derail_get_power_meter_TOOLTIP="Get the Power Meter's value";r.Msg.wifiServices_WeTech_controll_derail_get_sensor_number_TOOLTIP="Get the %1 value";r.Msg.iot_service_tuya_TOOLTIP="Connect to Tuya through Access ID and Access Secret";r.Msg.iot_service_tuya_setToken_TOOLTIP="When gets the access token by connecting tuya, do the following";r.Msg.iot_service_tuya_controll_light_belt_TOOLTIP="Control the intelligent light belt to a specific state";r.Msg.iot_service_tuya_controll_light_belt_color_value_TOOLTIP="Control the color of the intelligent light belt to a specific value";r.Msg.TURTLE_CREATE_NE_TURTLE_TLTLE_TOOLTIP="Creates a new turtle";r.Msg.TURTLE_MAKE_TURTLE_MOVE_FORWARD_TOOLTIP="Let the turtle move forward to the specified value";r.Msg.TURTLE_MAKE_TURTLE_MOVE_BACKWARD_TOOLTIP="Let the turtle go back to the specified value";r.Msg.TURTLE_MAKE_TURN_LEFT_TOOLTIP="Make the turtle turn left at the specified angle";r.Msg.TURTLE_MAKE_TURN_RIGHT_TOOLTIP="Make the turtle turn right at the specified angle";r.Msg.TURTLE_MAKE_TURRLE_COLOR_TOOLTIP="Set the color of the turtle brush";r.Msg.TURTLE_MAKE_TURRLE_PEN_TOOLTIP="Let the turtle paint %1";r.Msg.TURTLE_MAKE_TURTLE_GOTO_LOCATION_X_TOOLTIP="Let the turtle go to the designated location";r.Msg.TURTLE_MAKE_TURTLE_SET_POSITION_TOOLTIP="Set the position of the turtle brush";r.Msg.TURTLE_MAKE_SET_HEADING_TOOLTIP="Rotate the turtle to the specified angle";r.Msg.TURTLE_RESET_TOOLTIP="Reset the position of the brush";r.Msg.TURTLE_CLEAR_TOOLTIP="Clear everything";r.Msg.ADD_COMMENT="Add Comment";r.Msg.ARD_ANALOGREAD="Read analog pin#";r.Msg.ARD_ANALOGREAD_TIP="Return value between 0 and 1024";r.Msg.ARD_ANALOGWRITE="Set analog pin#";r.Msg.ARD_ANALOGWRITE_TIP="Write analog value between 0 and 255 to a specific PWM Port";r.Msg.ARD_BUILTIN_LED="Set built-in LED";r.Msg.ARD_BUILTIN_LED_TIP="Light on or off for the built-in LED of the Arduino";r.Msg.ARD_COMPONENT_WARN1="A %1 configuration block with the same %2 name must be added to use this block!";r.Msg.ARD_DEFINE="Define";r.Msg.ARD_DIGITALREAD="Read digital pin#";r.Msg.ARD_DIGITALREAD_TIP="Read digital value on a pin: HIGH or LOW";r.Msg.ARD_DIGITALWRITE="Set digital pin#";r.Msg.ARD_DIGITALWRITE_TIP="Write digital value HIGH or LOW to a specific Port";r.Msg.ARD_FUN_RUN_LOOP="CocoBlockly V loop forever:";r.Msg.ARD_FUN_RUN_SETUP="CocoBlockly V run first:";r.Msg.ARD_FUN_RUN_TIP="Defines the Arduino setup() and loop() functions.";r.Msg.ARD_HIGH="HIGH";r.Msg.ARD_HIGHLOW_TIP="Set a pin state logic High or Low.";r.Msg.ARD_LOW="LOW";r.Msg.ARD_MAP="Map";r.Msg.ARD_MAP_TIP="Re-maps a number from [0-1024] to another.";r.Msg.ARD_MAP_VAL="Value to [0-";r.Msg.ARD_NOTONE_PIN="No tone";r.Msg.ARD_NOTONE_PIN_TIP="Stop generating a tone on a pin";r.Msg.ARD_PIN_WARN1="Pin %1 is needed for %2 as pin %3. Already used as %4.";r.Msg.ARD_PULSEON="Pulse on pin #";r.Msg.ARD_PULSEREAD="Read";r.Msg.ARD_PULSETIMEOUT="Timeout after";r.Msg.ARD_PULSETIMEOUT_MS="";r.Msg.ARD_PULSETIMEOUT_TIP="Measure the duration of the selected interface pulse and check if it falls within the timeout period.";r.Msg.ARD_PULSE_TIP="Measures the duration of a pulse on the selected pin.";r.Msg.ARD_PWMWRITE="Set pwm pin#";r.Msg.ARD_SERIAL_AVAILABLE="Avalible";r.Msg.ARD_SERIAL_BPS="Bps";r.Msg.ARD_SERIAL_PRINT="Print";r.Msg.ARD_SERIAL_PRINT_NEWLINE="Add new line";r.Msg.ARD_SERIAL_PRINT_TIP="Print the data in readable ASCII text format to the console or serial port.";r.Msg.ARD_SERIAL_PRINT_WARN="Serial-related initialization blocks need to be added.";r.Msg.ARD_SERIAL_READ="Read";r.Msg.ARD_SERIAL_SETUP="Setup";r.Msg.ARD_SERIAL_SETUP_TIP="Selects the speed for a specific Serial peripheral";r.Msg.ARD_SERIAL_SPEED=": speed to";r.Msg.ARD_SERIAL_WRITE="Write";r.Msg.ARD_SERVO_READ="Read SERVO from PIN#";r.Msg.ARD_SERVO_READ_TIP="Read a Servo angle";r.Msg.ARD_SERVO_SETUP="Servo Setup";r.Msg.ARD_SERVO_WRITE="Set SERVO from Pin";r.Msg.ARD_SERVO_WRITE_DEG_180="Degrees (0~180)";r.Msg.ARD_SERVO_WRITE_TIP="Set a Servo to an specified angle";r.Msg.ARD_SERVO_WRITE_TO="To";r.Msg.ARD_SPI_SETUP="Setup";r.Msg.ARD_SPI_SETUP_CONF="Configuration:";r.Msg.ARD_SPI_SETUP_DIVIDE="Clock divide";r.Msg.ARD_SPI_SETUP_LSBFIRST="LSBFIRST";r.Msg.ARD_SPI_SETUP_MODE="SPI mode (idle - edge)";r.Msg.ARD_SPI_SETUP_MODE0="0 (Low - Falling)";r.Msg.ARD_SPI_SETUP_MODE1="1 (Low - Rising)";r.Msg.ARD_SPI_SETUP_MODE2="2 (High - Falling)";r.Msg.ARD_SPI_SETUP_MODE3="3 (High - Rising)";r.Msg.ARD_SPI_SETUP_MSBFIRST="MSBFIRST";r.Msg.ARD_SPI_SETUP_SHIFT="Data shift";r.Msg.ARD_SPI_SETUP_TIP="Configures the SPI peripheral.";r.Msg.ARD_SPI_TRANSRETURN_TIP="Send a SPI message to an specified slave device and get data back.";r.Msg.ARD_SPI_TRANS_NONE="None";r.Msg.ARD_SPI_TRANS_SLAVE="To slave pin";r.Msg.ARD_SPI_TRANS_TIP="Send a SPI message to an specified slave device.";r.Msg.ARD_SPI_TRANS_VAL="Transfer";r.Msg.ARD_SPI_TRANS_WARN1="A setup block for %1 must be added to the workspace to use this block!";r.Msg.ARD_SPI_TRANS_WARN2="Old pin value %1 is no longer available.";r.Msg.ARD_STEPPER_COMPONENT="Stepper";r.Msg.ARD_STEPPER_DEFAULT_NAME="MyStepper";r.Msg.ARD_STEPPER_MOTOR="Stepper motor:";r.Msg.ARD_STEPPER_PIN1="Pin1#";r.Msg.ARD_STEPPER_PIN2="Pin2#";r.Msg.ARD_STEPPER_REVOLVS="How many steps per revolution";r.Msg.ARD_STEPPER_SETUP="Setup stepper motor";r.Msg.ARD_STEPPER_SETUP_TIP="Configuring stepper motor interface alignment and other settings.";r.Msg.ARD_STEPPER_SPEED="Set speed (rpm) to";r.Msg.ARD_STEPPER_STEP="Move stepper";r.Msg.ARD_STEPPER_STEPS="Steps";r.Msg.ARD_STEPPER_STEP_TIP="Turns the stepper motor a specific number of steps.";r.Msg.ARD_TIME_CHRONO_CHECK="Stopwatch has passed";r.Msg.ARD_TIME_CHRONO_CHECK1="Ms";r.Msg.ARD_TIME_CHRONO_ELAPSED="Stopwatch elapsed";r.Msg.ARD_TIME_CHRONO_RESET="Reset Stopwatch";r.Msg.ARD_TIME_CHRONO_SETUP="Stopwatch Setup";r.Msg.ARD_TIME_DELAY="Wait";r.Msg.ARD_TIME_DELAY_MICROS="Microseconds";r.Msg.ARD_TIME_DELAY_MICRO_TIP="Wait for a certain amount of time (in microseconds)";r.Msg.ARD_TIME_DELAY_TIP="Wait for a certain amount of time (in milliseconds)";r.Msg.ARD_TIME_DELAY_seconds_TIP="Wait for a certain amount of time (in seconds)";r.Msg.ARD_TIME_DELAY_seconds="Seconds";r.Msg.ARD_TIME_DO="Do";r.Msg.ARD_TIME_DO_MS="Do";r.Msg.ARD_TIME_EVERY="Every";r.Msg.ARD_TIME_EVERY_MS="Every";r.Msg.ARD_TIME_INF="Wait forever (end program)";r.Msg.ARD_TIME_INF_TIP="Wait indefinitely, stopping the program.";r.Msg.ARD_TIME_MICROS="Current elapsed Time (microseconds)";r.Msg.ARD_TIME_MICROS_TIP="Retrieve the number of microseconds since the beginning of the program's execution on the Arduino board. It must be stored as a long integer data type.";r.Msg.ARD_TIME_MILLIS="Current elapsed Time (milliseconds)";r.Msg.ARD_TIME_MILLIS_TIP="Return the number of milliseconds since the Arduino board started executing the current program, stored as a long integer.";r.Msg.ARD_TIME_MS="Milliseconds";r.Msg.ARD_TIME_SECOND="Second(s)";r.Msg.ARD_TIME_SECOND_MS="Millisecond(s)";r.Msg.ARD_TONE_FREQ="Frequency";r.Msg.ARD_TONE_PIN="Tone PIN#";r.Msg.ARD_TONE_PIN_TIP="Generate audio tones on a pin";r.Msg.ARD_TYPE_ARRAY="Array";r.Msg.ARD_TYPE_BOOL="Boolean";r.Msg.ARD_TYPE_CHAR="Character";r.Msg.ARD_TYPE_CHILDBLOCKMISSING="ChildBlockMissing";r.Msg.ARD_TYPE_DECIMAL="Decimal";r.Msg.ARD_TYPE_LONG="Large Number";r.Msg.ARD_TYPE_NULL="Null";r.Msg.ARD_TYPE_NUMBER="Number";r.Msg.ARD_TYPE_SHORT="Short Number";r.Msg.ARD_TYPE_TEXT="Text";r.Msg.ARD_TYPE_UNDEF="Undefined";r.Msg.ARD_VAR_AS="As";r.Msg.ARD_VAR_AS_TIP="Sets a value to a specific type";r.Msg.ARD_WRITE_TO="To";r.Msg.AUTH="Please authorize this application to save your work and share it.";r.Msg.BASIC_AS="As";r.Msg.BASIC_BLACK_OUT="Black out";r.Msg.BASIC_BRTN="Brightness";r.Msg.BASIC_BUZZER_PLAY="Buzzer plays ";r.Msg.BASIC_BUZZER_SETUP="Buzzer Setup";r.Msg.BASIC_COUNTER_SETTING="On button";r.Msg.BASIC_COUNTER_SETUP="Set Counter ";r.Msg.BASIC_FOR="For";r.Msg.BASIC_FROM="From";r.Msg.BASIC_HZ="Hz";r.Msg.BASIC_IF_SWITCH="If switch ";r.Msg.BASIC_IS=" Is ";r.Msg.BASIC_LIGHT_PIN="Light Pin#";r.Msg.BASIC_LIGHT_WARNING="Brightness must be in range 0 - 255";r.Msg.BASIC_MUTE="Mute";r.Msg.BASIC_NOLCD="Turn off the light on pin# %1";r.Msg.BASIC_NOTONE="Turn off the tone on pin# %1";r.Msg.BASIC_NOTONE_TIP="Turns the tone off on the selected pin";r.Msg.BASIC_PIN_NUM="Pin#";r.Msg.BASIC_READBUTTON="Read the status of button on pin# %1";r.Msg.BASIC_READCOUNTER="Read the value of counter on button %1";r.Msg.BASIC_READKNOB="Read the value of knob on pin# %1";r.Msg.BASIC_SET="Set";r.Msg.BASIC_SETANALOGLED="Set the light on pin# %1 at brightness %2";r.Msg.BASIC_SETDIGITALLED="Turn on the light on pin# %1";r.Msg.BASIC_SETTONE="Set the tone on pin# %1 at frequency %2";r.Msg.BASIC_SET_PIN="Set Pin#";r.Msg.BASIC_TO="To";r.Msg.BASIC_TONE_TIP="Sets tone on pin to specified frequency within range 31 - 65535";r.Msg.BASIC_TONE_WARNING="Frequency must be in range 31 - 65535";r.Msg.BLUE="Blue";r.Msg.BLUETOOTH_INTERACTION_SET_CONTENT="Set the serial port baud rate to:";r.Msg.BLUETOOTH_INTERACTION_TITLE="Bluetooth Module Enter AT Mode";r.Msg.BLUETOOTH_INTERCOMMS_DATA="Data";r.Msg.BLUETOOTH_INTERCOMMS_RECEIVEMSG="Receive data";r.Msg.BLUETOOTH_INTERCOMMS_RECEIVEMSG_ISSUCCESS="Receive data successfully";r.Msg.BLUETOOTH_INTERCOMMS_RECEIVE_GET_LINE2="Get data at ";r.Msg.BLUETOOTH_INTERCOMMS_RECEIVE_GET_LINE2_2="bit data";r.Msg.BLUETOOTH_INTERCOMMS_RECEIVE_GET_LINE3="As Type";r.Msg.BLUETOOTH_INTERCOMMS_RECEIVE_GET_LINE4="";r.Msg.BLUETOOTH_INTERCOMMS_RECEIVE_LINE3="With length of ";r.Msg.BLUETOOTH_INTERCOMMS_SENDMSG="Send data ";r.Msg.BLUETOOTH_INTERCOMMS_SETUP="Bluetooth to Bluetooth communication.";r.Msg.BLUETOOTH_INTERCOMMS_SETUP1="For Bluetooth communication";r.Msg.BLUETOOTH_INTERCOMMS_SETUP2="Initialization";r.Msg.BLUETOOTH_LIST_RECEIVED="From";r.Msg.BLUETOOTH_LIST_RECEIVED1="Get value at index";r.Msg.BLUETOOTH_LIST_RECEIVED2="value of the bit.";r.Msg.BLUETOOTH_NUMBER_RECEIVED="Received number";r.Msg.BLUETOOTH_PAIRING_BIND_ADDR="Assign subordinate device address:";r.Msg.BLUETOOTH_PAIRING_MASTER="Bluetooth pairing: Host device setup";r.Msg.BLUETOOTH_PAIRING_SETTING_BAUDRATE="Set Baud Rate:";r.Msg.BLUETOOTH_PAIRING_SETTING_TIMEOUT="Set Timeout:";r.Msg.BLUETOOTH_PAIRING_SLAVE="Bluetooth pairing: Slave device configuration";r.Msg.BLUETOOTH_SETUP="When Bluetooth received";r.Msg.BLUETOOTH_SETUP_DATA_SET="Set";r.Msg.BLUETOOTH_SETUP_DO="And Do";r.Msg.BLUETOOTH_SETUP_LIST_SETTING="The length is";r.Msg.BLUETOOTH_SETUP_OPT1="String";r.Msg.BLUETOOTH_SETUP_OPT2="Number";r.Msg.BLUETOOTH_SETUP_OPT3="Array";r.Msg.BLUETOOTH_SETUP_SET="Set Baud Rate";r.Msg.BLUETOOTH_SETUP_TO="To received messages";r.Msg.BLUETOOTH_TEXT_RECEIVED="Received Text";r.Msg.BLYNK_AUTH="Auth Key : ";r.Msg.BLYNK_CONNECT="When Blynk is connected";r.Msg.BLYNK_CREATE_WITH_CONTAINER_TITLE_ADD="Data";r.Msg.BLYNK_CREATE_WITH_ITEM_TITLE="Item";r.Msg.BLYNK_DATA="Data";r.Msg.BLYNK_GET_DATANAME="Get data from";r.Msg.BLYNK_GET_DATANAME1="Obtain";r.Msg.BLYNK_GET_DATANAME2="Data";r.Msg.BLYNK_GET_INDEX="At index";r.Msg.BLYNK_GET_INDEX1="value of the bit";r.Msg.BLYNK_GET_OF="Obtain Data";r.Msg.BLYNK_GET_OF1="Obtain";r.Msg.BLYNK_GET_OF2="Data";r.Msg.BLYNK_GPS_ALTITUDE="Altitude";r.Msg.BLYNK_GPS_LATITUDE="Latitude";r.Msg.BLYNK_GPS_LONGITUDE="Longitude";r.Msg.BLYNK_GPS_SPEED="Speed";r.Msg.BLYNK_LOG="BLYNK_LOG";r.Msg.BLYNK_PW="WiFi PW: ";r.Msg.BLYNK_READ="When Blynk request data via";r.Msg.BLYNK_READ1="Data";r.Msg.BLYNK_SELECT="Select";r.Msg.BLYNK_SETUP="BLYNK SETUP";r.Msg.BLYNK_SSID="WiFi SSID: ";r.Msg.BLYNK_TIME_DO="Do";r.Msg.BLYNK_TIME_SECOND="Second";r.Msg.BLYNK_TIME_SETTING="Set timer: every ";r.Msg.BLYNK_VIRTUALWRITE="Send data to Blynk via";r.Msg.BLYNK_VIRTUALWRITE_DATA="Data:";r.Msg.BLYNK_WIFI="Connect to Network";r.Msg.BLYNK_WRITE="Get data from";r.Msg.BLYNK_WRITE1="obtain data";r.Msg.BLYNK_WRITE_VARIABLE="Store into";r.Msg.BLYNK_WRITE_VARLENGTH="Length";r.Msg.CHANGE_VALUE_TITLE="Change value:";r.Msg.CHAT="Communicate with your collaborator by entering text in this box!";r.Msg.CLEAN_UP="Clean up Blocks";r.Msg.CLOUDDATA_CREATE_WITH_CONTAINER_TITLE_ADD="Key[]";r.Msg.CLOUDDATA_CREATE_WITH_INPUT_WITH="Add";r.Msg.CLOUDDATA_CREATE_WITH_ITEM_TITLE="Value";r.Msg.CLOUDDATA_GENERATOR_DATA="Generate data";r.Msg.CLOUDDATA_PARSE_JSON="From";r.Msg.CLOUDDATA_PARSE_KEY="Parse to obtain the variable named";r.Msg.CLOUDDATA_PARSE_PRETTYPRINT_DISPLAY="Get generated data";r.Msg.CLOUDDATA_PARSE_SETUP_INIT="data parsing initialized.";r.Msg.CLOUDDATA_PARSE_SETUP_PAYLOAD="Parse content";r.Msg.CLOUDDATA_PARSE_TYPE="As";r.Msg.CO2SENSOR_GET_CO2="Get CO2 Value (ppm)";r.Msg.CO2SENSOR_GET_TVOC="Get TVOC Value";r.Msg.CO2SENSOR_SETUP="CCS811 Air Quality Sensor Setup";r.Msg.CO2SENSOR_SETUP_SCL="SCL Pin";r.Msg.CO2SENSOR_SETUP_SDA="SDA Pin:";r.Msg.COCOCLOUD_CREATE_WITH_CONTAINER_TITLE_ADD="LIST";r.Msg.COCOCLOUD_CREATE_WITH_ITEM_TITLE="Event";r.Msg.COCOCLOUD_GET="Get Data from Event ";r.Msg.COCOCLOUD_GET1="Obtain Data";r.Msg.COCOCLOUD_GETPAYLOAD="Data obtained from Event";r.Msg.COCOCLOUD_POST="Send to Event ";r.Msg.COCOCLOUD_POST_DATA="Data";r.Msg.COCOCLOUD_TIME_DAY="Day";r.Msg.COCOCLOUD_TIME_GETDATE="Get";r.Msg.COCOCLOUD_TIME_GETTIME="Get";r.Msg.COCOCLOUD_TIME_HOUR="Hour";r.Msg.COCOCLOUD_TIME_MINUTE="Minute";r.Msg.COCOCLOUD_TIME_MONTH="Month";r.Msg.COCOCLOUD_TIME_SECOND="Second";r.Msg.COCOCLOUD_TIME_SETUP="The World Time";r.Msg.COCOCLOUD_TIME_YEAR="Year";r.Msg.COCOCLOUD_TITLE="Web Service CocoCloud";r.Msg.COLLAPSE_ALL="Collapse Blocks";r.Msg.COLLAPSE_BLOCK="Collapse Block";r.Msg.COLOR="Colour";r.Msg.COLORANALYZER_SETUP="Colour Analyzer Setup";r.Msg.COLOUR_BLEND_COLOUR1="colour 1";r.Msg.COLOUR_BLEND_COLOUR2="colour 2";r.Msg.COLOUR_BLEND_HELPURL="http://meyerweb.com/eric/tools/color-blend/";r.Msg.COLOUR_BLEND_RATIO="Ratio";r.Msg.COLOUR_BLEND_TITLE="Blend";r.Msg.COLOUR_BLEND_TOOLTIP="Blends two colours together with a given ratio (0.0 - 1.0).";r.Msg.COLOUR_PICKER_HELPURL="https://en.wikipedia.org/wiki/Color";r.Msg.COLOUR_PICKER_TOOLTIP="Choose a colour from the palette.";r.Msg.COLOUR_RANDOM_HELPURL="http://randomcolour.com";r.Msg.COLOUR_RANDOM_TITLE="Random colour";r.Msg.COLOUR_RANDOM_TOOLTIP="Randomly select a colour.";r.Msg.COLOUR_RGB_BLUE="Blue";r.Msg.COLOUR_RGB_GREEN="Green";r.Msg.COLOUR_RGB_HELPURL="http://www.december.com/html/spec/colorper.html";r.Msg.COLOUR_RGB_RED="Red";r.Msg.COLOUR_RGB_TITLE="Colour with";r.Msg.COLOUR_RGB_TOOLTIP="Create a colour by specifying quantities of red, green, and blue. All values must be between 0 and 100.";r.Msg.CONTROLS_FLOW_STATEMENTS_HELPURL="https://github.com/google/blockly/wiki/Loops#loop-termination-blocks";r.Msg.CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK="break the loop";r.Msg.CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE="Continue with next iteration of loop";r.Msg.CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK="Break out of the containing loop.";r.Msg.CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE="Skip the remaining part of this loop and continue with the next iteration.";r.Msg.CONTROLS_FLOW_STATEMENTS_WARNING="Warning: This block may only be used within a loop.";r.Msg.CONTROLS_FOREACH_HELPURL="https://github.com/google/blockly/wiki/Loops#for-each";r.Msg.CONTROLS_FOREACH_TITLE="For each item %1 in list %2";r.Msg.CONTROLS_FOREACH_TOOLTIP="For each item in a list, set the variable '%1' to the item, and then do some statements.";r.Msg.CONTROLS_FOR_HELPURL="https://github.com/google/blockly/wiki/Loops#count-with";r.Msg.CONTROLS_FOR_TITLE="Count with %1 from %2 to %3 by %4";r.Msg.CONTROLS_FOR_TOOLTIP="Retrieve the value of variable '%1' from the starting number to the ending number, and execute the specified block at the specified time interval.";r.Msg.CONTROLS_IF_ELSEIF_TOOLTIP="Add a condition to the if block.";r.Msg.CONTROLS_IF_ELSE_TOOLTIP="Add a final 'case' to the 'if' block that covers all scenarios.";r.Msg.CONTROLS_IF_HELPURL="https://github.com/google/blockly/wiki/IfElse";r.Msg.CONTROLS_IF_IF_TOOLTIP="Add, remove, or rearrange sections to reconfigure the 'if' block.";r.Msg.CONTROLS_IF_MSG_ELSE="Else";r.Msg.CONTROLS_IF_MSG_ELSEIF="Else if";r.Msg.CONTROLS_IF_MSG_IF="If";r.Msg.CONTROLS_IF_TOOLTIP_1="If a value is true, then do some statements.";r.Msg.CONTROLS_IF_TOOLTIP_2="If a value is true, then do the first block of statements. Otherwise, do the second block of statements.";r.Msg.CONTROLS_IF_TOOLTIP_3="If the first value is true, then do the first block of statements. Otherwise, if the second value is true, do the second block of statements.";r.Msg.CONTROLS_IF_TOOLTIP_4="If the first value is true, then do the first block of statements. Otherwise, if the second value is true, do the second block of statements. If none of the values are true, do the last block of statements.";r.Msg.CONTROLS_REPEAT_HELPURL="https://en.wikipedia.org/wiki/For_loop";r.Msg.CONTROLS_REPEAT_INPUT_DO="Do";r.Msg.CONTROLS_REPEAT_TITLE="Repeat %1 times";r.Msg.CONTROLS_REPEAT_TOOLTIP="Do some statements several times.";r.Msg.CONTROLS_WHILEUNTIL_HELPURL="https://github.com/google/blockly/wiki/Loops#repeat";r.Msg.CONTROLS_WHILEUNTIL_OPERATOR_UNTIL="Repeat until";r.Msg.CONTROLS_WHILEUNTIL_OPERATOR_WHILE="Repeat while";r.Msg.CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL="While a value is false, then do some statements.";r.Msg.CONTROLS_WHILEUNTIL_TOOLTIP_WHILE="While a value is true, then do some statements.";r.Msg.DELETE_ALL_BLOCKS="Delete all %1 blocks?";r.Msg.DELETE_BLOCK="Delete Block";r.Msg.DELETE_X_BLOCKS="Delete %1 Blocks";r.Msg.DISABLE_BLOCK="Disable Block";r.Msg.DUPLICATE_BLOCK="Duplicate";r.Msg.ENABLE_BLOCK="Enable Block";r.Msg.ENCODER_GETROTATIONSPEED="Get Rotation Speed";r.Msg.ENCODER_SETUP="Encoder Setup";r.Msg.ENCODER_SETUP_1="On Breakout Pin";r.Msg.ENV_AS="As";r.Msg.ENV_BLUE_PIN="B from PIN ";r.Msg.ENV_BUZZER_ALARM="Buzzer Alarm";r.Msg.ENV_CRITICAL_VAL="When the critical value of";r.Msg.ENV_DO="Do";r.Msg.ENV_GREEN_PIN="G from PIN ";r.Msg.ENV_REACHES="Reaches";r.Msg.ENV_RED_PIN="R from PIN ";r.Msg.ENV_SENSOR_HUMID="Read value of Humidity from ";r.Msg.ENV_SENSOR_HUMIDITY="Humidity";r.Msg.ENV_SENSOR_LIGHT="Read value of Light from ";r.Msg.ENV_SENSOR_MIC="Read value of Sound from ";r.Msg.ENV_SENSOR_READ="Read value of";r.Msg.ENV_SENSOR_READTEMP="Read value of temperature from ";r.Msg.ENV_SENSOR_SET_RGB="Set RGB Light";r.Msg.ENV_SENSOR_SOUND="Sound";r.Msg.ENV_SENSOR_TEMPUNIT="Set unit as";r.Msg.ENV_SENSOR_UNITC="Celsius";r.Msg.ENV_SENSOR_UNITF="Fahrenheit";r.Msg.ENV_SET="Set";r.Msg.ENV_SETRGB_B="B from PIN ";r.Msg.ENV_SETRGB_G="G from PIN ";r.Msg.ENV_SETRGB_R="R from PIN ";r.Msg.ENV_SETUP="Environmental Sensors Setup";r.Msg.ENV_SET_TEMP="Set temperature as ";r.Msg.ENV_SET_TEMP_UNIT="Set unit as ";r.Msg.EXPAND_ALL="Expand Blocks";r.Msg.EXPAND_BLOCK="Expand Block";r.Msg.EXPORTPNG="Export as PNG";r.Msg.EXPORTXML="Export as XML";r.Msg.EXTERNAL_INPUTS="External Inputs";r.Msg.Friday="Friday";r.Msg.GPS_LATITUDE="Get Latitude";r.Msg.GPS_LONGITUDE="Get Longitude";r.Msg.GPS_SETUP="GPS Setup";r.Msg.GREEN="Green";r.Msg.HELP="Help";r.Msg.HID_KEYBOARD_PRESS="Set Keyboard: Press";r.Msg.HID_KEYBOARD_RELEASE="Set Keyboard: Release";r.Msg.HID_KEYBOARD_RELEASEALL="Set Keyboard: Release All";r.Msg.HID_MOUSE_CLICK="Set Mouse: Click";r.Msg.HID_MOUSE_CLICK_LEFT="Left";r.Msg.HID_MOUSE_CLICK_RIGHT="Right";r.Msg.HID_MOUSE_MOVE="Set Mouse: Move";r.Msg.HID_MOUSE_MOVE_DISTANCE="px";r.Msg.HID_MOUSE_MOVE_FOR="for";r.Msg.HID_MOUSE_PRESS="Set Mouse: Press";r.Msg.HID_MOUSE_RELEASE="Set Mouse: Release";r.Msg.HID_SETUP="HID Setup";r.Msg.INFRAREDRAY_RECVAL="Signal Received";r.Msg.INFRAREDRAY_SETUP="IR Receiver Setup";r.Msg.INLINE_INPUTS="Inline Inputs";r.Msg.ISCOLOR="Is color";r.Msg.JSONOBJECT_CREATE="JSON Object";r.Msg.JSONTOOL_ARRAY_SIZE="Array size";r.Msg.JSONTOOL_GENERATOR="JSON genrator";r.Msg.JSONTOOL_GENERATOR_ARRAY_VALUE="JSON Array add: value";r.Msg.JSONTOOL_GENERATOR_JSONOBJECT="Object";r.Msg.JSONTOOL_GENERATOR_KEY="JSON Object add: Key ";r.Msg.JSONTOOL_GENERATOR_MAIN_JSONNAME="JSONVar";r.Msg.JSONTOOL_GENERATOR_MAIN_TITLE="Generate a JSON";r.Msg.JSONTOOL_GENERATOR_MAIN_TITLE_NAME="Named";r.Msg.JSONTOOL_GENERATOR_NESTED_TITLE="Nested a JSON";r.Msg.JSONTOOL_GENERATOR_NESTED_TITLE_NAME="named";r.Msg.JSONTOOL_GENERATOR_SETUP="JSON genrator Setup";r.Msg.JSONTOOL_GENERATOR_VALUE="Value";r.Msg.JSONTOOL_OBJECT_SIZE="Object size";r.Msg.JSONTOOL_PARSE_ARRAY="(JSON Array)";r.Msg.JSONTOOL_PARSE_BY="Get item of ";r.Msg.JSONTOOL_PARSE_EACH="From JSON Object ";r.Msg.JSONTOOL_PARSE_INDEX="Index of";r.Msg.JSONTOOL_PARSE_ISSUCCESS="Did the parsing succeed?";r.Msg.JSONTOOL_PARSE_ISSUCCESS_NAME="Is JSON Object";r.Msg.JSONTOOL_PARSE_JSONOBJECT="Object";r.Msg.JSONTOOL_PARSE_KEY="(JSON Object) Key";r.Msg.JSONTOOL_PARSE_KEYVALUE="From JSON Object %1 get item of %2";r.Msg.JSONTOOL_PARSE_NEST="Nested with";r.Msg.JSONTOOL_PARSE_PRETTYPRINT="Print JSON ";r.Msg.JSONTOOL_PARSE_PRETTYPRINT_DISPLAY="Pretty data";r.Msg.JSONTOOL_PARSE_PRETTYPRINT_WAY="In pretty way";r.Msg.JSONTOOL_PARSE_RESPONSE=" Data";r.Msg.JSONTOOL_PARSE_SETUP="JSON Parser Setup";r.Msg.JSONTOOL_PARSE_TOVAR="Get item to";r.Msg.JSONTOOL_PARSE_VARTYPE="";r.Msg.LED_BACKCOLOR="Background";r.Msg.LED_BRIGHTNESS_WARNING="Brightness must be in range 0 - 255";r.Msg.LED_BRTN="Brightness";r.Msg.LED_CLEAR="Clear Screen";r.Msg.LED_COLOR="Color";r.Msg.LED_DRAW="Draw ";r.Msg.LED_FONT="Font";r.Msg.LCD_FONT="Font: ";r.Msg.SUPER_LARGE="Super Large";r.Msg.LARGE="Large";r.Msg.MIDDLE="Medium";r.Msg.SMALL="Small";r.Msg.LED_FULL="Full";r.Msg.LED_HEIGHT="Height";r.Msg.LED_LINE="Line";r.Msg.LED_LINE_END="To";r.Msg.LED_LINE_START="Start From";r.Msg.LED_MULTICOM="H";r.Msg.LED_PANELHEIGHT="Number of Matrix in Height";r.Msg.LED_PANELWIDTH="Number of Matrix in Width";r.Msg.LED_PATTERN="Pattern";r.Msg.LED_PIN="Pin";r.Msg.LED_PIXEL="Pixel";r.Msg.LED_POSITION="Position";r.Msg.LED_RECTANGLE="Rectangle";r.Msg.LED_SCROLL="Scrolling";r.Msg.LED_SCROLL_NO="No";r.Msg.LED_SCROLL_SPEED="Speed";r.Msg.LED_SCROLL_YES="Yes";r.Msg.LED_SETUP="LED Matrix Setup";r.Msg.LED_SET_BRIGHTNESS="Set brightness to";r.Msg.LED_SET_ROTATION="Set rotation to";r.Msg.LED_SET_ROTATION_DEGREE="Degree";r.Msg.LED_SHOW_ALL="Show Above";r.Msg.LED_SINGLE_SETUP="Single LED Matrix Setup";r.Msg.LED_SIZE="Size";r.Msg.LED_STRIP_LOCATION="Location";r.Msg.LED_STRIP_PIXEL="Draw Pixel";r.Msg.LED_STROKED="Stroked";r.Msg.LED_TEXT="Text";r.Msg.LED_WIDTH=" Width";r.Msg.LED_WORD="Word";r.Msg.LIGHT_BRIGHTNESS="at brightness";r.Msg.LIGHT_PIN="Set light on";r.Msg.LIGHT_TURNOFF="Turn off light on";r.Msg.LISTS_CREATE_EMPTY_HELPURL="https://github.com/google/blockly/wiki/Lists#create-empty-list";r.Msg.LISTS_CREATE_EMPTY_TITLE="Create empty list";r.Msg.LISTS_CREATE_EMPTY_TOOLTIP="Returns a list, of length 0, containing no data records";r.Msg.LISTS_CREATE_LIST_WITH="Create list with";r.Msg.LISTS_CREATE_WITH_CONTAINER_TITLE_ADD="List";r.Msg.LISTS_CREATE_WITH_CONTAINER_TOOLTIP="Add, remove, or reorder sections to reconfigure this list block.";r.Msg.LISTS_CREATE_WITH_HELPURL="https://github.com/google/blockly/wiki/Lists#create-list-with";r.Msg.LISTS_CREATE_WITH_ITEM_TOOLTIP="Add an item to the list.";r.Msg.LISTS_CREATE_WITH_TOOLTIP="Create a list with any number of items.";r.Msg.LISTS_GETINDEX="From %1 get item at %2";r.Msg.LISTS_GET_INDEX_FIRST="First";r.Msg.LISTS_GET_INDEX_FROM_END="# from end";r.Msg.LISTS_GET_INDEX_FROM_START="#";r.Msg.LISTS_GET_INDEX_GET="Get";r.Msg.LISTS_GET_INDEX_GET_REMOVE="Get and remove";r.Msg.LISTS_GET_INDEX_LAST="Last";r.Msg.LISTS_GET_INDEX_RANDOM="Random";r.Msg.LISTS_GET_INDEX_REMOVE="Remove";r.Msg.LISTS_GET_INDEX_TAIL="blank";r.Msg.LISTS_GET_INDEX_TOOLTIP_GET_FIRST="Returns the first item in a list.";r.Msg.LISTS_GET_INDEX_TOOLTIP_GET_FROM_END="Returns the item at the specified position in a list. #1 is the last item.";r.Msg.LISTS_GET_INDEX_TOOLTIP_GET_FROM_START="Returns the item at the specified position in a list. #1 is the first item.";r.Msg.LISTS_GET_INDEX_TOOLTIP_GET_LAST="Returns the last item in a list.";r.Msg.LISTS_GET_INDEX_TOOLTIP_GET_RANDOM="Returns a random item in a list.";r.Msg.LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST="Removes and returns the first item in a list.";r.Msg.LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM_END="Removes and returns the item at the specified position in a list. #1 is the last item.";r.Msg.LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM_START="Removes and returns the item at the specified position in a list. #1 is the first item.";r.Msg.LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST="Removes and returns the last item in a list.";r.Msg.LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM="Removes and returns a random item in a list.";r.Msg.LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST="Removes the first item in a list.";r.Msg.LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM_END="Removes the item at the specified position in a list. #1 is the last item.";r.Msg.LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM_START="Removes the item at the specified position in a list. #1 is the first item.";r.Msg.LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST="Removes the last item in a list.";r.Msg.LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM="Removes a random item in a list.";r.Msg.LISTS_GET_SUBLIST_END_FROM_END="To # from end";r.Msg.LISTS_GET_SUBLIST_END_FROM_START="To #";r.Msg.LISTS_GET_SUBLIST_END_LAST="To last";r.Msg.LISTS_GET_SUBLIST_HELPURL="https://github.com/google/blockly/wiki/Lists#getting-a-sublist";r.Msg.LISTS_GET_SUBLIST_START_FIRST="Get sub-list from first";r.Msg.LISTS_GET_SUBLIST_START_FROM_END="Get sub-list from # from end";r.Msg.LISTS_GET_SUBLIST_START_FROM_START="Get sub-list from #";r.Msg.LISTS_GET_SUBLIST_TAIL="blank";r.Msg.LISTS_GET_SUBLIST_TOOLTIP="Creates a copy of the specified portion of a list.";r.Msg.LISTS_INDEX_OF_FIRST="Find first occurrence of item";r.Msg.LISTS_INDEX_OF_HELPURL="https://github.com/google/blockly/wiki/Lists#getting-items-from-a-list";r.Msg.LISTS_INDEX_OF_LAST="Find last occurrence of item";r.Msg.LISTS_INDEX_OF_TOOLTIP="Returns the index of the first/last occurrence of the item in the list. Returns 0 if item is not found.";r.Msg.LISTS_INLIST="In list";r.Msg.LISTS_INT_CREATE_WITH_INPUT_WITH="Create Number List with";r.Msg.LISTS_ISEMPTY_HELPURL="https://github.com/google/blockly/wiki/Lists#is-empty";r.Msg.LISTS_ISEMPTY_TITLE="%1 is empty";r.Msg.LISTS_ISEMPTY_TOOLTIP="Returns true if the list is empty.";r.Msg.LISTS_LENGTH_HELPURL="https://github.com/google/blockly/wiki/Lists#length-of";r.Msg.LISTS_LENGTH_TITLE="Length of %1";r.Msg.LISTS_LENGTH_TOOLTIP="Returns the length of a list.";r.Msg.LISTS_REPEAT_HELPURL="https://github.com/google/blockly/wiki/Lists#create-list-with";r.Msg.LISTS_REPEAT_TITLE="Create list with item %1 repeated %2 times";r.Msg.LISTS_REPEAT_TOOLTIP="Creates a list consisting of the given value repeated the specified number of times.";r.Msg.LISTS_SETINDEX="Set %1 at index %2 to %3";r.Msg.LISTS_SET_INDEX_HELPURL="https://github.com/google/blockly/wiki/Lists#in-list--set";r.Msg.LISTS_SET_INDEX_INPUT_TO="As";r.Msg.LISTS_SET_INDEX_INSERT="Insert at";r.Msg.LISTS_SET_INDEX_SET="Set";r.Msg.LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST="Inserts the item at the start of a list.";r.Msg.LISTS_SET_INDEX_TOOLTIP_INSERT_FROM_END="Inserts the item at the specified position in a list. #1 is the last item.";r.Msg.LISTS_SET_INDEX_TOOLTIP_INSERT_FROM_START="Inserts the item at the specified position in a list. #1 is the first item.";r.Msg.LISTS_SET_INDEX_TOOLTIP_INSERT_LAST="Append the item to the end of a list.";r.Msg.LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM="Inserts the item randomly in a list.";r.Msg.LISTS_SET_INDEX_TOOLTIP_SET_FIRST="Sets the first item in a list.";r.Msg.LISTS_SET_INDEX_TOOLTIP_SET_FROM_END="Sets the item at the specified position in a list. #1 is the last item.";r.Msg.LISTS_SET_INDEX_TOOLTIP_SET_FROM_START="Sets the item at the specified position in a list. #1 is the first item.";r.Msg.LISTS_SET_INDEX_TOOLTIP_SET_LAST="Sets the last item in a list.";r.Msg.LISTS_SET_INDEX_TOOLTIP_SET_RANDOM="Sets a random item in a list.";r.Msg.LISTS_SORT_HELPURL="https://github.com/google/blockly/wiki/Lists#sorting-a-list";r.Msg.LISTS_SORT_ORDER_ASCENDING="Ascending";r.Msg.LISTS_SORT_ORDER_DESCENDING="Descending";r.Msg.LISTS_SORT_TITLE="Sort %1 %2 %3";r.Msg.LISTS_SORT_TOOLTIP="Sort a copy of a list.";r.Msg.LISTS_SORT_TYPE_IGNORECASE="Sort alphabetically, disregarding case.";r.Msg.LISTS_SORT_TYPE_NUMERIC="Sort by numbers";r.Msg.LISTS_SORT_TYPE_TEXT="sort alphabetically";r.Msg.LISTS_SPLIT_HELPURL="https://github.com/google/blockly/wiki/Lists#splitting-strings-and-joining-lists";r.Msg.LISTS_SPLIT_LIST_FROM_TEXT="Make list from text";r.Msg.LISTS_SPLIT_TEXT_FROM_LIST="Make text from list";r.Msg.LISTS_SPLIT_TOOLTIP_JOIN="Join a list of texts into one text, separated by a delimiter.";r.Msg.LISTS_SPLIT_TOOLTIP_SPLIT="Split text into a list of texts, breaking at each delimiter.";r.Msg.LISTS_SPLIT_WITH_DELIMITER="With delimiter";r.Msg.LISTS_STRING_CREATE_WITH_INPUT_WITH="Create String List with";r.Msg.LISTS_THE_LENGTH_OF="The length of %1";r.Msg.LOGIC_BOOLEAN_FALSE="False";r.Msg.LOGIC_BOOLEAN_HELPURL="https://github.com/google/blockly/wiki/Logic#values";r.Msg.LOGIC_BOOLEAN_TOOLTIP="Returns either true or false.";r.Msg.LOGIC_BOOLEAN_TRUE="True";r.Msg.LOGIC_CASE="Case";r.Msg.LOGIC_COMPARE_HELPURL="https://en.wikipedia.org/wiki/Inequality_(mathematics)";r.Msg.LOGIC_COMPARE_TOOLTIP_EQ="Return true if both inputs equal each other.";r.Msg.LOGIC_COMPARE_TOOLTIP_GT="Return true if the first input is greater than the second input.";r.Msg.LOGIC_COMPARE_TOOLTIP_GTE="Return true if the first input is greater than or equal to the second input.";r.Msg.LOGIC_COMPARE_TOOLTIP_LT="Return true if the first input is smaller than the second input.";r.Msg.LOGIC_COMPARE_TOOLTIP_LTE="Return true if the first input is smaller than or equal to the second input.";r.Msg.LOGIC_COMPARE_TOOLTIP_NEQ="Return true if both inputs are not equal to each other.";r.Msg.LOGIC_DEFAULT="Default";r.Msg.LOGIC_DO="Do";r.Msg.LOGIC_NEGATE_HELPURL="https://github.com/google/blockly/wiki/Logic#not";r.Msg.LOGIC_NEGATE_TITLE="Not %1";r.Msg.LOGIC_NEGATE_TOOLTIP="Returns true if the input is false. Returns false if the input is true.";r.Msg.LOGIC_NULL="Null";r.Msg.LOGIC_NULL_HELPURL="https://en.wikipedia.org/wiki/Nullable_type";r.Msg.LOGIC_NULL_TOOLTIP="Returns null.";r.Msg.LOGIC_OPERATION_AND="And";r.Msg.LOGIC_OPERATION_HELPURL="https://github.com/google/blockly/wiki/Logic#logical-operations";r.Msg.LOGIC_OPERATION_OR="Or";r.Msg.LOGIC_OPERATION_TOOLTIP_AND="Return true if both inputs are true.";r.Msg.LOGIC_OPERATION_TOOLTIP_OR="Return true if at least one of the inputs is true.";r.Msg.LOGIC_SWITCH="Switch";r.Msg.LOGIC_TERNARY_CONDITION="Test";r.Msg.LOGIC_TERNARY_HELPURL="https://en.wikipedia.org/wiki/%3F:";r.Msg.LOGIC_TERNARY_IF_FALSE="If false";r.Msg.LOGIC_TERNARY_IF_TRUE="If true";r.Msg.LOGIC_TERNARY_TOOLTIP="Check the condition in 'test'. If the condition is true, returns the 'if true' value; otherwise returns the 'if false' value.";r.Msg.MAINEASYMODE_TRANSFER_RECEIVE="Get Data from AI Module";r.Msg.MAINEASYMODE_TRANSFER_RECEIVE_GET="From ";r.Msg.MAINEASYMODE_TRANSFER_RECEIVE_GET_LINE2="Get data at ";r.Msg.MAINEASYMODE_TRANSFER_RECEIVE_GET_LINE3="As Type";r.Msg.MAINEASYMODE_TRANSFER_RECEIVE_GET_LINE4="";r.Msg.MAINEASYMODE_TRANSFER_RECEIVE_LINE2="And store it to ";r.Msg.MAINEASYMODE_TRANSFER_RECEIVE_LINE3="With length of ";r.Msg.MAINEASYMODE_TRANSFER_SEND="Create List";r.Msg.MAINEASYMODE_TRANSFER_SEND_LINE2="Send data to AI Module";r.Msg.MAINEASYMODE_TRANSFER_SEND_VALUE="Data";r.Msg.MAINWIFI_RECEIVEMSG="Receive data to";r.Msg.MAINWIFI_RECEIVEMSG_ISSUCCESS="Receive data successfully";r.Msg.MAINWIFI_RECEIVEMSG_LENGTH=", Data length ";r.Msg.MAINWIFI_SENDMSG="Send data ";r.Msg.MAINWIFI_SENDMSG_LENGTH=", data length ";r.Msg.MAINWIFI_SETUP="WiFi Data Transfer Setup";r.Msg.MATH_ADDITION_SYMBOL="+";r.Msg.MATH_ARITHMETIC_HELPURL="https://en.wikipedia.org/wiki/Arithmetic";r.Msg.MATH_ARITHMETIC_TOOLTIP_ADD="Return the sum of the two numbers.";r.Msg.MATH_ARITHMETIC_TOOLTIP_DIVIDE="Return the quotient of the two numbers.";r.Msg.MATH_ARITHMETIC_TOOLTIP_MINUS="Return the difference of the two numbers.";r.Msg.MATH_ARITHMETIC_TOOLTIP_MULTIPLY="Return the product of the two numbers.";r.Msg.MATH_ARITHMETIC_TOOLTIP_POWER="Return the first number raised to the power of the second number.";r.Msg.MATH_CHANGE_HELPURL="https://en.wikipedia.org/wiki/Programming_idiom#Incrementing_a_counter";r.Msg.MATH_CHANGE_TITLE="Change %1 by %2";r.Msg.MATH_CHANGE_TOOLTIP="Add a number to variable '%1'.";r.Msg.MATH_CONSTANT_HELPURL="https://en.wikipedia.org/wiki/Mathematical_constant";r.Msg.MATH_CONSTANT_TOOLTIP="Return one of the common constants: π (3.141…), e (2.718…), φ (1.618…), sqrt(2) (1.414…), sqrt(½) (0.707…), or ∞ (infinity).";r.Msg.MATH_CONSTRAIN_HELPURL="https://en.wikipedia.org/wiki/Clamping_%28graphics%29";r.Msg.MATH_CONSTRAIN_TITLE="Constrain %1 low %2 high %3";r.Msg.MATH_CONSTRAIN_TOOLTIP="Restrict the number to be between two specified values.";r.Msg.MATH_DIVISION_SYMBOL="÷";r.Msg.MATH_IS_DIVISIBLE_BY="Is divisible by";r.Msg.MATH_IS_EVEN="Is even";r.Msg.MATH_IS_NEGATIVE="Is negative";r.Msg.MATH_IS_ODD="Is odd";r.Msg.MATH_IS_POSITIVE="Is positive";r.Msg.MATH_IS_PRIME="Is prime";r.Msg.MATH_IS_TOOLTIP="Check if a number is an even, odd, prime, whole, positive, negative, or if it is divisible by certain number. Returns true or false.";r.Msg.MATH_IS_WHOLE="Is whole";r.Msg.MATH_MODULO_HELPURL="https://en.wikipedia.org/wiki/Modulo_operation";r.Msg.MATH_MODULO_TITLE="Remainder of %1 ÷ %2";r.Msg.MATH_MODULO_TOOLTIP="Return the remainder from dividing the two numbers.";r.Msg.MATH_MULTIPLICATION_SYMBOL="×";r.Msg.MATH_NUMBER_HELPURL="https://en.wikipedia.org/wiki/Number";r.Msg.MATH_NUMBER_TOOLTIP="A number.";r.Msg.MATH_ONLIST_HELPURL="";r.Msg.MATH_ONLIST_OPERATOR_AVERAGE="Average of list";r.Msg.MATH_ONLIST_OPERATOR_MAX="Max of list";r.Msg.MATH_ONLIST_OPERATOR_MEDIAN="Median of list";r.Msg.MATH_ONLIST_OPERATOR_MIN="Min of list";r.Msg.MATH_ONLIST_OPERATOR_MODE="Modes of list";r.Msg.MATH_ONLIST_OPERATOR_RANDOM="Random item of list";r.Msg.MATH_ONLIST_OPERATOR_STD_DEV="Standard deviation of list";r.Msg.MATH_ONLIST_OPERATOR_SUM="Sum of list";r.Msg.MATH_ONLIST_TOOLTIP_AVERAGE="Return the average (arithmetic mean) of the numeric values in the list.";r.Msg.MATH_ONLIST_TOOLTIP_MAX="Return the largest number in the list.";r.Msg.MATH_ONLIST_TOOLTIP_MEDIAN="Return the median number in the list.";r.Msg.MATH_ONLIST_TOOLTIP_MIN="Return the smallest number in the list.";r.Msg.MATH_ONLIST_TOOLTIP_MODE="Return a list of the most common item(s) in the list.";r.Msg.MATH_ONLIST_TOOLTIP_RANDOM="Return a random element from the list.";r.Msg.MATH_ONLIST_TOOLTIP_STD_DEV="Return the standard deviation of the list.";r.Msg.MATH_ONLIST_TOOLTIP_SUM="Return the sum of all the numbers in the list.";r.Msg.MATH_POWER_SYMBOL="^";r.Msg.MATH_RANDOM_FLOAT_HELPURL="https://en.wikipedia.org/wiki/Random_number_generation";r.Msg.MATH_RANDOM_FLOAT_TITLE_RANDOM="Random fraction";r.Msg.MATH_RANDOM_FLOAT_TOOLTIP="Return a random fraction between 0.0 (inclusive) and 1.0 (exclusive).";r.Msg.MATH_RANDOM_INT_HELPURL="https://en.wikipedia.org/wiki/Random_number_generation";r.Msg.MATH_RANDOM_INT_TITLE="random integer from %1 to %2";r.Msg.MATH_RANDOM_INT_TOOLTIP="Return a random integer between the two specified limits, inclusive.";r.Msg.MATH_ROUND_HELPURL="https://en.wikipedia.org/wiki/Rounding";r.Msg.MATH_ROUND_OPERATOR_ROUND="Round";r.Msg.MATH_ROUND_OPERATOR_ROUNDDOWN="Round down";r.Msg.MATH_ROUND_OPERATOR_ROUNDUP="Round up";r.Msg.MATH_ROUND_TOOLTIP="Round a number up or down.";r.Msg.MATH_SINGLE_HELPURL="https://en.wikipedia.org/wiki/Square_root";r.Msg.MATH_SINGLE_OP_ABSOLUTE="Absolute";r.Msg.MATH_SINGLE_OP_ROOT="Square root";r.Msg.MATH_SINGLE_TOOLTIP_ABS="Return the absolute value of a number.";r.Msg.MATH_SINGLE_TOOLTIP_EXP="Return e to the power of a number.";r.Msg.MATH_SINGLE_TOOLTIP_LN="Return the natural logarithm of a number.";r.Msg.MATH_SINGLE_TOOLTIP_LOG10="Return the base 10 logarithm of a number.";r.Msg.MATH_SINGLE_TOOLTIP_NEG="Return the negation of a number.";r.Msg.MATH_SINGLE_TOOLTIP_POW10="Return 10 to the power of a number.";r.Msg.MATH_SINGLE_TOOLTIP_ROOT="Return the square root of a number.";r.Msg.MATH_SUBTRACTION_SYMBOL="-";r.Msg.MATH_TRIG_ACOS="Acos";r.Msg.MATH_TRIG_ASIN="Asin";r.Msg.MATH_TRIG_ATAN="Atan";r.Msg.MATH_TRIG_COS="Cos";r.Msg.MATH_TRIG_HELPURL="https://en.wikipedia.org/wiki/Trigonometric_functions";r.Msg.MATH_TRIG_SIN="Sin";r.Msg.MATH_TRIG_TAN="Tan";r.Msg.MATH_TRIG_TOOLTIP_ACOS="Return the arccosine of a number.";r.Msg.MATH_TRIG_TOOLTIP_ASIN="Return the arcsine of a number.";r.Msg.MATH_TRIG_TOOLTIP_ATAN="Return the arctangent of a number.";r.Msg.MATH_TRIG_TOOLTIP_COS="Return the cosine of a degree (not radian).";r.Msg.MATH_TRIG_TOOLTIP_SIN="Return the sine of a degree (not radian).";r.Msg.MATH_TRIG_TOOLTIP_TAN="Return the tangent of a degree (not radian).";r.Msg.MATH_DIVISION_CONSULT_TITLE="The integer part of the quotient %1 ÷ %2";r.Msg.MATH_DIVISION_CONSULT_TOOLTIP="Returns the integer part of the quotient of two numbers";r.Msg.MATH_KEEP_DECIMAL_HELPURL="";r.Msg.MATH_KEEP_DECIMAL_TOOLTIP="Returns the result of the specified value keeping the decimal point";r.Msg.MATH_KEEP_DECIMAL_MESSAGE0="%1 keep %2 decimal places";r.Msg.labplus_mapping_MESSAGE0="Map %1 from %2 , %3 to %4 , %5";r.Msg.labplus_mapping_TOOLTIP="Map 10 of 0~100 to 0~200 and return the mapped value";r.Msg.labplus_mapping_HELPURL="";r.Msg.ME="Me";r.Msg.MOTION_GETACC="Get Acceleration Value of";r.Msg.MOTION_GETACC1="directional acceleration";r.Msg.MOTION_GETRAWDATA="Get rawdata";r.Msg.MOTION_GETYPR="Get Rotation Value of";r.Msg.MOTION_GETYPR1="rotation angle";r.Msg.MOTION_ONDIRECTION="On Tilt Direction";r.Msg.MOTION_ONDIRECTION1="deflection";r.Msg.MOTION_ONDIRECTION_BACK="Back";r.Msg.MOTION_ONDIRECTION_CLOCKWISE="Clockwise";r.Msg.MOTION_ONDIRECTION_COUNTERCLOCKWISE="Counter-clockwise";r.Msg.MOTION_ONDIRECTION_FRONT="Front";r.Msg.MOTION_ONDIRECTION_LEFT="Left";r.Msg.MOTION_ONDIRECTION_RIGHT="Right";r.Msg.MOTION_ONSHAKE="On Shake";r.Msg.MOTION_SETUP="Motion Setup";r.Msg.MOTION_TRENDENCY="Get motion trendency";r.Msg.MOTOR_MOVE_DIRECTION1="Clockwise";r.Msg.MOTOR_MOVE_DIRECTION2="Counter-clockwise";r.Msg.MOTOR_MOVE_MOTOR="Set motor";r.Msg.MOTOR_MOVE_MSG="And";r.Msg.MOTOR_SETUP="Motor Driver Setup";r.Msg.MOTOR_SPEED="Speed";r.Msg.MOTOR_STOP="Set Motors Stop";r.Msg.MUSIC_BEAT="Beat";r.Msg.MUSIC_DURATION="For";r.Msg.MUSIC_INSTRUMENT="Set instrument:";r.Msg.MUSIC_INSTRUMENT_ACCORION="Accordion";r.Msg.MUSIC_INSTRUMENT_BASS="Bass";r.Msg.MUSIC_INSTRUMENT_CELLO="Cello";r.Msg.MUSIC_INSTRUMENT_DRAWBARORGAN="Drawbar Organ";r.Msg.MUSIC_INSTRUMENT_DRUM="Drum";r.Msg.MUSIC_INSTRUMENT_EGUITAR="Electric Guitar";r.Msg.MUSIC_INSTRUMENT_EPIANO="Electric Piano";r.Msg.MUSIC_INSTRUMENT_FLUTE="Flute";r.Msg.MUSIC_INSTRUMENT_GPIANO="Grand Piano";r.Msg.MUSIC_INSTRUMENT_GUITAR="Guitar";r.Msg.MUSIC_INSTRUMENT_MUSICBOX="Music Box";r.Msg.MUSIC_INSTRUMENT_PICCOLO="Piccolo";r.Msg.MUSIC_INSTRUMENT_SAX="Sax";r.Msg.MUSIC_INSTRUMENT_SITAR="Sitar";r.Msg.MUSIC_INSTRUMENT_TRUMPET="Trumpet";r.Msg.MUSIC_INSTRUMENT_VIOLA="Viola";r.Msg.MUSIC_INSTRUMENT_VIOLIN="Violin";r.Msg.MUSIC_INSTRUMENT_WHISTLE="Whistle";r.Msg.MUSIC_INSTRUMENT_WOODBLOCK="Woodblock";r.Msg.MUSIC_INSTRUMENT_XYLOPHONE="Xylophone";r.Msg.MUSIC_MP3_CURRENTVOLUME="Get current volume";r.Msg.MUSIC_MP3_PLAYALL="List Play";r.Msg.MUSIC_MP3_PLAYALL_NAME="Play Mode";r.Msg.MUSIC_MP3_PLAYMODE_LISTREPEAT="List Repeat";r.Msg.MUSIC_MP3_PLAYMODE_NORMAL="Normal";r.Msg.MUSIC_MP3_PLAYMODE_REPEAT="Repeat";r.Msg.MUSIC_MP3_PLAYONE="Play music ";r.Msg.MUSIC_MP3_PLAYONE_NAME="Music:";r.Msg.MUSIC_MP3_PLAYONE_NORMAL="once";r.Msg.MUSIC_MP3_PLAYONE_REPEAT="repeat";r.Msg.MUSIC_MP3_PLAYSETTING="play setting";r.Msg.MUSIC_MP3_PLAYSETTING_NEXTSONG="Next song";r.Msg.MUSIC_MP3_PLAYSETTING_PAUSE="Pause";r.Msg.MUSIC_MP3_PLAYSETTING_PLAYALL="Play all Song";r.Msg.MUSIC_MP3_PLAYSETTING_PRESONG="Previous song";r.Msg.MUSIC_MP3_PLAYSETTING_RESUME="Resume";r.Msg.MUSIC_MP3_PLAYSETTING_STOP="Stop";r.Msg.MUSIC_MP3_PLAYSETTING_VOLDOWN="Volume down";r.Msg.MUSIC_MP3_PLAYSETTING_VOLUP="Volume up";r.Msg.MUSIC_MP3_PLAY_NORMAL="Normal";r.Msg.MUSIC_MP3_PLAY_REPEAT="List Repeat";r.Msg.MUSIC_MP3_SETUP="MP3 Player Setup";r.Msg.MUSIC_MP3_SETUP_SETVOLUME="Set volume";r.Msg.MUSIC_MP3_SETUP_SETVOLUME_HIGH="High";r.Msg.MUSIC_MP3_SETUP_SETVOLUME_LOW="Low";r.Msg.MUSIC_MP3_SETUP_SETVOLUME_MID="Mid";r.Msg.MUSIC_MP3_SETVOLUME="Set volume to";r.Msg.MUSIC_NOTE="Note";r.Msg.MUSIC_PLAY_NOTE="Play";r.Msg.MUSIC_PLAY_NOTE_TOOLTIP="Right click this block and check the help page to see the corresponding music note.";r.Msg.MUSIC_REST="Rest for";r.Msg.MUSIC_VOLUME="Set volume as";r.Msg.MUSIC_VOL_MAX="Max";r.Msg.MUSIC_VOL_MIN="Min";r.Msg.Monday="Monday";r.Msg.Motion_Accelerate="Accelerate";r.Msg.Motion_Gyroscope="Gyroscope";r.Msg.NBIOT_ENABLE="Enable NB-IoT Interactive Serial";r.Msg.NBIOT_HTTP_APIKEY="Cloud Event API Key";r.Msg.NBIOT_HTTP_CLOUD_GET="NB-IoT CocoCloud: Receive Data";r.Msg.NBIOT_HTTP_CONTENTTYPE="Content Type";r.Msg.NBIOT_HTTP_DATA="Data:";r.Msg.NBIOT_HTTP_IFTTT_APIKEY="IFTTT API Key";r.Msg.NBIOT_HTTP_IFTTT_EVENT="IFTTT Event Name";r.Msg.NBIOT_HTTP_IFTTT_TITLE="NB-IoT IFTTT: Send Data";r.Msg.NBIOT_HTTP_THINGSPEAK_APIKEY="Event API Key";r.Msg.NBIOT_HTTP_THINGSPEAK_TITLE="NB-IoT Thingspeak: Send Data";r.Msg.NBIOT_HTTP_TITLE="NB-IoT CocoCloud: Send Data";r.Msg.NBIOT_IS_POWERON="NB-IoT Module is Powered On";r.Msg.NBIOT_NETWORK_CONNECTED="Network Connected";r.Msg.NBIOT_NETWORK_IP="Get NB-IoT Module IP";r.Msg.NBIOT_SETUP="NB-IoT Comm.Setup";r.Msg.NEW_INSTANCE="New instance...";r.Msg.NEW_INSTANCE_TITLE="New instance name:";r.Msg.NEW_VARIABLE="New variable...";r.Msg.NEW_VARIABLE_TITLE="New variable name:";r.Msg.NRFMODULE_GET_RECEIVED_DATA="Get nRF Module Received Data";r.Msg.NRFMODULE_RECEIVING_DATA_TEXT="nRF Module Start Receiving Data";r.Msg.NRFMODULE_SEND_DATA_DATA_TEXT="Data:";r.Msg.NRFMODULE_SEND_DATA_TITLE="nRF Module Send Data";r.Msg.NRFMODULE_SETUP_CE_TEXT="CE Pin:";r.Msg.NRFMODULE_SETUP_CSN_TEXT="CSN Pin:";r.Msg.NRFMODULE_SETUP_SET_ADDRESS="Set Connection Address:";r.Msg.NRFMODULE_SETUP_TITLE="nRF24L01 Communication Module Setup";r.Msg.OLCD_CENTER_POS="Center Position";r.Msg.OLCD_SCALE="Scale";r.Msg.OLCD_WT="Wrap Text";r.Msg.OLCD_BW="Border Width";r.Msg.OLCD_SET_POS="Set Position";r.Msg.OLCD_CIRCLE="Circle";r.Msg.OLCD_CLEAR="Clear";r.Msg.OLCD_COLOR="Color";r.Msg.OLCD_COORDINATE="Coordinate";r.Msg.OLCD_DRAW="LCD Display: Draw ";r.Msg.OLCD_FALSE="False";r.Msg.OLCD_VLINE="Vline";r.Msg.OLCD_HLINE="Hline";r.Msg.OLCD_LENGTHIS="Length is";r.Msg.OLCD_FULLCIRCLE="Fullcircle";r.Msg.OLCD_CIRCLE="Circle";r.Msg.OLCD_FULL="Full";r.Msg.OLCD_HEIGHT="Height";r.Msg.OLCD_LINE="Line";r.Msg.OLCD_SCREEN="Screen";r.Msg.OLCD_LINE_END="To";r.Msg.OLCD_LINE_START="Start From";r.Msg.OLCD_POINT="Point";r.Msg.OLCD_POSITION="Position";r.Msg.OLCD_RADIUS="Set Radius as";r.Msg.OLCD_RECTANGLE="Rectangle";r.Msg.OLCD_SETROTATION="LCD Display: Set Screen Rotation";r.Msg.OLCD_SETROTATION_DEGREE="degree";r.Msg.OLCD_SETUP="LCD Screen Setup";r.Msg.OLCD_SIZE="Size";r.Msg.OLCD_STROKED="Stroked";r.Msg.OLCD_TEXT="Text";r.Msg.OLCD_TEXTNEWLINE="New Line";r.Msg.OLCD_TRIANGLE="Triangle";r.Msg.OLCD_TRUE="True";r.Msg.OLCD_WIDTH="Width";r.Msg.ORDINAL_NUMBER_SUFFIX="blank";r.Msg.PROCEDURES_ALLOW_STATEMENTS="Allow statements";r.Msg.PROCEDURES_BEFORE_PARAMS="With:";r.Msg.PROCEDURES_CALLNORETURN_HELPURL="https://en.wikipedia.org/wiki/Procedure_%28computer_science%29";r.Msg.PROCEDURES_CALLNORETURN_TOOLTIP="Run the user-defined function '%1'.";r.Msg.PROCEDURES_CALLRETURN_HELPURL="https://en.wikipedia.org/wiki/Procedure_%28computer_science%29";r.Msg.PROCEDURES_CALLRETURN_TOOLTIP="Execute the user-defined function '%1' and utilize its output value.";r.Msg.PROCEDURES_CALL_BEFORE_PARAMS="With:";r.Msg.PROCEDURES_CREATE_DO="Create '%1'";r.Msg.PROCEDURES_DEFNORETURN_COMMENT="Describe this function...";r.Msg.PROCEDURES_DEFNORETURN_DO="Do";r.Msg.PROCEDURES_DEFNORETURN_HELPURL="https://en.wikipedia.org/wiki/Procedure_%28computer_science%29";r.Msg.PROCEDURES_DEFNORETURN_PROCEDURE="Func1";r.Msg.PROCEDURES_DEFNORETURN_TITLE="To";r.Msg.PROCEDURES_DEFNORETURN_TOOLTIP="Creates a function with no output.";r.Msg.PROCEDURES_DEFRETURN_HELPURL="https://en.wikipedia.org/wiki/Procedure_%28computer_science%29";r.Msg.PROCEDURES_DEFRETURN_RETURN="Return";r.Msg.PROCEDURES_DEFRETURN_TOOLTIP="Creates a function with an output.";r.Msg.PROCEDURES_DEF_DUPLICATE_WARNING="Warning: This function has duplicate parameters.";r.Msg.PROCEDURES_HIGHLIGHT_DEF="Highlight function definition";r.Msg.PROCEDURES_IFRETURN_HELPURL="http://c2.com/cgi/wiki?GuardClause";r.Msg.PROCEDURES_IFRETURN_TOOLTIP="If a value is true, then return a second value.";r.Msg.PROCEDURES_IFRETURN_WARNING="Warning: This block may be used only within a function definition.";r.Msg.PROCEDURES_MUTATORARG_TITLE="Input name:";r.Msg.PROCEDURES_MUTATORARG_TOOLTIP="Add an input to the function.";r.Msg.PROCEDURES_MUTATORCONTAINER_TITLE="Inputs";r.Msg.PROCEDURES_MUTATORCONTAINER_TOOLTIP="Add, remove, or reorder inputs to this function.";r.Msg.PULSESENSOR_GETBPM="Get BPM";r.Msg.PULSESENSOR_HEARTBEAT_PRINT="Serial Print Pulse Raw Data";r.Msg.PULSESENSOR_HEARTBEAT_WHEN="When Your Heart Beats";r.Msg.PULSESENSOR_HEARTBEAT_WHENNO="When Your Heart Doesn't Beats";r.Msg.PULSESENSOR_SETUP="Pulse Sensor Setup";r.Msg.PULSESENSOR_SETUP_1="Set Pin on";r.Msg.READ_B="Read Blue";r.Msg.READ_G="Read Green";r.Msg.READ_R="Read Red";r.Msg.RED="Red";r.Msg.REDO="Redo";r.Msg.REMOVE_COMMENT="Remove Comment";r.Msg.RENAME_INSTANCE="Rename instance...";r.Msg.RENAME_INSTANCE_TITLE="Rename all '%1' instances to:";r.Msg.RENAME_VARIABLE="Rename variable...";r.Msg.RENAME_VARIABLE_TITLE="Rename all '%1' variables to:";r.Msg.REQUEST_DATA_CLOUD="Cloud Data";r.Msg.REQUEST_DATA_STRING="String";r.Msg.RFID_READID="Read Card ID";r.Msg.RFID_SETUP="RFID Setup";r.Msg.ROBOT_SETMOVE_MOVEMENT="Configure the motion of the biped";r.Msg.ROBOT_SETMOVE_MOVEMENT_BACKYARD="Walk Backward";r.Msg.ROBOT_SETMOVE_MOVEMENT_GOINGUP="Going Up";r.Msg.ROBOT_SETMOVE_MOVEMENT_KICKLEFT="Kick Left";r.Msg.ROBOT_SETMOVE_MOVEMENT_KICKRIGHT="Kick Right";r.Msg.ROBOT_SETMOVE_MOVEMENT_MOONWALKLEFT="Moonwalk to Left";r.Msg.ROBOT_SETMOVE_MOVEMENT_MOONWALKRIGHT="Moonwalk to Right";r.Msg.ROBOT_SETMOVE_MOVEMENT_RUN="Run";r.Msg.ROBOT_SETMOVE_MOVEMENT_SWING="Swing Dance";r.Msg.ROBOT_SETMOVE_MOVEMENT_TURNLEFT="Turn Left";r.Msg.ROBOT_SETMOVE_MOVEMENT_TURNRIGHT="Turn Right";r.Msg.ROBOT_SETMOVE_MOVEMENT_WALK="Walk Forward";r.Msg.ROBOT_SETMOVE_TEMPO="With tempo in";r.Msg.ROBOT_SETUP="Configuring a bipedal walking robot.";r.Msg.ROBOT_SETUP_SETRLPIN="And Left Foot pin#";r.Msg.ROBOT_SETUP_SETRRPIN="Set Right Foot pin#";r.Msg.ROBOT_SETUP_SETYLPIN="And Left Hip pin#";r.Msg.ROBOT_SETUP_SETYRPIN="Set Right Hip pin#";r.Msg.RTC_DAY="Day";r.Msg.RTC_GETDATE="Get Current Date";r.Msg.RTC_GETTIME="Get Current Time";r.Msg.RTC_GETWEEK="Get Current Week";r.Msg.RTC_setDATE="Set Current Date";r.Msg.RTC_setTIME="Set Current Time";r.Msg.RTC_setWEEK="Set Current Week to";r.Msg.RTC_WEI=" to";r.Msg.RTC_getDateTime="Get time (year, month, day, week, hour, minute, second)";r.Msg.RTC_HOUR="Hour";r.Msg.RTC_MINUTE="Minute";r.Msg.RTC_MONTH="Month";r.Msg.RTC_SECOND="Second";r.Msg.RTC_SETDATE="Date";r.Msg.RTC_SETDATETIME="Set Date,Time and Week";r.Msg.RTC_SETTIME="Time";r.Msg.RTC_SETUP="RTC Setup";r.Msg.RTC_SETWEEK="Week";r.Msg.RTC_WEEK="Week";r.Msg.RTC_YEAR="Year";r.Msg.SONAR="Sonar";r.Msg.SONAR_READ_DIST="Read distance (cm) from";r.Msg.SONAR_SETUP="Setup";r.Msg.SONAR_SETUP_ECHOPIN="And Echo at pin#";r.Msg.SONAR_SETUP_MAXDIST="Set max distance";r.Msg.SONAR_SETUP_TRIGPIN="Set Trig at pin#";r.Msg.Saturday="Saturday";r.Msg.Sunday="Sunday";r.Msg.DEEP_LEARING="Deep learing";r.Msg.Emotion_recognition="Emotion recognition";r.Msg.Gesture_recognition="Gesture recognition";r.Msg.Object_recognition="Object recognition";r.Msg.guesswork_recognition="Guesswork recognition";r.Msg.Posture_recognition="Posture recognition";r.Msg.Course_people="Course people";r.Msg.Voice_recognition="Voice recognition";r.Msg.TEXT_APPEND_APPENDTEXT="Append text";r.Msg.TEXT_APPEND_HELPURL="https://github.com/google/blockly/wiki/Text#text-modification";r.Msg.TEXT_APPEND_TO="To";r.Msg.TEXT_APPEND_TOOLTIP="Append some text to variable '%1'.";r.Msg.TEXT_CHANGECASE_HELPURL="https://github.com/google/blockly/wiki/Text#adjusting-text-case";r.Msg.TEXT_CHANGECASE_OPERATOR_LOWERCASE="To lower case";r.Msg.TEXT_CHANGECASE_OPERATOR_TITLECASE="To Title Case";r.Msg.TEXT_CHANGECASE_OPERATOR_UPPERCASE="To UPPER CASE";r.Msg.TEXT_CHANGECASE_TOOLTIP="Return a copy of the text in a different case.";r.Msg.TEXT_CHARAT_FIRST="Get first letter";r.Msg.TEXT_CHARAT_FROM_END="Get letter # from end";r.Msg.TEXT_CHARAT_FROM_START="Get letter #";r.Msg.TEXT_CHARAT_HELPURL="https://github.com/google/blockly/wiki/Text#extracting-text";r.Msg.TEXT_CHARAT_INPUT_INTEXT="In text";r.Msg.TEXT_CHARAT_LAST="Get last letter";r.Msg.TEXT_CHARAT_RANDOM="Get random letter";r.Msg.TEXT_CHARAT_TAIL="";r.Msg.TEXT_CHARAT_TOOLTIP="Returns the letter at the specified position.";r.Msg.TEXT_CREATE_JOIN_ITEM_TOOLTIP="Add an item to the text.";r.Msg.TEXT_CREATE_JOIN_TITLE_JOIN="Join";r.Msg.TEXT_CREATE_JOIN_TOOLTIP="Add, remove, or reorder sections to reconfigure this text block.";r.Msg.TEXT_GET_SUBSTRING_END_FROM_END="To letter # from end";r.Msg.TEXT_GET_SUBSTRING_END_FROM_START="To letter #";r.Msg.TEXT_GET_SUBSTRING_END_LAST="To last letter";r.Msg.TEXT_GET_SUBSTRING_HELPURL="https://github.com/google/blockly/wiki/Text#extracting-a-region-of-text";r.Msg.TEXT_GET_SUBSTRING_INPUT_IN_TEXT="In text";r.Msg.TEXT_GET_SUBSTRING_START_FIRST="Get substring from first letter";r.Msg.TEXT_GET_SUBSTRING_START_FROM_END="Get substring from letter # from end";r.Msg.TEXT_GET_SUBSTRING_START_FROM_START="Get substring from letter #";r.Msg.TEXT_GET_SUBSTRING_TAIL="";r.Msg.TEXT_GET_SUBSTRING_TOOLTIP="Returns a specified portion of the text.";r.Msg.TEXT_INDEXOF_HELPURL="https://github.com/google/blockly/wiki/Text#finding-text";r.Msg.TEXT_INDEXOF_INPUT_INTEXT="In text";r.Msg.TEXT_INDEXOF_OPERATOR_FIRST="Find first occurrence of text";r.Msg.TEXT_INDEXOF_OPERATOR_LAST="Find last occurrence of text";r.Msg.TEXT_INDEXOF_TAIL="blank";r.Msg.TEXT_INDEXOF_TOOLTIP="Returns the index of the first/last occurrence of the first text in the second text. Returns 0 if text is not found.";r.Msg.TEXT_ISEMPTY_HELPURL="https://github.com/google/blockly/wiki/Text#checking-for-empty-text";r.Msg.TEXT_ISEMPTY_TITLE="%1 is empty";r.Msg.TEXT_ISEMPTY_TOOLTIP="Returns true if the provided text is empty.";r.Msg.TEXT_JOIN_HELPURL="https://github.com/google/blockly/wiki/Text#text-creation";r.Msg.TEXT_JOIN_TITLE_CREATEWITH="Create text with";r.Msg.TEXT_JOIN_TOOLTIP="Create a piece of text by joining together any number of items.";r.Msg.TEXT_LENGTH_HELPURL="https://github.com/google/blockly/wiki/Text#text-modification";r.Msg.TEXT_LENGTH_TITLE="Length of %1";r.Msg.TEXT_LENGTH_TOOLTIP="Returns the number of letters (including spaces) in the provided text.";r.Msg.TEXT_PRINT_HELPURL="https://github.com/google/blockly/wiki/Text#printing-text";r.Msg.TEXT_PRINT_TITLE="Print %1";r.Msg.TEXT_PRINT_TOOLTIP="Print the specified text, number or other value.";r.Msg.TEXT_PROMPT_HELPURL="https://github.com/google/blockly/wiki/Text#getting-input-from-the-user";r.Msg.TEXT_PROMPT_TOOLTIP_NUMBER="Prompt for user for a number.";r.Msg.TEXT_PROMPT_TOOLTIP_TEXT="Prompt for user for some text.";r.Msg.TEXT_PROMPT_TYPE_NUMBER="prompt for number with message";r.Msg.TEXT_PROMPT_TYPE_TEXT="prompt for text with message";r.Msg.TEXT_TEXT_HELPURL="https://en.wikipedia.org/wiki/String_(computer_science)";r.Msg.TEXT_TEXT_TOOLTIP="A letter, word, or line of text.";r.Msg.TEXT_TRIM_HELPURL="https://github.com/google/blockly/wiki/Text#trimming-removing-spaces";r.Msg.TEXT_TRIM_OPERATOR_BOTH="Trim spaces from both sides of";r.Msg.TEXT_TRIM_OPERATOR_LEFT="Trim spaces from left side of";r.Msg.TEXT_TRIM_OPERATOR_RIGHT="Trim spaces from right side of";r.Msg.TEXT_TRIM_TOOLTIP="Return a copy of the text with spaces removed from one or both ends.";r.Msg.THINGSPEAK_CREATE_WITH_CONTAINER_TITLE_ADD="Field";r.Msg.THINGSPEAK_CREATE_WITH_INPUT_WITH="FIELD";r.Msg.THINGSPEAK_CREATE_WITH_ITEM_TITLE="Value";r.Msg.TODAY="Today";r.Msg.TOUCH_AT="When Touch Pin ";r.Msg.TOUCH_CASE="Key No.";r.Msg.TOUCH_DEFAULT="Default";r.Msg.TOUCH_DO="Do";r.Msg.TOUCH_LOOSE="When loose it";r.Msg.TOUCH_SETUP="Touch Sensor Setup";r.Msg.TOUCH_SWITCH="⌘ When Touch Pins";r.Msg.TOUCH_THEN_LOOSE_SWITCH="⌘ Loose touched Pins";r.Msg.Thursday="Thursday";r.Msg.Tuesday="Tuesday";r.Msg.UNDO="Undo";r.Msg.VARIABLES_DEFAULT_NAME="Item";r.Msg.VARIABLES_GET_CREATE_SET="Create 'set %1'";r.Msg.VARIABLES_GET_HELPURL="https://github.com/google/blockly/wiki/Variables#get";r.Msg.VARIABLES_GET_TOOLTIP="Returns the value of this variable.";r.Msg.VARIABLES_SET="Set %1 to %2";r.Msg.VARIABLES_SET_CREATE_GET="Create '%1'";r.Msg.VARIABLES_SET_HELPURL="https://github.com/google/blockly/wiki/Variables#set";r.Msg.VARIABLES_SET_TOOLTIP="Sets this variable to be equal to the input.";r.Msg.WATERTEMP_GET_TEMP="Get Water Temperature (ºC)";r.Msg.WATERTEMP_SETUP_ATTACHED_PIN="Digital Pin Attached:";r.Msg.WATERTEMP_SETUP_BLOCKNAME="Water Temperature Sensor";r.Msg.WATERTEMP_SETUP_SENSORTYPE="Sensor type:";r.Msg.WATERTEMP_SETUP_SETUP="Setup";r.Msg.WEBPAGE_BUTTONCTRL_SETPATH=" Set path to:";r.Msg.WEBPAGE_BUTTONCTRL_TEXT_BOTTOM="Button Bottom:";r.Msg.WEBPAGE_BUTTONCTRL_TEXT_CENTER="Button Center:";r.Msg.WEBPAGE_BUTTONCTRL_TEXT_LEFT="Button Left:";r.Msg.WEBPAGE_BUTTONCTRL_TEXT_RIGHT="Button Right:";r.Msg.WEBPAGE_BUTTONCTRL_TEXT_TOP="Button Top:";r.Msg.WEBPAGE_BUTTONCTRL_TITLE="Web Dashboard: Button Controller";r.Msg.WEBPAGE_BUTTON_NAME="Button Name";r.Msg.WEBPAGE_BUTTON_ROUTER="Set request path to:";r.Msg.WEBPAGE_BUTTON_TITLE="Web Dashboard: Button";r.Msg.WEBPAGE_COLORPICKER_PATH="Set request path to:";r.Msg.WEBPAGE_COLORPICKER_SUBTITLE="(Note: Data format in RGB)";r.Msg.WEBPAGE_COLORPICKER_TITLE="Web Dashboard: Color Picker Widget";r.Msg.WEBPAGE_LABLE="Label Name";r.Msg.WEBPAGE_LABLE_TITLE="Web Dashboard: Label";r.Msg.WIFICLIENT_HTTP_GET_DATA="Get data stored into";r.Msg.WIFICLIENT_HTTP_GET_URL="Send GET Request to";r.Msg.WIFICLIENT_HTTP_POST_DATA="Data";r.Msg.WIFICLIENT_HTTP_POST_TYPE="as";r.Msg.WIFICLIENT_HTTP_POST_URL="Send POST Request to";r.Msg.WIFICLIENT_HTTP_POST_VAR="Create list";r.Msg.WIFICLIENT_HTTP_PUT_DATA="From content";r.Msg.WIFICLIENT_HTTP_PUT_TYPE="as";r.Msg.WIFICLIENT_HTTP_PUT_URL="Send PUT Request to";r.Msg.WIFICLIENT_HTTP_RESPONSE="Get HTTP Response";r.Msg.WIFICLIENT_HTTP_SETUP="Client Setup";r.Msg.WIFICLIENT_RECEIVE_GET="From";r.Msg.WIFICLIENT_RECEIVE_GET_LINE2="Get data of index";r.Msg.WIFICLIENT_RECEIVE_GET_LINE3="As type";r.Msg.WIFIEASYMODE_COCOCLOUD_END="value";r.Msg.WIFIEASYMODE_COCOCLOUD_GETDATA="Get Data and Store it to ";r.Msg.WIFIEASYMODE_COCOCLOUD_KEY="From";r.Msg.WIFIEASYMODE_COCOCLOUD_KEY1="Get the value with property";r.Msg.WIFIEASYMODE_COCOCLOUD_KEY2="Named ";r.Msg.WIFIEASYMODE_COCOCLOUD_SENDDATA="Send Data ";r.Msg.WIFIEASYMODE_COCOCLOUD_SETVAR="Item";r.Msg.WIFIEASYMODE_COCOCLOUD_SETVAR_FROM="";r.Msg.WIFIEASYMODE_COCOCLOUD_TYPE="As type";r.Msg.WIFIEASYMODE_COCOClOUD_DATA_NAME="Name:";r.Msg.WIFIEASYMODE_COCOClOUD_EVENT="Cloud Event API Key:";r.Msg.WIFIEASYMODE_IFTTT_EVENT="IFTTT Event Name:";r.Msg.WIFIEASYMODE_IFTTT_FETCH="Fecth data";r.Msg.WIFIEASYMODE_IFTTT_KEY="IFTTT Key:";r.Msg.WIFIEASYMODE_IFTTT_POST="Post data";r.Msg.WIFIEASYMODE_IFTTT_SENDDATA="Send Data";r.Msg.WIFIEASYMODE_IFTTT_TYPE="Webhook Type:";r.Msg.WIFIEASYMODE_NETWORK_PW="WiFi Password";r.Msg.WIFIEASYMODE_NETWORK_SSID="WiFi Name";r.Msg.WIFIEASYMODE_NETWORK_TITLE="Connect to WiFi:";r.Msg.WIFIEASYMODE_THINGSPEAK_APIKEY="Channel API Key:";r.Msg.WIFIEASYMODE_THINGSPEAK_SENDDATA="Send data:";r.Msg.WIFIEASYMODE_TRANSFER_RECEIVE="Get Data from Main Controller";r.Msg.WIFIEASYMODE_TRANSFER_RECEIVE_GET="From ";r.Msg.WIFIEASYMODE_TRANSFER_RECEIVE_GET_LINE2="Get data at ";r.Msg.WIFIEASYMODE_TRANSFER_RECEIVE_GET_LINE3="As Type";r.Msg.WIFIEASYMODE_TRANSFER_RECEIVE_GET_LINE4="";r.Msg.WIFIEASYMODE_TRANSFER_RECEIVE_LINE2="And store it to ";r.Msg.WIFIEASYMODE_TRANSFER_RECEIVE_LINE3="with length of ";r.Msg.WIFIEASYMODE_TRANSFER_SEND="Create List";r.Msg.WIFIEASYMODE_TRANSFER_SEND_LINE2="Send data to Main Controller";r.Msg.WIFIEASYMODE_TRANSFER_SEND_VALUE="Data";r.Msg.WIFINETWORK_AP_PW="Set PASSWORD ";r.Msg.WIFINETWORK_AP_SETUP="WiFi Access Point Setup";r.Msg.WIFINETWORK_AP_SSID="Set SSID ";r.Msg.WIFINETWORK_CONNECT="WiFi Connect Setup";r.Msg.WIFINETWORK_CONNECT_PW="Set PASSWORD ";r.Msg.WIFINETWORK_CONNECT_SSID="Set SSID ";r.Msg.WIFINETWORK_GETGATEWAYIP="Get Gateway IP";r.Msg.WIFINETWORK_GETLOCALIP="Get local IP";r.Msg.WIFINETWORK_GETMACADDR="Get MAC address";r.Msg.WIFINETWORK_GETSTATIONNUM="Get client number";r.Msg.WIFINETWORK_ISCONNECTED="isConnected";r.Msg.WIFINETWORK_PW_WARN="The password should be more than 8 characters long.";r.Msg.WIFISERVER_HANDLECLIENT="Handleclient";r.Msg.WIFISERVER_LIST="Create List";r.Msg.WIFISERVER_RECEIVE="Server receive data";r.Msg.WIFISERVER_RECEIVE_GET="From";r.Msg.WIFISERVER_RECEIVE_GET_INT="Number";r.Msg.WIFISERVER_RECEIVE_GET_LINE2="Get data at ";r.Msg.WIFISERVER_RECEIVE_GET_LINE3=" As type ";r.Msg.WIFISERVER_RECEIVE_GET_STRING="Text";r.Msg.WIFISERVER_RECEIVE_LENGTH="With length of ";r.Msg.WIFISERVER_RECEIVE_TO="And store it to";r.Msg.WIFISERVER_SEND="Server send data";r.Msg.WIFISERVER_SERVERSEND="Server send ";r.Msg.WIFISERVER_SERVERSEND_CODE="HTTP code";r.Msg.WIFISERVER_SERVERSEND_TYPE="Type";r.Msg.WIFISERVER_SETROOTPAGE="Set homepage";r.Msg.WIFISERVER_SETROUTER="Server Router";r.Msg.WIFISERVER_SETROUTER_ONNOTFOUND="Set Router when URL no found, do with";r.Msg.WIFISERVER_SETROUTER_SET="Set path on";r.Msg.WIFISERVER_SETROUTER_WITH="Do";r.Msg.WIFISERVER_SETUP="Server Setup";r.Msg.WIFISERVER_WAIT_CONNECTION="Wait connection";r.Msg.WIFIWEBSERVICES_IFTTT="Web Service IFTTT";r.Msg.WIFIWEBSERVICES_IFTTT_SET_EVENT="Event ";r.Msg.WIFIWEBSERVICES_IFTTT_SET_KEY="Key ";r.Msg.WIFIWEBSERVICES_IFTTT_SET_KEY1="Key1";r.Msg.WIFIWEBSERVICES_IFTTT_SET_KEY2="Key2";r.Msg.WIFIWEBSERVICES_IFTTT_SET_KEY3="Key3";r.Msg.WIFIWEBSERVICES_IFTTT_SET_VALUE1="Value1";r.Msg.WIFIWEBSERVICES_IFTTT_SET_VALUE2="Value2";r.Msg.WIFIWEBSERVICES_IFTTT_SET_VALUE3="Value3";r.Msg.WIFIWEBSERVICES_THINKSPEAK="Web Service Thinkspeak";r.Msg.WIFIWEBSERVICES_THINKSPEAK_SET_FIELD1="Field";r.Msg.WIFIWEBSERVICES_THINKSPEAK_SET_KEY="Api-key";r.Msg.WIFIWEBSERVICES_THINKSPEAK_SET_VALUE="Value";r.Msg.WIFI_RECEIVEMSG="Receive data to";r.Msg.WIFI_RECEIVEMSG_ISSUCCESS="Receive data successfully";r.Msg.WIFI_RECEIVEMSG_LENGTH=", data length ";r.Msg.WIFI_SENDMSG="Send data ";r.Msg.WIFI_SENDMSG_LENGTH=", data length ";r.Msg.WIFI_SETUP="Data Transfer Setup";r.Msg.Wednesday="Wednesday";r.Msg.PROCEDURES_DEFRETURN_TITLE=r.Msg.PROCEDURES_DEFNORETURN_TITLE;r.Msg.CONTROLS_IF_IF_TITLE_IF=r.Msg.CONTROLS_IF_MSG_IF;r.Msg.CONTROLS_WHILEUNTIL_INPUT_DO=r.Msg.CONTROLS_REPEAT_INPUT_DO;r.Msg.CONTROLS_IF_MSG_THEN=r.Msg.CONTROLS_REPEAT_INPUT_DO;r.Msg.CONTROLS_IF_ELSE_TITLE_ELSE=r.Msg.CONTROLS_IF_MSG_ELSE;r.Msg.PROCEDURES_DEFRETURN_PROCEDURE=r.Msg.PROCEDURES_DEFNORETURN_PROCEDURE;r.Msg.LISTS_GET_SUBLIST_INPUT_IN_LIST=r.Msg.LISTS_INLIST;r.Msg.LISTS_GET_INDEX_INPUT_IN_LIST=r.Msg.LISTS_INLIST;r.Msg.MATH_CHANGE_TITLE_ITEM=r.Msg.VARIABLES_DEFAULT_NAME;r.Msg.PROCEDURES_DEFRETURN_DO=r.Msg.PROCEDURES_DEFNORETURN_DO;r.Msg.CONTROLS_IF_ELSEIF_TITLE_ELSEIF=r.Msg.CONTROLS_IF_MSG_ELSEIF;r.Msg.LISTS_GET_INDEX_HELPURL=r.Msg.LISTS_INDEX_OF_HELPURL;r.Msg.CONTROLS_FOREACH_INPUT_DO=r.Msg.CONTROLS_REPEAT_INPUT_DO;r.Msg.LISTS_SET_INDEX_INPUT_IN_LIST=r.Msg.LISTS_INLIST;r.Msg.CONTROLS_FOR_INPUT_DO=r.Msg.CONTROLS_REPEAT_INPUT_DO;r.Msg.LISTS_CREATE_WITH_ITEM_TITLE=r.Msg.VARIABLES_DEFAULT_NAME;r.Msg.TEXT_APPEND_VARIABLE=r.Msg.VARIABLES_DEFAULT_NAME;r.Msg.TEXT_CREATE_JOIN_ITEM_TITLE_ITEM=r.Msg.VARIABLES_DEFAULT_NAME;r.Msg.LISTS_INDEX_OF_INPUT_IN_LIST=r.Msg.LISTS_INLIST;r.Msg.PROCEDURES_DEFRETURN_COMMENT=r.Msg.PROCEDURES_DEFNORETURN_COMMENT;r.Msg.ADD_COMMENT="Add Comment";r.Msg.AIYBOARD_AIY_BOARD="AIY Board";r.Msg.AIYBOARD_BUTTON_FROM="From";r.Msg.AIYBOARD_BUTTON_WHEN="When button";r.Msg.AIYBOARD_FROM="From aiy.board";r.Msg.AIYBOARD_IMPORT="Import";r.Msg.AIYBOARD_LED_STATE="Gget LED state of";r.Msg.AIYBOARD_LED_STATUS="Get LED status of";r.Msg.CAMERA_CAMERA="Camera";r.Msg.CAMERA_DO="Do";r.Msg.CAMERA_FPS="fps";r.Msg.CAMERA_FRAME_RATE="Frame Rete:";r.Msg.CAMERA_IMPORT="Import piCamera";r.Msg.CAMERA_RESOLUTION="Resolution";r.Msg.CAMERA_SENSOR_MODE="Sensor Mode:";r.Msg.CAMERA_SET_BOUNDING="Set bounding box:";r.Msg.CAMERA_USE_AS="Use PiCamera as";r.Msg.CHANGE_VALUE_TITLE="Change value:";r.Msg.CLEAN_UP="Clean up Blocks";r.Msg.COLLAPSE_ALL="Collapse Blocks";r.Msg.COLLAPSE_BLOCK="Collapse Block";r.Msg.COLOUR_BLEND_COLOUR1="Colour 1";r.Msg.COLOUR_BLEND_COLOUR2="Colour 2";r.Msg.COLOUR_BLEND_HELPURL="http://meyerweb.com/eric/tools/color-blend/";r.Msg.COLOUR_BLEND_RATIO="Ratio";r.Msg.COLOUR_BLEND_TITLE="Blend";r.Msg.COLOUR_BLEND_TOOLTIP="Blends two colours together with a given ratio (0.0 - 1.0).";r.Msg.COLOUR_PICKER_HELPURL="https://en.wikipedia.org/wiki/Color";r.Msg.COLOUR_PICKER_TOOLTIP="Choose a colour from the palette.";r.Msg.COLOUR_RANDOM_HELPURL="http://randomcolour.com";r.Msg.COLOUR_RANDOM_TITLE="Random colour";r.Msg.COLOUR_RANDOM_TOOLTIP="Choose a colour at random.";r.Msg.COLOUR_RGB_BLUE="Blue";r.Msg.COLOUR_RGB_GREEN="Green";r.Msg.COLOUR_RGB_HELPURL="http://www.december.com/html/spec/colorper.html";r.Msg.COLOUR_RGB_RED="Red";r.Msg.COLOUR_RGB_TITLE="Colour with";r.Msg.COLOUR_RGB_TOOLTIP="Create a colour with the specified amount of red, green, and blue. All values must be between 0 and 100.";r.Msg.CONTROLS_FLOW_STATEMENTS_HELPURL="https://github.com/google/blockly/wiki/Loops#loop-termination-blocks";r.Msg.CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK="Break out of loop";r.Msg.CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE="Continue with next iteration of loop";r.Msg.CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK="Break out of the containing loop.";r.Msg.CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE="Skip the rest of this loop, and continue with the next iteration.";r.Msg.CONTROLS_FLOW_STATEMENTS_WARNING="Warning: This block may only be used within a loop.";r.Msg.CONTROLS_FOREACH_HELPURL="https://github.com/google/blockly/wiki/Loops#for-each";r.Msg.CONTROLS_FOREACH_TITLE="For each item %1 in list %2";r.Msg.CONTROLS_FOREACH_TOOLTIP="For each item in a list, set the variable '%1' to the item, and then do some statements.";r.Msg.CONTROLS_FOR_HELPURL="https://github.com/google/blockly/wiki/Loops#count-with";r.Msg.CONTROLS_FOR_TITLE="count with %1 from %2 to %3 by %4";r.Msg.CONTROLS_FOR_TOOLTIP="Have the variable '%1' take on the values from the start number to the end number, counting by the specified interval, and do the specified blocks.";r.Msg.CONTROLS_IF_ELSEIF_TOOLTIP="Add a condition to the if block.";r.Msg.CONTROLS_IF_ELSE_TOOLTIP="Add a final, catch-all condition to the if block.";r.Msg.CONTROLS_IF_HELPURL="https://github.com/google/blockly/wiki/IfElse";r.Msg.CONTROLS_IF_IF_TOOLTIP="Add, remove, or reorder sections to reconfigure this if block.";r.Msg.CONTROLS_IF_MSG_ELSE="Else";r.Msg.CONTROLS_IF_MSG_ELSEIF="Else if";r.Msg.CONTROLS_IF_MSG_IF="If";r.Msg.CONTROLS_IF_TOOLTIP_1="If a value is true, then do some statements.";r.Msg.CONTROLS_IF_TOOLTIP_2="If a value is true, then do the first block of statements. Otherwise, do the second block of statements.";r.Msg.CONTROLS_IF_TOOLTIP_3="If the first value is true, then do the first block of statements. Otherwise, if the second value is true, do the second block of statements.";r.Msg.CONTROLS_IF_TOOLTIP_4="If the first value is true, then do the first block of statements. Otherwise, if the second value is true, do the second block of statements. If none of the values are true, do the last block of statements.";r.Msg.CONTROLS_REPEAT_HELPURL="https://en.wikipedia.org/wiki/For_loop";r.Msg.CONTROLS_REPEAT_INPUT_DO="Do";r.Msg.CONTROLS_REPEAT_TITLE="Repeat %1 times";r.Msg.CONTROLS_REPEAT_TOOLTIP="Do some statements several times.";r.Msg.CONTROLS_WHILEUNTIL_HELPURL="https://github.com/google/blockly/wiki/Loops#repeat";r.Msg.CONTROLS_WHILEUNTIL_OPERATOR_UNTIL="Repeat until";r.Msg.CONTROLS_WHILEUNTIL_OPERATOR_WHILE="While";r.Msg.CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL="While a value is false, then do some statements.";r.Msg.CONTROLS_WHILEUNTIL_TOOLTIP_WHILE="While a value is true, then do some statements.";r.Msg.DELETE_ALL_BLOCKS="Delete all %1 blocks?";r.Msg.DELETE_BLOCK="Delete Block";r.Msg.DELETE_VARIABLE="Delete the '%1' property";r.Msg.DELETE_VARIABLE_CONFIRMATION="Delete %1 uses of the '%2' property?";r.Msg.DELETE_X_BLOCKS="Delete %1 Blocks";r.Msg.DICTS_CREATE_EMPTY_TITLE="Empty dictionary";r.Msg.DICTS_CREATE_WITH_CONTAINER_TITLE_ADD="Create Dictionary";r.Msg.DICTS_CREATE_WITH_CONTAINER_TOOLTIP="";r.Msg.DICTS_CREATE_WITH_INPUT_WITH="Create dict with";r.Msg.DICTS_CREATE_WITH_ITEM_KEY="Key";r.Msg.DICTS_CREATE_WITH_ITEM_MAPPING=":";r.Msg.DICTS_CREATE_WITH_ITEM_TITLE="Key/value";r.Msg.DICTS_CREATE_WITH_ITEM_TOOLTIP="";r.Msg.DICTS_CREATE_WITH_TOOLTIP="";r.Msg.DICT_GET="Get key";r.Msg.DICT_GET_TO="of";r.Msg.DISABLE_BLOCK="Disable Block";r.Msg.DUPLICATE_BLOCK="Duplicate";r.Msg.ENABLE_BLOCK="Enable Block";r.Msg.EXPAND_ALL="Expand Blocks";r.Msg.EXPAND_BLOCK="Expand Block";r.Msg.EXTERNAL_INPUTS="Change to External Inputs";r.Msg.HELP="Help";r.Msg.INLINE_INPUTS="Change to Inline Inputs";r.Msg.LISTS_APPEND="Append item";r.Msg.LISTS_APPEND_HELPURL="http://google.com";r.Msg.LISTS_APPEND_TO="To list";r.Msg.LISTS_APPEND_TOOLTIP="Append an element to a list";r.Msg.LISTS_CREATE_EMPTY_HELPURL="https://github.com/google/blockly/wiki/Lists#create-empty-list";r.Msg.LISTS_CREATE_EMPTY_TITLE="Create empty list";r.Msg.LISTS_CREATE_EMPTY_TOOLTIP="Returns a list, of length 0, containing no data records";r.Msg.LISTS_CREATE_WITH_CONTAINER_TITLE_ADD="List";r.Msg.LISTS_CREATE_WITH_CONTAINER_TOOLTIP="Add, remove, or reorder sections to reconfigure this list block.";r.Msg.LISTS_CREATE_WITH_HELPURL="https://github.com/google/blockly/wiki/Lists#create-list-with";r.Msg.LISTS_CREATE_WITH_INPUT_WITH="Use these values to create an array of Numbers";r.Msg.LISTS_CREATE_WITH_ITEM_TOOLTIP="Add an item to the list.";r.Msg.LISTS_CREATE_WITH_TOOLTIP="Create a list with any number of items.";r.Msg.LISTS_GET_INDEX_FIRST="First";r.Msg.LISTS_GET_INDEX_FROM_END="# from end";r.Msg.LISTS_GET_INDEX_FROM_START="#";r.Msg.LISTS_GET_INDEX_GET="Get";r.Msg.LISTS_GET_INDEX_GET_REMOVE="Get and remove";r.Msg.LISTS_GET_INDEX_LAST="Last";r.Msg.LISTS_GET_INDEX_RANDOM="Random";r.Msg.LISTS_GET_INDEX_REMOVE="Remove";r.Msg.LISTS_GET_INDEX_TAIL="blank";r.Msg.LISTS_GET_INDEX_TOOLTIP_GET_FIRST="Returns the first item in a list.";r.Msg.LISTS_GET_INDEX_TOOLTIP_GET_FROM="Returns the item at the specified position in a list.";r.Msg.LISTS_GET_INDEX_TOOLTIP_GET_LAST="Returns the last item in a list.";r.Msg.LISTS_GET_INDEX_TOOLTIP_GET_RANDOM="Returns a random item in a list.";r.Msg.LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST="Removes and returns the first item in a list.";r.Msg.LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM="Removes and returns the item at the specified position in a list.";r.Msg.LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST="Removes and returns the last item in a list.";r.Msg.LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM="Removes and returns a random item in a list.";r.Msg.LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST="Removes the first item in a list.";r.Msg.LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM="Removes the item at the specified position in a list.";r.Msg.LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST="Removes the last item in a list.";r.Msg.LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM="Removes a random item in a list.";r.Msg.LISTS_GET_SUBLIST_END_FROM_END="To # from end";r.Msg.LISTS_GET_SUBLIST_END_FROM_START="To #";r.Msg.LISTS_GET_SUBLIST_END_LAST="To last";r.Msg.LISTS_GET_SUBLIST_HELPURL="https://github.com/google/blockly/wiki/Lists#getting-a-sublist";r.Msg.LISTS_GET_SUBLIST_START_FIRST="Get sub-list from first";r.Msg.LISTS_GET_SUBLIST_START_FROM_END="Get sub-list from # from end";r.Msg.LISTS_GET_SUBLIST_START_FROM_START="Get sub-list from #";r.Msg.LISTS_GET_SUBLIST_TAIL="blank";r.Msg.LISTS_GET_SUBLIST_TOOLTIP="Creates a copy of the specified portion of a list.";r.Msg.LISTS_INDEX_FROM_END_TOOLTIP="%1 is the last item.";r.Msg.LISTS_INDEX_FROM_START_TOOLTIP="%1 is the first item.";r.Msg.LISTS_INDEX_OF_FIRST="Find first occurrence of item";r.Msg.LISTS_INDEX_OF_HELPURL="https://github.com/google/blockly/wiki/Lists#getting-items-from-a-list";r.Msg.LISTS_INDEX_OF_LAST="Find last occurrence of item";r.Msg.LISTS_INDEX_OF_TOOLTIP="Return the index value of the first/last matching item in the list. If the item is not found, return %1.";r.Msg.LISTS_INLIST="In list";r.Msg.LISTS_ISEMPTY_HELPURL="https://github.com/google/blockly/wiki/Lists#is-empty";r.Msg.LISTS_ISEMPTY_TITLE="%1 is empty";r.Msg.LISTS_ISEMPTY_TOOLTIP="Returns true if the list is empty.";r.Msg.LISTS_LENGTH_HELPURL="https://github.com/google/blockly/wiki/Lists#length-of";r.Msg.LISTS_LENGTH_TITLE="Length of %1";r.Msg.LISTS_LENGTH_TOOLTIP="Returns the length of a list.";r.Msg.LISTS_REPEAT_HELPURL="https://github.com/google/blockly/wiki/Lists#create-list-with";r.Msg.LISTS_REPEAT_TITLE="Create list with item %1 repeated %2 times";r.Msg.LISTS_REPEAT_TOOLTIP="Creates a list consisting of the given value repeated the specified number of times.";r.Msg.LISTS_SET_INDEX_HELPURL="https://github.com/google/blockly/wiki/Lists#in-list--set";r.Msg.LISTS_SET_INDEX_INPUT_TO="As";r.Msg.LISTS_SET_INDEX_INSERT="Insert at";r.Msg.LISTS_SET_INDEX_SET="Set";r.Msg.LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST="Inserts the item at the start of a list.";r.Msg.LISTS_SET_INDEX_TOOLTIP_INSERT_FROM="Inserts the item at the specified position in a list.";r.Msg.LISTS_SET_INDEX_TOOLTIP_INSERT_LAST="Append the item to the end of a list.";r.Msg.LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM="Inserts the item randomly in a list.";r.Msg.LISTS_SET_INDEX_TOOLTIP_SET_FIRST="Sets the first item in a list.";r.Msg.LISTS_SET_INDEX_TOOLTIP_SET_FROM="Sets the item at the specified position in a list.";r.Msg.LISTS_SET_INDEX_TOOLTIP_SET_LAST="Sets the last item in a list.";r.Msg.LISTS_SET_INDEX_TOOLTIP_SET_RANDOM="Sets a random item in a list.";r.Msg.LISTS_SORT_HELPURL="https://github.com/google/blockly/wiki/Lists#sorting-a-list";r.Msg.LISTS_SORT_ORDER_ASCENDING="Ascending";r.Msg.LISTS_SORT_ORDER_DESCENDING="Descending";r.Msg.LISTS_SORT_TITLE="Sort %1 %2 %3";r.Msg.LISTS_SORT_TOOLTIP="Sort a copy of a list.";r.Msg.LISTS_SORT_TYPE_IGNORECASE="Sort alphabetically, disregarding case.";r.Msg.LISTS_SORT_TYPE_NUMERIC="Numeric";r.Msg.LISTS_SORT_TYPE_TEXT="Alphabetic";r.Msg.LISTS_SPLIT_HELPURL="https://github.com/google/blockly/wiki/Lists#splitting-strings-and-joining-lists";r.Msg.LISTS_SPLIT_LIST_FROM_TEXT="Make list from text";r.Msg.LISTS_SPLIT_TEXT_FROM_LIST="Make text from list";r.Msg.LISTS_SPLIT_TOOLTIP_JOIN="Join a list of texts into one text, separated by a delimiter.";r.Msg.LISTS_SPLIT_TOOLTIP_SPLIT="Split text into a list of texts, breaking at each delimiter.";r.Msg.LISTS_SPLIT_WITH_DELIMITER="With delimiter";r.Msg.LOGGING_CONF="Logging Basic config";r.Msg.LOGGING_CONFIG="Logging config";r.Msg.LOGGING_CONFIG_LEVEL="Level =";r.Msg.LOGGING_IMPORT="Import logging";r.Msg.LOGGING_INFO="Logging info";r.Msg.LOGGING_SETUP="Logging Setup";r.Msg.LOGIC_BOOLEAN_FALSE="False";r.Msg.LOGIC_BOOLEAN_HELPURL="https://github.com/google/blockly/wiki/Logic#values";r.Msg.LOGIC_BOOLEAN_TOOLTIP="Returns either true or false.";r.Msg.LOGIC_BOOLEAN_TRUE="True";r.Msg.LOGIC_COMPARE_HELPURL="https://en.wikipedia.org/wiki/Inequality_(mathematics)";r.Msg.LOGIC_COMPARE_TOOLTIP_EQ="Return true if both inputs equal each other.";r.Msg.LOGIC_COMPARE_TOOLTIP_GT="Return true if the first input is greater than the second input.";r.Msg.LOGIC_COMPARE_TOOLTIP_GTE="Return true if the first input is greater than or equal to the second input.";r.Msg.LOGIC_COMPARE_TOOLTIP_LT="Return true if the first input is smaller than the second input.";r.Msg.LOGIC_COMPARE_TOOLTIP_LTE="Return true if the first input is smaller than or equal to the second input.";r.Msg.LOGIC_COMPARE_TOOLTIP_NEQ="Return true if both inputs are not equal to each other.";r.Msg.LOGIC_NEGATE_HELPURL="https://github.com/google/blockly/wiki/Logic#not";r.Msg.LOGIC_NEGATE_TITLE="Not %1";r.Msg.LOGIC_NEGATE_TOOLTIP="Returns true if the input is false. Returns false if the input is true.";r.Msg.LOGIC_NULL="None";r.Msg.LOGIC_NULL_HELPURL="https://en.wikipedia.org/wiki/Nullable_type";r.Msg.LOGIC_NULL_TOOLTIP="Returns the special None object.";r.Msg.LOGIC_OPERATION_AND="and";r.Msg.LOGIC_OPERATION_HELPURL="https://github.com/google/blockly/wiki/Logic#logical-operations";r.Msg.LOGIC_OPERATION_OR="or";r.Msg.LOGIC_OPERATION_TOOLTIP_AND="Return true if both inputs are true.";r.Msg.LOGIC_OPERATION_TOOLTIP_OR="Return true if at least one of the inputs is true.";r.Msg.LOGIC_TERNARY_CONDITION="Test";r.Msg.LOGIC_TERNARY_HELPURL="https://en.wikipedia.org/wiki/%3F:";r.Msg.LOGIC_TERNARY_IF_FALSE="If false";r.Msg.LOGIC_TERNARY_IF_TRUE="If true";r.Msg.LOGIC_TERNARY_TOOLTIP="Check the condition in 'test'. If the condition is true, returns the 'if true' value; otherwise returns the 'if false' value.";r.Msg.LOOP_FOREACH_ITEM="For each item";r.Msg.LOOP_FOREACH_LIST="In list";r.Msg.MATH_ADDITION_SYMBOL="+";r.Msg.MATH_ARITHMETIC_HELPURL="https://en.wikipedia.org/wiki/Arithmetic";r.Msg.MATH_ARITHMETIC_TOOLTIP_ADD="Return the sum of the two numbers.";r.Msg.MATH_ARITHMETIC_TOOLTIP_DIVIDE="Return the quotient of the two numbers.";r.Msg.MATH_ARITHMETIC_TOOLTIP_MINUS="Return the difference of the two numbers.";r.Msg.MATH_ARITHMETIC_TOOLTIP_MULTIPLY="Return the product of the two numbers.";r.Msg.MATH_ARITHMETIC_TOOLTIP_POWER="Return the first number raised to the power of the second number.";r.Msg.MATH_CHANGE_HELPURL="https://en.wikipedia.org/wiki/Programming_idiom#Incrementing_a_counter";r.Msg.MATH_CHANGE_TITLE="Change %1 by %2";r.Msg.MATH_CHANGE_TOOLTIP="Add a number to property '%1'.";r.Msg.MATH_CONSTANT_HELPURL="https://en.wikipedia.org/wiki/Mathematical_constant";r.Msg.MATH_CONSTANT_TOOLTIP="Return one of the common constants: π (3.141…), e (2.718…), φ (1.618…), sqrt(2) (1.414…), sqrt(½) (0.707…), or ∞ (infinity).";r.Msg.MATH_CONSTRAIN_HELPURL="https://en.wikipedia.org/wiki/Clamping_%28graphics%29";r.Msg.MATH_CONSTRAIN_TITLE="Constrain %1 low %2 high %3";r.Msg.MATH_CONSTRAIN_TOOLTIP="Constrain a number to be between the specified limits (inclusive).";r.Msg.MATH_DIVISION_SYMBOL="÷";r.Msg.MATH_IS_DIVISIBLE_BY="Is divisible by";r.Msg.MATH_IS_EVEN="Is even";r.Msg.MATH_IS_NEGATIVE="Is negative";r.Msg.MATH_IS_ODD="Is odd";r.Msg.MATH_IS_POSITIVE="Is positive";r.Msg.MATH_IS_PRIME="Is prime";r.Msg.MATH_IS_TOOLTIP="Check if a number is an even, odd, prime, whole, positive, negative, or if it is divisible by certain number. Returns true or false.";r.Msg.MATH_IS_WHOLE="Is whole";r.Msg.MATH_MODULO_HELPURL="https://en.wikipedia.org/wiki/Modulo_operation";r.Msg.MATH_MODULO_TITLE="Remainder of %1 ÷ %2";r.Msg.MATH_MODULO_TOOLTIP="Return the remainder from dividing the two numbers.";r.Msg.MATH_MULTIPLICATION_SYMBOL="×";r.Msg.MATH_NUMBER_HELPURL="https://en.wikipedia.org/wiki/Number";r.Msg.MATH_NUMBER_TOOLTIP="A number.";r.Msg.MATH_ONLIST_HELPURL="";r.Msg.MATH_ONLIST_OPERATOR_AVERAGE="Average of list";r.Msg.MATH_ONLIST_OPERATOR_MAX="Max of list";r.Msg.MATH_ONLIST_OPERATOR_MEDIAN="Median of list";r.Msg.MATH_ONLIST_OPERATOR_MIN="Min of list";r.Msg.MATH_ONLIST_OPERATOR_MODE="Modes of list";r.Msg.MATH_ONLIST_OPERATOR_RANDOM="Random item of list";r.Msg.MATH_ONLIST_OPERATOR_STD_DEV="Standard deviation of list";r.Msg.MATH_ONLIST_OPERATOR_SUM="Sum of list";r.Msg.MATH_ONLIST_TOOLTIP_AVERAGE="Return the average (arithmetic mean) of the numeric values in the list.";r.Msg.MATH_ONLIST_TOOLTIP_MAX="Return the largest number in the list.";r.Msg.MATH_ONLIST_TOOLTIP_MEDIAN="Return the median number in the list.";r.Msg.MATH_ONLIST_TOOLTIP_MIN="Return the smallest number in the list.";r.Msg.MATH_ONLIST_TOOLTIP_MODE="Return a list of the most common item(s) in the list.";r.Msg.MATH_ONLIST_TOOLTIP_RANDOM="Return a random element from the list.";r.Msg.MATH_ONLIST_TOOLTIP_STD_DEV="Return the standard deviation of the list.";r.Msg.MATH_ONLIST_TOOLTIP_SUM="Return the sum of all the numbers in the list.";r.Msg.MATH_POWER_SYMBOL="^";r.Msg.MATH_RANDOM_FLOAT_HELPURL="https://en.wikipedia.org/wiki/Random_number_generation";r.Msg.MATH_RANDOM_FLOAT_TITLE_RANDOM="Random fraction";r.Msg.MATH_RANDOM_FLOAT_TOOLTIP="Return a random fraction between 0.0 (inclusive) and 1.0 (exclusive).";r.Msg.MATH_RANDOM_INT_HELPURL="https://en.wikipedia.org/wiki/Random_number_generation";r.Msg.MATH_RANDOM_INT_TITLE="Random integer from %1 to %2";r.Msg.MATH_RANDOM_INT_TOOLTIP="Return a random integer between the two specified limits, inclusive.";r.Msg.MATH_ROUND_HELPURL="https://en.wikipedia.org/wiki/Rounding";r.Msg.MATH_ROUND_OPERATOR_ROUND="Round";r.Msg.MATH_ROUND_OPERATOR_ROUNDDOWN="Round down";r.Msg.MATH_ROUND_OPERATOR_ROUNDUP="Round up";r.Msg.MATH_ROUND_TOOLTIP="Round a number up or down.";r.Msg.MATH_SINGLE_HELPURL="https://en.wikipedia.org/wiki/Square_root";r.Msg.MATH_SINGLE_OP_ABSOLUTE="Absolute";r.Msg.MATH_SINGLE_OP_ROOT="Square root";r.Msg.MATH_SINGLE_TOOLTIP_ABS="Return the absolute value of a number.";r.Msg.MATH_SINGLE_TOOLTIP_EXP="Return e to the power of a number.";r.Msg.MATH_SINGLE_TOOLTIP_LN="Return the natural logarithm of a number.";r.Msg.MATH_SINGLE_TOOLTIP_LOG10="Return the base 10 logarithm of a number.";r.Msg.MATH_SINGLE_TOOLTIP_NEG="Return the negation of a number.";r.Msg.MATH_SINGLE_TOOLTIP_POW10="Return 10 to the power of a number.";r.Msg.MATH_SINGLE_TOOLTIP_ROOT="Return the square root of a number.";r.Msg.MATH_SUBTRACTION_SYMBOL="-";r.Msg.MATH_SUM="Sum";r.Msg.MATH_TRIG_ACOS="Acos";r.Msg.MATH_TRIG_ASIN="Asin";r.Msg.MATH_TRIG_ATAN="Atan";r.Msg.MATH_TRIG_COS="Cos";r.Msg.MATH_TRIG_HELPURL="https://en.wikipedia.org/wiki/Trigonometric_functions";r.Msg.MATH_TRIG_SIN="Sin";r.Msg.MATH_TRIG_TAN="Tan";r.Msg.MATH_TRIG_TOOLTIP_ACOS="Return the arccosine of a number.";r.Msg.MATH_TRIG_TOOLTIP_ASIN="Return the arcsine of a number.";r.Msg.MATH_TRIG_TOOLTIP_ATAN="Return the arctangent of a number.";r.Msg.MATH_TRIG_TOOLTIP_COS="Return the cosine of a degree (not radian).";r.Msg.MATH_TRIG_TOOLTIP_SIN="Return the sine of a degree (not radian).";r.Msg.MATH_TRIG_TOOLTIP_TAN="Return the tangent of a degree (not radian).";r.Msg.NEW_VARIABLE="Create property...";r.Msg.NEW_VARIABLE_TITLE="New property name:";r.Msg.ORDINAL_NUMBER_SUFFIX="blank";r.Msg.PLATFORM_IMPORT="Import platform";r.Msg.PROCEDURES_ALLOW_STATEMENTS="Allow statements";r.Msg.PROCEDURES_BEFORE_PARAMS="with:";r.Msg.PROCEDURES_CALLNORETURN_HELPURL="https://en.wikipedia.org/wiki/Procedure_%28computer_science%29";r.Msg.PROCEDURES_CALLNORETURN_TOOLTIP="Run the user-defined function '%1'.";r.Msg.PROCEDURES_CALLRETURN_HELPURL="https://en.wikipedia.org/wiki/Procedure_%28computer_science%29";r.Msg.PROCEDURES_CALLRETURN_TOOLTIP="Run the user-defined function '%1' and use its output.";r.Msg.PROCEDURES_CALL_BEFORE_PARAMS="with: ";r.Msg.PROCEDURES_CREATE_DO="Create '%1'";r.Msg.PROCEDURES_DEFNORETURN_COMMENT="Describe this function...";r.Msg.PROCEDURES_DEFNORETURN_DO="do";r.Msg.PROCEDURES_DEFNORETURN_HELPURL="https://en.wikipedia.org/wiki/Procedure_%28computer_science%29";r.Msg.PROCEDURES_DEFNORETURN_PROCEDURE="Function_name";r.Msg.PROCEDURES_DEFNORETURN_TITLE="Define";r.Msg.PROCEDURES_DEFNORETURN_TITLE_CALLBACK="Callback";r.Msg.PROCEDURES_DEFNORETURN_TOOLTIP="Creates a function with no output.";r.Msg.PROCEDURES_DEFRETURN_HELPURL="https://en.wikipedia.org/wiki/Procedure_%28computer_science%29";r.Msg.PROCEDURES_DEFRETURN_RETURN="Return";r.Msg.PROCEDURES_DEFRETURN_TOOLTIP="Creates a function with an output.";r.Msg.PROCEDURES_DEF_DUPLICATE_WARNING="Warning: This function has duplicate parameters.";r.Msg.PROCEDURES_HIGHLIGHT_DEF="Highlight function definition";r.Msg.PROCEDURES_IFRETURN_HELPURL="http://c2.com/cgi/wiki?GuardClause";r.Msg.PROCEDURES_IFRETURN_TOOLTIP="If a value is true, then return a second value.";r.Msg.PROCEDURES_IFRETURN_WARNING="Warning: This block may be used only within a function definition.";r.Msg.PROCEDURES_MAINFUNCTION="Define Main function";r.Msg.PROCEDURES_MUTATORARG_TITLE="Parameter name:";r.Msg.PROCEDURES_MUTATORARG_TOOLTIP="Add a parameter to the function.";r.Msg.PROCEDURES_MUTATORCONTAINER_TITLE="Parameters";r.Msg.PROCEDURES_MUTATORCONTAINER_TOOLTIP="Add, remove, or reorder inputs to this function.";r.Msg.REDO="Redo";r.Msg.REMOVE_COMMENT="Remove Comment";r.Msg.RENAME_VARIABLE="Rename property...";r.Msg.RENAME_VARIABLE_TITLE="Rename all '%1' properties to:";r.Msg.REQUEST_DATA="Data";r.Msg.REQUEST_IMPORT="Import requests";r.Msg.REQUEST_POST_DATATYPE="Request Post Data: JSON";r.Msg.REQUEST_SET_URL="Set URL:";r.Msg.SYSTEM_EXIT="Sys.exit";r.Msg.SYSTEM_IMPORT="Import sys";r.Msg.TEXT_APPEND_APPENDTEXT="Append text";r.Msg.TEXT_APPEND_HELPURL="https://github.com/google/blockly/wiki/Text#text-modification";r.Msg.TEXT_APPEND_TO="to";r.Msg.TEXT_APPEND_TOOLTIP="Append some text to variable '%1'.";r.Msg.TEXT_CHANGECASE_HELPURL="https://github.com/google/blockly/wiki/Text#adjusting-text-case";r.Msg.TEXT_CHANGECASE_OPERATOR_LOWERCASE="To lower case";r.Msg.TEXT_CHANGECASE_OPERATOR_TITLECASE="To Title Case";r.Msg.TEXT_CHANGECASE_OPERATOR_UPPERCASE="To UPPER CASE";r.Msg.TEXT_CHANGECASE_TOOLTIP="Return a copy of the text in a different case.";r.Msg.TEXT_CHARAT_FIRST="Get first letter";r.Msg.TEXT_CHARAT_FROM_END="Get letter # from end";r.Msg.TEXT_CHARAT_FROM_START="Get letter #";r.Msg.TEXT_CHARAT_HELPURL="https://github.com/google/blockly/wiki/Text#extracting-text";r.Msg.TEXT_CHARAT_INPUT_INTEXT="In text";r.Msg.TEXT_CHARAT_LAST="Get last letter";r.Msg.TEXT_CHARAT_RANDOM="Get random letter";r.Msg.TEXT_CHARAT_TAIL="";r.Msg.TEXT_CHARAT_TOOLTIP="Returns the letter at the specified position.";r.Msg.TEXT_CREATE_JOIN_ITEM_TOOLTIP="Add an item to the text.";r.Msg.TEXT_CREATE_JOIN_TITLE_JOIN="Join";r.Msg.TEXT_CREATE_JOIN_TOOLTIP="Add, remove, or reorder sections to reconfigure this text block.";r.Msg.TEXT_GET_SUBSTRING_END_FROM_END="To letter # from end";r.Msg.TEXT_GET_SUBSTRING_END_FROM_START="To letter #";r.Msg.TEXT_GET_SUBSTRING_END_LAST="To last letter";r.Msg.TEXT_GET_SUBSTRING_HELPURL="https://github.com/google/blockly/wiki/Text#extracting-a-region-of-text";r.Msg.TEXT_GET_SUBSTRING_INPUT_IN_TEXT="In text";r.Msg.TEXT_GET_SUBSTRING_START_FIRST="Get substring from first letter";r.Msg.TEXT_GET_SUBSTRING_START_FROM_END="Get substring from letter # from end";r.Msg.TEXT_GET_SUBSTRING_START_FROM_START="Get substring from letter #";r.Msg.TEXT_GET_SUBSTRING_TAIL="";r.Msg.TEXT_GET_SUBSTRING_TOOLTIP="Returns a specified portion of the text.";r.Msg.TEXT_INDEXOF_HELPURL="https://github.com/google/blockly/wiki/Text#finding-text";r.Msg.TEXT_INDEXOF_INPUT_INTEXT="In text";r.Msg.TEXT_INDEXOF_OPERATOR_FIRST="Find first occurrence of text";r.Msg.TEXT_INDEXOF_OPERATOR_LAST="Find last occurrence of text";r.Msg.TEXT_INDEXOF_TAIL="blank";r.Msg.TEXT_INDEXOF_TOOLTIP="Returns the index of the first/last occurrence of the first text in the second text. Returns %1 if text is not found.";r.Msg.TEXT_ISEMPTY_HELPURL="https://github.com/google/blockly/wiki/Text#checking-for-empty-text";r.Msg.TEXT_ISEMPTY_TITLE="%1 is empty";r.Msg.TEXT_ISEMPTY_TOOLTIP="Returns true if the provided text is empty.";r.Msg.TEXT_JOIN_HELPURL="https://github.com/google/blockly/wiki/Text#text-creation";r.Msg.TEXT_JOIN_TITLE_CREATEWITH="Join strings";r.Msg.TEXT_JOIN_TOOLTIP="Create a piece of text by joining together any number of items.";r.Msg.TEXT_LENGTH_HELPURL="https://github.com/google/blockly/wiki/Text#text-modification";r.Msg.TEXT_LENGTH_TITLE="Length of %1";r.Msg.TEXT_LENGTH_TOOLTIP="Returns the number of letters (including spaces) in the provided text.";r.Msg.TEXT_LOWER="Set lower case";r.Msg.TEXT_PRINT_HELPURL="https://github.com/google/blockly/wiki/Text#printing-text";r.Msg.TEXT_PRINT_TITLE="Print %1";r.Msg.TEXT_PRINT_TITLE_PRINT="Print";r.Msg.TEXT_PRINT_TOOLTIP="Print the specified text, number, or other value.";r.Msg.TEXT_PROMPT_HELPURL="https://github.com/google/blockly/wiki/Text#getting-input-from-the-user";r.Msg.TEXT_PROMPT_TOOLTIP_NUMBER="Prompt for user for a number.";r.Msg.TEXT_PROMPT_TOOLTIP_TEXT="Prompt for user for some text.";r.Msg.TEXT_PROMPT_TYPE_NUMBER="prompt for number with message";r.Msg.TEXT_PROMPT_TYPE_TEXT="prompt for text with message";r.Msg.TEXT_TEXT_HELPURL="https://en.wikipedia.org/wiki/String_(computer_science)";r.Msg.TEXT_TEXT_TOOLTIP="A letter, word, or line of text.";r.Msg.TEXT_TRIM_HELPURL="https://github.com/google/blockly/wiki/Text#trimming-removing-spaces";r.Msg.TEXT_TRIM_OPERATOR_BOTH="Trim spaces from both sides of";r.Msg.TEXT_TRIM_OPERATOR_LEFT="Trim spaces from left side of";r.Msg.TEXT_TRIM_OPERATOR_RIGHT="Trim spaces from right side of";r.Msg.TEXT_TRIM_TOOLTIP="Return a copy of the text with spaces removed from one or both ends.";r.Msg.THREAD_IMPORT="Import threading";r.Msg.THREAD_SET_TARGET="Threading set target";r.Msg.THREAD_START="Start";r.Msg.THREAD_THREADING="Threading";r.Msg.TODAY="Today";r.Msg.TYPE_CHECK="type of";r.Msg.UNDO="Undo";r.Msg.VARIABLES_DEFAULT_NAME="Property_name";r.Msg.VARIABLES_GET_CREATE_SET="Create 'set %1'";r.Msg.VARIABLES_GET_HELPURL="https://github.com/google/blockly/wiki/Variables#get";r.Msg.VARIABLES_GET_SELF="Get self";r.Msg.VARIABLES_GET_TOOLTIP="Returns the value of this variable.";r.Msg.VARIABLES_SET="Set %1 = %2";r.Msg.VARIABLES_SET_CREATE_GET="Create '%1'";r.Msg.VARIABLES_SET_HELPURL="https://github.com/google/blockly/wiki/Variables#set";r.Msg.VARIABLES_SET_SELF="Set self";r.Msg.VARIABLES_SET_SELF_TO="To";r.Msg.VARIABLES_SET_TAIL="=";r.Msg.VARIABLES_SET_TITLE="Set";r.Msg.VARIABLES_SET_TOOLTIP="Sets this variable to be equal to the input.";r.Msg.VARIABLE_ALREADY_EXISTS="A property named '%1' already exists.";r.Msg.VISIONKIT_AIY_VISION_INFERENCE="AIY Vision Inference";r.Msg.VISIONKIT_ANNOTATOR="Annotator";r.Msg.VISIONKIT_ANNOTATOR_BOUNDING="Annotator Bounding Box";r.Msg.VISIONKIT_ANNOTATOR_FILL="Fill=";r.Msg.VISIONKIT_ANNOTATOR_SETTING="Set dimensions:";r.Msg.VISIONKIT_CAMERA_INFERENCE="Camera Inference as";r.Msg.VISIONKIT_CLOUDEVENT_API="Cloud Event API:";r.Msg.VISIONKIT_DO="Do";r.Msg.VISIONKIT_GETINFERENCE="Get Inference";r.Msg.VISIONKIT_GETMODEL_MODEL="model";r.Msg.VISIONKIT_GETMODEL_Of="of";r.Msg.VISIONKIT_IMPORT="from";r.Msg.VISIONKIT_IMPORT_ANNOTATOR="Annotator import";r.Msg.VISIONKIT_IMPORT_INFERENCE="Inference import";r.Msg.VISIONKIT_IMPORT_MODELS="Models import";r.Msg.VISIONKIT_JOY_DETECT="Detect Joy Score and stored it to Core Cloud";r.Msg.VISIONKIT_MODEL="Model";r.Msg.VISIONKIT_RUN_INFERENCE="Run inference";r.Msg.VISIONKIT_SETUP="Google AIY Vision Kit Setup";r.Msg.VISIONKIT_USE_MODEL="Use model";r.Msg.VOICEKIT_ASSISTANT="Assistant";r.Msg.VOICEKIT_DEMO_1="Command Control Demo";r.Msg.VOICEKIT_DEMO_2="Via Google Assistant";r.Msg.VOICEKIT_EVENTTYPE_ASSISTANT="Assistant Event Type:";r.Msg.VOICEKIT_EVENTTYPE_IMPORT="Import EventType";r.Msg.VOICEKIT_EVENT_ARGS="Event args";r.Msg.VOICEKIT_EVENT_OF="of";r.Msg.VOICEKIT_EVENT_TYPE_OF="Event type of";r.Msg.VOICEKIT_FROM="From";r.Msg.VOICEKIT_GET_CREDENTIAL="Get Assistant Credential";r.Msg.VOICEKIT_IMPORT_ASSISTANT="Import Assistant";r.Msg.VOICEKIT_IMPORT_AUTH="Import auth_helpers";r.Msg.VOICEKIT_IMPORT_TTS="Import TTS";r.Msg.VOICEKIT_IMPORT_TTS_SAY="Aiy.voice.tts.say";r.Msg.VOICEKIT_SETUP="Google AIY Voice Kit Setup";r.Msg.VOICEKIT_SET_CREDENTIAL="Set credential for Assistant";r.Msg.VOICEKIT_SET_DO="Do";r.Msg.VOICEKIT_SET_FROM="From";r.Msg.PROCEDURES_DEFRETURN_TITLE=r.Msg.PROCEDURES_DEFNORETURN_TITLE;r.Msg.CONTROLS_IF_IF_TITLE_IF=r.Msg.CONTROLS_IF_MSG_IF;r.Msg.CONTROLS_WHILEUNTIL_INPUT_DO=r.Msg.CONTROLS_REPEAT_INPUT_DO;r.Msg.CONTROLS_IF_MSG_THEN=r.Msg.CONTROLS_REPEAT_INPUT_DO;r.Msg.CONTROLS_IF_ELSE_TITLE_ELSE=r.Msg.CONTROLS_IF_MSG_ELSE;r.Msg.PROCEDURES_DEFRETURN_PROCEDURE=r.Msg.PROCEDURES_DEFNORETURN_PROCEDURE;r.Msg.LISTS_GET_SUBLIST_INPUT_IN_LIST=r.Msg.LISTS_INLIST;r.Msg.LISTS_GET_INDEX_INPUT_IN_LIST=r.Msg.LISTS_INLIST;r.Msg.MATH_CHANGE_TITLE_ITEM=r.Msg.VARIABLES_DEFAULT_NAME;r.Msg.VARIABLES_SET_ITEM=r.Msg.VARIABLES_DEFAULT_NAME;r.Msg.PROCEDURES_DEFRETURN_DO=r.Msg.PROCEDURES_DEFNORETURN_DO;r.Msg.CONTROLS_IF_ELSEIF_TITLE_ELSEIF=r.Msg.CONTROLS_IF_MSG_ELSEIF;r.Msg.LISTS_GET_INDEX_HELPURL=r.Msg.LISTS_INDEX_OF_HELPURL;r.Msg.CONTROLS_FOREACH_INPUT_DO=r.Msg.CONTROLS_REPEAT_INPUT_DO;r.Msg.LISTS_SET_INDEX_INPUT_IN_LIST=r.Msg.LISTS_INLIST;r.Msg.CONTROLS_FOR_INPUT_DO=r.Msg.CONTROLS_REPEAT_INPUT_DO;r.Msg.LISTS_CREATE_WITH_ITEM_TITLE=r.Msg.VARIABLES_DEFAULT_NAME;r.Msg.TEXT_APPEND_VARIABLE=r.Msg.VARIABLES_DEFAULT_NAME;r.Msg.TEXT_CREATE_JOIN_ITEM_TITLE_ITEM=r.Msg.VARIABLES_DEFAULT_NAME;r.Msg.LISTS_INDEX_OF_INPUT_IN_LIST=r.Msg.LISTS_INLIST;r.Msg.PROCEDURES_DEFRETURN_COMMENT=r.Msg.PROCEDURES_DEFNORETURN_COMMENT;r.Msg.CONTROL_FOREVER="forever";r.Msg.CONTROL_REPEAT="repeat %1";r.Msg.CONTROL_IF="if %1 then";r.Msg.CONTROL_ELSE="else";r.Msg.CONTROL_STOP="stop";r.Msg.CONTROL_STOP_ALL="all";r.Msg.CONTROL_STOP_THIS="this script";r.Msg.CONTROL_STOP_OTHER="other scripts in sprite";r.Msg.CONTROL_WAIT="wait %1 seconds";r.Msg.CONTROL_WAITUNTIL="wait until %1";r.Msg.CONTROL_REPEATUNTIL="repeat until %1";r.Msg.CONTROL_WHILE="while %1";r.Msg.CONTROL_FOREACH="for each %1 in %2";r.Msg.CONTROL_STARTASCLONE="when I start as a clone";r.Msg.CONTROL_CREATECLONEOF="create clone of %1";r.Msg.CONTROL_CREATECLONEOF_MYSELF="myself";r.Msg.CONTROL_DELETETHISCLONE="delete this clone";r.Msg.CONTROL_COUNTER="counter";r.Msg.CONTROL_INCRCOUNTER="increment counter";r.Msg.CONTROL_CLEARCOUNTER="clear counter";r.Msg.CONTROL_ALLATONCE="all at once";r.Msg.DATA_SETVARIABLETO="set %1 to %2";r.Msg.DATA_CHANGEVARIABLEBY="change %1 by %2";r.Msg.DATA_SHOWVARIABLE="show variable %1";r.Msg.DATA_HIDEVARIABLE="hide variable %1";r.Msg.DATA_ADDTOLIST="add %1 to %2";r.Msg.DATA_DELETEOFLIST="delete %1 of %2";r.Msg.DATA_DELETEALLOFLIST="delete all of %1";r.Msg.DATA_INSERTATLIST="insert %1 at %2 of %3";r.Msg.DATA_REPLACEITEMOFLIST="replace item %1 of %2 with %3";r.Msg.DATA_ITEMOFLIST="item %1 of %2";r.Msg.DATA_ITEMNUMOFLIST="item # of %1 in %2";r.Msg.DATA_LENGTHOFLIST="length of %1";r.Msg.DATA_LISTCONTAINSITEM="%1 contains %2?";r.Msg.DATA_SHOWLIST="show list %1";r.Msg.DATA_HIDELIST="hide list %1";r.Msg.DATA_INDEX_ALL="all";r.Msg.DATA_INDEX_LAST="last";r.Msg.DATA_INDEX_RANDOM="random";r.Msg.EVENT_WHENFLAGCLICKED="when %1 clicked";r.Msg.EVENT_WHENTHISSPRITECLICKED="when this sprite clicked";r.Msg.EVENT_WHENSTAGECLICKED="when stage clicked";r.Msg.EVENT_WHENTOUCHINGOBJECT="when this sprite touches %1";r.Msg.EVENT_WHENBROADCASTRECEIVED="when I receive %1";r.Msg.EVENT_WHENBACKDROPSWITCHESTO="when backdrop switches to %1";r.Msg.EVENT_WHENGREATERTHAN="when %1 > %2";r.Msg.EVENT_WHENGREATERTHAN_TIMER="timer";r.Msg.EVENT_WHENGREATERTHAN_LOUDNESS="loudness";r.Msg.EVENT_BROADCAST="broadcast %1";r.Msg.EVENT_BROADCASTANDWAIT="broadcast %1 and wait";r.Msg.EVENT_WHENKEYPRESSED="when %1 key pressed";r.Msg.EVENT_WHENKEYPRESSED_SPACE="space";r.Msg.EVENT_WHENKEYPRESSED_LEFT="left arrow";r.Msg.EVENT_WHENKEYPRESSED_RIGHT="right arrow";r.Msg.EVENT_WHENKEYPRESSED_DOWN="down arrow";r.Msg.EVENT_WHENKEYPRESSED_UP="up arrow";r.Msg.EVENT_WHENKEYPRESSED_ANY="any";r.Msg.LOOKS_SAYFORSECS="say %1 for %2 seconds";r.Msg.LOOKS_SAY="say %1";r.Msg.LOOKS_HELLO="Hello!";r.Msg.LOOKS_THINKFORSECS="think %1 for %2 seconds";r.Msg.LOOKS_THINK="think %1";r.Msg.LOOKS_HMM="Hmm...";r.Msg.LOOKS_SHOW="show";r.Msg.LOOKS_HIDE="hide";r.Msg.LOOKS_HIDEALLSPRITES="hide all sprites";r.Msg.LOOKS_EFFECT_COLOR="color";r.Msg.LOOKS_EFFECT_FISHEYE="fisheye";r.Msg.LOOKS_EFFECT_WHIRL="whirl";r.Msg.LOOKS_EFFECT_PIXELATE="pixelate";r.Msg.LOOKS_EFFECT_MOSAIC="mosaic";r.Msg.LOOKS_EFFECT_BRIGHTNESS="brightness";r.Msg.LOOKS_EFFECT_GHOST="ghost";r.Msg.LOOKS_CHANGEEFFECTBY="change %1 effect by %2";r.Msg.LOOKS_SETEFFECTTO="set %1 effect to %2";r.Msg.LOOKS_CLEARGRAPHICEFFECTS="clear graphic effects";r.Msg.LOOKS_CHANGESIZEBY="change size by %1";r.Msg.LOOKS_SETSIZETO="set size to %1 %";r.Msg.LOOKS_SIZE="size";r.Msg.LOOKS_CHANGESTRETCHBY="change stretch by %1";r.Msg.LOOKS_SETSTRETCHTO="set stretch to %1 %";r.Msg.LOOKS_SWITCHCOSTUMETO="switch costume to %1";r.Msg.LOOKS_NEXTCOSTUME="next costume";r.Msg.LOOKS_SWITCHBACKDROPTO="switch backdrop to %1";r.Msg.LOOKS_GOTOFRONTBACK="go to %1 layer";r.Msg.LOOKS_GOTOFRONTBACK_FRONT="front";r.Msg.LOOKS_GOTOFRONTBACK_BACK="back";r.Msg.LOOKS_GOFORWARDBACKWARDLAYERS="go %1 %2 layers";r.Msg.LOOKS_GOFORWARDBACKWARDLAYERS_FORWARD="forward";r.Msg.LOOKS_GOFORWARDBACKWARDLAYERS_BACKWARD="backward";r.Msg.LOOKS_BACKDROPNUMBERNAME="backdrop %1";r.Msg.LOOKS_COSTUMENUMBERNAME="costume %1";r.Msg.LOOKS_NUMBERNAME_NUMBER="number";r.Msg.LOOKS_NUMBERNAME_NAME="name";r.Msg.LOOKS_SWITCHBACKDROPTOANDWAIT="switch backdrop to %1 and wait";r.Msg.LOOKS_NEXTBACKDROP_BLOCK="next backdrop";r.Msg.LOOKS_NEXTBACKDROP="next backdrop";r.Msg.LOOKS_PREVIOUSBACKDROP="previous backdrop";r.Msg.LOOKS_RANDOMBACKDROP="random backdrop";r.Msg.MOTION_MOVESTEPS="move %1 steps";r.Msg.MOTION_TURNLEFT="turn %1 %2 degrees";r.Msg.MOTION_TURNRIGHT="turn %1 %2 degrees";r.Msg.MOTION_POINTINDIRECTION="point in direction %1";r.Msg.MOTION_POINTTOWARDS="point towards %1";r.Msg.MOTION_POINTTOWARDS_POINTER="mouse-pointer";r.Msg.MOTION_GOTO="go to %1";r.Msg.MOTION_GOTO_POINTER="mouse-pointer";r.Msg.MOTION_GOTO_RANDOM="random position";r.Msg.MOTION_GOTOXY="go to x: %1 y: %2";r.Msg.MOTION_GLIDESECSTOXY="glide %1 secs to x: %2 y: %3";r.Msg.MOTION_GLIDETO="glide %1 secs to %2";r.Msg.MOTION_GLIDETO_POINTER="mouse-pointer";r.Msg.MOTION_GLIDETO_RANDOM="random position";r.Msg.MOTION_CHANGEXBY="change x by %1";r.Msg.MOTION_SETX="set x to %1";r.Msg.MOTION_CHANGEYBY="change y by %1";r.Msg.MOTION_SETY="set y to %1";r.Msg.MOTION_IFONEDGEBOUNCE="if on edge, bounce";r.Msg.MOTION_SETROTATIONSTYLE="set rotation style %1";r.Msg.MOTION_SETROTATIONSTYLE_LEFTRIGHT="left-right";r.Msg.MOTION_SETROTATIONSTYLE_DONTROTATE="don't rotate";r.Msg.MOTION_SETROTATIONSTYLE_ALLAROUND="all around";r.Msg.MOTION_XPOSITION="x position";r.Msg.MOTION_YPOSITION="y position";r.Msg.MOTION_DIRECTION="direction";r.Msg.MOTION_SCROLLRIGHT="scroll right %1";r.Msg.MOTION_SCROLLUP="scroll up %1";r.Msg.MOTION_ALIGNSCENE="align scene %1";r.Msg.MOTION_ALIGNSCENE_BOTTOMLEFT="bottom-left";r.Msg.MOTION_ALIGNSCENE_BOTTOMRIGHT="bottom-right";r.Msg.MOTION_ALIGNSCENE_MIDDLE="middle";r.Msg.MOTION_ALIGNSCENE_TOPLEFT="top-left";r.Msg.MOTION_ALIGNSCENE_TOPRIGHT="top-right";r.Msg.MOTION_XSCROLL="x scroll";r.Msg.MOTION_YSCROLL="y scroll";r.Msg.MOTION_STAGE_SELECTED="Stage selected: no motion blocks";r.Msg.OPERATORS_ADD="%1 + %2";r.Msg.OPERATORS_SUBTRACT="%1 - %2";r.Msg.OPERATORS_MULTIPLY="%1 * %2";r.Msg.OPERATORS_DIVIDE="%1 / %2";r.Msg.OPERATORS_RANDOM="pick random %1 to %2";r.Msg.OPERATORS_GT="%1 > %2";r.Msg.OPERATORS_LT="%1 < %2";r.Msg.OPERATORS_EQUALS="%1 = %2";r.Msg.OPERATORS_AND="%1 and %2";r.Msg.OPERATORS_OR="%1 or %2";r.Msg.OPERATORS_NOT="not %1";r.Msg.OPERATORS_JOIN="join %1 %2";r.Msg.OPERATORS_JOIN_APPLE="apple";r.Msg.OPERATORS_JOIN_BANANA="banana";r.Msg.OPERATORS_LETTEROF="letter %1 of %2";r.Msg.OPERATORS_LETTEROF_APPLE="a";r.Msg.OPERATORS_LENGTH="length of %1";r.Msg.OPERATORS_CONTAINS="%1 contains %2?";r.Msg.OPERATORS_MOD="%1 mod %2";r.Msg.OPERATORS_ROUND="round %1";r.Msg.OPERATORS_MATHOP="%1 of %2";r.Msg.OPERATORS_MATHOP_ABS="abs";r.Msg.OPERATORS_MATHOP_FLOOR="floor";r.Msg.OPERATORS_MATHOP_CEILING="ceiling";r.Msg.OPERATORS_MATHOP_SQRT="sqrt";r.Msg.OPERATORS_MATHOP_SIN="sin";r.Msg.OPERATORS_MATHOP_COS="cos";r.Msg.OPERATORS_MATHOP_TAN="tan";r.Msg.OPERATORS_MATHOP_ASIN="asin";r.Msg.OPERATORS_MATHOP_ACOS="acos";r.Msg.OPERATORS_MATHOP_ATAN="atan";r.Msg.OPERATORS_MATHOP_LN="ln";r.Msg.OPERATORS_MATHOP_LOG="log";r.Msg.OPERATORS_MATHOP_EEXP="e ^";r.Msg.OPERATORS_MATHOP_10EXP="10 ^";r.Msg.PROCEDURES_DEFINITION="define %1";r.Msg.SENSING_TOUCHINGOBJECT="touching %1?";r.Msg.SENSING_TOUCHINGOBJECT_POINTER="mouse-pointer";r.Msg.SENSING_TOUCHINGOBJECT_EDGE="edge";r.Msg.SENSING_TOUCHINGCOLOR="touching color %1?";r.Msg.SENSING_COLORISTOUCHINGCOLOR="color %1 is touching %2?";r.Msg.SENSING_DISTANCETO="distance to %1";r.Msg.SENSING_DISTANCETO_POINTER="mouse-pointer";r.Msg.SENSING_ASKANDWAIT="ask %1 and wait";r.Msg.SENSING_ASK_TEXT="What's your name?";r.Msg.SENSING_ANSWER="answer";r.Msg.SENSING_KEYPRESSED="key %1 pressed?";r.Msg.SENSING_MOUSEDOWN="mouse down?";r.Msg.SENSING_MOUSEX="mouse x";r.Msg.SENSING_MOUSEY="mouse y";r.Msg.SENSING_SETDRAGMODE="set drag mode %1";r.Msg.SENSING_SETDRAGMODE_DRAGGABLE="draggable";r.Msg.SENSING_SETDRAGMODE_NOTDRAGGABLE="not draggable";r.Msg.SENSING_LOUDNESS="loudness";r.Msg.SENSING_LOUD="loud?";r.Msg.SENSING_TIMER="timer";r.Msg.SENSING_RESETTIMER="reset timer";r.Msg.SENSING_OF="%1 of %2";r.Msg.SENSING_OF_XPOSITION="x position";r.Msg.SENSING_OF_YPOSITION="y position";r.Msg.SENSING_OF_DIRECTION="direction";r.Msg.SENSING_OF_COSTUMENUMBER="costume #";r.Msg.SENSING_OF_COSTUMENAME="costume name";r.Msg.SENSING_OF_SIZE="size";r.Msg.SENSING_OF_VOLUME="volume";r.Msg.SENSING_OF_BACKDROPNUMBER="backdrop #";r.Msg.SENSING_OF_BACKDROPNAME="backdrop name";r.Msg.SENSING_OF_STAGE="Stage";r.Msg.SENSING_CURRENT="current %1";r.Msg.SENSING_CURRENT_YEAR="year";r.Msg.SENSING_CURRENT_MONTH="month";r.Msg.SENSING_CURRENT_DATE="date";r.Msg.SENSING_CURRENT_DAYOFWEEK="day of week";r.Msg.SENSING_CURRENT_HOUR="hour";r.Msg.SENSING_CURRENT_MINUTE="minute";r.Msg.SENSING_CURRENT_SECOND="second";r.Msg.SENSING_DAYSSINCE2000="days since 2000";r.Msg.SENSING_USERNAME="username";r.Msg.SENSING_USERID="user id";r.Msg.SOUND_PLAY="start sound %1";r.Msg.SOUND_PLAYUNTILDONE="play sound %1 until done";r.Msg.SOUND_STOPALLSOUNDS="stop all sounds";r.Msg.SOUND_SETEFFECTO="set %1 effect to %2";r.Msg.SOUND_CHANGEEFFECTBY="change %1 effect by %2";r.Msg.SOUND_CLEAREFFECTS="clear sound effects";r.Msg.SOUND_EFFECTS_PITCH="pitch";r.Msg.SOUND_EFFECTS_PAN="pan left/right";r.Msg.SOUND_CHANGEVOLUMEBY="change volume by %1";r.Msg.SOUND_SETVOLUMETO="set volume to %1%";r.Msg.SOUND_VOLUME="volume";r.Msg.SOUND_RECORD="record...";r.Msg.CATEGORY_MOTION="Motion";r.Msg.CATEGORY_LOOKS="Looks";r.Msg.CATEGORY_SOUND="Sound";r.Msg.CATEGORY_EVENTS="Events";r.Msg.CATEGORY_CONTROL="Control";r.Msg.CATEGORY_SENSING="Sensing";r.Msg.CATEGORY_OPERATORS="Operators";r.Msg.CATEGORY_VARIABLES="Variables";r.Msg.CATEGORY_MYBLOCKS="My Blocks";r.Msg.DUPLICATE="Duplicate";r.Msg.DUPLICATE_PASTE="Duplicate And Paste";r.Msg.DELETE="Delete blocks";r.Msg.ADD_COMMENT="Add Comment";r.Msg.REMOVE_COMMENT="Delete Comment";r.Msg.DELETE_BLOCK="Delete Block";r.Msg.DELETE_X_BLOCKS="Delete %1 Blocks";r.Msg.DELETE_ALL_BLOCKS="Delete all %1 blocks?";r.Msg.CLEAN_UP="Clean up Blocks";r.Msg.HELP="Help";r.Msg.UNDO="Undo";r.Msg.REDO="Redo";r.Msg.EDIT_PROCEDURE="Edit";r.Msg.SHOW_PROCEDURE_DEFINITION="Go to definition";r.Msg.WORKSPACE_COMMENT_DEFAULT_TEXT="Say something...";r.Msg.COLOUR_HUE_LABEL="Color";r.Msg.COLOUR_SATURATION_LABEL="Saturation";r.Msg.COLOUR_BRIGHTNESS_LABEL="Brightness";r.Msg.CHANGE_VALUE_TITLE="Change value:";r.Msg.RENAME_VARIABLE="Rename variable";r.Msg.RENAME_VARIABLE_TITLE='Rename all "%1" variables to:';r.Msg.RENAME_VARIABLE_MODAL_TITLE="Rename Variable";r.Msg.NEW_VARIABLE="Make a Variable";r.Msg.NEW_VARIABLE_TITLE="New variable name:";r.Msg.VARIABLE_MODAL_TITLE="New Variable";r.Msg.VARIABLE_ALREADY_EXISTS='A variable named "%1" already exists.';r.Msg.VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE='A variable named "%1" already exists for another variable of type "%2".';r.Msg.DELETE_VARIABLE_CONFIRMATION='Delete %1 uses of the "%2" variable?';r.Msg.CANNOT_DELETE_VARIABLE_PROCEDURE=`Can't delete the variable "%1" because it's part of the definition of the function "%2"`;r.Msg.DELETE_VARIABLE='Delete the "%1" variable';r.Msg.NEW_PROCEDURE="Make a Block";r.Msg.PROCEDURE_ALREADY_EXISTS='A procedure named "%1" already exists.';r.Msg.PROCEDURE_DEFAULT_NAME="block name";r.Msg.NEW_LIST="Make a List";r.Msg.NEW_LIST_TITLE="New list name:";r.Msg.LIST_MODAL_TITLE="New List";r.Msg.LIST_ALREADY_EXISTS='A list named "%1" already exists.';r.Msg.RENAME_LIST_TITLE='Rename all "%1" lists to:';r.Msg.RENAME_LIST_MODAL_TITLE="Rename List";r.Msg.DEFAULT_LIST_ITEM="thing";r.Msg.NEW_BROADCAST_MESSAGE="New message";r.Msg.NEW_BROADCAST_MESSAGE_TITLE="New message name:";r.Msg.BROADCAST_MODAL_TITLE="New Message";r.Msg.DEFAULT_BROADCAST_MESSAGE_NAME="message1";r.Msg.GROVEZERO_MINIWHEEL_SET_POWER="%1 %2 Chassis left motor %3 %,right motor %4 %";r.Msg.GROVEZERO_MINIWHEEL_STOP="%1 %2 Chassis stop";r.Msg.GROVEZERO_MINIWHEEL_RUN_VELOCITY_AZIMUTH="%1 %2 Chassis go %4 at %3 speed";r.Msg.GROVEZERO_MINIWHEEL_OPT1="low";r.Msg.GROVEZERO_MINIWHEEL_OPT2="medium";r.Msg.GROVEZERO_MINIWHEEL_OPT3="high";r.Msg.GROVEZERO_MINIWHEEL_OPT4="forward";r.Msg.GROVEZERO_MINIWHEEL_OPT5="backward";r.Msg.GROVEZERO_MINIWHEEL_OPT6="left";r.Msg.GROVEZERO_MINIWHEEL_OPT7="right";r.Msg.GROVEZERO_MINIWHEEL_OPT8="clockwise";r.Msg.GROVEZERO_MINIWHEEL_OPT9="counterclockwise";r.Msg.GROVEZERO_MOTOR_STOP="%1 %2 %3 DC Motor stop";r.Msg.GROVEZERO_DC_MOTOR_TRUN_POWER="%1 %2 %3 DC Motor rotate at power %4 %";r.Msg.GROVEZERO_SERVO_TURN_ANGLE="%1 %2 Servo move to %3 degree";r.Msg.GROVEZERO_RGB_TO_COLOR="%1 %2 red %3 green %4 blue %5";r.Msg.GROVEZERO_HSL_TO_COLOR="%1 %2 color %3 saturation %4 brightness %5";r.Msg.GROVEZERO_LED_MATRIX_XY_IS_ON="%1 %2 LED Matrix x:%3 y:%4 is ON?";r.Msg.GROVEZERO_LED_MATRIX_SHOW_SHAPE="%1 %2 LED Matrix show image %3";r.Msg.GROVEZERO_LED_MATRIX_SHOW_STRING="%1 %2 LED Matrix show string %3";r.Msg.GROVEZERO_LED_MATRIX_XY_SET_ON="%1 %2 LED Matrix turn on x: %3 y: %4";r.Msg.GROVEZERO_LED_MATRIX_XY_SET_OFF="%1 %2 LED Matrix turn off x: %3 y: %4";r.Msg.GROVEZERO_LED_MATRIX_CLEAN="%1 %2 LED Matrix clear screen";r.Msg.GROVEZERO_RGB_LED_SHOW_STYLE_COLOR="%1 %2 RGB LED always %3 %4";r.Msg.GROVEZERO_RGB_LED_SHOW_STYLE="%1 %2 RGB LED show %3";r.Msg.GROVEZERO_RGB_LED_FADE_FROM_COLOR1_TO_COLOR2="%1 %2 RGB LED fade from %3 to %4";r.Msg.GROVEZERO_RGB_LED_SET_BRIGHTNESS="%1 %2 RGB LED set brightness to %3 %";r.Msg.GROVEZERO_RGB_LED_LIGHT_OFF="%1 %2 RGB LED light off";r.Msg.GROVEZERO_RGB_LED_OPT1="show";r.Msg.GROVEZERO_RGB_LED_OPT2="blink";r.Msg.GROVEZERO_RGB_LED_OPT3="breath";r.Msg.GROVEZERO_RGB_LED_OPT4="rainbow";r.Msg.GROVEZERO_RGB_LED_OPT5="random color";r.Msg.GROVEZERO_RGB_MATRIX_SHOW_SHAPE="%1 %2 %3 RGB LED Matrix show image %4";r.Msg.GROVEZERO_RGB_MATRIX_SHOW_STRING="%1 %2 %3 RGB LED Matrix show string %4 %5";r.Msg.GROVEZERO_RGB_MATRIX_SHOW_ANIMA="%1 %2 %3 RGB LED Matrix show animation %4";r.Msg.GROVEZERO_RGB_MATRIX_SHOW_HISTOGRAM="%1 %2 %3 RGB LED Matrix plot bar graph of %4";r.Msg.GROVEZERO_RGB_MATRIX_XY_SET_ON="%1 %2 %3 RGB LED Matrix plot x:%4 y:%5 %6";r.Msg.GROVEZERO_RGB_MATRIX_XY_SET_OFF="%1 %2 %3 RGB LED Matrix unplot x:%4 y:%5";r.Msg.GROVEZERO_RGB_MATRIX_XY_SET_ON_OFF="%1 %2 %3 RGB LED Matrix toggle x:%4 y:%5 %6";r.Msg.GROVEZERO_RGB_MATRIX_XY_IS_ON="%1 %2 %3 RGB LED Matrix x:%4 y:%5 is ON?";r.Msg.GROVEZERO_RGB_MATRIX_CLEAN="%1 %2 %3 RGB LED Matrix clear screen";r.Msg.GROVEZERO_RGB_MATRIX_XY_GET_COLOR="%1 %2 %3 RGB LED Matrix x:%4 y:%5 color";r.Msg.GROVEZERO_RGB_MATRIX_ARGS_ANIMA_OPT1="wave";r.Msg.GROVEZERO_RGB_MATRIX_ARGS_ANIMA_OPT2="draw big square CW";r.Msg.GROVEZERO_RGB_MATRIX_ARGS_ANIMA_OPT3="draw small square CW";r.Msg.GROVEZERO_RGB_MATRIX_ARGS_ANIMA_OPT4="draw big square CCW";r.Msg.GROVEZERO_RGB_MATRIX_ARGS_ANIMA_OPT5="draw small square CCW";r.Msg.GROVEZERO_RGB_MATRIX_ARGS_ANIMA_OPT6="pattern";r.Msg.GROVEZERO_RGB_MATRIX_ARGS_ANIMA_OPT7="fire";r.Msg.GROVEZERO_RGB_MATRIX_ARGS_ANIMA_OPT8="walking";r.Msg.GROVEZERO_RGB_MATRIX_ARGS_ANIMA_OPT9="heartbreak";r.Msg.GROVEZERO_RGB_MATRIX_XY_SET_ON_OPT1="red";r.Msg.GROVEZERO_RGB_MATRIX_XY_SET_ON_OPT2="orange";r.Msg.GROVEZERO_RGB_MATRIX_XY_SET_ON_OPT3="yellow";r.Msg.GROVEZERO_RGB_MATRIX_XY_SET_ON_OPT4="green";r.Msg.GROVEZERO_RGB_MATRIX_XY_SET_ON_OPT5="cyan";r.Msg.GROVEZERO_RGB_MATRIX_XY_SET_ON_OPT6="blue";r.Msg.GROVEZERO_RGB_MATRIX_XY_SET_ON_OPT7="purple";r.Msg.GROVEZERO_RGB_MATRIX_XY_SET_ON_OPT8="pink";r.Msg.GROVEZERO_RGB_MATRIX_XY_SET_ON_OPT9="white";r.Msg.GROVEZERO_RGB_MATRIX_XY_SET_ON_OPT10="black";r.Msg.GROVEZERO_FOUR_DIGIT_WHEN_COUNTDOWN_END="%1 %2 When 4 Digit Display timer ends";r.Msg.GROVEZERO_FOUR_DIGIT_SHOW_NUMBER="%1 %2 4 Digit Display show %3";r.Msg.GROVEZERO_FOUR_DIGIT_START_COUNTDOWN="%1 %2 4 Digit Display set timer %3 seconds";r.Msg.GROVEZERO_FOUR_DIGIT_OFF="%1 %2 4 Digit Display OFF";r.Msg.GROVEZERO_FOUR_DIGIT_SET_BRIGHTNESS="%1 %2 4 Digit Display set brightness to %3 %";r.Msg.GROVEZERO_BUZZER_PLAY_MELODY="%1 %2 Buzzer play melody %3 once";r.Msg.GROVEZERO_BUZZER_PLAY_MELODY_OPT0="ba ding";r.Msg.GROVEZERO_BUZZER_PLAY_MELODY_OPT1="wawawawaa";r.Msg.GROVEZERO_BUZZER_PLAY_MELODY_OPT2="jump up";r.Msg.GROVEZERO_BUZZER_PLAY_MELODY_OPT3="jump down";r.Msg.GROVEZERO_BUZZER_PLAY_MELODY_OPT4="power up";r.Msg.GROVEZERO_BUZZER_PLAY_MELODY_OPT5="power down";r.Msg.GROVEZERO_BUZZER_PLAY_MELODY_OPT6="magic wand";r.Msg.GROVEZERO_BUZZER_PLAY_MELODY_OPT7="siren";r.Msg.GROVEZERO_BUZZER_MUTE_FOR_BEAT="%1 %2 Buzzer rest for %3 beat";r.Msg.GROVEZERO_BUZZER_SET_BPM="%1 %2 Buzzer set tempo (bpm) to %3";r.Msg.GROVEZERO_BUZZER_ADD_BPM="%1 %2 Buzzer change tempo (bpm) by %3";r.Msg.GROVEZERO_BUZZER_GET_BPM="%1 %2 Buzzer tempo (bpm)";r.Msg.GROVEZERO_BUZZER_STOP="%1 %2 Buzzer stop";r.Msg.GROVEZERO_BUZZER_PLAY_NOTE="%1 %2 Buzzer ring tone %3";r.Msg.GROVEZERO_BUZZER_PLAY_NOTE_FOR_BEAT="%1 %2 Buzzer play tone %3 for %4 beat";r.Msg.SOUND_BUZZER_NOTES_OPT0="Low C";r.Msg.SOUND_BUZZER_NOTES_OPT1="Low D";r.Msg.SOUND_BUZZER_NOTES_OPT2="Low E";r.Msg.SOUND_BUZZER_NOTES_OPT3="Low F";r.Msg.SOUND_BUZZER_NOTES_OPT4="Low G";r.Msg.SOUND_BUZZER_NOTES_OPT5="Low A";r.Msg.SOUND_BUZZER_NOTES_OPT6="Low B";r.Msg.SOUND_BUZZER_NOTES_OPT7="Middle C";r.Msg.SOUND_BUZZER_NOTES_OPT8="Middle D";r.Msg.SOUND_BUZZER_NOTES_OPT9="Middle E";r.Msg.SOUND_BUZZER_NOTES_OPT10="Middle F";r.Msg.SOUND_BUZZER_NOTES_OPT11="Middle G";r.Msg.SOUND_BUZZER_NOTES_OPT12="Middle A";r.Msg.SOUND_BUZZER_NOTES_OPT13="Middle B";r.Msg.SOUND_BUZZER_NOTES_OPT14="High C";r.Msg.SOUND_BUZZER_NOTES_OPT15="High D";r.Msg.SOUND_BUZZER_NOTES_OPT16="High E";r.Msg.SOUND_BUZZER_NOTES_OPT17="High F";r.Msg.SOUND_BUZZER_NOTES_OPT18="High G";r.Msg.SOUND_BUZZER_NOTES_OPT19="High A";r.Msg.SOUND_BUZZER_NOTES_OPT20="High B";r.Msg.SOUND_BUZZER_NOTES_OPT21="Low C#";r.Msg.SOUND_BUZZER_NOTES_OPT22="Low D#";r.Msg.SOUND_BUZZER_NOTES_OPT23="Low F#";r.Msg.SOUND_BUZZER_NOTES_OPT24="Low G#";r.Msg.SOUND_BUZZER_NOTES_OPT25="Low A#";r.Msg.SOUND_BUZZER_NOTES_OPT26="Middle C#";r.Msg.SOUND_BUZZER_NOTES_OPT27="Middle D#";r.Msg.SOUND_BUZZER_NOTES_OPT28="Middle F#";r.Msg.SOUND_BUZZER_NOTES_OPT29="Middle G#";r.Msg.SOUND_BUZZER_NOTES_OPT30="Middle A#";r.Msg.SOUND_BUZZER_NOTES_OPT31="High C#";r.Msg.SOUND_BUZZER_NOTES_OPT32="High D#";r.Msg.SOUND_BUZZER_NOTES_OPT33="High F#";r.Msg.SOUND_BUZZER_NOTES_OPT34="High G#";r.Msg.SOUND_BUZZER_NOTES_OPT35="High A#";r.Msg.GROVEZERO_MP3_START_PLAY="%1 %2 MP3 play soundtrack %3";r.Msg.GROVEZERO_MP3_PAUSE_OR_PLAY="%1 %2 MP3 %3";r.Msg.GROVEZERO_MP3_SWITCH="%1 %2 MP3 %3 soundtrack";r.Msg.GROVEZERO_MP3_ADD_VOLUME="%1 %2 MP3 change volume by %3 %";r.Msg.GROVEZERO_MP3_SET_VOLUME="%1 %2 MP3 set volume to %3 %";r.Msg.GROVEZERO_MP3_STOP_PLAY="%1 %2 MP3 stop";r.Msg.GROVEZERO_MP3_PLAY_MODE="%1 %2 MP3 set play mode %3";r.Msg.GROVEZERO_MP3_PAUSE_OR_PLAY_OPT0="pause";r.Msg.GROVEZERO_MP3_PAUSE_OR_PLAY_OPT1="resume";r.Msg.GROVEZERO_MP3_SWITCH_OPT0="next";r.Msg.GROVEZERO_MP3_SWITCH_OPT1="previous";r.Msg.GROVEZERO_MP3_PLAY_MODE_OPT0="normal";r.Msg.GROVEZERO_MP3_PLAY_MODE_OPT1="shuffle";r.Msg.GROVEZERO_MP3_PLAY_MODE_OPT2="repeat";r.Msg.GROVEZERO_MAINBOARD_START="%1 %2 When start";r.Msg.GROVEZERO_MAINBOARD_WHEN_ARRIVAL_TIME="%1 %2 When timer > %3 seconds";r.Msg.GROVEZERO_MAINBOARD_WHEN_RADIO_RECEIVE="%1 %2 When radio receive %3";r.Msg.GROVEZERO_MAINBOARD_BROADCAST="%1 %2 broadcast %3";r.Msg.GROVEZERO_MAINBOARD_STOP_BROADCAST="%1 %2 stop broadcasting";r.Msg.GROVEZERO_MAINBOARD_SET_BROADCAST_CHANNEL="%1 %2 Set radio group to %3";r.Msg.GROVEZERO_TWIN_BUTTON_WHEN_CLICK="%1 %2 When %3 Twin Button %4 %5";r.Msg.GROVEZERO_TWIN_BUTTON_IS_PRESSED="%1 %2 %3 Twin Button %4 is pressed?";r.Msg.GROVEZERO_TWIN_BUTTON_WHEN_CLICK_OPT3="clicked";r.Msg.GROVEZERO_TWIN_BUTTON_WHEN_CLICK_OPT5="held";r.Msg.GROVEZERO_IMU9_DOF_STATUS_WHEN_CHANGE="%1 %2 When 9-axis Motion Sensor %3";r.Msg.GROVEZERO_IMU9_DOF_STATUS_OPT0="straight down";r.Msg.GROVEZERO_IMU9_DOF_STATUS_OPT1="straight up";r.Msg.GROVEZERO_IMU9_DOF_STATUS_OPT2="tilt left";r.Msg.GROVEZERO_IMU9_DOF_STATUS_OPT3="tilt right";r.Msg.GROVEZERO_IMU9_DOF_STATUS_OPT4="face up";r.Msg.GROVEZERO_IMU9_DOF_STATUS_OPT5="face down";r.Msg.GROVEZERO_IMU9_DOF_STATUS_OPT6="shake";r.Msg.GROVEZERO_IMU9_DOF_STATUS_OPT7="free fall";r.Msg.GROVEZERO_IMU9_DOF_STATUS_IS="%1 %2 9-axis Motion Sensor %3 ?";r.Msg.GROVEZERO_IMU9_DOF_GET_VALUE="%1 %2 9-axis Motion Sensor Acceleration(mg) of %3";r.Msg.GROVEZERO_PIR_MOTION_SENSOR_DETECT_SOMEONE="%1 %2 When PIR Motion Sensor detect someone";r.Msg.GROVEZERO_MECH_KEY_WHENCLICK="%1 %2 When %3 Mech Key %4";r.Msg.GROVEZERO_MECH_KEY_WHENCLICK_OPT0="clicked";r.Msg.GROVEZERO_MECH_KEY_WHENCLICK_OPT1="held";r.Msg.GROVEZERO_MECH_KEY_IS_PRESSED="%1 %2 %3 Mech Key is pressed? ";r.Msg.GROVEZERO_MECH_KEY_SET_RGB="%1 %2 %3 Mech Key backlit show %4";r.Msg.GROVEZERO_MECH_KEY_CLOSE_RGB="%1 %2 %3 Mech Key backlit off";r.Msg.GROVEZERO_KNOB_WHEN_CHANGE="%1 %2 When %3 Knob %4";r.Msg.GROVEZERO_KNOB_WHEN_CHANGE_OPT0="rotated clockwise";r.Msg.GROVEZERO_KNOB_WHEN_CHANGE_OPT1="rotated counter clockwise";r.Msg.GROVEZERO_KNOB_WHEN_CHANGE_OPT2="pressed";r.Msg.GROVEZERO_GESTURE_SENSOR_WHEN_CHANGE="%1 %2 When Gesture Sensor detect %3 ";r.Msg.GROVEZERO_GESTURE_SENSOR_WHEN_CHANGE_OPT0="swipe left";r.Msg.GROVEZERO_GESTURE_SENSOR_WHEN_CHANGE_OPT1="swipe right";r.Msg.GROVEZERO_GESTURE_SENSOR_WHEN_CHANGE_OPT2="swipe up";r.Msg.GROVEZERO_GESTURE_SENSOR_WHEN_CHANGE_OPT3="swipe down";r.Msg.GROVEZERO_GESTURE_SENSOR_WHEN_CHANGE_OPT4="approaching object";r.Msg.GROVEZERO_GESTURE_SENSOR_WHEN_CHANGE_OPT5="departing object";r.Msg.GROVEZERO_GESTURE_SENSOR_WHEN_CHANGE_OPT6="circle-clockwise";r.Msg.GROVEZERO_GESTURE_SENSOR_WHEN_CHANGE_OPT7="circle-counter clockwise";r.Msg.GROVEZERO_GESTURE_SENSOR_WHEN_CHANGE_OPT8="finger waving";r.Msg.GROVEZERO_TOUCHPAD_IS_PRESSED="%1 %2 %3 Touchpad pin %4 is pressed?";r.Msg.GROVEZERO_TOUCHPAD_WHEN_CLICK="%1 %2 When %3 Touchpad pin %4 is pressed";r.Msg.GROVEZERO_LIGHT_SENSOR_GET_VALUE="%1 %2 Light Sensor light level(lux)";r.Msg.GROVEZERO_SOUND_SENSOR_GET_VALUE="%1 %2 Sound Sensor sound level";r.Msg.GROVEZERO_TEMPERATURESENSOR_GET_VALUE="%1 %2 Temperature Sensor temperature in %3";r.Msg.GROVEZERO_TEMPERATURESENSOR_GET_VALUE_OPT0="℃";r.Msg.GROVEZERO_TEMPERATURESENSOR_GET_VALUE_OPT1="℉";r.Msg.GROVEZERO_SLIDER_GET_VALUE="%1 %2 %3 Slider value";r.Msg.GROVEZERO_ULTRASONIC_SENSOR_GET_VALUE="%1 %2 Ultrasonic Sensor distance(cm)";r.Msg.GROVEZERO_TEMHUM_SENSOR_GET_TEM_VALUE="%1 %2 Temperature & Humidity Sensor temperature %3";r.Msg.GROVEZERO_TEMHUM_SENSOR_GET_HUM_VALUE="%1 %2 Temperature & Humidity Sensor humidity(%)";r.Msg.GROVEZERO_COLOR_LINE_FOLLOWER_GET_COLOR="%1 %2 Color Line Follower color value";r.Msg.GROVEZERO_COLOR_LINE_FOLLOWER_IS_POSITION="%1 %2 Color Line Follower line position %3";r.Msg.GROVEZERO_COLOR_LINE_FOLLOWER_IS_POSITiON_OPT0="middle";r.Msg.GROVEZERO_COLOR_LINE_FOLLOWER_IS_POSITiON_OPT1="right";r.Msg.GROVEZERO_COLOR_LINE_FOLLOWER_IS_POSITiON_OPT2="right-most";r.Msg.GROVEZERO_COLOR_LINE_FOLLOWER_IS_POSITiON_OPT3="left";r.Msg.GROVEZERO_COLOR_LINE_FOLLOWER_IS_POSITiON_OPT4="left-most";r.Msg.GROVEZERO_COLOR_LINE_FOLLOWER_IS_POSITiON_OPT5="lost";r.Msg.GROVEZERO_COLOR_LINE_FOLLOWER_IS_COLOR="%1 %2 Color Line Follower is seeing %3";r.Msg.GROVEZERO_COLOR_LINE_FOLLOWER_IS_COLOR_OPT0="red";r.Msg.GROVEZERO_COLOR_LINE_FOLLOWER_IS_COLOR_OPT1="green";r.Msg.GROVEZERO_COLOR_LINE_FOLLOWER_IS_COLOR_OPT2="blue";r.Msg.GROVEZERO_COLOR_LINE_FOLLOWER_IS_COLOR_OPT3="black";r.Msg.GROVEZERO_COLOR_LINE_FOLLOWER_IS_COLOR_OPT4="other";r.Msg.ARDUINO_SEEED_SERVO_MOVE="%1 %2 Servo Pin %3 Degree(0-180) %4 Delay(ms) %5";r.Msg.ARDUINO_SEEED_SERVO_READ_DEGREES="%1 %2 Servo Pin %3 Read Degrees";r.Msg.ARDUINO_SEEED_LED="%1 %2 LED Pin %3 stat %4";r.Msg.ARDUINO_SEEED_BUZZER="%1 %2 Buzzer Pin %3 stat %4";r.Msg.ARDUINO_SEEED_RELAY="%1 %2 Relay Pin %3 stat %4";r.Msg.ARDUINO_SEEED_BTN="%1 %2 Button PIN# %3 is pressed";r.Msg.ARDUINO_SEEED_TILT="%1 %2 Tilt Pin %3";r.Msg.ARDUINO_SEEED_TOUCH="%1 %2 Touch Pin %3";r.Msg.ARDUINO_SEEED_ROTATION="%1 %2 Rotation Pin %3";r.Msg.ARDUINO_SEEED_SOUND="%1 %2 Sound Pin %3";r.Msg.ARDUINO_SEEED_LIGHT="%1 %2 Light Pin %3";r.Msg.ARDUINO_SEEED_TEMPERATURE="%1 %2 Temperature Pin %3";r.Msg.ARDUINO_GROVE_SERIAL_LCD_PRINT="%1 %2 LCD RGB Backlight print line1 %3 print line2 %4";r.Msg.ARDUINO_GROVE_SERIAL_LCD_PRINT2="%1 %2 LCD RGB Backlight row %3 column %4 print %5";r.Msg.ARDUINO_GROVE_SERIAL_LCD_POWER="%1 %2 LCD RGB Backlight %3";r.Msg.ARDUINO_GROVE_SERIAL_LCD_POWER_OPT1="On";r.Msg.ARDUINO_GROVE_SERIAL_LCD_POWER_OPT2="Off";r.Msg.ARDUINO_GROVE_SERIAL_LCD_POWER_OPT3="Cursor";r.Msg.ARDUINO_GROVE_SERIAL_LCD_POWER_OPT4="No Cursor";r.Msg.ARDUINO_GROVE_SERIAL_LCD_POWER_OPT5="Blink";r.Msg.ARDUINO_GROVE_SERIAL_LCD_POWER_OPT6="No Blink";r.Msg.ARDUINO_GROVE_SERIAL_LCD_POWER_OPT7="Clear";r.Msg.ARDUINO_GROVE_SERIAL_LCD_SETRGB="%1 %2 LCD RGB setColor R %3 G %4 B %5";r.Msg.ARDUINO_SEEED_TEMPERATURE_HUMIDITY="%1 %2 Temperature&Humidity PIN %3 %4";r.Msg.ARDUINO_SEEED_TEMPERATURE_HUMIDITY_OPT1="temperature";r.Msg.ARDUINO_SEEED_TEMPERATURE_HUMIDITY_OPT2="humidity";r.Msg.ARDUINO_SEEED_THUMB_JOYSTICK="%1 %2 Thumb Joystick PIN %3 %4";r.Msg.ARDUINO_SEEED_ULT="%1 %2 Ultrasonic Ranger distance(cm) PIN# %3";r.Msg.ARDUINO_SEEED_LINE_FINDER="%1 %2 IR Distance Interrupter %3";r.Msg.ARDUINO_SEEED_LINE_FINDER_R="%1 %2 Line Finder PIN %3";r.Msg.ARDUINO_SEEED_WATER="%1 %2 Water PIN %3";r.Msg.ARDUINO_SEEED_MAGNETIC_SWITCH="%1 %2 Magnetic Switch PIN %3";r.Msg.ARDUINO_SEEED_PIR_MOTION="%1 %2 PIR Motion PIN %3";r.Msg.ARDUINO_SEEED_FLAME="%1 %2 Flame PIN %3";r.Msg.ARDUINO_SEEED_COLLISION="%1 %2 Collision PIN %3";r.Msg.ARDUINO_SEEED_HALL="%1 %2 Hall PIN %3";r.Msg.ARDUINO_SEEED_SLIDE_POT="%1 %2 Slide Potentionmeter PIN %3";r.Msg.ARDUINO_SEEED_MOISTURE="%1 %2 Moisture PIN %3";r.Msg.ARDUINO_SEEED_4DIGIT_DISPLAY="%1 %2 4 Digit Display PIN %3 show %4";r.Msg.ARDUINO_SEEED_RGB_LED="%1 %2 Chainable RGB LED PIN %3 show %4 count %5";r.Msg.ARDUINO_SEEED_RGB_LED1="%1 %2 Chainable RGB LED PIN %3 show R %4 G %5 B %6 count %7";r.Msg.ARDUINO_SEEED_RGB_LED10="%1 %2 Chainable RGB LED PIN# %3 show %4";r.Msg.ARDUINO_SEEED_RGB_LED11="%1 %2 Chainable RGB LED PIN# %3 show R %4 G %5 B %6";r.Msg.ARDUINO_SEEED_SPEAKER="%1 %2 Speaker PIN %3 play tone %4 for %5 beat";r.Msg.ARDUINO_SEEED_RECORDER="%1 %2 Recorder PIN %3 Stat %4";r.Msg.ARDUINO_SEEED_EL_DRIVER="%1 %2 EL Driver PIN %3 Stat %4";r.Msg.ARDUINO_SEEED_EL_VIBRATION_MOTOR="%1 %2 Vibration PIN %3 Stat %4";r.Msg.ARDUINO_SEEED_ELECTROMAGNET="%1 %2 Electromagnet PIN %3 Stat %4";r.Msg.ARDUINO_SEEED_MINI_FAN="%1 %2 Mini Fan PIN %3 Stat %4";r.Msg.ARDUINO_GROVE_SERIAL_3ADA="%1 %2 3 Axis Digital Accelerometer-16 %3";r.Msg.ARDUINO_GROVE_SERIAL_TOUCH="%1 %2 I2C Touch CH %3";r.Msg.ARDUINO_GROVE_SERIAL_MINI_MOTOR_DRIVER="%1 %2 Mini I2C Motor %3 speed(-255~255) %4";r.Msg.ARDUINO_GROVE_SERIAL_MINI_MOTOR_DRIVER_STOP="%1 %2 Mini I2C Motor %3 stop";r.Msg.ARDUINO_SEEED_LED_STRING_LIGHT="%1 %2 WS2813 PIN %3 LED %4 show R %5 G %6 B %7";r.Msg.ARDUINO_SEEED_LED_BAR="%1 %2 LED Bar PIN %3 %4 %5";r.Msg.ARDUINO_SEEED_LED_CIRCULAR_LED="%1 %2 Circular LED PIN %3 show %4";r.Msg.ARDUINO_SEEED_GESTURE="%1 %2 Gesture detected %3?";r.Msg.ARDUINO_SEEED_SPEECH_RECOGNIZER="%1 %2 Speech Recognizer PIN %3 detected %4";r.Msg.ARDUINO_FIGURE_OUTPUT="DigitalWrite PIN# %1 Stat %2";r.Msg.ARDUINO_FIGURE_INPUT="DigitalRead PIN# %1";r.Msg.ARDUINO_ANALOG_INPUT="AnalogRead PIN# %1";r.Msg.ARDUINO_ANALOG_OUTPUT="AnalogWrite PIN# %1(PWM) value %2";r.Msg.ARDUINO_PULSE_LEN="PulseIn(μs) PIN %1 state %2";r.Msg.ARDUINO_PULSE_LEN_US="pulseIn(μs) PIN %1 state %2 timeout(μs) %3";r.Msg.ARDUINO_SERIAL_BAUD_RATE="Serial baud rate %1 bps";r.Msg.ARDUINO_SERIAL_PRINT="Serial println %1";r.Msg.ARDUINO_SERIAL_IS_READABLE="Serial isAvailable?";r.Msg.ARDUINO_SERIAL_READ="Serial readString";r.Msg.ARDUINO_DELAY_MS="Delay ms %1";r.Msg.ARDUINO_DELAY_US="Delay μs %1";r.Msg.ARDUINO_SYS_TIME="System running time %1";r.Msg.ARDUINO_KEEP_WAIT="end program";r.Msg.ARDUINO_FOR1="count with %1 from %2 to %3 step %4";r.Msg.ARDUINO_FOR2="do %1";r.Msg.ARDUINO_GROVE_SERIAL_RGB_LED_MATRIX_ON_POINT="%1 %2 RGB LED Matrix plot x:%3 y:%4 %5";r.Msg.ARDUINO_GROVE_SERIAL_RGB_LED_MATRIX_SHOW_TEXT="%1 %2 RGB LED Matrix show string %3";r.Msg.ARDUINO_GROVE_SERIAL_RGB_LED_MATRIX_SHOW_EMOJS="%1 %2 RGB LED Matrix show image %3";r.Msg.ARDUINO_GROVE_OTTO_DIY_ROBOT1="%1 %2 Otto DIY Robot %3 Steps:%4 Time:%5";r.Msg.ARDUINO_GROVE_OTTO_DIY_ROBOT2="%1 %2 Otto DIY Robot %3 Steps:%4 Time:%5 Direction:%6";r.Msg.ARDUINO_SETUP_LOOP0="setup";r.Msg.ARDUINO_SETUP_LOOP2="loop";r.Msg.ARDUINO_REPEAT="repeat while %1";r.Msg.ARDUINO_BREAK="break out of loop";r.Msg.ARDUINO_SEEED_GESTURE_OPT0="Up";r.Msg.ARDUINO_SEEED_GESTURE_OPT1="Down";r.Msg.ARDUINO_SEEED_GESTURE_OPT2="Left";r.Msg.ARDUINO_SEEED_GESTURE_OPT3="Right";r.Msg.ARDUINO_SEEED_GESTURE_OPT4="Forward";r.Msg.ARDUINO_SEEED_GESTURE_OPT5="Backward";r.Msg.ARDUINO_SEEED_GESTURE_OPT6="Clockwise";r.Msg.ARDUINO_SEEED_GESTURE_OPT7="Count Clockwise";r.Msg.ARDUINO_SEEED_GESTURE_OPT8="Wave";r.Msg.ARDUINO_GROVE_SERIAL_RGB_LED_MATRIX_ON_POINT_OPT0="red";r.Msg.ARDUINO_GROVE_SERIAL_RGB_LED_MATRIX_ON_POINT_OPT1="orange";r.Msg.ARDUINO_GROVE_SERIAL_RGB_LED_MATRIX_ON_POINT_OPT2="yellow";r.Msg.ARDUINO_GROVE_SERIAL_RGB_LED_MATRIX_ON_POINT_OPT3="green";r.Msg.ARDUINO_GROVE_SERIAL_RGB_LED_MATRIX_ON_POINT_OPT4="cyan";r.Msg.ARDUINO_GROVE_SERIAL_RGB_LED_MATRIX_ON_POINT_OPT5="blue";r.Msg.ARDUINO_GROVE_SERIAL_RGB_LED_MATRIX_ON_POINT_OPT6="purple";r.Msg.ARDUINO_GROVE_SERIAL_RGB_LED_MATRIX_ON_POINT_OPT7="pink";r.Msg.ARDUINO_GROVE_SERIAL_RGB_LED_MATRIX_ON_POINT_OPT8="white";r.Msg.ARDUINO_GROVE_SERIAL_RGB_LED_MATRIX_ON_POINT_OPT9="off";r.Msg.ARDUINO_GROVE_OTTO_DIY_ROBOT1_OPT0="forward";r.Msg.ARDUINO_GROVE_OTTO_DIY_ROBOT1_OPT1="back";r.Msg.ARDUINO_GROVE_OTTO_DIY_ROBOT1_OPT2="left";r.Msg.ARDUINO_GROVE_OTTO_DIY_ROBOT1_OPT3="right";r.Msg.ARDUINO_GROVE_OTTO_DIY_ROBOT2_OPT0="Rest";r.Msg.ARDUINO_GROVE_OTTO_DIY_ROBOT2_OPT1="Jump";r.Msg.ARDUINO_GROVE_OTTO_DIY_ROBOT2_OPT2="Bend";r.Msg.ARDUINO_GROVE_OTTO_DIY_ROBOT2_OPT3="ShakeLeg";r.Msg.ARDUINO_GROVE_OTTO_DIY_ROBOT2_OPT4="UpDown";r.Msg.ARDUINO_GROVE_OTTO_DIY_ROBOT2_OPT5="Swing";r.Msg.ARDUINO_GROVE_OTTO_DIY_ROBOT2_OPT6="TipToeSwing";r.Msg.ARDUINO_GROVE_OTTO_DIY_ROBOT2_OPT7="Jitter";r.Msg.ARDUINO_GROVE_OTTO_DIY_ROBOT2_OPT8="AscendingTurn";r.Msg.ARDUINO_GROVE_OTTO_DIY_ROBOT2_OPT9="Moonwalker";r.Msg.ARDUINO_GROVE_OTTO_DIY_ROBOT2_OPT10="Crusaito";r.Msg.ARDUINO_GROVE_OTTO_DIY_ROBOT2_OPT11="Flapping";r.Msg.ARDUINO_GROVE_OTTO_DIY_ROBOT2_OPT12="RIGHT/FOREWARD";r.Msg.ARDUINO_GROVE_OTTO_DIY_ROBOT2_OPT13="LEFT/BACKWARD";r.Msg.ARDUINO_SHIELD_BOT2="%1 %2 Shield Bot Motors position %3";r.Msg.ARDUINO_SHIELD_BOT2_OPT1="Middle";r.Msg.ARDUINO_SHIELD_BOT2_OPT2="Left";r.Msg.ARDUINO_SHIELD_BOT2_OPT3="Edge Left";r.Msg.ARDUINO_SHIELD_BOT2_OPT4="Right";r.Msg.ARDUINO_SHIELD_BOT2_OPT5="Edge Right";r.Msg.ARDUINO_SHIELD_BOT2_OPT6="Lost";r.Msg.ARDUINO_SHIELD_BOT1="%1 %2 Shield Bot Motors go %3 at %4 speed";r.Msg.ARDUINO_SHIELD_BOT1_OPT1="Forward";r.Msg.ARDUINO_SHIELD_BOT1_OPT2="Backward";r.Msg.ARDUINO_SHIELD_BOT1_OPT3="Left";r.Msg.ARDUINO_SHIELD_BOT1_OPT4="Right";r.Msg.ARDUINO_SHIELD_BOT1_OPT5="Stop";r.Msg.ARDUINO_SHIELD_BOT1_OPT6="Slow";r.Msg.ARDUINO_SHIELD_BOT1_OPT7="Medium";r.Msg.ARDUINO_SHIELD_BOT1_OPT8="Fast";r.Msg.CATEGORY_ARDUINO_INIT="Start";r.Msg.CATEGORY_ARDUINO_INPUT="Input";r.Msg.CATEGORY_ARDUINO_OUTPUT="Output";r.Msg.CATEGORY_ARDUINO_SERIAL="Serial Port";r.Msg.CATEGORY_ARDUINO_GROVE_IGURE="Grove Digital";r.Msg.CATEGORY_ARDUINO_GROVE_ANALOG="Grove Analog";r.Msg.CATEGORY_ARDUINO_GROVE_I2C="Grove I2C";r.Msg.CATEGORY_ARDUINO_ROBOT_KIT="M.A.R.K";r.Msg.ARDUINO_WEBSERVER_SHOW="%1 %2 Web Server Location %3 %4 Display text: %5 Value: %6";r.Msg.ARDUINO_WEBSERVER_SHOW_OPT1="Water";r.Msg.ARDUINO_WEBSERVER_SHOW_OPT2="Ultrasonic Ranger";r.Msg.ARDUINO_WEBSERVER_SHOW_OPT3="PIR Motion";r.Msg.ARDUINO_WEBSERVER_SHOW_OPT4="Temperature&Humidity";r.Msg.ARDUINO_WEBSERVER_SHOW_OPT5="LED";r.Msg.ARDUINO_WEBSERVER_SHOW_OPT6="Vibration";r.Msg.ARDUINO_WEBSERVER_SHOW_OPT7="Voltage";r.Msg.ARDUINO_WEBSERVER_SHOW_OPT8="Air";r.Msg.ARDUINO_WEBSERVER_SHOW_OPT9="Flame";r.Msg.ARDUINO_WEBSERVER_SHOW_OPT10="Vision Sensor";r.Msg.ARDUINO_WEBSERVER_INIT="%1 %2 Web Server Initialize %3 SSID %4 PWD %5";r.Msg.ARDUINO_WEBSERVER_INIT_OPT1="Wisdom city";r.Msg.ARDUINO_COLOR_SENSOR="%1 %2 Color Sensor detected %3 ?";r.Msg.ARDUINO_COLOR_SENSOR_OPT1="Red";r.Msg.ARDUINO_COLOR_SENSOR_OPT2="Green";r.Msg.ARDUINO_COLOR_SENSOR_OPT3="Blue";r.Msg.ARDUINO_COLOR_SENSOR_OPT4="Black";r.Msg.ARDUINO_COLOR_SENSOR_OPT5="White";r.Msg.ARDUINO_COLOR_SENSOR_OPT6="Other";r.Msg.GROVEZERO_MATH_ITOA_VALUE_MESSAGE0="to String %1";r.Msg.TOOLBOX_EXTENSION_CATEGORY_NAME="Add Extension";r.Msg.ARDUINO_SEEED_VOLTAGE="%1 %2 Voltage PIN %3";r.Msg.ARDUINO_SEEED_QUALITY="%1 %2 Air quality PIN %3";r.Msg.ARDUINO_SEEED_WATER_ANALOG="%1 %2 Water level PIN %3";r.Msg.ARDUINO_SEEED_HUMIDIFIER="%1 %2 Humidifier PIN %3 Stat %4";r.Msg.ARDUINO_SEEED_VIBRATION="%1 %2 Vibration PIN %3";r.Msg.ARDUINO_SEEED_LED_ANALOG="%1 %2 LED PIN %3 Stat %4";r.Msg.ARDUINO_VISION_SENSOR1="%1 %2 Vision Sensor Ball %3 detected?";r.Msg.ARDUINO_VISION_SENSOR1_OPT1="Orange ping-pong";r.Msg.ARDUINO_VISION_SENSOR1_OPT2="Orange Green tennis";r.Msg.ARDUINO_VISION_SENSOR2="%1 %2 Vision Sensor Traffic sign card %3 detected?";r.Msg.ARDUINO_VISION_SENSOR3="%1 %2 Vision Sensor Number card %3 detected?";r.Msg.ARDUINO_VISION_SENSOR4="%1 %2 Vision Sensor graphics card %3 detected?";r.Msg.ARDUINO_VISION_SENSOR4_OPT1="correct";r.Msg.ARDUINO_VISION_SENSOR4_OPT2="cross";r.Msg.ARDUINO_VISION_SENSOR4_OPT3="circular";r.Msg.ARDUINO_VISION_SENSOR4_OPT4="square";r.Msg.ARDUINO_VISION_SENSOR4_OPT5="triangle";r.Msg.ARDUINO_VISION_SENSOR5="%1 %2 Vision Sensor human body detected?";r.Msg.ARDUINO_VISION_SENSOR6="%1 %2 Vision Sensor color %3 detected?";r.Msg.ARDUINO_VISION_SENSOR7="%1 %2 Vision Sensor get color value";r.Msg.BUZZER_TONE_LOW="Low";r.Msg.BUZZER_TONE_MIDDLE="Middle";r.Msg.BUZZER_TONE_HIGH="High";r.Msg.BUZZER_SELECTED_PREFIX="selected:";r.Msg.ARDUINO_LED_STRIP1="%1 %2 RGB LED Strip PIN %3 show R %4 G %5 B %6 Number %7";r.Msg.ARDUINO_LED_STRIP2="%1 %2 RGB LED Strip PIN %3 show R %4 G %5 B %6";r.Msg.ARDUINO_VISION_SENSOR8="%1 %2 Vision Sensor ball get value %3";r.Msg.ARDUINO_OLCD1="%1 %2 LCD screen show image %3";r.Msg.ARDUINO_OLCD2="%1 %2 LCD screen show string %3 Line %4 Column %5";r.Msg.ARDUINO_OLCD3="%1 %2 LCD screen clear display";r.Msg.MAIXDUINO_ENENT_WHENSTARTUP="When start";r.Msg.MAIXDUINO_DISPLAY_STRING="display %1 at row %2";r.Msg.MAIXDUINO_DISPLAY_SET_CIRCLE="draw circle: at X %1 Y %2 R %3";r.Msg.MAIXDUINO_DISPLAY_SET_RECTANGLE="draw rectangle: X1%1 Y1%2 X2%3 Y2%4";r.Msg.MAIXDUINO_DISPLAY_DRAW_CIRCLE="%1 %2 Draw circle %3";r.Msg.MAIXDUINO_DISPLAY_DRAW_RECTANGLE="%1 %2 Draw rectangle %3";r.Msg.MAIXDUINO_CAMERA_SET_THRESHOLD="set machine vision sensitivity to %1";r.Msg.MAIXDUINO_CAMERA_TAKE_PICTURE="Take a photo: filename %1";r.Msg.MAIXDUINO_CAMERA_TAKE_VIDEO="Record video: last %1 seconds, filename %2";r.Msg.MAIXDUINO_CAMERA_DETECTION_BALL="circle detected";r.Msg.MAIXDUINO_CAMERA_DETECTION_BALL_COORD="detected circle %1";r.Msg.MAIXDUINO_CAMERA_DETECTION_BALL_VALUE="detected circle info";r.Msg.MAIXDUINO_CAMERA_DETECTION_RECTANGLE="rectangle detected";r.Msg.MAIXDUINO_CAMERA_DETECTION_RECTANGLE_COORD="detected rectangle %1";r.Msg.MAIXDUINO_CAMERA_DETECTION_RECTANGLE_VALUE="detected rectangle info";r.Msg.MAIXDUINO_CAMERA_GET_BALL_AVERAGE_COLOR="%1 %2 Circle region: X %3 Y %4 R %5 average RGB value";r.Msg.MAIXDUINO_CAMERA_GET_RECTANGLE_AVERAGE_COLOR="%1 %2 Rectangular region: Xmin %3 Xmax %4 Ymin %5 Ymax %6 average RGB value";r.Msg.MAIXDUINO_CAMERA_INTEREST_AREA_COLOR="%1 %2 Region of interest %3 detected color is %4";r.Msg.MAIXDUINO_CAMERA_INTEREST_AREA_AVERAGE_COLOR="%1 %2 Interest area %3 average color RGB value";r.Msg.MAIXDUINO_SENSING_HOME_ANIMAL_DETECTION="recognized domestic animal result probability > %1 %";r.Msg.MAIXDUINO_SENSING_HOME_ANIMAL_SEL_DETECTION="recognized domestic animal is %1 probability > %2 %";r.Msg.MAIXDUINO_SENSING_ZOO_ANIMAL_DETECTION="recognized zoo animal result probability > %1 %";r.Msg.MAIXDUINO_SENSING_ZOO_ANIMAL_SEL_DETECTION="recognized zoo animal is %1 probability > %2 %";r.Msg.MAIXDUINO_SENSING_ORDINARY_OBJECT_DETECTION="recognized common object result probability > %1 %";r.Msg.MAIXDUINO_SENSING_ORDINARY_OBJECT_SEL_DETECTION="recognized common object is %1 probability > %2 %";r.Msg.MAIXDUINO_SENSING_NUM_DETECTION="detected number result probability > %1 %";r.Msg.MAIXDUINO_NUM_SEL_DETECTION="detected number is %1 probability > %2 %";r.Msg.MAIXDUINO_NUM_CERTRE_DETECTION="detected number %1 %2 probability > %3 %";r.Msg.MAIXDUINO_SENSING_TRAFFIC_SIGNS_DETECTION="detected traffic sign probability > %1 %";r.Msg.MAIXDUINO_TRAFFIC_SIGNS_SEL_DETECTION="detected traffic sign is %1 probability > %2 %";r.Msg.MAIXDUINO_TRAFFIC_SIGNS_CERTRE_DETECTION="detected traffic sign %1 %2 probability > %3 %";r.Msg.MAIXDUINO_INPUT_SYSTEMTIME="System running time %1";r.Msg.MAIXDUINO_CAMERA_R_MAX="Rmax";r.Msg.MAIXDUINO_CAMERA_R_MIN="Rmin";r.Msg.MAIXDUINO_CAMERA_SIZE_MAX="max";r.Msg.MAIXDUINO_CAMERA_SIZE_MIN="min";r.Msg.MAIXDUINO_CAMERA_COORD_X="位置:X坐标";r.Msg.MAIXDUINO_CAMERA_COORDP_Y="Y coordinate";r.Msg.MAIXDUINO_CAMERA_COORDP_XMIN="Position: Xmin coord";r.Msg.MAIXDUINO_CAMERA_COORDP_YMIN="Position: Ymin coord";r.Msg.MAIXDUINO_CAMERA_COORDP_XMAX="Position: Xmax coord";r.Msg.MAIXDUINO_CAMERA_COORDP_YMAX="Position: Ymax coord";r.Msg.MAIXDUINO_CAMERA_R_VALUE="R";r.Msg.MAIXDUINO_CAMERA_SENSOR_OPT1="red";r.Msg.MAIXDUINO_CAMERA_SENSOR_OPT2="green";r.Msg.MAIXDUINO_CAMERA_SENSOR_OPT3="blue";r.Msg.MAIXDUINO_CAMERA_SENSOR_OPT4="yellow";r.Msg.MAIXDUINO_CAMERA_SENSOR_OPT5="cyan";r.Msg.MAIXDUINO_CAMERA_SENSOR_OPT6="purple";r.Msg.MAIXDUINO_CAMERA_SENSOR_OPT7="black";r.Msg.MAIXDUINO_CAMERA_SENSOR_OPT8="white";r.Msg.MAIXDUINO_SENSING_ANIMAL_OPT1="cat";r.Msg.MAIXDUINO_SENSING_ANIMAL_OPT2="dog";r.Msg.MAIXDUINO_SENSING_ANIMAL_OPT3="bird";r.Msg.MAIXDUINO_SENSING_ANIMAL_OPT4="hedgehog";r.Msg.MAIXDUINO_SENSING_ANIMAL_OPT5="mouse";r.Msg.MAIXDUINO_SENSING_ANIMAL_OPT6="crocodile";r.Msg.MAIXDUINO_SENSING_ANIMAL_OPT7="bear";r.Msg.MAIXDUINO_SENSING_ANIMAL_OPT8="elephant";r.Msg.MAIXDUINO_SENSING_ANIMAL_OPT9="giraffe";r.Msg.MAIXDUINO_SENSING_ANIMAL_OPT10="tiger";r.Msg.MAIXDUINO_SENSING_ANIMAL_OPT11="butterfly";r.Msg.MAIXDUINO_SENSING_ANIMAL_OPT12="cockroach";r.Msg.MAIXDUINO_SENSING_ANIMAL_OPT13="fish";r.Msg.MAIXDUINO_SENSING_ANIMAL_OPT14="lizard";r.Msg.MAIXDUINO_SENSING_ANIMAL_OPT15="spider";r.Msg.MAIXDUINO_TRAFFIC_SIGNS_OPT0="turn left";r.Msg.MAIXDUINO_TRAFFIC_SIGNS_OPT1="turn right";r.Msg.MAIXDUINO_TRAFFIC_SIGNS_OPT2="go straight";r.Msg.MAIXDUINO_TRAFFIC_SIGNS_OPT3="u-turn";r.Msg.MAIXDUINO_TRAFFIC_SIGNS_OPT4="stop";r.Msg.MAIXDUINO_TRAFFIC_SIGNS_OPT5="max speed limit 5";r.Msg.MAIXDUINO_TRAFFIC_SIGNS_OPT6="max speed limit 80";r.Msg.MAIXDUINO_TRAFFIC_SIGNS_OPT7="no entry";r.Msg.MAIXDUINO_TRAFFIC_SIGNS_OPT8="yield";r.Msg.MAIXDUINO_TRAFFIC_SIGNS_OPT9="pedestrian crossing";r.Msg.MAIXDUINO_SENSING_OBJECT_OPT1="chair";r.Msg.MAIXDUINO_SENSING_OBJECT_OPT2="book";r.Msg.MAIXDUINO_SENSING_OBJECT_OPT3="cup";r.Msg.MAIXDUINO_SENSING_OBJECT_OPT4="pen";r.Msg.MAIXDUINO_SENSING_OBJECT_OPT5="pizza";r.Msg.MAIXDUINO_SENSING_OBJECT_OPT6="smart phone";r.Msg.MAIXDUINO_SENSING_OBJECT_OPT7="bomb";r.Msg.MAIXDUINO_SENSING_OBJECT_OPT8="computer";r.Msg.MAIXDUINO_SENSING_OBJECT_OPT9="human";r.Msg.MAIXDUINO_SENSING_OBJECT_OPT10="knapsack";r.Msg.MAIXDUINO_SENSING_COORD_X="X coordinate";r.Msg.MAIXDUINO_SENSING_COORD_Y="Y coordinate";r.Msg.MAIXDUINO_LINEPAROL_ANGLE="%1 %2 Line following set line recognition color %3 region weight red%4% blue%5% green%6%";r.Msg.MAIXDUINO_CAMERA_BALL_AERA="spherical";r.Msg.MAIXDUINO_CAMERA_RECTANGLE_AERA="rectangle";r.Msg.MAIXDUINO_ROBOT_MARK_RUN="M.A.R.K go %2 at %1 speed";r.Msg.MAIXDUINO_ROBOT_MOTOR_RUN="M.A.R.K. set %1 wheel rotation speed to %2 %";r.Msg.MAIXDUINO_ROBOT_SERVO_RUN="M.A.R.K. Servo %1 move to %2 degree";r.Msg.MAIXDUINO_ROBOT_STEPPER_SERVO_SETANGLE="M.A.R.K. Stepper motor set step angle to %1 °";r.Msg.MAIXDUINO_ROBOT_STEPPER_SERVO_SETROTATESPEED="M.A.R.K. Stepper motor set speed to %1 RPM";r.Msg.MAIXDUINO_ROBOT_STEPPER_SERVO_RUN="M.A.R.K. Stepper motor move %1 steps";r.Msg.MAIXDUINO_ROBOT_STEPPER_SERVO_TURN="M.A.R.K visual line following: turning angle %1 speed %2 sensitivity %3";r.Msg.CocoRobo_ENENT_WHENSTARTUP="%1 %2 when the board startup";r.Msg.CocoRobo_ENENT_WHENACTION="%1 %2 when the button %3 is %4 do";r.Msg.CocoRobo_ENENT_WHENPINVOLTAGE="%1 %2 when pin %3 level is from %4 do";r.Msg.CocoRobo_ENENT_WHENSHARK="%1 %2 the board is shaked do";r.Msg.CocoRobo_ENENT_TILT_DIRECTION="%1 %2 when the board id %3 do";r.Msg.CocoRobo_ENENT_WHENTOUCHKEY="%1 %2 when the touchpad %3 is %4 do";r.Msg.CocoRobo_ENENT_FOR1="%1 %2 set timer %3 %4 mode,cycle %5 millisecond(s)";r.Msg.CocoRobo_ENENT_FOR2="do %1";r.Msg.CocoRobo_ENENT_CLEAR_TIMER="%1 %2 clear timer/event %3";r.Msg.CocoRobo_ENENT_TIMER_COUNT="%1 %2 timer %3 count value";r.Msg.CocoRobo_EVENT_WHEN_ACTION="%1 %2 event %3 : when %4 do";r.Msg.CocoRobo_EVENT_CHILD_THREAD="%1 %2 thread %3 do";r.Msg.CocoRobo_SYSRESOURES_BUTTON_PRESSED="%1 %2 button %3 is pressed";r.Msg.CocoRobo_SYSRESOURES_BUTTON_TOUCH="%1 %2 button %3 is touched";r.Msg.CocoRobo_SYSRESOURES_TOUCH_VALUE="%1 %2 button %3 touch value";r.Msg.CocoRobo_SYSRESOURES_VOLUME="%1 %2 sound value";r.Msg.CocoRobo_SYSRESOURES_LIGHT="%1 %2 light value";r.Msg.CocoRobo_SYSRESOURES_ACCELERATION="%1 %2 %3 axis acceleration";r.Msg.CocoRobo_SYSRESOURES_SLOPE="%1 %2 %3 axis tilt angle";r.Msg.CocoRobo_SYSRESOURES_SHARKED="%1 %2 the board is shaked";r.Msg.CocoRobo_SYSRESOURES_SLOPE_ANGLE="%1 %2 the board is tilt %3";r.Msg.CocoRobo_SYSRESOURES_SET_SINGLE_COLOR="%1 %2 set %3 RGB light color to %4";r.Msg.CocoRobo_SYSRESOURES_SET_SINGLE_RGB="%1 %2 set %3 RGB light color to R %4 G %5 B %6";r.Msg.CocoRobo_SYSRESOURES_SET_ALL_COLOR="%1 %2 set all RGB lights color to %3";r.Msg.CocoRobo_SYSRESOURES_SET_ALL_RGB="%1 %2 set all RGB lights color to R %3 G %4 B %5";r.Msg.CocoRobo_SYSRESOURES_CLOSE_RGB="%1 %2 turn off all RGB lights";r.Msg.CocoRobo_SYSRESOURES_SET_BME280="%1 %2 BME280 %3";r.Msg.CocoRobo_SYSRESOURES_DRAW_CLOCK="%1 %2 draw clock x %3 y %4 radius %5";r.Msg.CocoRobo_SYSRESOURES_CLOCK_OPERATE="%1 %2 %3 clock";r.Msg.CocoRobo_SYSRESOURES_SET_RUN_TIME="%1 %2 run time %3";r.Msg.CocoRobo_SYSRESOURES_SET_LOCAL_TIME="%1 %2 local time %3";r.Msg.CocoRobo_SYSRESOURES_RESET="%1 %2 reset";r.Msg.CocoRobo_SYSRESOURES_MAC_ADDRESS="%1 %2 MAC Address";r.Msg.CocoRobo_LOOKS_OLCD="%1 %2 LCD display %3";r.Msg.CocoRobo_LOOKS_OLCD_LINE_TEXT="%1 %2 LCD line %3 shows %4 text mode %5";r.Msg.CocoRobo_LOOKS_OLCD_CLEAR_LINE="%1 %2 LCD clear line %3";r.Msg.CocoRobo_LOOKS_DISPLAY_TEXT="%1 %2 at x %3 y %4 display text %5 text mode %6";r.Msg.CocoRobo_LOOKS_TRACE_POINT="%1 %2 draw a point x %3 y %4 为 %5";r.Msg.CocoRobo_LOOKS_PROGRESS="%1 %2 progress x %3 y %4 width %5 height %6 progress %7";r.Msg.CocoRobo_LOOKS_COLUMN_STRIP="%1 %2 column bar %3 x %4 y %5 width %6 height %7 progress %8";r.Msg.CocoRobo_LOOKS_DRAW_LINE="%1 %2 %3 line x1 %4 y1 %5 to x2 %6 y2 %7";r.Msg.CocoRobo_LOOKS_DRAW_FRAME="%1 %2 %3 border x %4 y %5 width %6 height %7";r.Msg.CocoRobo_LOOKS_DRAW_ARC_BORDER="%1 %2 %3 arc border x %4 y %5 width %6 height %7 radius %8";r.Msg.CocoRobo_LOOKS_DRAW_RECT="%1 %2 %3 rectangle x %4 y %5 width %6 height %7";r.Msg.CocoRobo_LOOKS_DRAW_CIRCLE="%1 %2 %3 %4 circle x %5 y %6 radius %7";r.Msg.CocoRobo_LOOKS_DRAW_TRIANGLE="%1 %2 %3 %4 triangle x %5 y %6 x2 %7 y2 %8 x3 %9 y3 %10";r.Msg.CocoRobo_LOOKS_DRAW_DISPLAY_PICTURE="%1 %2 at x %3 y %4 display image %5";r.Msg.CocoRobo_LOOKS_DRAW_DISPLAY="%1 %2 at x %3 y %4 display text %5 using %6 font with %7";r.Msg.CocoRobo_MUSIC_STOP_PLAY="%1 %2 stop playing music at Pin %3";r.Msg.CocoRobo_MUSIC_RESTORE_MUSIC_SET="%1 %2 restore music settings";r.Msg.CocoRobo_MUSIC_NOTE_BEAT="%1 %2 note %3 beat %4";r.Msg.CocoRobo_MUSIC_NOTE_BEAT_PIN="%1 %2 play musical note %3 beat %4 at Pin %5";r.Msg.CocoRobo_MUSIC_TONE="%1 %2 tone %3";r.Msg.CocoRobo_MUSIC_PLAY_TONE_PIN="%1 %2 play tone %3 delay %4 millisecond(s) at Pin %5";r.Msg.CocoRobo_MUSIC_PLAY_TONE_PIN_PARA="%1 %2 play tone from %3 to %4 step %5 duration %6 Pin %7";r.Msg.CocoRobo_MUSIC_PLAY_MUSIC_PIN="%1 %2 play music %3 wait %4 loop %5 Pin %6";r.Msg.CocoRobo_MUSIC_SET_PLAY_SPEED="%1 %2 set the playback speed to %3 times";r.Msg.CocoRobo_MUSIC_SET_BEAT="%1 %2 set each beat equal to %3 notes,the number of beats per minute is %4";r.Msg.CocoRobo_MUSIC_SET_CURRENT_BEAT="%1 %2 current beats";r.Msg.CocoRobo_BUZZER_INIT="%1 %2 init Audio";r.Msg.CocoRobo_BUZZER_RELEASE_CACHE="%1 %2 deinit Audio";r.Msg.CocoRobo_BUZZER_SET_VOLUMN="%1 %2 set Audio volume ad %3";r.Msg.CocoRobo_BUZZER_SET_ACTION="%1 %2 Audio %3";r.Msg.CocoRobo_BUZZER_PLAY="%1 %2 Audio play %3";r.Msg.CocoRobo_BUZZER_VOICE_CONF="%1 %2 TTS config APPID %3 APIKey %4";r.Msg.CocoRobo_BUZZER_VOICE_PLAY="%1 %2 TTS play text %3";r.Msg.CocoRobo_PIN_GET_VALUE="%1 %2 pin %3 digital value";r.Msg.CocoRobo_PIN_SET_VALUE="%1 %2 set pin %3 digital value to %4";r.Msg.CocoRobo_PIN_GET_ANALOG_VALUE="%1 %2 pin %3 analog value";r.Msg.CocoRobo_PIN_SET_ANALOG_VALUE="%1 %2 set pin %3 analog value(PWM) to %4";r.Msg.CocoRobo_PIN_SET_SERVO_ANGLE="%1 %2 set the servo %3 angle as %4";r.Msg.CocoRobo_PIN_SET_SERVO_PWM_MAXANGLE="%1 %2 set the servo %3 angle as %4 pulse width form %5 us to %6 us actuation range as %7";r.Msg.CocoRobo_PIN_SET_PIN_MODE="%1 %2 set pin %3 as %4 mode %5";r.Msg.CocoRobo_PIN_EXTERNAL_LEVEL_DURATION="%1 %2 %3 external %4 pulse level duration(us)";r.Msg.CocoRobo_PIN_DHT11_VALUE="%1 %2 DHT11 %3 %4";r.Msg.CocoRobo_PIN_DHT22_VALUE="%1 %2 DHT22 %3 %4";r.Msg.CocoRobo_PIN_INIT_I2C_BAUD_RATE="%1 %2 initialize I2C with baudrate %3";r.Msg.CocoRobo_PIN_INIT_I2C_SCL_SDA_BAUD="%1 %2 initialize I2C SCL %3 SDA %4 baudrate %5";r.Msg.CocoRobo_PIN_I2C_ADDRESS_WRITE="%1 %2 I2C address %3 is written to %4";r.Msg.CocoRobo_PIN_I2C_ADDRESS_GET_BYTES_NUM="%1 %2 I2C address %3 read bytes number %4";r.Msg.CocoRobo_PIN_HSCR04_ULTRASONIC_INIT="%1 %2 hcsr04 untrasonic initialize name %3 trigger %4 echo %5";r.Msg.CocoRobo_PIN_HSCR04_ULTRASONIC_DISTANCE_UNIT="%1 %2 %3 hcsr04 untrasonic distance,uint %4";r.Msg.CocoRobo_RADIO_ACTION="%1 %2 turn %3 radio";r.Msg.CocoRobo_SET_RADIO_CHANNEL="%1 %2 set radio channel %3";r.Msg.CocoRobo_SET_RADIO_SEND_MES="%1 %2 radio sends %3";r.Msg.CocoRobo_RADIO_GET_MES="%1 %2 radio received";r.Msg.CocoRobo_RADIO_GET_MES_FOR1="when receiving broadcast message %1 from Radio do";r.Msg.CocoRobo_RADIO_GET_SPECIAL_FOR1="when receiving specific broadcast message %1 from Radio do";r.Msg.CocoRobo_WIFI_CONNECT="%1 %2 connect to Wi-Fi with SSID %3 & Password %4";r.Msg.CocoRobo_WIFI_DISCONNECT="%1 %2 disconnect Wi-Fi connection";r.Msg.CocoRobo_WIFI_CONNECTED="%1 %2 Has connected to Wi-Fi";r.Msg.CocoRobo_WIFI_ALL_CONF="%1 %2 Wi-Fi configuration information";r.Msg.CocoRobo_WIFI_CONF_MES="%1 %2 Wi-Fi configuration information %3";r.Msg.CocoRobo_WIFI_OPEN_AP_MODE="%1 %2 open AP mode with SSID %3 & Channel %4";r.Msg.CocoRobo_WIFI_CLOSE_AP_MODE="%1 %2 close AP mode";r.Msg.CocoRobo_WIFI_SYNC_NETWORK_TIME="%1 %2 synchronize network time,timezone %3 & timing server %4";r.Msg.CocoRobo_NEOPIXEL_INIT="%1 %2 initialize light strip with Name %3 Pin %4 Quantity %5";r.Msg.CocoRobo_NEOPIXEL_CHANNEL_COLOR="%1 %2 light strip %3 # %4 color as %5";r.Msg.CocoRobo_NEOPIXEL_CHANNEL_RGB="%1 %2 light strip %3 # %4 R %5 G %6 B %7";r.Msg.CocoRobo_NEOPIXEL_FULL_LIGHT_COLOR="%1 %2 light strip %3 full bright with color %4";r.Msg.CocoRobo_NEOPIXEL_FULL_LIGHT_RGB="%1 %2 light strip %3 full bright R %4 G %5 B %6";r.Msg.CocoRobo_NEOPIXEL_CLOSE="%1 %2 light strip %3 off";r.Msg.CocoRobo_NEOPIXEL_RAINBOW_LIGHT_EFFECT="%1 %2 define rainbow effect of light strip with Name %3 Quantity %4 bright %5 offset %6";r.Msg.CocoRobo_NEOPIXEL_SET_WRITE="%1 %2 light strip %3 setting take effect";r.Msg.CocoRobo_CONTROL_FOR1="for each item %1 in list do";r.Msg.CocoRobo_OPERATORS_GET_TYPE="type %1";r.Msg.CocoRobo_OPERATORS_JUDGE_TYPE="type %1 is %2";r.Msg.CocoRobo_OPERATORS_MOD_INT="%1 ÷ %2 the integer part of the quotient";r.Msg.CocoRobo_OPERATORS_KEEP_TWO_DECIMALS="%1 keep %2 decimal places";r.Msg.CocoRobo_OPERATORS_LIMIT_RANGE="constrain %1 low %2 high %3";r.Msg.CocoRobo_OPERATORS_MAPPING_RANGE="map %1 from %2 , %3 to %4 , %5";r.Msg.CocoRobo_G0_COLOR_LINE_FOLLOWER_POSITION="%1 %2 Color Line Follower line position %3";r.Msg.CocoRobo_G0_COLOR_LINE_FOLLOWER_SEEING="%1 %2 Color Line Follower is seeing %3";r.Msg.CocoRobo_G0_COLOR_LINE_FOLLOWER_COLOR="%1 %2 Color Line Follower color value";r.Msg.ARDUINO_GROVE_SERIAL_3ADA15="%1 %2 3 Axis Digital Accelerometer-1.5 %3";r.Msg.ARDUINO_SEEED_LED_BAR_OPT1="show";r.Msg.ARDUINO_SEEED_LED_BAR_OPT2="close";r.Msg.ARDUINO_SEEED_SPEECH_RECOGNIZER_GETVALUE="%1 %2 Speech Recognizer PIN %3 Return Value";r.Msg.ARDUINO_SERIAL_STR_TONUMBER="Serial String toFloat %1";r.Msg.ARDUINO_VISION_SENSOR6_OPT1="red";r.Msg.ARDUINO_VISION_SENSOR6_OPT2="yellow";r.Msg.ARDUINO_VISION_SENSOR6_OPT3="green";r.Msg.ARDUINO_VISION_SENSOR6_OPT4="cyan";r.Msg.ARDUINO_VISION_SENSOR6_OPT5="blue";r.Msg.ARDUINO_VISION_SENSOR6_OPT6="purple";r.Msg.ARDUINO_VISION_SENSOR6_OPT7="black";r.Msg.ARDUINO_VISION_SENSOR6_OPT8="white";r.Msg.ARDUINO_VISION_SENSOR6_OPT9="other";r.Msg.ARDUINO_VISION_SENSOR_OPT1="forward";r.Msg.ARDUINO_VISION_SENSOR_OPT2="left";r.Msg.ARDUINO_VISION_SENSOR_OPT3="right";r.Msg.ARDUINO_VISION_SENSOR_OPT4="turn round";r.Msg.ARDUINO_VISION_SENSOR_OPT5="P";r.Msg.ARDUINO_MARK_ROBOT_RUN="%1 %2 M.A.R.K go %3 at %4 speed";r.Msg.ARDUINO_MARK_ROBOT_MOTOR_RUN="%1 %2 M.A.R.K run motor %3 at %4";r.Msg.ARDUINO_MARK_ROBOT_SERVO_RUN="%1 %2 M.A.R.K Servo %3 move to %4 degree";r.Msg.ARDUINO_NETWORK_SETWIFI="%1 %2 start connecting to the wireless network %3 password %4";r.Msg.ARDUINO_NETWORK_STATE="%1 %2 Is the network connected?";r.Msg.ARDUINO_SPEECH_RECOGNITION_REC="%1 %2 Identify %3 speech %4 seconds";r.Msg.ARDUINO_SPEECH_RECOGNITION_OPT01="Mandarin";r.Msg.ARDUINO_SPEECH_RECOGNITION_OPT02="English";r.Msg.ARDUINO_SPEECH_RECOGNITION_RECTEXT="%1 %2 text recognized by speech recognition";r.Msg.ARDUINO_SPEECH_RECOGNITION_TTS="%1 %2 speak %3";r.Msg.ARDUINO_AUDIO_RECORD="%1 %2 audio record %3 %4";r.Msg.ARDUINO_AUDIO_STORAGE_OPT01="file";r.Msg.ARDUINO_AUDIO_STORAGE_OPT02="Micro SD";r.Msg.ARDUINO_AUDIO_STORAGE_OPT03="USB";r.Msg.ARDUINO_AUDIO_STORAGE_OPT04="buffer";r.Msg.ARDUINO_AUDIO_STOP_RECORD="%1 %2 recording stop";r.Msg.ARDUINO_AUDIO_PLAY="%1 %2 audio play %3 %4";r.Msg.ARDUINO_AUDIO_PLAY_SOMEONE="%1 %2 play track %3";r.Msg.ARDUINO_AUDIO_PLAY_PREORNEXT="%1 %2 play %3 track";r.Msg.ARDUINO_AUDIO_PLAY_OPT1="Previous track";r.Msg.ARDUINO_AUDIO_PLAY_OPT2="next track";r.Msg.ARDUINO_AUDIO_PLAY_ATMODE="%1 %2 %3 Play Track";r.Msg.ARDUINO_AUDIO_PLAY_MODE_OPT1="Loop";r.Msg.ARDUINO_AUDIO_PLAY_MODE_OPT2="Pulse";r.Msg.ARDUINO_AUDIO_PLAY_MODE_OPT3="Stop";r.Msg.ARDUINO_AUDIO_SETVOL="%1 %2 Set speaker volume %3";r.Msg.ELFBOT_MAINBOARD_START="%1 %2 when Elfbot starts up";r.Msg.ELFBOT_WHEN_BUTTON_S_PRESSED="%1 %2 when button S is pressed";r.Msg.ELFBOT_WHEN_LIGHTINTENSITY_LESSTHAN="%1 %2 when light intensity %3 %4";r.Msg.ELFBOT_WHENGREATERTHAN_TIMER="%1 %2 when timer > %3";r.Msg.ELFBOT_WHENGREATERTHAN_LOUDNESS="%1 %2 when loudness %3 %4";r.Msg.ELFBOT_BUTTONS_ISPRESSED="%1 %2 Elfbot button S is pressed?";r.Msg.ELFBOT_ULTRASONIC_DISTANCE_FROMOBJ="%1 %2 Elfbot distance of obstacles ahead";r.Msg.ELFBOT_ULTRASONIC_ISDETECTED_OBJECT="%1 %2 Elfbot obstacles ahead?";r.Msg.ELFBOT_ULTRASONIC_LED_SHOW_COLOR="%1 %2 Elfbot set the ultrasonic LED with color %3";r.Msg.ELFBOT_ULTRASONIC_LED_CRUSHOUT="%1 %2 Elfbot ultrasonic LED lights off";r.Msg.ELFBOT_ULTRASONIC_WHENDETECTEDOBJECT="%1 %2 when detecting an object ahead";r.Msg.ELFBOT_LEDMATRIX_PLOT="%1 %2 Elfbot plot x: %3 y: %4";r.Msg.ELFBOT_LEDMATRIX_UNPLOT="%1 %2 Elfbot unplot x: %3 y: %4";r.Msg.ELFBOT_LEDMATRIX_PLOT_OR_UNPLOT="%1 %2 Elfbot switch between plot and unplot x: %3 y: %4";r.Msg.ELFBOT_LEDMATRIX_ISPLOT="%1 %2 Elfbot x: %3 y: %4 is ON?";r.Msg.ELFBOT_LEDMATRIX_SHOW_TEXT="%1 %2 Elfbot show string %3";r.Msg.ELFBOT_LEDMATRIX_SHOW_TEXT_UNTILDONE="%1 %2 Elfbot show string %3 until done";r.Msg.ELFBOT_LEDMATRIX_SHOW_EMOTICON="%1 %2 Elfbot show emoji %3";r.Msg.ELFBOT_LEDMATRIX_SHOW_EMOTICON_FORDURATION="%1 %2 Elfbot show emoji %3 for %4 secs";r.Msg.ELFBOT_LEDMATRIX_SCREEN_CRUSHOUT="%1 %2 Elfbot clear screen";r.Msg.ELFBOT_LEDMATRIX_EMOTICON_VALUE_OPTION1="smile";r.Msg.ELFBOT_LEDMATRIX_EMOTICON_VALUE_OPTION2="wink";r.Msg.ELFBOT_LEDMATRIX_EMOTICON_VALUE_OPTION3="happy";r.Msg.ELFBOT_LEDMATRIX_EMOTICON_VALUE_OPTION4="cute";r.Msg.ELFBOT_LEDMATRIX_EMOTICON_VALUE_OPTION5="lovely";r.Msg.ELFBOT_LEDMATRIX_EMOTICON_VALUE_OPTION6="expressionless";r.Msg.ELFBOT_LEDMATRIX_EMOTICON_VALUE_OPTION7="playful";r.Msg.ELFBOT_LEDMATRIX_EMOTICON_VALUE_OPTION8="like1";r.Msg.ELFBOT_LEDMATRIX_EMOTICON_VALUE_OPTION9="like2";r.Msg.ELFBOT_LEDMATRIX_EMOTICON_VALUE_OPTION10="sniker1";r.Msg.ELFBOT_LEDMATRIX_EMOTICON_VALUE_OPTION11="sniker2";r.Msg.ELFBOT_LEDMATRIX_EMOTICON_VALUE_OPTION12="bored";r.Msg.ELFBOT_LEDMATRIX_EMOTICON_VALUE_OPTION13="serious";r.Msg.ELFBOT_LEDMATRIX_EMOTICON_VALUE_OPTION14="sweat";r.Msg.ELFBOT_LEDMATRIX_EMOTICON_VALUE_OPTION15="frown";r.Msg.ELFBOT_LEDMATRIX_EMOTICON_VALUE_OPTION16="rage";r.Msg.ELFBOT_LEDMATRIX_EMOTICON_VALUE_OPTION17="pitiful";r.Msg.ELFBOT_LEDMATRIX_EMOTICON_VALUE_OPTION18="wail";r.Msg.ELFBOT_LEDMATRIX_EMOTICON_VALUE_OPTION19="cry";r.Msg.ELFBOT_LEDMATRIX_EMOTICON_VALUE_OPTION20="daze";r.Msg.ELFBOT_LEDMATRIX_EMOTICON_VALUE_OPTION21="caim";r.Msg.ELFBOT_LEDMATRIX_EMOTICON_VALUE_OPTION22="angry";r.Msg.ELFBOT_LEDMATRIX_EMOTICON_VALUE_OPTION23="thinking";r.Msg.ELFBOT_LEDMATRIX_EMOTICON_VALUE_OPTION24="dizziness";r.Msg.ELFBOT_LEDMATRIX_EMOTICON_VALUE_OPTION25="tired";r.Msg.ELFBOT_LEDMATRIX_EMOTICON_VALUE_OPTION26="sleepy";r.Msg.ELFBOT_LEDMATRIX_EMOTICON_VALUE_OPTION27="dream";r.Msg.ELFBOT_LEDMATRIX_EMOTICON_VALUE_OPTION28="shocked";r.Msg.ELFBOT_LEDMATRIX_EMOTICON_VALUE_OPTION29="strabismus";r.Msg.ELFBOT_LEDMATRIX_EMOTICON_VALUE_OPTION30="cool";r.Msg.ELFBOT_LEDMATRIX_EMOTICON_VALUE_OPTION31="query";r.Msg.ELFBOT_LEDMATRIX_EMOTICON_VALUE_OPTION32="pain";r.Msg.ELFBOT_LEDMATRIX_EMOTICON_VALUE_OPTION33="uncomfortable";r.Msg.ELFBOT_LEDMATRIX_EMOTICON_VALUE_OPTION34="right";r.Msg.ELFBOT_LEDMATRIX_EMOTICON_VALUE_OPTION35="left";r.Msg.ELFBOT_LEDMATRIX_EMOTICON_VALUE_OPTION36="forward";r.Msg.ELFBOT_LEDMATRIX_EMOTICON_VALUE_OPTION37="backward";r.Msg.ELFBOT_LEDMATRIX_EMOTICON_VALUE_OPTION38="hello";r.Msg.ELFBOT_LEDMATRIX_EMOTICON_VALUE_OPTION39="bye";r.Msg.ELFBOT_LEDMATRIX_EMOTICON_VALUE_OPTION40="oK";r.Msg.ELFBOT_LEDMATRIX_EMOTICON_VALUE_OPTION41="good";r.Msg.ELFBOT_LEDMATRIX_EMOTICON_VALUE_OPTION42="yes";r.Msg.ELFBOT_LEDMATRIX_EMOTICON_VALUE_OPTION43="no";r.Msg.ELFBOT_LEDMATRIX_EMOTICON_VALUE_OPTION44="low_energy";r.Msg.ELFBOT_LEDMATRIX_EMOTICON_VALUE_OPTION45="meow";r.Msg.ELFBOT_LEDMATRIX_EMOTICON_VALUE_OPTION46="panda";r.Msg.ELFBOT_LEDMATRIX_SHOW_IMAGE="%1 %2 Elfbot show image %3";r.Msg.ELFBOT_LEDMATRIX_SHOW_IMAGE_DURATION="%1 %2 Elfbot show image %3 for %4 secs";r.Msg.ELFBOT_RGBLED_SHOW_EFFECTS_COLOR="%1 %2 Elfbot RGB LED always %3 show %4";r.Msg.ELFBOT_RGBLED_EFFECTS_VALUE_OPTION0="show";r.Msg.ELFBOT_RGBLED_EFFECTS_VALUE_OPTION1="blink";r.Msg.ELFBOT_RGBLED_EFFECTS_VALUE_OPTION2="breathing";r.Msg.ELFBOT_RGBLED_SHOW_POSITION_COLOR="%1 %2 Elfbot RGB LED %3 show %4";r.Msg.ELFBOT_RGBLED_POSITION_VALUE_OPTION0="all";r.Msg.ELFBOT_RGBLED_POSITION_VALUE_OPTION1="left";r.Msg.ELFBOT_RGBLED_POSITION_VALUE_OPTION2="right";r.Msg.ELFBOT_RGBLED_SHOW_POSITION_COLOR_DURATION="%1 %2 Elfbot RGB LED %3 show %4 ,for %5 secs";r.Msg.ELFBOT_RGBLED_SHOW_COLOR="%1 %2 Elfbot set the RGB LED with color %3";r.Msg.ELFBOT_RGBLED_COLOR_VALUE_OPTION0="red";r.Msg.ELFBOT_RGBLED_COLOR_VALUE_OPTION1="green";r.Msg.ELFBOT_RGBLED_COLOR_VALUE_OPTION2="blue";r.Msg.ELFBOT_RGBLED_COLOR_VALUE_OPTION3="yellow";r.Msg.ELFBOT_RGBLED_COLOR_VALUE_OPTION4="cyan";r.Msg.ELFBOT_RGBLED_COLOR_VALUE_OPTION5="purple";r.Msg.ELFBOT_RGBLED_COLOR_VALUE_OPTION6="black";r.Msg.ELFBOT_RGBLED_COLOR_VALUE_OPTION7="white";r.Msg.ELFBOT_RGBLED_CRUSHOUT="%1 %2 Elfbot RGB LED lights off";r.Msg.ELFBOT_INFRARED_WHENOVERHEAD="%1 %2 when detected ahead overhang";r.Msg.ELFBOT_INFRARED_LIGHTINTENSITY_VALUE="%1 %2 Elfbot reflected infrared light intensity";r.Msg.ELFBOT_INFRARED_DETECTED_ISHEAD="%1 %2 Elfbot cliff ahead?";r.Msg.ELFBOT_LINEPATROL_WHENDETECTEDCOLORD="%1 %2 when the detected colour is %3";r.Msg.ELFBOT_LINEPATROL_COLOR_VALUE_OPTION0="red";r.Msg.ELFBOT_LINEPATROL_COLOR_VALUE_OPTION1="green";r.Msg.ELFBOT_LINEPATROL_COLOR_VALUE_OPTION2="blue";r.Msg.ELFBOT_LINEPATROL_COLOR_VALUE_OPTION3="yellow";r.Msg.ELFBOT_LINEPATROL_COLOR_VALUE_OPTION4="cyan";r.Msg.ELFBOT_LINEPATROL_COLOR_VALUE_OPTION5="purple";r.Msg.ELFBOT_LINEPATROL_COLOR_VALUE_OPTION6="black";r.Msg.ELFBOT_LINEPATROL_COLOR_VALUE_OPTION7="white";r.Msg.ELFBOT_LINEPATROL_GREYSCALE="%1 %2 Elfbot grey-scale value";r.Msg.ELFBOT_LINEPATROL_DETECTED_COLOR="%1 %2 Elfbot the color is %3 ?";r.Msg.ELFBOT_LINEPATROL_DETECTED_COLOR_VALUE="%1 %2 Elfbot %3 color value detected";r.Msg.ELFBOT_LINEPATROL_LIGHTINTENSITY_VALUE="%1 %2 Elfbot reflected light intensity";r.Msg.ELFBOT_SERVO_HEAD_LOOKLEFT="%1 %2 Elfbot look left %3 degrees";r.Msg.ELFBOT_SERVO_HEAD_LOOKRIGHT="%1 %2 Elfbot look right %3 degrees";r.Msg.ELFBOT_SERVO_HEAD_LOOKUP="%1 %2 Elfbot look up %3 degrees";r.Msg.ELFBOT_SERVO_HEAD_LOOKDOWN="%1 %2 Elfbot look down %3 degrees";r.Msg.ELFBOT_SERVO_EAR_TURNFORWARD="%1 %2 Elfbot ear turn forward %3 degrees";r.Msg.ELFBOT_SERVO_EAR_TURNBACKWARD="%1 %2 Elfbot ear turn backward %3 degrees";r.Msg.ELFBOT_VEHICLEWHEEL_RUN_DIRECTION_POWER="%1 %2 Elfbot %3 at power %4 %";r.Msg.ELFBOT_VEHICLEWHEEL_DIRECTION_VALUE_OPTION0="move forward";r.Msg.ELFBOT_VEHICLEWHEEL_DIRECTION_VALUE_OPTION1="move backward";r.Msg.ELFBOT_VEHICLEWHEEL_DIRECTION_VALUE_OPTION2="turn left";r.Msg.ELFBOT_VEHICLEWHEEL_DIRECTION_VALUE_OPTION3="turn right";r.Msg.ELFBOT_VEHICLEWHEEL_RUNFORWORD_POWER_DURATION="%1 %2 Elfbot move forward at power %3 %, for %4 secs";r.Msg.ELFBOT_VEHICLEWHEEL_RUNBACKWORD_POWER_DURATION="%1 %2 Elfbot move backward at power %3 %, for %4 secs";r.Msg.ELFBOT_VEHICLEWHEEL_RUNLEFT_POWER_DURATION="%1 %2 Elfbot turn left at power %3 %, for %4 secs";r.Msg.ELFBOT_VEHICLEWHEEL_RUNRIGHT_POWER_DURATION="%1 %2 Elfbot turn right at power %3 %, for %4 secs";r.Msg.ELFBOT_VEHICLEWHEEL_RUN_POWER="%1 %2 Elfbot left wheel at power %3 % and right wheel at power %4 %";r.Msg.ELFBOT_VEHICLEWHEEL_RUNFORWORD_DURATION="%1 %2 Elfbot keep straight forward %3 secs";r.Msg.ELFBOT_VEHICLEWHEEL_RUNBACKWORD_DURATION="%1 %2 Elfbot keep straight backward for %3 secs";r.Msg.ELFBOT_VEHICLEWHEEL_RUN_STOP="%1 %2 Elfbot stop moving";r.Msg.ELFBOT_LIGHT_INTENSITY_VALUE="%1 %2 Elfbot ambient light intensity";r.Msg.ELFBOT_SOUND_LOUDNESS_VALUE="%1 %2 Elfbot loudness";r.Msg.ELFBOT_SOUND_PLAY="%1 %2 Elfbot play sound %3";r.Msg.ELFBOT_SOUND_VALUE_OPTION0="hello";r.Msg.ELFBOT_SOUND_VALUE_OPTION1="miao";r.Msg.ELFBOT_SOUND_VALUE_OPTION2="bye";r.Msg.ELFBOT_SOUND_VALUE_OPTION3="hum";r.Msg.ELFBOT_SOUND_VALUE_OPTION4="laugh";r.Msg.ELFBOT_SOUND_VALUE_OPTION5="wrong";r.Msg.ELFBOT_SOUND_VALUE_OPTION6="right";r.Msg.ELFBOT_SOUND_VALUE_OPTION7="sad";r.Msg.ELFBOT_SOUND_VALUE_OPTION8="vehicles";r.Msg.ELFBOT_SOUND_VALUE_OPTION9="yeah";r.Msg.ELFBOT_SOUND_VALUE_OPTION10="powerdown";r.Msg.ELFBOT_SOUND_PLAY_UNTILDONE="%1 %2 Elfbot play sound %3 until done";r.Msg.ELFBOT_SOUND_STOP_PLAY="%1 %2 Elfbot stop all sounds";r.Msg.ELFBOT_SOUND_REST_BEATS="%1 %2 Elfbot rest for %3 beats";r.Msg.ELFBOT_SOUND_BEAT_VALUE_OPTION0="1";r.Msg.ELFBOT_SOUND_BEAT_VALUE_OPTION1="1/2";r.Msg.ELFBOT_SOUND_BEAT_VALUE_OPTION2="1/4";r.Msg.ELFBOT_SOUND_BEAT_VALUE_OPTION3="1/8";r.Msg.ELFBOT_SOUND_BEAT_VALUE_OPTION4="1/16";r.Msg.ELFBOT_SOUND_BEAT_VALUE_OPTION5="2";r.Msg.ELFBOT_SOUND_BEAT_VALUE_OPTION6="4";r.Msg.ELFBOT_SOUND_BEAT_VALUE_OPTION7="8";r.Msg.ELFBOT_SOUND_PLAY_FREQUENCYHZ="%1 %2 Elfbot play sound at frequency %3 HZ for a %4 secs";r.Msg.ELFBOT_SOUND_CHANGE_VOLUME="%1 %2 Elfbot change volume by %3";r.Msg.ELFBOT_SOUND_SET_VOLUME="%1 %2 Elfbot set volume to %3";r.Msg.ELFBOT_SOUND_VOLUME="%1 %2 Elfbot volume";r.Msg.ELFBOT_SOUND_NOTE_BEATS="%1 %2 Elfbot play note %3 for %4 beats";r.Msg.ELFBOT_LINECOLOR_DETECT="%1 %2 Color Line Follower is seeing %3";r.Msg.ELFBOT_LINECOLOR_DETECT_POSITION="%1 %2 Color Line Follower %3 position %4";r.Msg.ELFBOT_LINECOLOR_OPT0="red";r.Msg.ELFBOT_LINECOLOR_OPT1="green";r.Msg.ELFBOT_LINECOLOR_OPT2="blue";r.Msg.ELFBOT_LINECOLOR_DETECT_BLACK="black line";r.Msg.ELFBOT_LINECOLOR_DETECT_WRITE="white line";r.Msg.ELFBOT_LINECOLOR_DETECT_POSITION_OPT0="middle";r.Msg.ELFBOT_LINECOLOR_DETECT_POSITION_OPT1="right";r.Msg.ELFBOT_LINECOLOR_DETECT_POSITION_OPT2="right-most";r.Msg.ELFBOT_LINECOLOR_DETECT_POSITION_OPT3="left";r.Msg.ELFBOT_LINECOLOR_DETECT_POSITION_OPT4="left-most";r.Msg.ELFBOT_LINECOLOR_DETECT_POSITION_OPT5="lost";r.Msg.MICROBIT_WHEN_START="%1 %2 when Elfbot starts up";r.Msg.MICROBIT_WHEN_BUTTONPRESSED="%1 %2 When %3 is pressed";r.Msg.MICROBIT_BUTTON_VALUE_OPTION0="A";r.Msg.MICROBIT_BUTTON_VALUE_OPTION1="B";r.Msg.MICROBIT_BUTTON_VALUE_OPTION2="A+B";r.Msg.MICROBIT_WHEN_PINSTOUCHED="%1 %2 when pin %3 connected";r.Msg.MICROBIT_PINS_VALUE_OPTION0="0";r.Msg.MICROBIT_PINS_VALUE_OPTION1="1";r.Msg.MICROBIT_PINS_VALUE_OPTION2="2";r.Msg.MICROBIT_WHEN_GESTURESTRIKE="%1 %2 when the gesture %3";r.Msg.MICROBIT_GESTURE_VALUE_OPTION0="shaken";r.Msg.MICROBIT_GESTURE_VALUE_OPTION1="tilted upward";r.Msg.MICROBIT_GESTURE_VALUE_OPTION2="tilted downwrad";r.Msg.MICROBIT_GESTURE_VALUE_OPTION3="tilted leftward";r.Msg.MICROBIT_GESTURE_VALUE_OPTION4="tilted rightward";r.Msg.MICROBIT_GESTURE_VALUE_OPTION5="face up";r.Msg.MICROBIT_GESTURE_VALUE_OPTION6="face down";r.Msg.MICROBIT_GESTURE_VALUE_OPTION7="free fall";r.Msg.MICROBIT_GESTURE_VALUE_OPTION8="3g";r.Msg.MICROBIT_GESTURE_VALUE_OPTION9="6g";r.Msg.MICROBIT_GESTURE_VALUE_OPTION10="5g";r.Msg.MICROBIT_COMMUCATION_OPEN="%1 %2 open wireless communication";r.Msg.MICROBIT_COMMUCATION_CLOSED="%1 %2 close wireless communication";r.Msg.MICROBIT_COMMUCATION_RESET="%1 %2 reest wireless communication";r.Msg.MICROBIT_COMMUCATION_RECEIVE="%1 %2 receive wireless message";r.Msg.MICROBIT_COMMUCATION_SEND="%1 %2 send wireless message %3";r.Msg.MICROBIT_COMMUCATION_SETCHANNEL="%1 %2 set wireless communication channel %3";r.Msg.MICROBIT_PIN_CONNECTED="%1 %2 pin %3 is connected?";r.Msg.MICROBIT_PIN_ANALOGQUANTITY="%1 %2 pin %3 analog quantity";r.Msg.MICROBIT_PIN_SET_ANALOGQUANTITY="%1 %2 set %3 analog quantity %4";r.Msg.MICROBIT_PIN_NUMBER_INPUT="%1 %2 pin %3 with number input?";r.Msg.MICROBIT_PIN_ANALOG_MAP_TO="%1 %2 map analog pin %3 to low %4 high %5";r.Msg.MICROBIT_PIN_ANALOG_READ="%1 %2 analog read pin %3";r.Msg.MICROBIT_PIN_ANALOG_WRITE="%1 %2 analog write pin %3 to %4";r.Msg.MICROBIT_PIN_ANALOG_SET_PERIOD="%1 %2 analog set period pin %3 (PWM) to %4 (us)";r.Msg.MICROBIT_PIN_DIGITAL_READ="%1 %2 digital read pin %3";r.Msg.MICROBIT_PIN_DIGITAL_IS="%1 %2 digital pin %3 is %4";r.Msg.MICROBIT_PIN_DIGITAL_IS_OPT1="high";r.Msg.MICROBIT_PIN_DIGITAL_IS_OPT2="low";r.Msg.MICROBIT_PIN_DIGITAL_SET_TO="%1 %2 set digital pin %3 to %4";r.Msg.MICROBIT_PIN_I2C_READ="%1 %2 i2c read number at address %3 of format %4 repeated %5";r.Msg.MICROBIT_PIN_I2C_WRITE="%1 %2 i2c write number at address %3 with value %4 of format %5 repeated %6";r.Msg.MICROBIT_PIN_I2C_READ_OPT1="no";r.Msg.MICROBIT_PIN_I2C_READ_OPT2="yes";r.Msg.MICROBIT_SENSOR_BUTTON_PRESSED="%1 %2 %3button is pressed?";r.Msg.MICROBIT_SENSOR_GESTURE_STRIKE="%1 %2 gesture is %3?";r.Msg.MICROBIT_SENSOR_ACCELERATION="%1 %2 %3 acceleration";r.Msg.MICROBIT_SENSOR_ACCELERATION_VALUE_OPTION0="x-axis";r.Msg.MICROBIT_SENSOR_ACCELERATION_VALUE_OPTION1="y-axis";r.Msg.MICROBIT_SENSOR_ACCELERATION_VALUE_OPTION2="z-axis";r.Msg.MICROBIT_SENSOR_COMPASSANGLE="%1 %2 compass angle";r.Msg.MICROBIT_SENSOR_COMPASS_MAGNETICDENSITY="%1 %2 compasss magnetic density";r.Msg.MICROBIT_SENSOR_CALIBRATE_COMPASS="%1 %2 calibrate compass";r.Msg.MICROBIT_SENSOR_TEMPERATURE="%1 %2 temperature";r.Msg.MICROBIT_SENSOR_RUNNINGTIME="%1 %2 running time";r.Msg.MICROBIT_SHOW_IMAGE="%1 %2 show image %3";r.Msg.MICROBIT_SHOW_IMAGEFOR="%1 %2 show image %3 for %4 secs";r.Msg.MICROBIT_SHOW_MIRRORING_IMAGE="%1 %2 show mirroring image %3";r.Msg.MICROBIT_SHOW_SETIMAGE="%1 %2 set image %3 %4 to move %5";r.Msg.MICROBIT_SHOW_POSITION_VALUE_OPTION0="left";r.Msg.MICROBIT_SHOW_POSITION_VALUE_OPTION1="right";r.Msg.MICROBIT_SHOW_POSITION_VALUE_OPTION2="up";r.Msg.MICROBIT_SHOW_POSITION_VALUE_OPTION3="down";r.Msg.MICROBIT_SHOW_TEXT="%1 %2 show %3";r.Msg.MICROBIT_SHOW_TEXTUNTIL="%1 %2 show %3 until scoll done";r.Msg.MICROBIT_SHOW_CLOSE="%1 %2 hide all matrix";r.Msg.MICROBIT_SHOW_LIGHT="%1 %2 light %3 at the x: %4axis, y: %5axis";r.Msg.MICROBIT_SHOW_LIGHT_ACTION_VALUE_OPTION0="up";r.Msg.MICROBIT_SHOW_LIGHT_ACTION_VALUE_OPTION1="off";r.Msg.MICROBIT_SHOW_LIGHTON="%1 %2 show on the x: %3axis, y: %4axis with brightness %5";r.Msg.MICROBIT_SHOW_BRIGHTNESS="%1 %2 get brightness at x: %3, y: %4";r.Msg.MICROBIT_MUSIC_PLAY="%1 %2 pin %3 plays sound %4";r.Msg.MICROBIT_MUSIC_PLAY_UNTILDONE="%1 %2 pin %3 plays sound %4 until done";r.Msg.MICROBIT_MUSIC_PLAY_NOTE="%1 %2 pin %3 plays note %4 for %5";r.Msg.MICROBIT_MUSIC_CHANGETEMPO="%1 %2 change tempo by %3 (bpm)";r.Msg.MICROBIT_MUSIC_SETTEMPO="%1 %2 set tempo to %3 (bpm)";r.Msg.MICROBIT_MUSIC_TEMPO="%1 %2 tempo (bpm)";r.Msg.MICROBIT_BITPLAYER_KEY_IS_PRESSED="%1 %2 BitPlayer: key %3 is pressed";r.Msg.MICROBIT_BITPLAYER_JOYSTICK="%1 %2 BitPlayer: joystick %3";r.Msg.MICROBIT_BITPLAYER_VIBRATION="%1 %2 BitPlayer: vibration %3";r.Msg.MICROBIT_BITPLAYER_VIBRATION_OPT1="on";r.Msg.MICROBIT_BITPLAYER_VIBRATION_OPT2="off";r.Msg.MICROBIT_BITPLAYER_JOYSTICK_OPT1="UpLeft";r.Msg.MICROBIT_BITPLAYER_JOYSTICK_OPT2="Up";r.Msg.MICROBIT_BITPLAYER_JOYSTICK_OPT3="UpRight";r.Msg.MICROBIT_BITPLAYER_JOYSTICK_OPT4="Left";r.Msg.MICROBIT_BITPLAYER_JOYSTICK_OPT5="Middle";r.Msg.MICROBIT_BITPLAYER_JOYSTICK_OPT6="Right";r.Msg.MICROBIT_BITPLAYER_JOYSTICK_OPT7="LowerLeft";r.Msg.MICROBIT_BITPLAYER_JOYSTICK_OPT8="Down";r.Msg.MICROBIT_BITPLAYER_JOYSTICK_OPT9="LowerRight";r.Msg.MICROBIT_BITWEAR_VIBRATION="%1 %2 BitWear: vibration %3";r.Msg.MICROBIT_BITWEAR_SET_LED_COLOR="%1 %2 BitWear: set LED color %3";r.Msg.MICROBIT_BITMAKER_SET_LED_COLOR="%1 %2 BitMaker: set LED %3 color %4";r.Msg.MICROBIT_BITCAR_MOVE="%1 %2 BitCar: left motor %3 %,right motor %4 %";r.Msg.MICROBIT_BITCAR_STOP="%1 %2 BitCar: stop";r.Msg.MICROBIT_BITCAR_STANDUP_STILL="%1 %2 BitCar: stand up with speed %3 %, charge %4 (ms)";r.Msg.MICROBIT_BITCAR_LINE_UNDER_SENSOR="%1 %2 BitCar: line under %3 sensor";r.Msg.MICROBIT_BITCAR_LINE_UNDER_SENSOR_OPT1="left";r.Msg.MICROBIT_BITCAR_LINE_UNDER_SENSOR_OPT2="right";r.Msg.MICROBIT_BITCAR_LINE_FOLLOW_AT_SPEED="%1 %2 BitCar: follow line at speed %3 %";r.Msg.MICROBIT_GROVE_ONE_MINI_FAN_SET_SPEED="%1 %2 Mini Fan %3 :set speed to %4 %";r.Msg.MICROBIT_GROVE_ONE_SERVO_SET_ANGLE="%1 %2 Servo %3 :set angle to %4 °";r.Msg.MICROBIT_GROVE_ONE_ULTRASONIC_GET_DISTANCE="%1 %2 Ultrasonic Sensor %3 :distance in %4";r.Msg.MICROBIT_GROVE_ONE_ULTRASONIC_GET_DISTANCE_OPT1="cm";r.Msg.MICROBIT_GROVE_ONE_ULTRASONIC_GET_DISTANCE_OPT2="inch";r.Msg.CATEGORY_COMMON="Common";r.Msg.CATEGORY_SYSTEM="System";r.Msg.CATEGORY_SHOW="Show";r.Msg.CATEGORY_MUSIC="Music";r.Msg.CATEGORY_AUDIO="Audio";r.Msg.CATEGORY_PIN="Pin";r.Msg.CATEGORY_RADIO="Radio";r.Msg.CATEGORY_DISPLAY="Looks";r.Msg.CATEGORY_LIGHTING="Lighting";r.Msg.CATEGORY_ACTION="Motion";r.Msg.CATEGORY_SENSOR="Sensor";r.Msg.CATEGORY_WIRELESS="Wireless";r.Msg.CATEGORY_ADDONS="Add-Ons";r.Msg.CATEGORY_GROVE_ONE="Grove One";r.Msg.CATEGORY_DISPLAY1="Display";r.Msg.CATEGORY_MACHINE_VISION="Machine Vision";r.Msg.CATEGORY_CNN_MODELS="Model Recognition";r.Msg.CATEGORY_MAXIDUINO_SYSTEM="System";r.Msg.CATEGORY_START="Start";r.Msg.CATEGORY_GROVE_INPUT="Grove Input";r.Msg.CATEGORY_GROVE_OUTPUT="Grove Output";r.Msg.CATEGORY_MAIXDUINO_GROVE="Grove";r.Msg.SNAPSHOOT="Snapshoot";r.Msg.MAIXDUINO_ENENT_DELAY="wait %1 %2";r.Msg.MAIXDUINO_ENENT_DELAY_UNIT_MS="ms";r.Msg.MAIXDUINO_ENENT_DELAY_UNIT_US="us";r.Msg.MAIXDUINO_ENENT_RUNTIME="run time %1";r.Msg.MAIXDUINO_DISPLAY_ORIENTATION="set screen orientation as %1";r.Msg.MAIXDUINO_DISPLAY_ORIENTATION_NORMAL="normal";r.Msg.MAIXDUINO_DISPLAY_ORIENTATION_ROTATE="flipped";r.Msg.MAIXDUINO_DISPLAY_STRING_AT_POSITION="display %1 at X%2 Y%3";r.Msg.MAIXDUINO_DISPLAY_DRAW_RECTANGLE_WH="draw rectangle: W%1 H%2 at X%3 Y%4";r.Msg.MAIXDUINO_CAMERA_DETECTION_BALL_AT_SIZE_COLOR="%1 circle detected";r.Msg.MAIXDUINO_CAMERA_DETECTION_BALL_RGB="detected circle RGB value";r.Msg.MAIXDUINO_CAMERA_DETECTION_RECTANGLE_AT_SIZE_COLOR="%1 rectangle detected";r.Msg.MAIXDUINO_CAMERA_DETECTION_RECTANGLE_RGB="detected rectangle RGB value";r.Msg.MAIXDUINO_CAMERA_COLORLINE_SETCOLOR="set line idendification color to %1";r.Msg.MAIXDUINO_CAMERA_COLORLINE_SETWEIGHT="set line idendification region weight: A %1% B %2% C %3%";r.Msg.MAIXDUINO_CAMERA_COLORLINE_TURNANGLE="turn angle";r.Msg.MAIXDUINO_SEEED_LINE_FINDER="%1 %2 pin %3 Line Follower is seeing %4";r.Msg.MAIXDUINO_FIGURE_OUTPUT="digital write pin %1 to %2";r.Msg.MAIXDUINO_FIGURE_INPUT="digital read pin %1";r.Msg.MAIXDUINO_ANALOG_INPUT="AnalogRead pin %1";r.Msg.MAIXDUINO_ANALOG_OUTPUT="analog write pin %1 to %2";r.Msg.MAIXDUINO_CAMERA_COORDP_X="X coordinate";r.Msg.MAIXDUINO_CAMERA_COORDP_W="W";r.Msg.MAIXDUINO_CAMERA_COORDP_H="H";r.Msg.MAIXDUINO_ROBOT_MARK_OPT1="forward";r.Msg.MAIXDUINO_ROBOT_MARK_OPT2="backward";r.Msg.MAIXDUINO_ROBOT_MARK_OPT3="left";r.Msg.MAIXDUINO_ROBOT_MARK_OPT4="right";r.Msg.MAIXDUINO_ROBOT_MARK_OPT6="low";r.Msg.MAIXDUINO_ROBOT_MARK_OPT7="medium";r.Msg.MAIXDUINO_ROBOT_MARK_OPT8="max";r.Msg.MAIXDUINO_ROBOT_MARK_STOP="M.A.R.K stop";r.Msg.MAIXDUINO_ROBOT_MOTOR_RUN_0PT1="left";r.Msg.MAIXDUINO_ROBOT_MOTOR_RUN_0PT2="right";r.Msg.MAIXDUINO_GROVE_BUTTON_ISPRESSED="%1 %2 pin %3 Button is pressed?";r.Msg.MAIXDUINO_GROVE_ULT_DISTANCE="%1 %2 pin %3 Ultrasonic Sensor distance(cm)";r.Msg.MAIXDUINO_GROVE_RGBLED_STRIP_DISPALY="%1 %2 pin %3 RGB LED strip set LED %4 to %5";r.Msg.MAIXDUINO_GROVE_RGBLED_STRIP_DISPALY1="%1 %2 pin %3 RGB LED strip set LED %4 to R %5 G %6 B %7";r.Msg.MAIXDUINO_GROVE_RGBLED_STRIP_CLOSED="%1 %2 pin %3 RGB LED strip off";r.Msg.MAIXDUINO_ROBOT_SPEAKER_SETVOL="M.A.R.K. Speaker set volume to %1 %";r.Msg.MAIXDUINO_ROBOT_SPEAKER_PLAYNOTE="M.A.R.K. Speaker play tone %1 %2 beat";r.Msg.MAIXDUINO_ROBOT_SPEAKER_PAUSE="M.A.R.K. Speaker rest %1 beat";r.Msg.MAIXDUINO_ROBOT_SPEAKER_BEAT_OPT0="1";r.Msg.MAIXDUINO_ROBOT_SPEAKER_BEAT_OPT1="1/2";r.Msg.MAIXDUINO_ROBOT_SPEAKER_BEAT_OPT2="1/4";r.Msg.MAIXDUINO_ROBOT_SPEAKER_BEAT_OPT3="1/8";r.Msg.MAIXDUINO_ROBOT_SPEAKER_BEAT_OPT4="1/16";r.Msg.MAIXDUINO_ROBOT_SPEAKER_BEAT_OPT5="2";r.Msg.MAIXDUINO_ROBOT_SPEAKER_BEAT_OPT6="4";r.Msg.MAIXDUINO_ROBOT_SPEAKER_BEAT_OPT7="8";r.Msg.MAIXDUINO_ROBOT_HEAD_LIGHTS_SHOW="M.A.R.K %1 headlight show %2";r.Msg.MAIXDUINO_ROBOT_TAIL_LIGHTS_SHOW="M.A.R.K. rear light %1 show %2 %3 %4 ";r.Msg.MAIXDUINO_ROBOT_LIGHTS_CRUSHOUT="M.A.R.K. %1 headlight off";r.Msg.MAIXDUINO_ROBOT_HEAD_LIGHTS_OPT01="left";r.Msg.MAIXDUINO_ROBOT_HEAD_LIGHTS_OPT02="right";r.Msg.MAIXDUINO_ROBOT_TAIL_LIGHTS_OPT01="top";r.Msg.MAIXDUINO_ROBOT_TAIL_LIGHTS_OPT02="mid";r.Msg.MAIXDUINO_ROBOT_TAIL_LIGHTS_OPT03="tail";r.Msg.MAIXDUINO_ROBOT_LIGHTS_OPT01="all";r.Msg.MAIXDUINO_ROBOT_LIGHTS_OPT02="head";r.Msg.MAIXDUINO_ROBOT_LIGHTS_OPT03="rear";r.Msg.CocoRobo_SYSRESOURES_SLOPE_OPT1="forward";r.Msg.CocoRobo_SYSRESOURES_SLOPE_OPT2="back";r.Msg.CocoRobo_SYSRESOURES_SLOPE_OPT3="left";r.Msg.CocoRobo_SYSRESOURES_SLOPE_OPT4="right";r.Msg.CocoRobo_SYSRESOURES_BME280_OPT1="temperature";r.Msg.CocoRobo_SYSRESOURES_BME280_OPT2="humidity";r.Msg.CocoRobo_SYSRESOURES_BME280_OPT3="air pressure";r.Msg.CocoRobo_SYSRESOURES_OPERATE_OPT1="refresh";r.Msg.CocoRobo_SYSRESOURES_OPERATE_OPT2="clear";r.Msg.CocoRobo_SYSRESOURES_TIME_OPT0="clear";r.Msg.CocoRobo_SYSRESOURES_TIME_OPT1="year";r.Msg.CocoRobo_SYSRESOURES_TIME_OPT2="month";r.Msg.CocoRobo_SYSRESOURES_TIME_OPT3="day";r.Msg.CocoRobo_SYSRESOURES_TIME_OPT4="hour";r.Msg.CocoRobo_SYSRESOURES_TIME_OPT5="minute";r.Msg.CocoRobo_SYSRESOURES_TIME_OPT6="second";r.Msg.CocoRobo_SYSRESOURES_TIME_OPT7="week number";r.Msg.CocoRobo_SYSRESOURES_TIME_OPT8="days number";r.Msg.CocoRobo_SYSRESOURES_TIME_OPT9="mullisecond";r.Msg.CocoRobo_SYSRESOURES_TIME_OPT10="microsecond";r.Msg.CocoRobo_PIN_OPT="default";r.Msg.CocoRobo_PIN_OPT0="P0";r.Msg.CocoRobo_PIN_OPT1="P1";r.Msg.CocoRobo_PIN_OPT2="P2";r.Msg.CocoRobo_PIN_OPT3="P3(EXT)";r.Msg.CocoRobo_PIN_OPT4="P4(light)";r.Msg.CocoRobo_PIN_OPT6="P6(buzzer)";r.Msg.CocoRobo_PIN_OPT7="P7(RGB)";r.Msg.CocoRobo_PIN_OPT8="P8";r.Msg.CocoRobo_PIN_OPT9="P9";r.Msg.CocoRobo_PIN_OPT10="P10(sound)";r.Msg.CocoRobo_PIN_OPT13="P13";r.Msg.CocoRobo_PIN_OPT14="P14";r.Msg.CocoRobo_PIN_OPT15="P15";r.Msg.CocoRobo_PIN_OPT16="P16";r.Msg.CocoRobo_PIN_OPT19="P19(LCD)";r.Msg.CocoRobo_PIN_OPT20="P20(LCD)";r.Msg.CocoRobo_PIN_VOLTAGE_OPT1="HIGH";r.Msg.CocoRobo_PIN_VOLTAGE_OPT2="LOW";r.Msg.CocoRobo_PIN_MODE_OPT1="no pull";r.Msg.CocoRobo_PIN_MODE_OPT2="pull down";r.Msg.CocoRobo_PIN_MODE_OPT3="pull up";r.Msg.CocoRobo_PIN_STATYS_OPT1="input";r.Msg.CocoRobo_PIN_STATYS_OPT2="Push-pull output";r.Msg.CocoRobo_PIN_STATYS_OPT3="Leaky output";r.Msg.CocoRobo_LOOKS_OLCD_OPT1="clear";r.Msg.CocoRobo_LOOKS_OLCD_OPT2="full bright";r.Msg.CocoRobo_LOOKS_OLCD_OPT3="black background";r.Msg.CocoRobo_LOOKS_OLCD_OPT4="white background";r.Msg.CocoRobo_EVENT_ACTION_OPT1="pressed";r.Msg.CocoRobo_EVENT_ACTION_OPT2="released";r.Msg.CocoRobo_EVENT_ACTION_OPT3="pressed";r.Msg.CocoRobo_EVENT_ACTION_OPT4="unpressed";r.Msg.CocoRobo_EVENT_ACTION_OPT5="repeated";r.Msg.CocoRobo_EVENT_ACTION_OPT6="delayed";r.Msg.CocoRobo_MUSIC_ACTION_OPT1="on";r.Msg.CocoRobo_MUSIC_ACTION_OPT2="off";r.Msg.CocoRobo_MUSIC_ACTION_OPT3="pause";r.Msg.CocoRobo_MUSIC_ACTION_OPT4="go on";r.Msg.CocoRobo_MUSIC_ACTION_OPT5="stop";r.Msg.CocoRobo_EVENT_VOLTAGE_OPT1="↗low to high";r.Msg.CocoRobo_EVENT_VOLTAGE_OPT2="↘high to low";r.Msg.CocoRobo_LOOKS_MODE_OPT1="normal";r.Msg.CocoRobo_LOOKS_MODE_OPT2="rev";r.Msg.CocoRobo_LOOKS_MODE_OPT3="trans";r.Msg.CocoRobo_LOOKS_MODE_OPT4="XOR";r.Msg.CocoRobo_LOOKS_LIGHT_OPT1="bright";r.Msg.CocoRobo_LOOKS_LIGHT_OPT2="dark";r.Msg.CocoRobo_LOOKS_DIRECTION_OPT1="vertical";r.Msg.CocoRobo_LOOKS_DIRECTION_OPT2="horizontal";r.Msg.CocoRobo_OPERATORS_JUDGE_OPT1="even";r.Msg.CocoRobo_OPERATORS_JUDGE_OPT2="odd";r.Msg.CocoRobo_OPERATORS_JUDGE_OPT3="whole";r.Msg.CocoRobo_OPERATORS_JUDGE_OPT4="positive";r.Msg.CocoRobo_OPERATORS_JUDGE_OPT5="negative";r.Msg.CocoRobo_OPERATORS_JUDGE_OPT6="divisible by";r.Msg.CocoRobo_LOOKS_DRAW_OPT1="draw";r.Msg.CocoRobo_LOOKS_DRAW_OPT2="erase";r.Msg.CocoRobo_LOOKS_CIRCLE_OPT1="hollow";r.Msg.CocoRobo_LOOKS_CIRCLE_OPT2="solid";r.Msg.CocoRobo_LOOKS_FONT_OPT1="no wrap";r.Msg.CocoRobo_LOOKS_FONT_OPT2="auto wrap";r.Msg.CocoRobo_LOOKS_EXPRESSION_OPT1="Heart";r.Msg.CocoRobo_LOOKS_EXPRESSION_OPT2="Small heart";r.Msg.CocoRobo_LOOKS_EXPRESSION_OPT3="Happy";r.Msg.CocoRobo_LOOKS_EXPRESSION_OPT4="Smile";r.Msg.CocoRobo_LOOKS_EXPRESSION_OPT5="Sad";r.Msg.CocoRobo_LOOKS_EXPRESSION_OPT6="Confused";r.Msg.CocoRobo_LOOKS_EXPRESSION_OPT7="Angry";r.Msg.CocoRobo_LOOKS_EXPRESSION_OPT8="Sleep";r.Msg.CocoRobo_LOOKS_EXPRESSION_OPT9="Surprise";r.Msg.CocoRobo_LOOKS_EXPRESSION_OPT10="Silly";r.Msg.CocoRobo_LOOKS_EXPRESSION_OPT11="Wonderful";r.Msg.CocoRobo_LOOKS_EXPRESSION_OPT12="Bored";r.Msg.CocoRobo_LOOKS_EXPRESSION_OPT13="Rock";r.Msg.CocoRobo_LOOKS_EXPRESSION_OPT14="Small rock";r.Msg.CocoRobo_LOOKS_EXPRESSION_OPT15="Paper";r.Msg.CocoRobo_LOOKS_EXPRESSION_OPT16="Small Paper";r.Msg.CocoRobo_LOOKS_EXPRESSION_OPT17="Scissors";r.Msg.CocoRobo_LOOKS_EXPRESSION_OPT18="Small scissors";r.Msg.CocoRobo_LOOKS_EXPRESSION_OPT19="Expressions/Big smile.pbm";r.Msg.CocoRobo_LOOKS_EXPRESSION_OPT20="Expressions/Heart large.pbm";r.Msg.CocoRobo_LOOKS_EXPRESSION_OPT21="Expressions/Heart small.pbm";r.Msg.CocoRobo_LOOKS_EXPRESSION_OPT22="Expressions/Mouth 1 open.pbm";r.Msg.CocoRobo_LOOKS_EXPRESSION_OPT23="Expressions/Mouth 1 shut.pbm";r.Msg.CocoRobo_LOOKS_EXPRESSION_OPT24="Expressions/Mouth 2 open.pbm";r.Msg.CocoRobo_LOOKS_EXPRESSION_OPT25="Expressions/Mouth 2 shut.pbm";r.Msg.CocoRobo_LOOKS_EXPRESSION_OPT26="Expressions/Sad.pbm";r.Msg.CocoRobo_LOOKS_EXPRESSION_OPT27="Expressions/Sick.pbm";r.Msg.CocoRobo_LOOKS_EXPRESSION_OPT28="Expressions/Smile.pbm";r.Msg.CocoRobo_LOOKS_EXPRESSION_OPT29="Expressions/Swearing.pbm";r.Msg.CocoRobo_LOOKS_EXPRESSION_OPT30="Expressions/Talking.pbm";r.Msg.CocoRobo_LOOKS_EXPRESSION_OPT31="Expressions/Wink.pbm";r.Msg.CocoRobo_LOOKS_EXPRESSION_OPT32="Expressions/ZZZ.pbm";r.Msg.CocoRobo_LOOKS_EXPRESSION_OPT33="Eyes/Angry.pbm";r.Msg.CocoRobo_LOOKS_EXPRESSION_OPT34="Eyes/Awake.pbm";r.Msg.CocoRobo_LOOKS_EXPRESSION_OPT35="Eyes/Black eye.pbm";r.Msg.CocoRobo_LOOKS_EXPRESSION_OPT36="Eyes/Bottom left.pbm";r.Msg.CocoRobo_LOOKS_EXPRESSION_OPT37="Eyes/Bottom right.pbm";r.Msg.CocoRobo_LOOKS_EXPRESSION_OPT38="Eyes/Crazy 1.pbm";r.Msg.CocoRobo_LOOKS_EXPRESSION_OPT39="Eyes/Crazy 2.pbm";r.Msg.CocoRobo_LOOKS_EXPRESSION_OPT40="Eyes/Disappointed.pbm";r.Msg.CocoRobo_LOOKS_EXPRESSION_OPT41="Eyes/Dizzy.pbm";r.Msg.CocoRobo_LOOKS_EXPRESSION_OPT42="Eyes/Down.pbm";r.Msg.CocoRobo_LOOKS_EXPRESSION_OPT43="Eyes/Evil.pbm";r.Msg.CocoRobo_LOOKS_EXPRESSION_OPT44="Eyes/Hurt.pbm";r.Msg.CocoRobo_LOOKS_EXPRESSION_OPT45="Eyes/Knocked out.pbm";r.Msg.CocoRobo_LOOKS_EXPRESSION_OPT46="Eyes/Love.pbm";r.Msg.CocoRobo_LOOKS_EXPRESSION_OPT47="Eyes/Middle left.pbm";r.Msg.CocoRobo_LOOKS_EXPRESSION_OPT48="Eyes/Middle right.pbm";r.Msg.CocoRobo_LOOKS_EXPRESSION_OPT49="Eyes/Neutral.pbm";r.Msg.CocoRobo_LOOKS_EXPRESSION_OPT50="Eyes/Nuclear.pbm";r.Msg.CocoRobo_LOOKS_EXPRESSION_OPT51="Eyes/Pinch left.pbm";r.Msg.CocoRobo_LOOKS_EXPRESSION_OPT52="Eyes/Pinch middle.pbm";r.Msg.CocoRobo_LOOKS_EXPRESSION_OPT53="Eyes/Pinch right.pbm";r.Msg.CocoRobo_LOOKS_EXPRESSION_OPT54="Eyes/Tear.pbm";r.Msg.CocoRobo_LOOKS_EXPRESSION_OPT55="Eyes/Tired left.pbm";r.Msg.CocoRobo_LOOKS_EXPRESSION_OPT56="Eyes/Tired middle.pbm";r.Msg.CocoRobo_LOOKS_EXPRESSION_OPT57="Eyes/Tired right.pbm";r.Msg.CocoRobo_LOOKS_EXPRESSION_OPT58="Eyes/Toxic.pbm";r.Msg.CocoRobo_LOOKS_EXPRESSION_OPT59="Eyes/Up.pbm";r.Msg.CocoRobo_LOOKS_EXPRESSION_OPT60="Eyes/Winking.pbm";r.Msg.CocoRobo_LOOKS_EXPRESSION_OPT61="Information/Accept.pbm";r.Msg.CocoRobo_LOOKS_EXPRESSION_OPT62="Information/Backward.pbm";r.Msg.CocoRobo_LOOKS_EXPRESSION_OPT63="Information/Decline.pbm";r.Msg.CocoRobo_LOOKS_EXPRESSION_OPT64="Information/Forward.pbm";r.Msg.CocoRobo_LOOKS_EXPRESSION_OPT65="Information/Left.pbm";r.Msg.CocoRobo_LOOKS_EXPRESSION_OPT66="Information/No go.pbm";r.Msg.CocoRobo_LOOKS_EXPRESSION_OPT67="Information/Question mark.pbm";r.Msg.CocoRobo_LOOKS_EXPRESSION_OPT68="Information/Right.pbm";r.Msg.CocoRobo_LOOKS_EXPRESSION_OPT69="Information/Stop 1.pbm";r.Msg.CocoRobo_LOOKS_EXPRESSION_OPT70="Information/Stop 2.pbm";r.Msg.CocoRobo_LOOKS_EXPRESSION_OPT71="Information/Thumbs down.pbm";r.Msg.CocoRobo_LOOKS_EXPRESSION_OPT72="Information/Thumbs up.pbm";r.Msg.CocoRobo_LOOKS_EXPRESSION_OPT73="Information/Warning.pbm";r.Msg.CocoRobo_LOOKS_EXPRESSION_OPT74="Objects/Bomb.pbm";r.Msg.CocoRobo_LOOKS_EXPRESSION_OPT75="Objects/Boom.pbm";r.Msg.CocoRobo_LOOKS_EXPRESSION_OPT76="Objects/Fire.pbm";r.Msg.CocoRobo_LOOKS_EXPRESSION_OPT77="Objects/Flowers.pbm";r.Msg.CocoRobo_LOOKS_EXPRESSION_OPT78="Objects/Forest.pbm";r.Msg.CocoRobo_LOOKS_EXPRESSION_OPT79="Objects/Light off.pbm";r.Msg.CocoRobo_LOOKS_EXPRESSION_OPT80="Objects/Light on.pbm";r.Msg.CocoRobo_LOOKS_EXPRESSION_OPT81="Objects/Lightning.pbm";r.Msg.CocoRobo_LOOKS_EXPRESSION_OPT82="Objects/Night.pbm";r.Msg.CocoRobo_LOOKS_EXPRESSION_OPT83="Objects/Pirate.pbm";r.Msg.CocoRobo_LOOKS_EXPRESSION_OPT84="Objects/Snow.pbm";r.Msg.CocoRobo_LOOKS_EXPRESSION_OPT85="Objects/Target.pbm";r.Msg.CocoRobo_LOOKS_EXPRESSION_OPT86="Progress/Bar 0.pbm";r.Msg.CocoRobo_LOOKS_EXPRESSION_OPT87="Progress/Bar 1.pbm";r.Msg.CocoRobo_LOOKS_EXPRESSION_OPT88="Progress/Bar 2.pbm";r.Msg.CocoRobo_LOOKS_EXPRESSION_OPT89="Progress/Bar 3.pbm";r.Msg.CocoRobo_LOOKS_EXPRESSION_OPT90="Progress/Bar 4.pbm";r.Msg.CocoRobo_LOOKS_EXPRESSION_OPT91="Progress/Dial 0.pbm";r.Msg.CocoRobo_LOOKS_EXPRESSION_OPT92="Progress/Dial 1.pbm";r.Msg.CocoRobo_LOOKS_EXPRESSION_OPT93="Progress/Dial 2.pbm";r.Msg.CocoRobo_LOOKS_EXPRESSION_OPT94="Progress/Dial 3.pbm";r.Msg.CocoRobo_LOOKS_EXPRESSION_OPT95="Progress/Dial 4.pbm";r.Msg.CocoRobo_LOOKS_EXPRESSION_OPT96="Progress/Dots 0.pbm";r.Msg.CocoRobo_LOOKS_EXPRESSION_OPT97="Progress/Dots 1.pbm";r.Msg.CocoRobo_LOOKS_EXPRESSION_OPT98="Progress/Dots 2.pbm";r.Msg.CocoRobo_LOOKS_EXPRESSION_OPT99="Progress/Dots 3.pbm";r.Msg.CocoRobo_LOOKS_EXPRESSION_OPT100="Progress/Hourglass 0.pbm";r.Msg.CocoRobo_LOOKS_EXPRESSION_OPT101="Progress/Hourglass 1.pbm";r.Msg.CocoRobo_LOOKS_EXPRESSION_OPT102="Progress/Hourglass 2.pbm";r.Msg.CocoRobo_LOOKS_EXPRESSION_OPT103="Progress/Timer 0.pbm";r.Msg.CocoRobo_LOOKS_EXPRESSION_OPT104="Progress/Timer 1.pbm";r.Msg.CocoRobo_LOOKS_EXPRESSION_OPT105="Progress/Timer 2.pbm";r.Msg.CocoRobo_LOOKS_EXPRESSION_OPT106="Progress/Timer 3.pbm";r.Msg.CocoRobo_LOOKS_EXPRESSION_OPT107="Progress/Timer 4.pbm";r.Msg.CocoRobo_LOOKS_EXPRESSION_OPT108="Progress/Water level 0.pbm";r.Msg.CocoRobo_LOOKS_EXPRESSION_OPT109="Progress/Water level 1.pbm";r.Msg.CocoRobo_LOOKS_EXPRESSION_OPT110="Progress/Water level 2.pbm";r.Msg.CocoRobo_LOOKS_EXPRESSION_OPT111="Progress/Water level 3.pbm";r.Msg.CocoRobo_LOOKS_EXPRESSION_OPT112="System/Accept_1.pbm";r.Msg.CocoRobo_LOOKS_EXPRESSION_OPT113="System/Accept_2.pbm";r.Msg.CocoRobo_LOOKS_EXPRESSION_OPT114="System/Alert.pbm";r.Msg.CocoRobo_LOOKS_EXPRESSION_OPT115="System/Box.pbm";r.Msg.CocoRobo_LOOKS_EXPRESSION_OPT116="System/Busy_0.pbm";r.Msg.CocoRobo_LOOKS_EXPRESSION_OPT117="System/Busy_1.pbm";r.Msg.CocoRobo_LOOKS_EXPRESSION_OPT118="System/Decline_1.pbm";r.Msg.CocoRobo_LOOKS_EXPRESSION_OPT119="System/Decline_2.pbm";r.Msg.CocoRobo_LOOKS_EXPRESSION_OPT120="System/Dot_empty.pbm";r.Msg.CocoRobo_LOOKS_EXPRESSION_OPT121="System/Dot_full.pbm";r.Msg.CocoRobo_LOOKS_EXPRESSION_OPT122="System/Play.pbm";r.Msg.CocoRobo_LOOKS_EXPRESSION_OPT123="System/Slider_0.pbm";r.Msg.CocoRobo_LOOKS_EXPRESSION_OPT124="System/Slider_1.pbm";r.Msg.CocoRobo_LOOKS_EXPRESSION_OPT125="System/Slider_2.pbm";r.Msg.CocoRobo_LOOKS_EXPRESSION_OPT126="System/Slider_3.pbm";r.Msg.CocoRobo_LOOKS_EXPRESSION_OPT127="System/Slider_4.pbm";r.Msg.CocoRobo_LOOKS_EXPRESSION_OPT128="System/Slider_5.pbm";r.Msg.CocoRobo_LOOKS_EXPRESSION_OPT129="System/Slider_6.pbm";r.Msg.CocoRobo_LOOKS_EXPRESSION_OPT130="System/Slider_7.pbm";r.Msg.CocoRobo_LOOKS_EXPRESSION_OPT131="System/Slider_8.pbm";r.Msg.CocoRobo_LOOKS_TUBE_OPT1="Digiface 11px";r.Msg.CocoRobo_LOOKS_TUBE_OPT2="Digiface 16px";r.Msg.CocoRobo_LOOKS_TUBE_OPT3="Digiface 21px";r.Msg.CocoRobo_LOOKS_TUBE_OPT4="Digiface 30px";r.Msg.CocoRobo_LOOKS_TUBE_OPT5="Digiface 44px";r.Msg.CocoRobo_LOOKS_TUBE_OPT6="Digiface Italic 30px";r.Msg.CocoRobo_LOOKS_TUBE_OPT7="Digiface Italic 42px";r.Msg.CocoRobo_LOOKS_TUBE_OPT8="DejaVu Sans Mono 12px";r.Msg.CocoRobo_LOOKS_TUBE_OPT9="DejaVu Sans Mono 16px";r.Msg.CocoRobo_LOOKS_TUBE_OPT10="DejaVu Sans Mono 21px";r.Msg.CocoRobo_LOOKS_TUBE_OPT11="DejaVu Sans Mono Bold 12px";r.Msg.CocoRobo_LOOKS_TUBE_OPT12="DejaVu Sans Mono Bold 16px";r.Msg.CocoRobo_LOOKS_TUBE_OPT13="DejaVu Sans Mono Bold 21px";r.Msg.CocoRobo_WIFI_ZONE_OPT1="UTC+1";r.Msg.CocoRobo_WIFI_ZONE_OPT2="UTC+2";r.Msg.CocoRobo_WIFI_ZONE_OPT3="UTC+3";r.Msg.CocoRobo_WIFI_ZONE_OPT4="UTC+4";r.Msg.CocoRobo_WIFI_ZONE_OPT5="UTC+5";r.Msg.CocoRobo_WIFI_ZONE_OPT6="UTC+6";r.Msg.CocoRobo_WIFI_ZONE_OPT7="UTC+7";r.Msg.CocoRobo_WIFI_ZONE_OPT8="UTC+8";r.Msg.CocoRobo_WIFI_ZONE_OPT9="UTC+9";r.Msg.CocoRobo_WIFI_ZONE_OPT10="UTC+10";r.Msg.CocoRobo_WIFI_ZONE_OPT11="UTC+11";r.Msg.CocoRobo_WIFI_ZONE_OPT12="UTC+12";r.Msg.CocoRobo_WIFI_ZONE_OPT13="UTC-1";r.Msg.CocoRobo_WIFI_ZONE_OPT14="UTC-2";r.Msg.CocoRobo_WIFI_ZONE_OPT15="UTC-3";r.Msg.CocoRobo_WIFI_ZONE_OPT16="UTC-4";r.Msg.CocoRobo_WIFI_ZONE_OPT17="UTC-5";r.Msg.CocoRobo_WIFI_ZONE_OPT18="UTC-6";r.Msg.CocoRobo_WIFI_ZONE_OPT19="UTC-7";r.Msg.CocoRobo_WIFI_ZONE_OPT20="UTC-8";r.Msg.CocoRobo_WIFI_ZONE_OPT21="UTC-9";r.Msg.CocoRobo_WIFI_ZONE_OPT22="UTC-10";r.Msg.CocoRobo_WIFI_ZONE_OPT23="UTC-11";r.Msg.CocoRobo_WIFI_ZONE_OPT24="UTC-12";r.Msg.GROVE_JOINT_SETUP="setup";r.Msg.GROVE_JOINT_SETUP_LOOP="loop";r.Msg.GROVE_JOINT_INPUT_HUMITURE="%1 %2 Temperature&Humidity %3";r.Msg.GROVE_JOINT_INPUT_INFRARED="%1 %2 Line Finder";r.Msg.GROVE_JOINT_INPUT_MAGNESWITCH="%1 %2 Magnetic Switch";r.Msg.GROVE_JOINT_INPUT_ULTRASONIC="%1 %2 Ultrasonic Ranger";r.Msg.GROVE_JOINT_INPUT_LIGHT="%1 %2 Light Sensor";r.Msg.GROVE_JOINT_INPUT_SLIDESWITCH="%1 %2 Slide Potentionmeter";r.Msg.GROVE_JOINT_INPUT_INCLINE="%1 %2 Tilt Sensor";r.Msg.GROVE_JOINT_INPUT_TOUCH="%1 %2 Touch Sensor";r.Msg.GROVE_JOINT_INPUT_NOISE="%1 %2 Sound Sensor";r.Msg.GROVE_JOINT_INPUT_SOILHUMIDITY="%1 %2 Moisture";r.Msg.GROVE_JOINT_INPUT_SHAFTSPEED="%1 %2 3Axis Digital Accelerometer-16 %3";r.Msg.GROVE_JOINT_INPUT_MULTICHANNEDL_TOUCH="%1 %2 I2C Touch CH %3";r.Msg.GROVE_JOINT_OUTPUT_MINIMOTOR_RUN="%1 %2 Mini I2C Motor %3 speed %4";r.Msg.GROVE_JOINT_OUTPUT_FOURDIGIT_TUBE_DISPLAY="%1 %2 4 Digital Display show %3";r.Msg.GROVE_JOINT_OUTPUT_LEDBOARD_SHOW="%1 %2 LED set to %3";r.Msg.GROVE_JOINT_OUTPUT_RGBLED_SHOW="%1 %2 Chainable RGB LED show R %3 G %4 B %5";r.Msg.GROVE_JOINT_OUTPUT_SPEAKER_NOTEBEAT="%1 %2 Speeker play tone %3";r.Msg.GROVE_JOINT_OUTPUT_SERVO_TRUNANGLE="%1 %2 Sevo move to %3";r.Msg.GROVE_JOINT_OUTPUT_BUZZER_PLAY="%1 %2 Buzzer set to %3";r.Msg.GROVE_JOINT_OUTPUT_MOTOR_RUN="%1 %2 Vibration set to %3";r.Msg.GROVE_JOINT_OUTPUT_DCMOTOR_RUN="%1 %2 DC Motor set to %3";r.Msg.GROVE_JOINT_INPUT_HUMITURE_OPT01="temperature";r.Msg.GROVE_JOINT_INPUT_HUMITURE_OPT02="humidity";r.Msg.GROVE_JOINT_INPUT_LEVEL_HIGH="ON";r.Msg.GROVE_JOINT_INPUT_LEVEL_LOW="OFF";r.Msg.ELFBOT_LINEPATROL_WHENETECTEDCOLORD="%1 %2 when the detected colour is %3";r.Categories={};r.Categories.motion="motion";r.Categories.looks="looks";r.Categories.sound="sounds";r.Categories.pen="pen";r.Categories.data="data";r.Categories.dataLists="data-lists";r.Categories.event="events";r.Categories.control="control";r.Categories.sensing="sensing";r.Categories.operators="operators";r.Categories.more="more";r.Msg.ESP32BUTTON="When Button";r.Msg.ESP32IS="is";r.Msg.ESP32PRESSED="Pressed";r.Msg.ESP32RELEASED="Released";r.Msg.ESP32DIALER_LEFT="Left";r.Msg.ESP32DIALER_MIDDLE="Middle";r.Msg.ESP32DIALER_RIGHT="Right";r.Msg.ESP32DIALSWITCH="When Dialer";r.Msg.ESP32TURN="Set ";r.Msg.ESP32LED="Light ";r.Msg.ESP32LED_MONO_TEXT_NO="LED #";r.Msg.ESP32LED_MONO_TEXT_AFTER="A single LED light";r.Msg.ESP32LED_BLUE="Blue LED";r.Msg.ESP32LED_RED="Red LED";r.Msg.ESP32LED_TURNON="Up";r.Msg.ESP32LED_TURNOFF="Off";r.Msg.ESP32LED_CORD_DRAWPIXEL_LIGHTUP="Light Up the LED ";r.Msg.ESP32LED_CORD_DRAWPIXEL_LIGHTOFF="Light Off the LED ";r.Msg.ESP32LED_CORD_DRAWPIXEL_LIGHT_INIT_TEXT="Located in (Column";r.Msg.ESP32LED_CORD_DRAWPIXEL_LIGHT_MIDDLE_TEXT=", Row";r.Msg.ESP32LED_CORD_DRAWPIXEL_LIGHT_END_TEXT=")";r.Msg.ESP32TURNOBAF="Buzzer";r.Msg.ESP32TURNOB="Turn off Buzzer";r.Msg.ESP32TA="When Touch Area";r.Msg.ESP32_TOUCHED="is Touched";r.Msg.ESP32_UNTOUCHED="is Not Touched";r.Msg.ESP32_READ="Get Touch Area";r.Msg.ESP32_READ_VALUE="'s Capacitative Variable";r.Msg.ESP32_ENV_GET_TEXT="Get";r.Msg.esp32_main_controller_turn_off_buzzer_music_lite="The buzzer plays notes";r.Msg.esp32_main_controller_turn_off_buzzer_music_lite_2="Continue";r.Msg.esp32_main_controller_turn_off_buzzer_music_lite_3="beat";r.Msg.LCDINIT="LCD Display Initalization";r.Msg.LCDINIT_R="Set Screen Rotation";r.Msg.LCDINIT_M="Set Mirror Flip";r.Msg.LCDROTATION="Set LCD Screen Rotation";r.Msg.LCDMF="Set LCD Screen Mirror Flip";r.Msg.LCDDFSW="Set LCD Display Fill Screen with";r.Msg.LCDDFSW="Set LCD Display Fill Screen with";r.Msg.LCDDT="Set LCD Display Text";r.Msg.LCDDT_C="Text Color";r.Msg.LCDDT_BC="Background Color";r.Msg.LED_COORDINATE="Coordinate";r.Msg.WIFISERVER_SERVERSEND_CONTENT="Content";r.Msg.LCDDLOC="Draw Line";r.Msg.LCDDCC="LCD Display Create Canvas";r.Msg.LCDDCC_F="Fill Image: ";r.Msg.LCDDCC_I="Image Path: ";r.Msg.LCDDSC="LCD Display Show Canvas";r.Msg.LCDDSC_SC="Set Coordinate";r.Msg.LCDDSC_X="X:";r.Msg.LCDDSC_Y="Y:";r.Msg.LCD_CANVAS="Canvas";r.Msg.LCDDTOC="Draw Text";r.Msg.LCDDTOC_SH="Set Monospace";r.Msg.LCDDASOC="Draw Arrow Sign";r.Msg.LCDDASOC_SC="Start Coordinate";r.Msg.LCDDASOC_EC="End Coordinate";r.Msg.LCDDASOC_LC="Line Color";r.Msg.LCDDASOC_LT="Line Thickness";r.Msg.LCDDASOC_T="Thickness";r.Msg.LCDDFROC="Draw";r.Msg.LCDDFROC_R="Rectangle";r.Msg.LCDDFROC_C="Circle";r.Msg.LCDRADIUS="Radius";r.Msg.LCDDCSOC="Draw Cross Sign";r.Msg.LCDCEOC="Clear Everything on Canvas";r.Msg.LCDSCIC="Set Canvas:";r.Msg.LCDSCIC_I="Inverted Color";r.Msg.LCDSCCRTW="Set Canvas ";r.Msg.LCDSCCRTW_R="Resized to Width";r.Msg.LCDSCCRTW_TCANC="Then Create a New Canvas";r.Msg.LCDDI="Display in";r.Msg.LCDSCCCVTP="Set Canvas:canvas Convert Vector to Pixel";r.Msg.LCDRQ="QR Code";r.Msg.CAMERAINIT="Camera Initialization";r.Msg.CAMERAINIT_SFS="Set Frame Size: ";r.Msg.CAMERAINIT_SFS_I="in";r.Msg.CAMERAINIT_SWW="Set Windowing";r.Msg.CAMERAINIT_SVFOSHMO="Set Vertical Flip";r.Msg.CAMERAINIT_SVFOSHMO_O="Set Horizontal Mirror";r.Msg.CAMERAINIT_SABOSAGO="Set Auto Balance: ";r.Msg.CAMERAINIT_SABOSAGO_O="Set Auto Gain: ";r.Msg.CAMERAINIT_SCBS="Set Contrast:";r.Msg.CAMERAINIT_SCBS_B="Brightness:";r.Msg.CAMERAINIT_SCBS_S="Saturation:";r.Msg.CAMERASVFO="Set Vertical Flip ";r.Msg.CAMERASVFO_SHMO="Set Horizontal Mirror ";r.Msg.CAMERASVFO_SABO="Set Auto-Balance ";r.Msg.CAMERASVFO_SAGO="Set Auto-Gain ";r.Msg.CAMERASVFO_SCT="Set Contrast to";r.Msg.CAMERASVFO_SBT="Set Brightness to";r.Msg.CAMERASVFO_SST="Set Saturation to";r.Msg.CAMERGICFC="Get Image captured from Camera";r.Msg.CAMERGICFC_SCT="Select Camera Type:";r.Msg.MODELLPM="Load Preset Model: ";r.Msg.CAMERINIT="Initialize Preset Model:Single Digit Recognition";r.Msg.CAMERINIT_SISF="Set Image Source From: ";r.Msg.CAMERINIT_FPM="From Preset Model:Single Digit Recognition";r.Msg.CAMERINIT_GCDN="Get Current Detected Number(0-9)";r.Msg.CAMERINIT_CRC="Current recognition confidence (%)";r.Msg.MODELS_L="Any common object is recognized";r.Msg.MODELS_GET_F="from";r.Msg.MODELS_GET_G="Get the";r.Msg.MODELS_GET_O="Object name";r.Msg.MODELS_GET_X="X-axis coordinate of detection box";r.Msg.MODELS_GET_Y="Y coordinate of the detection box";r.Msg.MODELS_GET_W="Width of detection box ";r.Msg.MODELS_GET_H="Height of inspection frame";r.Msg.MODELS_GET_NO="Number of objects";r.Msg.MODELS_GET_S="Serial number";r.Msg.MODELS_GET_C="Confidence level";r.Msg.MODELS_FACE="Face recognition";r.Msg.MODELS_XY_F="Get the Face";r.Msg.MODELS_XY_N="Number";r.Msg.MODELS_SDR="Single Digit Recognition";r.Msg.MODELS_COR="Common Object Recognition";r.Msg.MODELS_AR="Animal Recognition";r.Msg.MODELS_HFR="Human Face Recognition";r.Msg.CAMERINIT_GTCS="Get the Confidence Score (%) of Detected Number";r.Msg.CAMERINITPM="Initialize Preaset Model:Common Object Recognition";r.Msg.CAMERINITPM_SMSFIOR="Set Image Source from ";r.Msg.CAMERINITPM_ACOID="Any Common Object is Detected";r.Msg.CAMERINITPM_IACOID="If Any Common Object is Detected";r.Msg.CAMERINITPM_D="Do";r.Msg.CAMERINITPM_E="Else";r.Msg.CAMERINITPM_FPM="From Preset Model: Common Object Recognition";r.Msg.CAMERINITPM_G="Get";r.Msg.CAMERINITPM_GIOTCOD=" of the Common Object Detected";r.Msg.CAMERINITPM_DCOIA="Detected Common Object is ";r.Msg.CAMERINITPMA="Initialize Preset Model:Animal Recognition";r.Msg.CAMERINITPMA_AAOID="Any Animal is Detected";r.Msg.CAMERINITPMA_IAAOID="If Any Animal is Detected";r.Msg.CAMERINITPMA_FPMA="From Preset Model: Animal Recongnition";r.Msg.CAMERINITPMA_GIOTCAD=" of the Animal Detected";r.Msg.CAMERINITPMA_DAOIA="Detected Animal is ";r.Msg.CAMERINITPMF="Initialize Preset Model:Face Recognition";r.Msg.CAMERINITPMF_SISFIF="Set Image Source from ";r.Msg.CAMERINITPMF_AFID="Any Face is Detected";r.Msg.CAMERINITPMF_IAFID="If Any Face is Detected";r.Msg.CAMERINITPMF_FPM="From Preset Model: Face Recongnition";r.Msg.CAMERINITPMF_GIOTFD="of the Face Detected";r.Msg.CAMERINITPMF_LCMLM="Load Customized Machine Learning Model";r.Msg.CAMERINITPMF_FSC="From SD Card:";r.Msg.CAMERINIINNYFNOT="Initialize Neural Network YOLOv2";r.Msg.CAMERINIINNYFNOT_F=" from Network Object";r.Msg.CAMERINIINNYFNOT_SPT="Set Probability Threshold:";r.Msg.CAMERINIINNYFNOT_SPT_S=" Set Box IoU Threshold:";r.Msg.CAMERINITPMF_SNOAA="Set Number of Anchors Anchors ";r.Msg.CAMERINITPMF_SNOAA_S=" Set Anchor as:anchors";r.Msg.CAMERGRFRNNY="Get Result from Running Neural Network YOLOv2";r.Msg.CAMERGRFRNNY_FNOT="From Network Object ";r.Msg.CAMERGRFRNNY_SNOLTCTTN="Set Number of Layers to Calculate to the Network:";r.Msg.CAMERGRFRNNY_SISA="Set Image Source as :";r.Msg.CAMERGFMOFNOT="Get Feature Map Object from Network Object";r.Msg.CAMERGFMOFNOT_SNOLTCTTN="Set Number of Layers to Calculate to the Network:";r.Msg.CAMERGFMOFNOT_SISAC="Set Image Source as:";r.Msg.CAMERDNOT="Deinitialize Network Object ";r.Msg.VISION_IF="If Color ";r.Msg.VISION_IF_R="Region is Detected from Canvas:";r.Msg.VISION_IF_S="Set Maximum Dertected Size:";r.Msg.VISION_IF_C="Get Detected Region's";r.Msg.VISION_CIF=" Circle is Detected from Canvas: ";r.Msg.VISION_CIF_D="Get Detected Circle's";r.Msg.VISION_SIF="Start Double Line Detection";r.Msg.VISION_SIF_D="Dectect Line Color:";r.Msg.VISION_SIF_G="Get Direction Offset Value";r.Msg.VISION_SIF_GF="From Double Line Detection";r.Msg.MPHONE="Microphone Initialization";r.Msg.MPHONE_A="Read Avg.Loudness from Microphone";r.Msg.AUDIO_S="Speaker Initialization";r.Msg.AUDIO_S_P="Play audio file";r.Msg.AUDIO_S_PS="Set volume";r.Msg.AUDIO_S_PF="File Path:";r.Msg.AUDIO_SET="Set audio playback volume";r.Msg.VIDEO_S="Video recording initialization";r.Msg.VIDEO_S_S="File save path";r.Msg.VIDEO_G="Recording video from";r.Msg.VIDEO_G_I="image source";r.Msg.VIDEO_S_R="Stop Record Video";r.Msg.VIDEO_SET_F="Play video file";r.Msg.VIDEO_SET_P="File path:";r.Msg.VIDEO_NUM="Set video playback volume ";r.Msg.VIDEO_STATUS="Get the status of video playback";r.Msg.SERIALPORT_PRINT_TITLE="Serial Port Print %1";r.Msg.SERIALPORT_SPACER="Spacer";r.Msg.SERIALPORT_TERMINATOR="Terminator";r.Msg.SERIALPORT_DATA="Data";r.Msg.SERIALPORT_COLOR="Text color";r.Msg.SERIALPORT_TCOLOR="Text background";r.Msg.SERIALPORT_SLDT="Set LCD display text";r.Msg.LCD_CLEAR="Clear screen";r.Msg.CAMERA_WINDOW="Set camera windowing";r.Msg.CAMERA_SIZE="Window size";r.Msg.CAMERA_WINDOW="Set camera windowing";r.Msg.CAMERA_SIZE="Window size";r.Msg.CAMERA_INIT="Camera initialization";r.Msg.CAMERA_CIS="Captured image size:";r.Msg.CAMERA_COCI="Color of captured image:";r.Msg.CAMERA_C="Color";r.Msg.CAMERA_BW="black and white";r.Msg.math_degrad_rad="Convert Degrees to Radians";r.Msg.math_degrad_deg="Convert Radians to Degrees";r.Msg.io_high="HIGH";r.Msg.io_low="LOW";r.Msg.digital_set="Set GPIO #";r.Msg.digital_set_as="to";r.Msg.digital_get="Get GPIO #";r.Msg.digital_get_value="Digital Read";r.Msg.analog_get="Get GPIO #";r.Msg.analog_get_value="Analog Value";r.Msg.analog_set="IoT Module Set GPIO #";r.Msg.set_pin="(range:0 ~ 1023)";r.Msg.analog_set_ai="A.I. Module Set GPIO #";r.Msg.analog_set_freq="Set Frequency as:";r.Msg.analog_set_pwm="Set PWM as:";r.Msg.set_pwm="PWM Value to";r.Msg.led="LED";r.Msg.control="Control";r.Msg.OUT_PWM="Output PWM wave";r.Msg.analog_set_timer="Set Timer:";r.Msg.analog_set_timer_channel="Set Timer Channel:";r.Msg.Esp32_Main_Controller_Io_analog_pin_1="A.I. Module GPIO #";r.Msg.Esp32_Main_Controller_Io_analog_pin_2="IoT Module GPIO #";r.Msg.time_iot_module="IoT Module ";r.Msg.time_ai_module="A.I. Module";r.Msg.time_init_timer="Initialize Timer";r.Msg.time_timer_get_time="Get time elapsed from Timer (s)";r.Msg.time_timer_clear="Clear Timer";r.Msg.time_timer_periodically="Enable Periodical Timer";r.Msg.time_timer_every="Every";r.Msg.time_timer_ms="Millisecond(s)";r.Msg.time_execution="Do";r.Msg.time_timer_periodically_clear="Clear Periodical Timer";r.Msg.time_get_current_date_title="Get Current Time:";r.Msg.time_get_current_date_y="Year";r.Msg.time_get_current_date_m="Month";r.Msg.time_get_current_date_d="Day";r.Msg.time_get_current_date_hour="Hour";r.Msg.time_get_current_date_min="Minute";r.Msg.time_get_current_date_sec="Second";r.Msg.serialcomm_print="Serial print";r.Msg.serialcomm_write_title_text="Send Data to other devices through the serial port";r.Msg.serialcomm_write_title_text_arduino="Send data to Arduino via USB";r.Msg.serialcomm_read_setup_title_text_arduino="Initialization of data acquisition via USB";r.Msg.serialcomm_read_setup_title_text="Obtain data through the serial port";r.Msg.serialcomm_read_setup_title_text_1=" to initialize";r.Msg.serial_read_data="From ";r.Msg.Serial_Read_Data_all="Obtained serial port data";r.Msg.ARD_SERIAL_RECEIVE_DATASET_GET_TEXT="Get Serial (UART) Data at ";r.Msg.ARD_SERIAL_RECEIVE_DATASET_TYPE_TEXT="as";r.Msg.ARD_SERIAL_RECEIVE_DATASET_TYPE_FLOAT="Float";r.Msg.ARD_SERIAL_RECEIVE_DATASET_TYPE_INTEGER="Number";r.Msg.ARD_SERIAL_RECEIVE_DATASET_TYPE_STRING="String";r.Msg.serialcomm_write_item_first="Data ";r.Msg.serialcomm_write_item_last="bit of data";r.Msg.serialcomm_write_item="Item";r.Msg.serialcomm_write_data="Data";r.Msg.serialcomm_write_data_bps_title="Set Baud Rate:";r.Msg.serialcomm_write_data_bps_attrib="bps";r.Msg.serialcomm_write_on="On";r.Msg.serialcomm_write_on_ai="AI Module ";r.Msg.serialcomm_write_on_iot="IoT Module";r.Msg.serial_send_data_on="On";r.Msg.serial_send_data_on_send_data_cocorobo="CocoPi Send data to generation 1 and generation 2 ";r.Msg.serial_send_data_on_send_data="CocoPi Send Data to Micro:bit";r.Msg.serial_send_data_on_send_data_control_panel="CocoPi Send Data to Control panel";r.Msg.serial_send_data_on_send_data_control_panel_arduino="CocoPi Send Data to Control Arduino";r.Msg.basic_button_read_value="Read the Status of Button ";r.Msg.basic_button_read_value_after="the voltage level state";r.Msg.basic_buzzer_set_init="The buzzer is initialized and the pins are set as follows";r.Msg.basic_buzzer_set="Set Buzzer frequency (Hz)";r.Msg.basic_temperature="Temperature";r.Msg.basic_humidity="Humidity";r.Msg.basic_pressure="Pressure";r.Msg.basic_env_value="Value";r.Msg.basic_motion_use="Initialize Motion Sensor";r.Msg.basic_shaking_sensitivity="Set the sensitivity to";r.Msg.basic_shaking_sensitivity_high="High";r.Msg.basic_shaking_sensitivity_middle="Middle";r.Msg.basic_shaking_sensitivity_low="low";r.Msg.basic_when_shaking_when_module="when Module is";r.Msg.basic_when_shaking_when_is_in="Shaking";r.Msg.basic_when_shaking_when_is_not_in="Not Shaking";r.Msg.basic_when_shaking_when_shaking="";r.Msg.basic_when_shaking="When module is shaking";r.Msg.basic_when_shaking_not="When module is not shaking";r.Msg.basic_when_tilting_get="When module is ";r.Msg.basic_when_tilting_get_left="tilt to the left";r.Msg.basic_when_tilting_get_right="tilt to the right";r.Msg.basic_when_tilting_get_forward="tilt to the forward";r.Msg.basic_when_tilting_get_backward="tilt to the backward";r.Msg.basic_when_tilting_get_left_and_forward="tilt to the forward left";r.Msg.basic_when_tilting_get_left_and_backward="tilt to the backward left";r.Msg.basic_when_tilting_get_right_and_forward="tilt to the forward right";r.Msg.basic_when_tilting_get_right_and_backward="tilt to the backward right";r.Msg.basic_when_tilting_not_tilting="not tilting";r.Msg.basic_when_tilting_get_when="When in a wobbly state.";r.Msg.basic_motion_get="Get";r.Msg.basic_motion_accel=" axis acceleration";r.Msg.basic_motion_rotation_measurement=" axis rotation measurement";r.Msg.basic_motion_angle=" axis rotation angle";r.Msg.isUnit="Need unit";r.Msg.confUnit="Yes";r.Msg.cancUnit="No";r.Msg.basic_light_get="Get Light Sensitivity(0~4095)";r.Msg.basic_motion_statement_exec="Do";r.Msg.display_clear_screen="Clear Screen";r.Msg.display_fill_screen="Set screen filled with color";r.Msg.display_draw_pixel="Pixel";r.Msg.display_draw_vertical="Vertical";r.Msg.display_draw_horizontal="Horizontal";r.Msg.display_start_cord="Start Coordinate";r.Msg.display_length="Length";r.Msg.display_draw_rectangle="Rectangle";r.Msg.display_drawqr_text=" QR Code";r.Msg.display_drawqr_content="Content";r.Msg.display_drawqr_padding="Padding Width";r.Msg.display_draw_text="Content";r.Msg.display_draw_text_content="Content";r.Msg.display_draw_text_size="Text Size";r.Msg.display_draw_text_return="Auto Wrap";r.Msg.display_red="Red";r.Msg.display_green="Green";r.Msg.display_blue="Blue";r.Msg.wifi_setup_hotspot="Create Wi-Fi Hotspot";r.Msg.wifi_hotspot_ssid="SSID:";r.Msg.wifi_hotspot_pass="Password:";r.Msg.wifi_connect_router="Connect to Wi-Fi Network";r.Msg.wifi_router_ssid="SSID:";r.Msg.wifi_router_pass="Password:";r.Msg.wifi_router_disconnect="Disconnect Wi-Fi Connection";r.Msg.wifi_hotspot_get_clients="Get number of current connected device(s)";r.Msg.wifi_hotspot_get_list="Get the list current connected device(s)";r.Msg.wifi_router_connection_status="Get Wi-Fi Connection Status";r.Msg.wifi_close_hotspot="Close Wi-Fi Hotspot";r.Msg.wifi_router_get_info="Get Wi-Fi Configuration Info";r.Msg.wifi_router_device_ip="IP";r.Msg.wifi_router_device_mask="Netmask";r.Msg.wifi_router_device_gateway="Gateway";r.Msg.wifi_router_device_dns="DNS";r.Msg.wifi_ntptime_title="Synchronize Time From Internet";r.Msg.wifi_ntptime_set_timezone="Set Timezone:";r.Msg.wifi_ntptime_utc8="UTC+8";r.Msg.wifi_ntptime_utc9="UTC+9";r.Msg.wifi_ntptime_utc10="UTC+10";r.Msg.wifi_ntptime_utc11="UTC+11";r.Msg.wifi_ntptime_utc12="UTC+12";r.Msg.wifi_ntptime_utcm12="UTC-12";r.Msg.wifi_ntptime_utcm11="UTC-11";r.Msg.wifi_ntptime_utcm10="UTC-10";r.Msg.wifi_ntptime_utcm9="UTC-9";r.Msg.wifi_ntptime_utcm8="UTC-8";r.Msg.wifi_ntptime_utcm7="UTC-7";r.Msg.wifi_ntptime_utcm6="UTC-6";r.Msg.wifi_ntptime_utcm5="UTC-5";r.Msg.wifi_ntptime_utcm4="UTC-4";r.Msg.wifi_ntptime_utcm3="UTC-3";r.Msg.wifi_ntptime_utcm2="UTC-2";r.Msg.wifi_ntptime_utcm1="UTC-1";r.Msg.wifi_ntptime_utc0="UTC";r.Msg.wifi_ntptime_utc1="UTC+1";r.Msg.wifi_ntptime_utc2="UTC+2";r.Msg.wifi_ntptime_utc3="UTC+3";r.Msg.wifi_ntptime_utc4="UTC+4";r.Msg.wifi_ntptime_utc5="UTC+5";r.Msg.wifi_ntptime_utc6="UTC+6";r.Msg.wifi_ntptime_utc7="UTC+7";r.Msg.wifi_ntptime_time_server="Set Time Server:";r.Msg.wifi_web_http_server_setup="HTTP Server Setup";r.Msg.wifi_web_http_server_route_setting_title="HTTP Server Route Setting";r.Msg.wifi_web_http_server_route_setting_path="When Path";r.Msg.wifi_web_http_server_route_setting_being_requested="is Being Requested";r.Msg.wifi_web_http_server_route_setting_property="Set Route Property:";r.Msg.wifi_web_http_server_route_setting_get="GET";r.Msg.wifi_web_http_server_route_setting_post="POST";r.Msg.wifi_web_http_server_route_setting_do="Do";r.Msg.wifi_web_http_server_respond_title="HTTP Server Send Response";r.Msg.wifi_web_http_server_respond_type="Set Reponse Type:";r.Msg.wifi_web_http_server_respond_text="Plain Text";r.Msg.wifi_web_http_server_respond_json="JSON Data";r.Msg.wifi_web_http_server_respond_html="Web Page (HTML Code)";r.Msg.wifi_web_http_server_respond_exec="Respond:";r.Msg.wifi_web_http_server_get_title="HTTP Server Get Request Content Data as";r.Msg.wifi_web_http_server_get_as_json="JSON";r.Msg.wifi_web_http_server_get_as_text="Text";r.Msg.nbiot_module_which_module_iot="On IoT Module ";r.Msg.nbiot_module_which_module_ai="On AI Module ";r.Msg.nbiot_module_init="NB-IoT Module Communication Setup";r.Msg.nbiot_module_power="Get NB-IoT Module Power Status";r.Msg.nbiot_module_connectivity="Get NB-IoT Internet Connection Status";r.Msg.nbiot_module_ip="Get NB-IoT Module's Internet IP Address";r.Msg.nbiot_onenet_title="NB-IoT Module to OneNET Configuration";r.Msg.nbiot_onenet_connect_productid="Product ID:";r.Msg.nbiot_onenet_connect_deviceid="Device ID:";r.Msg.nbiot_onenet_connect_device_api="Device API Key:";r.Msg.nbiot_onenet_connectivity="NB-IoT Module Get OneNET Connection Status";r.Msg.nbiot_onenet_send_title="NB-IoT Module Send Data to OneNET";r.Msg.nbiot_onenet_send_property="Property Name: ";r.Msg.nbiot_onenet_when_incoming_msg="When NB-IoT Module Got Message: ";r.Msg.nbiot_onenet_when_incoming_msg_when="from OneNET";r.Msg.nbiot_onenet_when_incoming_msg_exec="Do";r.Msg.nbiot_onenet_receive_command="Get Message received from OneNET";r.Msg.nbiot_cococloud_get_event_title="NB-IoT Module Get CocoCloud Event Data";r.Msg.nbiot_cococloud_get_event_api="Cloud Event API Key:";r.Msg.nbiot_cococloud_get_property="Get the data where property is";r.Msg.nbiot_cococloud_get_data="from CocoCloud";r.Msg.nbiot_cococloud_send_title="NB-IoT Module Send Data to CocoCloud";r.Msg.nbiot_cococloud_send_api="Event API Key:";r.Msg.nbiot_cococloud_send_property="Property Name: ";r.Msg.nbiot_http_get_title="Send HTTP GET Request";r.Msg.nbiot_http_get_url="Set destination URL:";r.Msg.internet_server_setup="HTTP Server Initialize";r.Msg.internet_server_set_max="Set maximum number of connection:";r.Msg.internet_server_set_source="Get the IP Address of requested device";r.Msg.internet_response_http_content_title="From HTTP Response get ";r.Msg.internet_response_text="Text";r.Msg.internet_response_content="Content";r.Msg.internet_response_status="Status Code";r.Msg.internet_response_json="JSON Data";r.Msg.internet_response_encode="Encoding";r.Msg.internet_response_reason="Reason code";r.Msg.internet_http_get_title="Send HTTP GET Request";r.Msg.internet_http_get_url="Set destination URL:";r.Msg.internet_http_post_title="Send HTTP POST Request";r.Msg.internet_http_post_url="Set destination URL:";r.Msg.internet_http_post_json="Submit JSON Data:";r.Msg.internet_http_get_server_data_title="Get Data Requested from Local HTTP Server";r.Msg.internet_http_get_server_data_type="Data Type is:";r.Msg.internet_http_get_server_data_json="Plain Text";r.Msg.internet_http_get_server_data_text="Dictionary Data (JSON)";r.Msg.internet_ws_setup_send_text="Real-time Comm. (Websocket) Setup (Send)";r.Msg.internet_ws_setup_send_ip="Set Host Device IP:";r.Msg.internet_ws_send_msg="From Websocket Send Message:";r.Msg.internet_ws_setup_recv="Real-time Comm. (Websocket) Setup (Receive)";r.Msg.internet_ws_setup_receiving="When Websocket Received Message";r.Msg.internet_ws_setup_recv_exec="Do";r.Msg.internet_ws_setup_get_msg="Get Message Received from Websocket";r.Msg.internet_ws_setup_get_msg_type="Set Message type as:";r.Msg.internet_ws_setup_get_msg_text="Text";r.Msg.internet_ws_setup_get_msg_json="Dictionary Data (JSON)";r.Msg.v831_get_weather_init="Initialize weather ";r.Msg.set_weather_city="Set the city to get the weather ";r.Msg.set_weather_title_small="Set weather Period ";r.Msg.set_weather_real_time="Real-time ";r.Msg.set_weather_All_day_long="All day ";r.Msg.set_weather_city_title="Set city and time to get weather";r.Msg.beijing="Beijing ";r.Msg.shanghai="Shanghai ";r.Msg.guangzhou="Guangzhou ";r.Msg.shenzhen="Shenzhen ";r.Msg.tianjin="Tianjin ";r.Msg.HongKong="Hong Kong";r.Msg.weather_resulet="weather results";r.Msg.weather_condition="weather";r.Msg.windDir="windDir";r.Msg.windScale="windScale";r.Msg.windSpeed="windSpeed";r.Msg.iotservice_thingspeak_send_title="Send Data to ThingSpeak Channel";r.Msg.iotservice_thingspeak_send_api_set="Set Channel API Key:";r.Msg.iotservice_thingspeak_send_data_1="Data 1";r.Msg.iotservice_onenet_mqtt_setup="OneNET IoT Platform (MQTTS) Connection Setup";r.Msg.iotservice_onenet_mqtt_server="Set Connect Server:";r.Msg.iotservice_onenet_mqtt_productid="Set Product ID:";r.Msg.iotservice_onenet_mqtt_productkey="Set Product API Key:";r.Msg.iotservice_onenet_mqtt_deviceid="Set Device ID:";r.Msg.iotservice_onenet_mqtt_send="Send Data to OneNET";r.Msg.iotservice_onenet_mqtt_send_item="Property Name: ";r.Msg.iotservice_onenet_mqtt_receive="When Received Message";r.Msg.iotservice_onenet_mqtt_receive_when="from OneNET";r.Msg.iotservice_onenet_mqtt_receive_exec="Do";r.Msg.iotservice_onenet_mqtt_disconnect="Disconnect OneNET Connection";r.Msg.iotservice_ifttt_send_title="Send Data to IFTTT Webhooks Event";r.Msg.iotservice_ifttt_send_webhook="Webhooks API Key:";r.Msg.iotservice_ifttt_send_eventname="Event Name:";r.Msg.iotservice_ifttt_send_1="Data 1:";r.Msg.iotservice_ifttt_send_2="Data 2:";r.Msg.iotservice_ifttt_send_3="Data 3:";r.Msg.iotservice_ifttt_trigger_title="Trigger IFTTT Event";r.Msg.iotservice_ifttt_trigger_webhook="Webhook API Key:";r.Msg.iotservice_ifttt_trigger_eventname="Event Name:";r.Msg.iotservice_thingspeak_send_title="Send Data to ThingSpeak Channel";r.Msg.iotservice_thingspeak_send_api="Set Channel API Key:";r.Msg.iotservice_thingspeak_query_title="Query Channel Data from ThingSpeak";r.Msg.iotservice_thingspeak_query_api="Set Channel API Key:";r.Msg.iotservice_thingspeak_channel_id="Channel ID:";r.Msg.iotservice_thingspeak_read_total="Get the number of data in the ThingSpeak channel";r.Msg.iotservice_thingspeak_get_title="Get the";r.Msg.iotservice_thingspeaK_get_field="Data's ";r.Msg.iotservice_thingspeaK_get_value="field Value from ThingSpeak";r.Msg.iotservice_cococloud_send_title="Send Data to CocoCloud Event";r.Msg.iotservice_cococloud_send_title_api="Event API Key:";r.Msg.iotservice_cococloud_send_property="Property Name: ";r.Msg.iotservice_cococloud_send_property_1="Property Value:";r.Msg.iotservice_cococloud_get_title="Get Data from CocoCloud Event";r.Msg.iotservice_cococloud_get_api="Event API Key:";r.Msg.iotservice_cococloud_get_property="Get the data where property name is ";r.Msg.iotservice_cococloud_get_data="from CocoCloud";r.Msg.system_code_path="File Path:";r.Msg.system_get_size="Get the Remaining Space from Module (in MegaBytes)";r.Msg.system_get_mac="Get Module's MAC address";r.Msg.system_get_cocorobo_cid="Get the Device ID of Current IoT Module";r.Msg.iot_system_get_cocorobo_firmware_version="Get the Current firmware version number of Current IoT Module";r.Msg.iot_system_delete="Delete file";r.Msg.ai_system_get_cocorobo_firmware_version="Get the Current firmware version number of Current AI Module";r.Msg.ai_system_get_size="Get the Remaining Space in Memory (in MegaBytes)";r.Msg.ai_system_sd_get_size="Get the Remaining Space in SD card (in MegaBytes)";r.Msg.ai_system_thread="Enable multithreading";r.Msg.ai_systen_thread_val="Parameters.";r.Msg.ai_system_thread_setting="Setting multithreading";r.Msg.ai_system_thread_setDaemon="daemon thread";r.Msg.ai_system_thread_not_setDaemon="non-daemon thread";r.Msg.ai_system_thread_set_setDaemon_TOOLTIP="Set the child thread as a daemon thread, which needs to be set before the child thread is started.";r.Msg.ai_system_thread_set_join="block";r.Msg.ai_systen_queue_aritem="Variable";r.Msg.ai_systen_queue_put="put in queue";r.Msg.ai_systen_queue_get="Getqueue";r.Msg.ai_systen_queue_value="value";r.Msg.SYSTEM="Restart System";r.Msg.SYSTEM_GC="Start memory reclaim";r.Msg.SYSTEM_RUN="Execute Python Code:";r.Msg.SYSTEM_RUN_F="Filename:";r.Msg.SYSTEM_CREATE="Create Text file";r.Msg.SYSTEM_CREATE_F="Filename:";r.Msg.SYSTEM_WRITE="Create Text file";r.Msg.SYSTEM_WRITE_F="Filename:";r.Msg.SYSTEM_WRITE_W="Write content:";r.Msg.SYSTEM_WRITE_S="The separator is:";r.Msg.SYSTEM_WRITE_S_N="newline";r.Msg.SYSTEM_WRITE_S_C="comma";r.Msg.SYSTEM_WRITE_S_S="space";r.Msg.SYSTEM_WRITE_S_SE="semicolon";r.Msg.SYSTEM_INPUT="Read Text File as List";r.Msg.ledstrip_setup_text_iot="On IoT Module ";r.Msg.ledstrip_setup_text_ai="On AI Module";r.Msg.ledstrip_setup_text="RGB LED Strip";r.Msg.ledstrip_setup="Setup";r.Msg.ledstrip_set_gpio="Set GPIO # in:";r.Msg.ledstrip_set_total_led="Set Number of LEDs in the Strip:";r.Msg.ledstrip_set_brightness_setup="Set the Brightness of LED Strip to:";r.Msg.ledstrip_set_light_up="Set RGB LED Strip";r.Msg.ledstrip_set_no="Light the LED Located In:";r.Msg.ledstrip_set_color="Light up with Color in:";r.Msg.ledstrip_setup_text_show_above_set="Set LED Strip";r.Msg.ledstrip_setup_text_show_above="Display Above";r.Msg.Pedometer_Init="Initialize Pedometer";r.Msg.Pedometer_Run="Run Pedometer";r.Msg.Pedometer_Get="Get Count";r.Msg.Pedometer_Init_time="time interval";r.Msg.Pedometer_Init_sensitivity="sensitivit";r.Msg.ledstrip_set_brightness_1="Set the Brightness of LED Strip to";r.Msg.ledstrip_set_brightness_after="(Range: 0~255)";r.Msg.servo_setup="IoT Module Servo Setup";r.Msg.servo_set_gpio="IoT Module Set Servo on GPIO #";r.Msg.servo_rotate_to="Rotate to";r.Msg.servo_degree="Degree (0˚~180˚)";r.Msg.servo_setup_ai="Servo Setup";r.Msg.servo_set_gpio_ai="Set Servo on GPIO #";r.Msg.servo_rotate_to_ai="Rotate to";r.Msg.servo_degree_ai="Degree (0˚~180˚)";r.Msg.x_motor_set_motor="IoT Module Motor Driver Setup";r.Msg.x_motor_set_motor_turn="IoT Module Set Motor";r.Msg.x_motor_set_motor_speed="'s Speed to";r.Msg.x_motor_exec="(-255~255) Rotating";r.Msg.x_motor_cw="Clockwise";r.Msg.x_motor_acw="Anti-Clockwise";r.Msg.x_motor_set_motor_turns="turns";r.Msg.x_motor_set_motor_ai="Motor Driver Setup";r.Msg.x_motor_set_motor_turn_ai="Set Motor";r.Msg.x_motor_set_motor_speed_ai="'s Speed to";r.Msg.x_motor_exec_ai="(0~255) Rotating";r.Msg.x_motor_cw_ai="Clockwise";r.Msg.x_motor_acw_ai="Anti-Clockwise";r.Msg.x_motor_set_motor_turns_ai="turns";r.Msg.x_led_matrix_setup_ai="AI Module LED Matrix (6x6) Setup";r.Msg.x_led_matrix_setup_ai_set_bright_1="Set Brigntness:";r.Msg.x_led_matrix_setup_ai_set_bright_range="(Range: 0~255)";r.Msg.x_led_matrix_width_ai_set_brightness_1="Set Brightness to";r.Msg.x_led_matrix_width_ai_x="Column:";r.Msg.x_led_matrix_width_ai_y="Row:";r.Msg.x_led_matrix_width_ai="Width:";r.Msg.x_led_matrix_height_ai="Height:";r.Msg.x_led_matrix_color_ai="Color";r.Msg.x_led_matrix_draw_title_ai="AI Module LED Matrix";r.Msg.x_led_matrix_draw_pixel_ai="Draw Pixel";r.Msg.x_led_matrix_draw_rect_ai="Draw Rectangle";r.Msg.x_led_matrix_parameter_color_ai="Color:";r.Msg.x_led_matrix_parameter_coord_ai="Coordinate:";r.Msg.x_led_matrix_parameter_size_ai="Size:";r.Msg.x_led_matrix_show_above_ai="Show Above";r.Msg.x_led_matrix_clear_all_ai="Clear Screen";r.Msg.x_led_matrix_setup_iot="IoT Module LED Matrix (6x6) Setup";r.Msg.x_led_matrix_width_iot_x="Column:";r.Msg.x_led_matrix_width_iot_y="Row:";r.Msg.x_led_matrix_width_iot="Width:";r.Msg.x_led_matrix_height_iot="Height:";r.Msg.x_led_matrix_color_iot="Color";r.Msg.x_led_matrix_draw_title_iot="IoT Module LED Matrix";r.Msg.x_led_matrix_setup_iot_set_bright_1="Set Brigntness:";r.Msg.x_led_matrix_setup_iot_set_bright_range="(Range: 0~255)";r.Msg.x_led_matrix_width_iot_set_brightness_1="Set Brightness to";r.Msg.x_led_matrix_setup_iot_io="Set LED Matrix's GPIO # to:";r.Msg.x_led_matrix_draw_pixel_iot="Draw Pixel";r.Msg.x_led_matrix_parameter_color_iot="Color:";r.Msg.x_led_matrix_parameter_coord_iot="Coordinate:";r.Msg.x_led_matrix_show_above_iot="IoT Module LED Matrix Show Above";r.Msg.x_gamepad_read_button_first_text_iot="When Game Pad Button";r.Msg.x_gamepad_read_button_first_text_pressed_iot=" is Pressed";r.Msg.x_gamepad_read_button_first_text_released_iot=" is Released";r.Msg.x_gamepad_read_button_status_first_text_iot="Read the status of Game Pad Button ";r.Msg.x_gamepad_read_button_status_after_text_iot="the voltage level";r.Msg.x_gamepad_read_joystick_read_iot="Read the ";r.Msg.x_gamepad_read_joystick_read_iot_x="X-axis";r.Msg.x_gamepad_read_joystick_read_iot_y="Y-axis";r.Msg.x_gamepad_read_joystick_read_after_iot=" value from Game Pad Joystick (0~1023)";r.Msg.x_gamepad_read_joystick_when_iot="When Game Pad Joystick is ";r.Msg.x_gamepad_read_joystick_when_top_iot="Pushed to Top";r.Msg.x_gamepad_read_joystick_when_bottom_iot="Pushed to Bottom";r.Msg.x_gamepad_read_joystick_when_left_iot="Pushed to Left";r.Msg.x_gamepad_read_joystick_when_right_iot="Pushed to Right";r.Msg.x_gamepad_read_joystick_when_not_iot="Not Pushed to Anywhere";r.Msg.x_gamepad_read_button_first_text_ai="When Game Pad Button";r.Msg.x_gamepad_read_button_first_text_pressed_ai=" is Pressed";r.Msg.x_gamepad_read_button_first_text_released_ai=" is Released";r.Msg.x_gamepad_read_button_status_first_text_ai="Read the status of Game Pad Button ";r.Msg.x_gamepad_read_button_status_after_text_ai="the voltage level";r.Msg.x_gamepad_read_joystick_read_ai="Read the ";r.Msg.x_gamepad_read_joystick_read_ai_x="X-axis";r.Msg.x_gamepad_read_joystick_read_ai_y="Y-axis";r.Msg.x_gamepad_read_joystick_read_after_ai=" value from Game Pad Joystick (0~1023)";r.Msg.x_gamepad_read_joystick_when_ai="When Game Pad Joystick is ";r.Msg.x_gamepad_read_joystick_when_top_ai="Pushed to Top";r.Msg.x_gamepad_read_joystick_when_bottom_ai="Pushed to Bottom";r.Msg.x_gamepad_read_joystick_when_left_ai="Pushed to Left";r.Msg.x_gamepad_read_joystick_when_right_ai="Pushed to Right";r.Msg.x_gamepad_read_joystick_when_not_ai="Not Pushed to Anywhere";r.Msg.ai_basic_button_when="When Button";r.Msg.ai_basic_pressed="is Pressed";r.Msg.ai_basic_released="is Released";r.Msg.ai_basic_led_set="Set";r.Msg.ai_basic_led_blue="Blue LED";r.Msg.ai_basic_led_red="LED2 (On the Right)";r.Msg.ai_basic_led_on="Light Up";r.Msg.ai_basic_led_off="Light Off";r.Msg.ai_basic_rgb_set_on="Turn on the RGB light and set the color to";r.Msg.ai_basic_rgb_set_off="Turn off RGB light";r.Msg.ai_basic_led_analog_set="Set ";r.Msg.ai_basic_led_analog_led1="LED1";r.Msg.ai_basic_led_analog_led2="LED2";r.Msg.ai_basic_led_analog_brightness_text="light up at brightness";r.Msg.ai_basic_led_analog_range_text="(Range: 0~100)";r.Msg.image_process_lcd_init="LCD Screen Setup";r.Msg.image_process_lcd_direction="Set screen orientation";r.Msg.image_process_lcd_landscape_screen="Landscape screen";r.Msg.image_process_lcd_vertical_screen="Portrait screen";r.Msg.image_process_text_let_canvas="Set Canvas";r.Msg.image_process_text_image_canvas="Picturization";r.Msg.image_process_text_let_canvas_filled_with_color="Filled With Color";r.Msg.image_process_text_on_canvas="On Canvas";r.Msg.image_process_text_on_draw="Draw";r.Msg.image_text_on_draw="Draw";r.Msg.image_process_text_set_canvas_setup="Set Canvas";r.Msg.image_process_draw_qrcode=" QR code";r.Msg.image_process_draw_qr_code_size="QR code size";r.Msg.image_process_text_filled="Filled";r.Msg.image_process_text_stroked="Stroked";r.Msg.image_process_statistical_chart_bar="Bar";r.Msg.image_process_statistical_chart_broken_line="Broken Line";r.Msg.image_process_statistical_chart_sector="Sector";r.Msg.image_process_sensor="Sensor ";r.Msg.image_process_temperature="Temperature";r.Msg.image_process_humidity="Humidity";r.Msg.image_process_Ray_value="Ray Value";r.Msg.image_process_temperature_range="Range ";r.Msg.image_process_nothing="No Scope Definition(Except Temperature)";r.Msg.image_process_interface="Interface ";r.Msg.ai_speech_recognition_setup_set_english="English";r.Msg.ai_speech_recognition_setup_set_simplified_chinese="Chinese";r.Msg.ai_speech_recognition_setup_set_traditional_chinese="Traditional Chinese";r.Msg.image_process_text_start_coord_as="'s Starting Coordinate as:";r.Msg.image_process_text_start_coord="Set Start Coordinate:";r.Msg.image_process_text_end_coord="Set End Coordinate:";r.Msg.image_process_text_size="Size:";r.Msg.image_process_text_color="Color:";r.Msg.image_process_background_color="BackgroundColor:";r.Msg.image_process_text_thick="Thickness:";r.Msg.image_process_text_radius="Radius:";r.Msg.image_process_text_content="Content";r.Msg.image_process_statistical_chart_content="Get the data to be drawn";r.Msg.image_process_statistical_chart_y_property="Define the y-axis as";r.Msg.image_process_pixtovec_text_first="Do";r.Msg.image_process_pixtovec_v2p="Vector to Pixel";r.Msg.image_process_pixtovec_p2v="Pixel to Vector";r.Msg.image_process_pixtovec_conversion="Conversion";r.Msg.image_process_color_mode_gray="Grayscale Mode";r.Msg.image_process_color_mode_rgb="RGB Color Mode";r.Msg.image_process_imgcut_cutting="Cut to:";r.Msg.image_process_imgcut_start_coord="Cutting Start Coordinate:";r.Msg.image_process_imgcut_size="Cutting Size:";r.Msg.image_process_img_save="Saved to Local Path:";r.Msg.image_process_img_save_quality="Set Image Compression Rate:";r.Msg.image_process_color_invert="Color Inverted";r.Msg.image_process_resize_to="Resize to ";r.Msg.image_process_color_scheme_convert="Convert to";r.Msg.image_process_color_scheme_bw="Black & White";r.Msg.image_process_color_scheme_rgb="RGB Color";r.Msg.image_process_draw_cross_title=" Cross Sign";r.Msg.image_process_draw_cross_centerpos="Center Position:";r.Msg.image_process_draw_cross_length="Length:";r.Msg.image_process_draw_cross_thick="Thickness:";r.Msg.image_process_draw_cross_color="Color:";r.Msg.image_process_draw_arrow_title=" Arrow";r.Msg.image_process_draw_image_title="Draw Image";r.Msg.image_process_draw_image_title_image_path="Set Image Path:";r.Msg.image_process_draw_image_scale_x="Set Length Scale by X Direction:";r.Msg.image_process_draw_image_scale_y="Set Height Scale by Y Direction:";r.Msg.image_process_draw_sensor_image_title="Draw Image Captured from Camera";r.Msg.image_process_draw_sensor_image_path="Set Image From:";r.Msg.image_process_draw_arrow_start="Start Coordinate:";r.Msg.image_process_draw_arrow_end="End Coordinate:";r.Msg.image_process_draw_arrow_color="Color:";r.Msg.image_process_draw_arrow_thick="Thickness:";r.Msg.image_process_draw_rectangle_text="Rectangle";r.Msg.image_process_draw_circle_text="Circle";r.Msg.image_process_draw_ellipse_text="Ellipse";r.Msg.image_process_draw_circle_text_start="Center coordinates";r.Msg.image_process_draw_text_font_size="Text Size: (Integer from 1 to 3)";r.Msg.image_process_draw_text_if_monospace="Set Monospace";r.Msg.image_process_draw_text=" Text";r.Msg.image_process_draw_statistical_chart=" Statistical chart";r.Msg.image_process_draw_characters=" Hanzi Characters";r.Msg.image_process_draw_line=" Line";r.Msg.image_process_create_blank_canvas="Create Blank Canvas:";r.Msg.image_process_create_image_canvas="Create Image Canvas:";r.Msg.image_process_create_image_canvas_path="Load Image from Path:";r.Msg.image_process_show_canvas="Show Canvas";r.Msg.image_process_clear_canvas_1="Clear Canvas";r.Msg.image_process_clear_canvas_2="All Content";r.Msg.image_process_set_lcd_rotation="Rotation to";r.Msg.image_process_set_lcd_mirror_flip="Set LCD Screen Mirror Flip";r.Msg.image_process_set_filled_screen_color="Set LCD Filled with Color in ";r.Msg.image_process_set_filled_screen_color_red="Red";r.Msg.image_process_set_filled_screen_color_green="Green";r.Msg.image_process_set_filled_screen_color_blue="Blue";r.Msg.image_process_set_filled_screen_color_purple="Purple";r.Msg.image_process_set_filled_screen_color_cyan="Cyan";r.Msg.image_process_set_filled_screen_color_orange="Orange";r.Msg.image_process_set_filled_screen_color_yellow="Yellow";r.Msg.image_process_set_filled_screen_color_black="Black";r.Msg.image_process_set_filled_screen_color_white="White";r.Msg.image_process_clear_lcd="Clear LCD Screen";r.Msg.image_process_rgb_r="Red";r.Msg.image_process_rgb_g="Green";r.Msg.image_process_rgb_b="Blue";r.Msg.image_process_xy_x="X";r.Msg.image_process_xy_y="Y";r.Msg.image_process_wh_width="Width";r.Msg.image_process_wh_height="Height";r.Msg.image_process_lcd_show_text="Display Text on LCD Screen";r.Msg.image_process_lcd_show_text_color="Text Color:";r.Msg.image_process_lcd_show_text_bg_color="Text Backgorund Color:";r.Msg.image_process_lcd_show_text_color_red="Red";r.Msg.image_process_lcd_show_text_color_green="Green";r.Msg.image_process_lcd_show_text_color_blue="Blue";r.Msg.image_process_lcd_show_text_color_purple="Purple";r.Msg.image_process_lcd_show_text_color_cyan="Cyan";r.Msg.image_process_lcd_show_text_color_orange="Orange";r.Msg.image_process_lcd_show_text_color_yellow="Yellow";r.Msg.image_process_lcd_show_text_color_black="Black";r.Msg.image_process_lcd_show_text_color_white="White";r.Msg.image_process_get_statistics_to_canvas="Get the Analyzed Result of Color Channel from Canvas:";r.Msg.image_process_get_statistics_get_analysis="The result of analyzing color channel information";r.Msg.image_process_get_statistics_start_coord="Set the Start Coordinate of Analyzing Region:";r.Msg.image_process_get_statistics_size="Set the Size of Analyzing Region:";r.Msg.image_process_get_statistics_boxes="Set the Bin Count of the Histogram Channel:";r.Msg.image_process_lab_rgb_conversion_exec="Run Color Mode Conversion";r.Msg.image_process_lab_rgb_conversion_torgb="LAB to RGB";r.Msg.image_process_lab_rgb_conversion_tolab="RGB to LAB";r.Msg.image_process_lab_rgb_conversion_tuple="Set the tuple source:";r.Msg.image_process_rgb_grayscale_conversion_exec="Run Color Mode Conversion";r.Msg.image_process_rgb_grayscale_conversion_torgb="Grayscale to RGB Color";r.Msg.image_process_rgb_grayscale_conversion_togray="RGB Color to Grayscale";r.Msg.image_process_rgb_grayscale_conversion_set="Set the tuple/value source:";r.Msg.image_lcd_set_font="Set the font to";r.Msg.ai_camera_camera_init="Camera Setup";r.Msg.ai_camera_camera_set_size="Set Image Capturing Size:";r.Msg.ai_camera_camera_fit_set="Set the Size of Captured Image";r.Msg.ai_camera_camera_fit_to="to";r.Msg.ai_camera_camera_fit_1="Fit in Screen (240*240px)";r.Msg.ai_camera_camera_fit_2=" Fit for A.I. Model Inference (224*224px)";r.Msg.ai_camera_camera_color_mode="Set Image Capturing Color Mode:";r.Msg.ai_camera_camera_color_mode_rgb="Colorful";r.Msg.ai_camera_camera_color_mode_bw="Black & White";r.Msg.ai_camera_windowing_resize="Set Captured Image to a Windowing Size";r.Msg.ai_camera_windowing_w="Width:";r.Msg.ai_camera_windowing_h="Height:";r.Msg.ai_camera_windowing_unit=" (in px)";r.Msg.ai_camera_snapshot="Get the Image Captured from Camera";r.Msg.ai_camera_enable="Enable";r.Msg.ai_camera_disable="Disable";r.Msg.ai_camera_set_vflip="Set Camera Source Image Vertically Flipped";r.Msg.ai_camera_set_hmirror="Set Camera Source Image Horizontally Mirrored";r.Msg.ai_camera_set_auto_whitebal="Set Camera Source Image Auto White Balanced";r.Msg.ai_camera_set_auto_gain="Set Camera Source Image Auto Gained";r.Msg.ai_camera_set_auto_exposure="Set Camera Source Image Auto Exposured";r.Msg.ai_camera_set_contrast_to_value="Set Camera Source Image's Contrast to:";r.Msg.ai_camera_set_brightness_to_value="Set Camera Source Image's Brightness to:";r.Msg.ai_camera_set_saturation_value="Set Camera Source Image's Saturation to:";r.Msg.ai_camera_set_range=" (value from -3 to 3))";r.Msg.ai_camera_set_lens_corr="Set Lens Correction from";r.Msg.ai_camera_bcs_set_text="Set Camera Source Image's ";r.Msg.ai_camera_bcs_contrast="Contrast";r.Msg.ai_camera_bcs_brightness="Brightness";r.Msg.ai_camera_bcs_saturation="Saturation";r.Msg.ai_camera_bcs_as="to:";r.Msg.ai_camera_bcs_set_text_2="Set Camera Source Image ";r.Msg.ai_camera_bcs_vflip="Vertically Flipped";r.Msg.ai_camera_bcs_hmirror="Horizontally Mirrored";r.Msg.ai_camera_bcs_wb="Auto White Balance Mode";r.Msg.ai_camera_bcs_g="Auto Gain Mode";r.Msg.ai_camera_bcs_e="Auto Exposure Mode";r.Msg.ai_camera_bcs_as_2="to ";r.Msg.ai_camera_bcs_status="d";r.Msg.ai_vision_get_canvas="From Canvas";r.Msg.ai_vision_from_canvas="From Canvas";r.Msg.ai_vision_from="From";r.Msg.ai_vision_color_analyze_get_result="Get the Color Analyze Result from Selected Region";r.Msg.ai_vision_color_analyze_start_coord="Set the start coordinate of the analyze region:";r.Msg.ai_vision_color_analyze_size="Set the size of the analyze region:";r.Msg.ai_vision_find_blobs_color_region="Find Desginated Color Range";r.Msg.ai_vision_find_lines_color_region="Looks for the specified color line";r.Msg.ai_vision_find_lines_color_region_result="Gets the result of finding a line";r.Msg.ai_vision_find_blobs_color_threshold="Set the color threshold for tracking:";r.Msg.ai_vision_find_blobs_start_coord="Set the start coordinate of the analyze region:";r.Msg.ai_vision_find_blobs_size="Set the size of the analyze region:";r.Msg.ai_vision_find_blobs_region_threshold="Set the threshold for bounding box region:";r.Msg.ai_vision_find_blobs_pixel_threshold="Set pixel threshold:";r.Msg.ai_vision_find_blobs_filtered_region="Merge all unfiltered color blobs";r.Msg.ai_vision_get_blobs_result="Get the Color Tracking Result's";r.Msg.ai_vision_detection_box_x="X-axis coordinates of the starting point of the detection box";r.Msg.ai_vision_detection_box_y="Y axis coordinates of the starting point of the detection box";r.Msg.ai_vision_detection_box_width="X-axis coordinates of terminal point of detection frame";r.Msg.ai_vision_detection_box_height="Y-axis coordinates of terminal point of detection frame";r.Msg.ai_vision_detection_box_pixels="Total Pixel Counts from a part of the Color blob";r.Msg.ai_vision_detection_box_cx="X Coordinate of the Center Position of the Bounding Box";r.Msg.ai_vision_detection_box_cy="Y Coordinate of the Center Position of the Bounding Box";r.Msg.ai_vision_detection_box_degree="Rotation Degree";r.Msg.ai_vision_detection_box_total="Total Counts";r.Msg.ai_vision_find_blobs_margin="Margin";r.Msg.ai_vision_detection_color_threshold_set="Get Default Color of";r.Msg.ai_vision_detection_color_threshold_set_black="Black";r.Msg.ai_vision_detection_color_threshold_set_white="White";r.Msg.ai_vision_detection_color_threshold_set_red="Light Red";r.Msg.ai_vision_detection_color_threshold_set_green="General Green";r.Msg.ai_vision_detection_color_threshold_set_blue="Light Blue";r.Msg.ai_vision_detection_color_threshold_set_orange="Orange";r.Msg.ai_vision_qrcode_detected_result="Get QR Code Detected Result";r.Msg.ai_vision_apriltag_detected_result="Get AprilTag Detected Result";r.Msg.ai_vision_datamatrices_detected_result="Get Data Matrices Detected Result";r.Msg.ai_vision_barcode_detected_result="Get Barcode Detected Result";r.Msg.ai_vision_qrcode_get_result="Get the detected QR Code's ";r.Msg.ai_vision_apriltag_get_result="Get the detected AprilTag's ";r.Msg.ai_vision_data_matrices_get_result="Get the detected Data Matrices' ";r.Msg.ai_vision_barcode_matrices_get_result="Get the detected Barcode's ";r.Msg.ai_vision_pattern_detection_content="Decoded Text";r.Msg.ai_vision_pattern_detection_type="Data Type";r.Msg.ai_vision_pattern_detection_x="X-axis coordinates of the starting point of the detection box";r.Msg.ai_vision_pattern_detection_y="Y axis coordinates of the starting point of the detection box";r.Msg.ai_vision_pattern_detection_w="X-axis coordinates of terminal point of detection frame";r.Msg.ai_vision_pattern_detection_h="Y-axis coordinates of terminal point of detection frame";r.Msg.ai_vision_pattern_distance="Distance";r.Msg.ai_vision_pattern_detection_type_id="Numeric ID";r.Msg.ai_vision_pattern_detection_type_family="Numeric Family";r.Msg.ai_vision_pattern_detection_rows="Row Counts";r.Msg.ai_vision_pattern_detection_cols="Column Counts";r.Msg.ai_vision_pattern_detection_can_tolerate_count="Characters could fit in this data matrix";r.Msg.ai_vision_pattern_detection_can_not_tolerate_count="Unused characters are in this data matrix";r.Msg.ai_vision_find_circle="Find Circle";r.Msg.ai_vision_find_circle_start_coord="Set start coordinate of the analyzing region:";r.Msg.ai_vision_find_circle_region_size="Set the size of the analyzing region:";r.Msg.ai_vision_find_circle_hoffman_threshold="Set the threshold of detected circle:";r.Msg.ai_vision_find_circle_merge_x="Set the X margin of the detected circle:";r.Msg.ai_vision_find_circle_merge_y="Set the Y margin of the detected circle:";r.Msg.ai_vision_find_circle_merge_r="Set the T margin of the detected circle:";r.Msg.ai_vision_find_circle_min_radius="Set the minimum radius to detect the Circle:";r.Msg.ai_vision_find_circle_max_radius="Set the maximum radius to detect the Circle:";r.Msg.ai_vision_find_circle_step_radius="Set step the radius detection by:";r.Msg.ai_vision_find_circle_detected_result="Get the detected Circle's ";r.Msg.ai_vision_find_circle_detected_x="X Coordinate of the Detected Circle";r.Msg.ai_vision_find_circle_detected_y="Y Coordinate of the Detected Circle";r.Msg.ai_vision_find_circle_detected_radius="Radius of the Detected Circle";r.Msg.ai_vision_find_line="Find Line";r.Msg.ai_vision_find_line_start_coord="Set start coordinate of the analyzing region:";r.Msg.ai_vision_find_line_size="Set the size of the analyzing region:";r.Msg.ai_vision_find_line_hoffman_threshold="Set the threshold of detected line:";r.Msg.ai_vision_find_line_merge_theta="Set merging of detected lines (theta):";r.Msg.ai_vision_find_line_merge_rho="Set merging of detected lines (rho):";r.Msg.ai_vision_find_line_detected_result="Get the detected Line's ";r.Msg.ai_vision_find_line_detected_start_x="X Coordinate of the Start Position of the Detected Line";r.Msg.ai_vision_find_line_detected_start_y="Y Coordinate of the Start Position of the Detected Line";r.Msg.ai_vision_find_line_detected_end_x="X Coordinate of the End Position of the Detected Line";r.Msg.ai_vision_find_line_detected_end_y="Y Coordinate of the End Position of the Detected Line";r.Msg.ai_vision_find_line_detected_length="Length of the detected Line";r.Msg.ai_vision_find_line_detected_angle="Rotation Degree of the detected Line";r.Msg.ai_vision_find_rect="Find Rectangle";r.Msg.ai_vision_find_rect_start_coord="Set start coordinate of the analyzing region:";r.Msg.ai_vision_find_rect_region_size="Set the size of the analyzing region:";r.Msg.ai_vision_find_rect_bounding_threshold="Set the threshold value of the rectangle's border:";r.Msg.ai_vision_find_rect_detected_result="Get the detected Rectangle's ";r.Msg.ai_vision_find_rect_detected_tuple="Rectangle tuple (x, y, width, height) of detected Rectangle";r.Msg.ai_vision_find_rect_detected_corners="X & Y Coordinate for Each Corner of the Rectangle";r.Msg.ai_vision_find_rect_detected_x="X coordinate of detected Rectangle";r.Msg.ai_vision_find_rect_detected_y="Y coordinate of detected Rectangle";r.Msg.ai_vision_find_rect_detected_w="Width of detected Rectangle";r.Msg.ai_vision_find_rect_detected_h="Height of detected Rectangle";r.Msg.ai_vision_get_histogram_get="Get Canvas";r.Msg.ai_vision_get_histogram_compute="Compute the Normalized Histogram";r.Msg.ai_vision_get_histogram_region="Set Color Tracking Region:";r.Msg.ai_vision_get_histogram_region_xy="Region Coordinate:";r.Msg.ai_vision_get_histogram_region_wh="Region Size:";r.Msg.ai_vision_get_histogram_details_1="From Histogram";r.Msg.ai_vision_get_histogram_details_get="Get Computed CDF of the histogram channels (%)";r.Msg.ai_vision_get_histogram_percentile_1="From Percentile";r.Msg.ai_vision_get_histogram_percentile_2="Get";r.Msg.ai_vision_get_histogram_percentile_3="The grayscale percentile value";r.Msg.ai_vision_get_histogram_percentile_4="The RGB565 LAB L channel percentile value";r.Msg.ai_vision_get_histogram_percentile_5="The RGB565 LAB A channel percentile value";r.Msg.ai_vision_get_histogram_percentile_6="The RGB565 LAB B channel percentile value";r.Msg.ai_vision_canvas_area_tuple="Create Area Tuple";r.Msg.ai_vision_canvas_area_tuple_xy="Set Starting Coordinate:";r.Msg.ai_vision_canvas_area_tuple_wh="Set Size:";r.Msg.ai_vision_lane_tracking_setup="Lane Detection Setup";r.Msg.ai_vision_lane_tracking_setup_threshold="Set the color to track";r.Msg.ai_vision_lane_tracking_setup_l="Set Left Detection Area:";r.Msg.ai_vision_lane_tracking_setup_r="Set Right Detection Area:";r.Msg.ai_vision_lane_tracking_setup_axis="Set the Position of Central axis:";r.Msg.ai_vision_lane_tracking_run="Run Lane Detection Process";r.Msg.ai_vision_lane_tracking_run_get="From Lane Detection Result Get ";r.Msg.ai_vision_lane_tracking_run_ld="Left Area Detection";r.Msg.ai_vision_lane_tracking_run_lv="Left Area Offset Value";r.Msg.ai_vision_lane_tracking_run_rd="Right Area Detection";r.Msg.ai_vision_lane_tracking_run_rv="Right Area Offset Value";r.Msg.ai_microphone_init="Microphone Setup";r.Msg.ai_microphone_start_spectrum_analyze="Start Reading Spectrum Analyze Result";r.Msg.ai_microphone_get_spectrum_analyze_result="Get the Spectrum Analyzing Result: ";r.Msg.ai_microphone_get_spectrum_analyze_result_1="Low Pitch 1";r.Msg.ai_microphone_get_spectrum_analyze_result_2="Low Pitch 2";r.Msg.ai_microphone_get_spectrum_analyze_result_3="Middle-low Pitch 1";r.Msg.ai_microphone_get_spectrum_analyze_result_4="Middle-low Pitch 2";r.Msg.ai_microphone_get_spectrum_analyze_result_5="Middle-high Pitch 1";r.Msg.ai_microphone_get_spectrum_analyze_result_6="Middle-high Pitch 2";r.Msg.ai_microphone_get_spectrum_analyze_result_7="High Pitch 1";r.Msg.ai_microphone_get_spectrum_analyze_result_8="High Pitch 2";r.Msg.ai_mphone_Record_audio_init="Microphone recording audio initialization";r.Msg.ai_mphone_Record_audio_start="Start Audio Record";r.Msg.ai_mphone_Record_audio_start_path="Set audio file saved path:";r.Msg.ai_mphone_Record_audio_start_time="Set recording time(s):";r.Msg.ai_audio_stop_recording="Stop recording audio";r.Msg.ai_audio_play_music_file="Play Audio Files(Single tune circulation)";r.Msg.ai_audio_play_music_file_list_loop="Play Audio Files(Sequential play)";r.Msg.ai_audio_play_music_file_list_random="Play Audio Files(Random play)";r.Msg.ai_audio_play_music_file_set_vol="Set Volume:";r.Msg.ai_audio_play_music_file_set_file_path="To load the music file, go to:";r.Msg.ai_audio_play_music_file_set_files_list="Audio file list:";r.Msg.ai_audio_play_music_file_set_first_index="Starting point:";r.Msg.ai_audio_files_list_set_file_path="Current path:";r.Msg.ai_audio_get_play_status="Get the play state of playing file";r.Msg.ai_audio_end_play="End audio playing";r.Msg.ai_audio_start_play="audio playing";r.Msg.ai_audio_init="Speaker Setup";r.Msg.ai_audio_set_music_vol="Set Playing Volume:";r.Msg.ai_audio_files_list="Get a list of audio files";r.Msg.ai_speech_recognition_setup="Speech Recognition Setup";r.Msg.ai_speech_recognition_setup_set_sensi="Set Background Noise Sensitivity:";r.Msg.ai_speech_recognition_setup_set_sensi_normal="Normal";r.Msg.ai_speech_recognition_setup_set_sensi_high="High";r.Msg.ai_speech_recognition_setup_set_sensi_ehigh="Extra High";r.Msg.ai_speech_recognition_start_recording="Speech Recognition: Start Recording Voice Samples";r.Msg.ai_speech_recognition_start_recording_clip_text="Set the total number of voice clip(s):";r.Msg.ai_speech_recognition_start_recording_clip_note="(No more than 6)";r.Msg.ai_speech_recognition_start_recording_take_text="Set the total count of sample(s) for each clip:";r.Msg.ai_speech_recognition_start_recording_take_note="(No more than 4)";r.Msg.ai_speech_recognition_start_recognizing="Speech Recognition: Start Recognition";r.Msg.ai_speech_recognition_any_result_text="When Speech Recognition Has Any Result";r.Msg.ai_speech_recognition_any_result_text_do="Do";r.Msg.ai_speech_recognition_get_result="Speech Recognition Result is Clip #";r.Msg.ai_speech_recognition_get_result_after="code snippet";r.Msg.ai_speech_recognition_phonetic_to_pinyin_setup="Phonetic to Pinyin initialization";r.Msg.ai_speech_recognition_setup_pinyin="Set pinyin";r.Msg.ai_speech_recognition_phonetic_to_pinyin_get_result="Get the result of speech to pinyin";r.Msg.ai_speech_recognition_phonetic_to_pinyin_set_param="Set phonetic recognition parameters";r.Msg.ai_speech_recognition_phonetic_to_pinyin_set_param_1="Set priority";r.Msg.speech_recognition_phonetic_to_pinyin_start_recognition="Speech Recognition: Start Phonetic Recognition";r.Msg.speech_recognition_phonetic_to_pinyin_stop_recognition="Speech Recognition: End Phonetic Recognition";r.Msg.speech_recognition_phonetic_to_pinyin_pause_recognition="Clear phonetic pinyin recognition";r.Msg.speech_recognition_number_of_recordings="Number of clips recorded ";r.Msg.speech_recognition_In_recording="on the record ";r.Msg.speech_recognition_Recorded_successfully="Successfully recorded segment ";r.Msg.speech_recognition_Start_speech_recognition="Record the speech clip and identify the display in";r.Msg.speech_recognition_Start_speech_recognition_title="Record the speech snippet and identify the display";r.Msg.speech_recognition_Speech_recognition_result="Speech Recognition Result ";r.Msg.speech_recognition_Clean_up_the_last_study_result="Clean up the last study result";r.Msg.speech_recognition_Recognition_success="Recognition success";r.Msg.speech_recognition_Recognition_fail="Recognition failure";r.Msg.ai_video_start_recording="Start Video Record";r.Msg.ai_video_start_recording_file_path="Set video file saved path:";r.Msg.ai_video_start_recording_width="Set Video Width (in px):";r.Msg.ai_video_start_recording_height="Set Video Height (in px):";r.Msg.ai_video_to_canvas="Start Recording on Canvas";r.Msg.ai_video_record="recording";r.Msg.ai_video_stop_recording="Stop Video Recording";r.Msg.ai_video_play_video="Play Video File";r.Msg.ai_video_play_video_2="Note: Only Support 320*240 Resolution";r.Msg.ai_video_play_video_file_path="Load Video file from path:";r.Msg.ai_video_stop_video_playing="Stop Playing Video";r.Msg.ai_video_get_video_playing_status="Get Current Playing Status";r.Msg.ai_video_recording_and_save="Record video file and save ";r.Msg.ai_video_set_play="Video file playing";r.Msg.ai_video_set_play_stats="Video Properties";r.Msg.ai_video_set_play_init="Video initialization";r.Msg.ai_models_from="From";r.Msg.ai_models_init_title="Initialize Preset A.I. Model:";r.Msg.ai_model_allinit_language="Set language as:";r.Msg.ai_models_load_title="Load Preset A.I. Model:";r.Msg.ai_models_init_hand_written_model="Handwritten Digit Recognition";r.Msg.ai_models_init_object_model="Object Detection Model";r.Msg.ai_models_init_guesswork_model="Guesswork recognition model";r.Msg.ai_models_guesswork_model_if="Test with guessing results";r.Msg.ai_models_guesswork_model_get="Obtain the results of the detected fist guessing";r.Msg.ai_model_guesswork_look_attribute="Guessing hand gesture attribute";r.Msg.ai_models_init_object_model_title="Object Detection Model(aeroplane,bicycle,bird,boat,bottle,bus,car,cat,chair,cow,diningtable,dog,horse,motorbike,person,pottedplant,sheep,sofa,train,tvmonitor)";r.Msg.ai_models_init_face_model="Face Detection Model";r.Msg.ai_camera_camera_fit_set1="Set Captured Image:";r.Msg.ai_models_init_source="Recognize from:";r.Msg.ai_models_init_source_written="Recognize Hand-written from:";r.Msg.ai_models_hand_written_model_result="Get the Hand-written Digit recognition result";r.Msg.ai_models_hand_written_model_number="Get the number recognized (from 0 to 9)";r.Msg.ai_models_hand_written_model_confidence="Get the confidence rate of the number recognized (%)";r.Msg.ai_model_digital="Tested Digital attribute";r.Msg.ai_model_digital_attribute="The number is detected";r.Msg.ai_models_object_model_if="Recognized Any tested Object";r.Msg.ai_models_object_model_get="Get the recognized tested Object's";r.Msg.ai_model_look_attribute="Tested Objects attribute";r.Msg.ai_models_object_model_name="Name";r.Msg.ai_models_object_model_x="X-axis coordinates of the starting point of the detection box";r.Msg.ai_models_object_model_y="Y axis coordinates of the starting point of the detection box";r.Msg.ai_models_object_model_w="X-axis coordinates of terminal point of detection frame";r.Msg.ai_models_object_model_h="Y-axis coordinates of terminal point of detection frame";r.Msg.ai_models_object_model_count="Total Number";r.Msg.ai_models_object_model_index="Index";r.Msg.ai_models_object_model_confidence="Confidence Rate";r.Msg.ai_models_face_model_if_new="Face recognized";r.Msg.ai_model_face_attribute_new="Face recognition properties";r.Msg.ai_models_face_model_if="Recognized Any Human Face";r.Msg.ai_model_face_attribute="Face attribute";r.Msg.ai_models_face_model_get="Get the recognized Humand Face";r.Msg.ai_models_face_model_x="X-axis coordinates of the starting point of the detection box";r.Msg.ai_models_face_model_y="Y axis coordinates of the starting point of the detection box";r.Msg.ai_models_face_model_w="X-axis coordinates of terminal point of detection frame";r.Msg.ai_models_face_model_h="Y-axis coordinates of terminal point of detection frame";r.Msg.ai_models_face_model_ws="Width of the bounding box";r.Msg.ai_models_face_model_hs="Height of the bounding box";r.Msg.ai_models_face_model_rect="the bounding box";r.Msg.ai_models_face_model_count="Total Number";r.Msg.ai_models_face_model_index="Index";r.Msg.ai_models_face_model_confidence="Confidence Rate";r.Msg.ai_models_face_model_confidence_1="Confidence (face detection)";r.Msg.ai_model_human_attribute="Human Body Attribute ";r.Msg.ai_models_human_model_if="Human body detected ";r.Msg.ai_models_human_model_get="Obtain detected human body ";r.Msg.ai_models_init_humane_model="human body detection model ";r.Msg.ai_model_customized_init_setup_definition="Setup for Loading Customized A.I. Model";r.Msg.ai_models_customized_init_setup_title="Initialize A.I. Model";r.Msg.ai_model_customized_load_setup_title="Load Customized A.I. Model";r.Msg.ai_models_customized_init_setup_path="Load model file from path";r.Msg.ai_models_customized_init_setup_source="Recognize from:";r.Msg.v831_transmission_init_setup_source="Set the image source to be transferred to:";r.Msg.v831_transmission_setup_show="The captured camera image is transferred to the computer and displayed";r.Msg.v831_internet_transmission_setup_show="Display the captured camera images on the web";r.Msg.ai_models_init_card_model="License plate recognition model";r.Msg.ai_models_init_card_result="License plate result";r.Msg.ai_models_card_if_true="License plate detected";r.Msg.ai_models_card_attribute="Detected license plate attribute";r.Msg.ai_models_card_model_get="Get the detection of the license plate";r.Msg.ai_models_customized_init_type_set="Set Recognition Mode:";r.Msg.ai_models_customized_init_type_set_fast="Single Face (Fast)";r.Msg.ai_models_customized_init_type_set_slow="Multiple Faces (Slow)";r.Msg.ai_models_customized_init_setup_name="Define class name by list:";r.Msg.ai_models_customized_if_got="Recognized any object from customized model";r.Msg.ai_model_customized_attribute="Custom model object attribute";r.Msg.ai_models_customized_get_result_any="Get the recognized Object's";r.Msg.ai_models_customized_get_result_name="Name";r.Msg.ai_models_customized_get_result_x="X-axis coordinates of the starting point of the detection box";r.Msg.ai_models_customized_get_result_y="Y axis coordinates of the starting point of the detection box";r.Msg.ai_models_customized_get_result_w="X-axis coordinates of terminal point of detection frame";r.Msg.ai_models_customized_get_result_h="Y-axis coordinates of terminal point of detection frame";r.Msg.ai_models_customized_get_result_count="Total Number";r.Msg.ai_models_customized_get_result_index="Index";r.Msg.ai_models_customized_get_result_confidence="Confidence Rate";r.Msg.ai_model_face_setup="Customized Face Recognition";r.Msg.ai_model_face="Initializing face recognition model";r.Msg.ai_face_detection_model="Initialize face detection model";r.Msg.ai_face_point_detection_model="Initialization of face 5-point key point detection model";r.Msg.ai_face_Vitter_eigenvalue_model="Initialization of face 196 Vitter eigenvalue model";r.Msg.ai_model_Calculation_of_196_eigenvalues="Calculate 196 dimension eigenvalues of running face feature model";r.Msg.ai_model_face_start_recognition="Loading face detection model, ";r.Msg.ai_model_face_model_load_finish="Face detection model loading completed";r.Msg.ai_model_face_load_point_detection_model="Loading face 5-point key point detection model, ";r.Msg.ai_model_face_load_point_detection_model_1="Get face image and save it to";r.Msg.ai_model_face_load_point_detection_model_2="Set face detection box to";r.Msg.ai_model_face_gather="Gather new face data and save face data";r.Msg.ai_model_face_gather_1="Save the face data and save the data in the file, the path is:";r.Msg.ai_model_face_data_load="Load saved face data";r.Msg.ai_model_face_data_load_1="Set path to /sd/user to load face data fileName";r.Msg.ai_model_face_model_list="Face detection attribute";r.Msg.ai_model_face_gather_num_judge="Completed the face acquisition";r.Msg.ai_model_face_recognition="Gather or load face data and carry out face recognition";r.Msg.ai_model_face_recognition_get_result="Face recognition gets arbitrary results";r.Msg.ai_model_show_face="Image processing and display";r.Msg.v831_face_recognition_load="Load face recognition model, ";r.Msg.v831_face_recognition_load_title="Load the face model and set the image source to be detected ";r.Msg.v831_setting_face_data_save="Sets face data to save: ";r.Msg.face_recognition_map_face_canvas="On the canvas";r.Msg.face_recognition_map_face_show="Display control";r.Msg.face_recognition_map_face_key_point="Face key points";r.Msg.v831_setting_face_data_save_title="Set face data to save ";r.Msg.v831_setting_face_data_remove="Delete last saved face data";r.Msg.v831_setting_face_data_remove_title="Delete last saved face data ";r.Msg.v831_face_recognition_result="Image source recognition result: ";r.Msg.v831_face_recognition_result_title="Image source recognition Result ";r.Msg.v831_model_face_name="Name of face";r.Msg.v831_models_face_model_confidence="Confidence (face recognition)";r.Msg.ai_model_class_setup="Customized Object Recognition";r.Msg.ai_class_model="Initialize custom object feature extraction model";r.Msg.ai_class_model_cluster="Initialize custom object clustering parameters";r.Msg.ai_model_class_start_load="and process the image";r.Msg.ai_model_class_gather="Start gathering object";r.Msg.ai_model_class_data_load="Loading object data";r.Msg.ai_model_class_data_load_1="Set path to /sd/user to load object data fileName";r.Msg.ai_model_class_gather_load_finish="Collect or load object data";r.Msg.ai_model_class_cluster_train="Start extract object features, and then cluster training";r.Msg.ai_model_class_cluster_train_1="Set the fileName for saving object data to /sd/user";r.Msg.ai_model_class_recognition="Start object recognition";r.Msg.ai_model_face_name="Set the name of the model recognition object:";r.Msg.ai_model_class="Custom Initializing class recognition model";r.Msg.ai_model_class_name="Set the name of the model recognition object:";r.Msg.ai_model_getface="Custom Recognized face from customized model";r.Msg.ai_model_getclass="Recognized object from customized model";r.Msg.face_information="Face information";r.Msg.ai_models_object_model_x_center="X Coordinate of the center point";r.Msg.ai_models_object_model_y_center="Y Coordinate of the center point";r.Msg.ai_models_face_model_x_center="X Coordinate of the center point";r.Msg.ai_models_face_model_y_center="Y Coordinate of the center point";r.Msg.ai_models_customized_get_result_x_center="X Coordinate of the center point";r.Msg.ai_models_customized_get_result_y_center="Y Coordinate of the center point";r.Msg.ai_models_edge_detection_model="Edge Detection Model";r.Msg.ai_models_load_edge_detection_model="Load Edge Detection Model";r.Msg.ai_models_get_edge_detection_result="Get the edge detection model results";r.Msg.ai_model_self_learning_init="Initializing self-learning classification model";r.Msg.ai_model_self_learning_load="Load self-learning classification model";r.Msg.ai_model_self_learning_recognize_load="Load the self-learning classification recognition model";r.Msg.ai_model_self_learning_add_class_category="Add Category category";r.Msg.ai_model_self_learning_make_data_set="Data set for making model training";r.Msg.ai_model_self_learning_picture="picture self-learning";r.Msg.ai_model_self_learning_save_modal="Save model";r.Msg.ai_model_self_learning_class_verification="Self-learning Classification Model Verification";r.Msg.ai_model_self_learning_result="Self-learning outcome";r.Msg.ai_model_self_learning_result_name="Name";r.Msg.ai_system_restart="Restart Module";r.Msg.ai_system_off="To turn it off";r.Msg.ai_system_refresh="Refreshing a file directory";r.Msg.ai_system_enable_gc="Enable Memory Optimization";r.Msg.ai_system_run_python_code="Run Python Code";r.Msg.ai_system_run_python_code_file_path="Load file from path:";r.Msg.ai_wifi_set_wifi="Set Wi-Fi";r.Msg.ai_wifi_enabled="Enabled";r.Msg.ai_wifi_disabled="Disabled";r.Msg.ai_wifi_start_wifi_scan="Start Wi-Fi Scan";r.Msg.ai_wifi_wifi_scan_result="Get Wi-Fi Scan Result as List";r.Msg.ai_wifi_connect_wifi="Connect to Wi-Fi Network";r.Msg.ai_wifi_connect_wifi_ssid="SSID:";r.Msg.ai_wifi_connect_wifi_pass="Password:";r.Msg.ai_wifi_get_connection_status="Get Wi-Fi Connection Status";r.Msg.ai_wifi_get_wifi_info="Get Wi-Fi Info:";r.Msg.ai_wifi_get_wifi_info_name="Hotspot Name";r.Msg.ai_wifi_get_wifi_info_ip="IP";r.Msg.ai_wifi_get_wifi_info_dns="DNS";r.Msg.ai_wifi_get_wifi_info_mac="MAC Address";r.Msg.third_party_hcsr04_iot="On IoT Module";r.Msg.third_party_hcsr04_ai="On A.I. Module ";r.Msg.third_party_hcsr04_setup_title="Setup HCSR-04 Ultrasonic Sensor";r.Msg.third_party_hcsr04_trig_pin="Set Trig Pin: GPIO #";r.Msg.third_party_hcsr04_echo_pin=", Set Echo Pin: GPIO #";r.Msg.third_party_hcsr04_read_text="Read Distance (Unit: CM) from Ultrasonic Sensor";r.Msg.third_party_hcsr04_read_text_after="Distance Detection Value (Unit: centimetres)";r.Msg.Set_Auto_Wrap="Set Auto Wrap";r.Msg.esp32_ble_setup_sender_msg="BLE (Bluetooth Low Energy)";r.Msg.esp32_ble_setup_sender="Sender Setup";r.Msg.esp32_ble_send_data_msg="BLE Send Data";r.Msg.esp32_ble_setup_receiver_msg="BLE (Bluetooth Low Energy)";r.Msg.esp32_ble_setup_receiver="Receiver Setup";r.Msg.esp32_ble_get_data_msg="From BLE Get Data Received";r.Msg.esp32_ble_sender_connected_msg="Sender is Connected";r.Msg.esp32_ble_receiver_connected_msg="Receiver is Connected";r.Msg.esp32_ble_set_uuid="Set UUID:";r.Msg.esp32_ble_set_name="Set Device Name:";r.Msg.esp32_ble_set_name_limit=" (Must be shorter than 9 characters)";r.Msg.text_additional_delimiter_string="Split string to a list";r.Msg.text_additional_delimiter_deli="by delimiter:";r.Msg.text_additional_delimiter_end="Split and generate a list";r.Msg.MLX90614_READ_AMBIENT="Get Current Ambient Temperature";r.Msg.MLX90614_READ_OBJECT="Get Targeted Object's Temperature";r.Msg.MLX90614_READ_SET_TEMP="Set Tempeature Unit:";r.Msg.MLX90614_READ_SET_TEMP_C="Celcius";r.Msg.MLX90614_READ_SET_TEMP_F="Fahrenheit";r.Msg.MLX90614_SETUP_TEXT_1="Contactless Temperature Sensor";r.Msg.MLX90614_SETUP_TEXT_2="MLX90614 Setup";r.Msg.DHT_SETUP_TEXT_1="Temperature and humidity sensor";r.Msg.DHT_SETUP_TEXT_2="Sensor type: ";r.Msg.DHT_SETUP_TEXT_3="Setup";r.Msg.DHT_SETUP_TEXT_4="Set sensor data receiving GPIO #: ";r.Msg.PM25_SETUP_TEXT="PM2.5 Dust sensor";r.Msg.robot_dog_movement="Speech control robot dog";r.Msg.robot_dog_movement_action="Set motion command";r.Msg.robot_dog_phonetic_to_pinyin_get_result="Get the result of speech recognition";r.Msg.robot_dog_movement_action_0="Get down";r.Msg.robot_dog_movement_action_1="Stand up";r.Msg.robot_dog_movement_action_2="Crawl forward";r.Msg.robot_dog_movement_action_3="Go round";r.Msg.robot_dog_movement_action_4="No progress";r.Msg.robot_dog_movement_action_5="Squat up";r.Msg.robot_dog_movement_action_6="Rotate along the roll";r.Msg.robot_dog_movement_action_7="Rotate along the pitch";r.Msg.robot_dog_movement_action_8="Rotate along Yaw";r.Msg.robot_dog_movement_action_9="Three axis rotation";r.Msg.robot_dog_movement_action_10="pee";r.Msg.robot_dog_movement_action_11="Sit down";r.Msg.robot_dog_movement_action_12="Beckon";r.Msg.robot_dog_movement_action_13="Stretch";r.Msg.robot_dog_movement_action_14="Wave";r.Msg.robot_dog_movement_action_15="Swing left and right";r.Msg.robot_dog_movement_action_16="Pray for food";r.Msg.robot_dog_movement_action_17="Foraging";r.Msg.robot_dog_movement_action_18="Shake hands";r.Msg.robot_dog_movement_action_19="Restore the initial state";r.Msg.robot_dog_movement_action_20="go ahead";r.Msg.robot_dog_movement_action_21="Back";r.Msg.robot_dog_movement_action_22="Move left";r.Msg.robot_dog_movement_action_23="Move right";r.Msg.robot_dog_movement_action_24="Turn on the self-stabilization function";r.Msg.robot_dog_movement_action_25="Turn off the self-stabilization function";r.Msg.robot_dog_movement_action_30="Pay a New Year call";r.Msg.robot_dog_setup="Robot dog initialization";r.Msg.robot_dog_execution="Robot dog Execution";r.Msg.robot_dog_action="instruction";r.Msg.robot_dog_servo_execution="Set up";r.Msg.robot_dog_front_left_leg="Forward left";r.Msg.robot_dog_back_left_leg="Backward left";r.Msg.robot_dog_front_right_leg="Forward right";r.Msg.robot_dog_back_right_leg="Backward right";r.Msg.robot_dog_leg="Legs";r.Msg.robot_dog_up="Up (-31˚~31˚)";r.Msg.robot_dog_up_1="Up";r.Msg.robot_dog_middle="Middle (-66˚~93˚)";r.Msg.robot_dog_middle_1="Middle";r.Msg.robot_dog_down="Down (-65˚~73˚)";r.Msg.robot_dog_down_1="Down";r.Msg.robot_dog_servo_rotate="joint servo rotates to";r.Msg.robot_dog_ag="Degree";r.Msg.robot_dog_angle="mm";r.Msg.robot_dog_angle_speed="Degree/s";r.Msg.robot_dog_servo_set_speed="Set ";r.Msg.robot_dog_servo_speed="the servo speed";r.Msg.robot_dog_movement_speed="the step frequency";r.Msg.robot_dog_servo_to="to";r.Msg.robot_dog_servo_speed_1="Fast";r.Msg.robot_dog_servo_speed_2="Normal";r.Msg.robot_dog_servo_speed_3="Slow";r.Msg.robot_dog_servo_movement_location="direction position to";r.Msg.robot_dog_leg_f="Leg toe";r.Msg.robot_dog_controll_action_0="Close";r.Msg.robot_dog_controll_action_1="Open";r.Msg.robot_dog_gyroscope="Gyroscope";r.Msg.robot_dog_open_performance_mode="Performance mode of Robot dog";r.Msg.robot_dog_open_calibration_mode="Robot dog calibration mode";r.Msg.robot_dog_get_power="Get the current power of the robot dog";r.Msg.robot_dog_get_servo_angle="joint steering gear's angle";r.Msg.robot_dog_servo_movement_distance="Set the robot dog to execute the step length of";r.Msg.robot_dog_movement_action_26="Move left (0mm~18mm)";r.Msg.robot_dog_movement_action_27="Move right (-18mm~0mm)";r.Msg.robot_dog_movement_action_28="go ahead (0mm~25mm)";r.Msg.robot_dog_movement_action_29="Back (-25mm~0mm)";r.Msg.robot_dog_servo_movement_distance_location="direction translation to";r.Msg.robot_dog_servo_movement_rotate="Set the robot dog to execute";r.Msg.robot_dog_servo_movement_rotate_location="rotation speed to";r.Msg.MOTION_ONDIRECTION_CLOCKWISE1="Turn left (0˚/s~150˚/s)";r.Msg.MOTION_ONDIRECTION_COUNTERCLOCKWISE1="Turn right (-150˚/s~0˚/s)";r.Msg.robot_dog_servo_movement_standing_still="Set the robot dog ";r.Msg.robot_dog_servo_movement_standing_still_1="(10mm~35mm) to perform a standing gait at a fixed frequency";r.Msg.robot_dog_servo_movement_distance_cycle_1="for";r.Msg.robot_dog_servo_movement_distance_cycle_2="second";r.Msg.robot_dog_servo_movement_distance_still="Set the robot dog";r.Msg.robot_dog_servo_movement_distance_still_1="direction translation to";r.Msg.robot_dog_servo_movement_distance_still_2="(-128~127) cm";r.Msg.robot_dog_servo_movement_rotate_still="Set the robot dog around";r.Msg.robot_dog_servo_movement_rotate_still1="axis rotation to";r.Msg.robot_dog_servo_movement_rotate_still2="(-128~127)";r.Msg.robot_dog_servo_movement_distance_still_cycle="Set the robot dog to cycle";r.Msg.robot_dog_servo_movement_distance_still_cycle_1="s (1.5s~8s) translation to";r.Msg.robot_dog_servo_movement_distance_still_cycle_2="Bi-directional translation";r.Msg.robot_dog_servo_movement_rotate_still_cycle="s (1.5s~8s) around";r.Msg.robot_dog_servo_movement_rotate_still_cycle_1="axis rotation";r.Msg.robot_dog_servo_movement_distance_still_cycle_stop="Stop the cycle translation of the robot dog towards";r.Msg.robot_dog_servo_movement_rotate_still_cycle_stop="Stop the cycle of the robot dog around";r.Msg.robot_dog_get_rotate_angle="axis's angle";r.Msg.robot_dog_get_rotate_angle_1="Get gyro";r.Msg.uav_initialization="Uav initialization";r.Msg.numbers_for="Numbers for";r.Msg.uav_uav="UAV";r.Msg.uav_height="Height";r.Msg.uav_lock="Lock";r.Msg.uav_unlock="Unlock";r.Msg.uav_the_nose_direction="The nose direction";r.Msg.uav_landing="Landing";r.Msg.uav_brake="Brake";r.Msg.uav_hover="Hover";r.Msg.uav_scram="Scram";r.Msg.uav_calibration="Calibration";r.Msg.Take_off_altitude="Unmanned aerial vehicle at an altitude of";r.Msg.uav_switch="UAV,switch";r.Msg.uav_AI_switch="UAV,Switch to the AI";r.Msg.uav_fly_mode="Flight mode";r.Msg.uav_horizontal_velocity="UAV,Horizontal velocity";r.Msg.uav_speed_unit="cm/s";r.Msg.uav_vertical_speed="UAV,Vertical speed";r.Msg.uav_go_to="UAV,to";r.Msg.uav_patrol_flight="Patrol flight";r.Msg.uav_fly="Fly";r.Msg.uav_look_for_black_patches="Cm,looking for black patches";r.Msg.uav_look_for="Cm,Looking for";r.Msg.uav_the_label="No tags";r.Msg.uav_look_for_color_piece="Cm,Looking for color piece";r.Msg.uav_direct="UAV Direct";r.Msg.uav_rotating="UAV Rotating";r.Msg.uav_circle="Circle";r.Msg.uav_light_color="The lighting color is (";r.Msg.uav_off_led="UAV Shut the lights";r.Msg.uav_detection="UAV Detection";r.Msg.uav_black_spots="Black spots";r.Msg.uav_black_line="The black line";r.Msg.uav_black_label="The label";r.Msg.uav_code="Qr code";r.Msg.uav_bar_code="Bar code";r.Msg.uav_electromagnet="Electromagnet";r.Msg.uav_servo_ctrl="The steering gear of a drone";r.Msg.uav_role_ctrl="Drone orders";r.Msg.uav_continuous="Continuous";r.Msg.uav_laser="laser";r.Msg.uav_face_recognition="Face recognition";r.Msg.uav_object_tracking="Object tracking";r.Msg.uav_obj_recognition="Object recognition";r.Msg.uav_patrol_tracking="Patrol tracking";r.Msg.uav_color_recognition="Color recognition";r.Msg.uav_label_recognition="Label recognition";r.Msg.uav_object_classification="Object classification";r.Msg.uav_mode="Mode";r.Msg.uav_learing_ID="UAV,learning-once ID";r.Msg.uav_forget_data="Drones forget all learning data";r.Msg.uav_setup_ID="UAV setup ID";r.Msg.uav_name_is="Name for";r.Msg.uav_taking_pictures="Taking pictures";r.Msg.uav_screenshots="Screenshots";r.Msg.uav_save_SD="Save SD";r.Msg.optical_flow_localization="Optical flow localization";r.Msg.label_position="Label position";r.Msg.autonomous_patrol="Autonomous patrol";r.Msg.normally_on="Normally on";r.Msg.breathing_lamp="Breathing lamp";r.Msg.colour_change="Colour change";r.Msg.uav_detection_if="UAV Detected";r.Msg.uav_detection_color_block="Color block";r.Msg.uav_detection_if_line="Have Line";r.Msg.uav_get_distance_of_obstacles="UAV";r.Msg.uav_get_distance_of_obstacles_1="obstacles' distance";r.Msg.uav_roll_angle="Roll angle";r.Msg.uav_pitch_angle="Pitch angle";r.Msg.uav_yaw_angle="Yaw angle";r.Msg.uav_abscissa="Abscissa";r.Msg.uav_ordinate="Ordinate";r.Msg.uav_height="Height";r.Msg.uav_voltage="Voltage";r.Msg.uav_get_AI_value="AI recognition results";r.Msg.uav_get_electronic_balance_value="Electronic Balance Value";r.Msg.uav_get_shooting_value="Shooting";r.Msg.uav_get_shooting_value_0="Serial Number";r.Msg.uav_get_shooting_value_1="Result";r.Msg.uav_get_msg_value="News";r.Msg.uav_get_msg_value_0="content";r.Msg.esp32_expand_io_from_digital_pin="Get GPIO #";r.Msg.esp32_expand_io_set_digital_pin="Set the GPIO #";r.Msg.esp32_expand_io_set_analog_pin="Set GPIO #";r.Msg.esp32_expand_io_set_analog_pin_digital_set_as="PWM Output to";r.Msg.esp32_expand_io_set_analog_pin_digital_set_af="(0-255)";r.Msg.KUJU_title="Connect with KUJU";r.Msg.KUJU_username="Username";r.Msg.KUJU_password="Password";r.Msg.KUJU_controll_title="Send data to KUJU";r.Msg.KUJU_controll_content="Control Smart Plug";r.Msg.KUJU_controll_action_0="Off";r.Msg.KUJU_controll_action_1="On";r.Msg.KUJU_get_temperature_humidity_data_title="Get the Temperature sensor 's";r.Msg.KUJU_get_motion_data_title="Get the Motion sensor 's";r.Msg.basic_motion_data="Whether to move";r.Msg.basic_illumination_intensity="Illumination intensity";r.Msg.KUJU_get_sensor_data_title="Get";r.Msg.basic_water_sensor="Water Sensor";r.Msg.basic_door_sensor="Door Sensor";r.Msg.wifiServices_WeTech_title="Connect with WeTech";r.Msg.wifiServices_WeTech_username="Username";r.Msg.wifiServices_WeTech_password="Password";r.Msg.WeTech_controll_title="Send data to WeTech";r.Msg.WeTech_controll_content="Instructions";r.Msg.WeTech_controll_action_0="Off";r.Msg.WeTech_controll_action_1="On";r.Msg.WeTech_controll_action_2="Stop";r.Msg.wifiServices_WeTech_get_gateway_device_id_list_title="get the device Id of a specific gateway id";r.Msg.WIFIEASYMODE_WeTech_KEY4="device ID";r.Msg.WIFIEASYMODE_WeTech_KEY5="named ";r.Msg.WIFIEASYMODE_WeTech_KEY6="Controlled Three Way Lamp Surface System Id";r.Msg.WIFIEASYMODE_WeTech_KEY7="Gateway Id";r.Msg.WIFIEASYMODE_WeTech_KEY8="Controlled Second Way Lamp Surface System Id";r.Msg.WIFIEASYMODE_WeTech_KEY9="Controlled Curtain Sensor (for projector Screen) Id";r.Msg.WIFIEASYMODE_WeTech_KEY10="Controlled Air Conditioner Id";r.Msg.WIFIEASYMODE_WeTech_KEY11="Controlled TV IR (for TV and Projector) Id";r.Msg.WIFIEASYMODE_WeTech_KEY12="Mac Address";r.Msg.WeTech_controll_air_content="Mode";r.Msg.WeTech_controll_wind_speed_content="Wind Speed";r.Msg.WeTech_controll_temp_content="Temperature(16℃-30℃)";r.Msg.WeTech_controll_IR_content="Order(0-255)";r.Msg.WeTech_controll_power_meter="Get the value";r.Msg.WeTech_controll_power_meter_1="Power Meter Id";r.Msg.Wetech_controll_pm25_sensor="PM2.5 detector";r.Msg.Wetech_controll_CO2_sensor="CO2 detector";r.Msg.Wetech_controll_Temperature_sensor="Temperature detector";r.Msg.Wetech_controll_Humidity_sensor="Humidity detector";r.Msg.Wetech_controll_sensor_title=" Id";r.Msg.WeTech_controll_mode_0="Off";r.Msg.WeTech_controll_mode_1="Automatic";r.Msg.WeTech_controll_mode_2="Refrigeration";r.Msg.WeTech_controll_mode_3="Heating";r.Msg.WeTech_controll_mode_4="Emergency Heating";r.Msg.WeTech_controll_mode_5="Precooling";r.Msg.WeTech_controll_mode_6="Air Supply";r.Msg.WeTech_controll_mode_7="Arefaction";r.Msg.WeTech_controll_mode_8="Sleep";r.Msg.WeTech_controll_mode_9="Energy Conservation";r.Msg.WeTech_controll_mode_10="Low";r.Msg.WeTech_controll_mode_11="Medium";r.Msg.WeTech_controll_mode_12="High";r.Msg.WeTech_controll_mode_13="Automatic";r.Msg.iot_service_tuya_title="Connect with Tuya";r.Msg.iot_service_tuya_access_id="Access ID/Client ID";r.Msg.iot_service_tuya_access_secret="Access Secret/Client Secret";r.Msg.iot_service_tuya_setToken_text="When gets the access token by connecting tuya";r.Msg.iot_service_tuya_getDeviceList_text="Get device list";r.Msg.iot_service_tuya_controll_light_belt_title="Control intelligent light belt";r.Msg.iot_service_tuya_controll_light_belt_device_id="Device ID";r.Msg.iot_service_tuya_controll_light_belt_des="Status";r.Msg.iot_service_tuya_controll_light_belt_status_0="Off";r.Msg.iot_service_tuya_controll_light_belt_status_1="On";r.Msg.iot_service_tuya_controll_light_belt_status_2="Soft Light";r.Msg.iot_service_tuya_controll_light_belt_status_3="Fun mode";r.Msg.iot_service_tuya_controll_light_belt_status_4="Colorful mode";r.Msg.iot_service_tuya_controll_light_belt_status_5="Gorgeous mode";r.Msg.iot_service_tuya_controll_light_belt_status_6="Good night scene";r.Msg.iot_service_tuya_controll_light_belt_status_7="Reading scene";r.Msg.iot_service_tuya_controll_light_belt_status_8="Party scene";r.Msg.iot_service_tuya_controll_light_belt_status_9="Casual scene";r.Msg.iot_service_tuya_controll_light_belt_color_value_title="Control the intelligent light belt";r.Msg.iot_service_tuya_controll_light_belt_color_value_title1="Color to";r.Msg.TURTLE_CREATE_NE_TURTLE="create new turtle";r.Msg.TURTLE_MAKE_TURTLE_MOVE_FORWARD_BY="make turtle move forward by";r.Msg.TURTLE_MAKE_TURTLE_MOVE_BACKWARD_BY="make turtle move backward by";r.Msg.TURTLE_MAKE_TURN_LEFT_BY="make turtle turn left by";r.Msg.TURTLE_DEGREE="degree";r.Msg.TURTLE_MAKE_TURN_RIGHT_BY="make turtle turn right by";r.Msg.TURTLE_MAKE_TURRLE_COLOR="make turtle color";r.Msg.TURTLE_MAKE_TURRLE_PEN="make turtle pen";r.Msg.TURTLE_MAKE_TURTLE_GOTO_LOCATION_X="make turtle goto location X:";r.Msg.TURTLE_MAKE_TURTLE_SET_POSITION="Set the position of the turtle brush to X:";r.Msg.TURTLE_MAKE_SET_HEADING="Let the turtle spin to";r.Msg.TURTLE_RESET="Reset the position of the brush";r.Msg.TURTLE_CLEAR="Clear";r.Msg.TURTLE_PEN_UP="Up";r.Msg.TURTLE_PEN_DOWN="Down";r.Msg.SYSTEM="Restart System";r.Msg.SYSTEM_GC="Start memory reclaim";r.Msg.SYSTEM_RUN="Execute Python Code:";r.Msg.SYSTEM_RUN_F="Filename:";r.Msg.SYSTEM_CREATE="Create Text file";r.Msg.SYSTEM_CREATE_FILE="Create file";r.Msg.SYSTEM_CREATE_F="Filename:";r.Msg.SYSTEM_CREATE_F_1="File Path:";r.Msg.SYSTEM_WRITE="Create Text file";r.Msg.SYSTEM_OPEN_FILE="Open file";r.Msg.SYSTEM_WRITE_FILE="Write file";r.Msg.SYSTEM_CLOSE_FILE="Close file";r.Msg.SYSTEM_WRITE_F="Filename:";r.Msg.SYSTEM_WRITE_W="Write content:";r.Msg.SYSTEM_WRITE_S="The separator is:";r.Msg.SYSTEM_WRITE_S_N="newline";r.Msg.SYSTEM_WRITE_S_C="comma";r.Msg.SYSTEM_WRITE_S_S="space";r.Msg.SYSTEM_WRITE_S_SE="semicolon";r.Msg.SYSTEM_INPUT="Read Text File as List";r.Msg.SYSTEM_INPUT_FILE="Read File as List";r.Msg.Text_to_speech_initialization="Online text-to-speech initialization";r.Msg.Content_of_text="Content of text";r.Msg.text_conversion_voice="Content of text";r.Msg.Voice_path="Audio file saving path";r.Msg.online_face_result="Number of online face detection";r.Msg.online_face_loading="Online face detection model loading";r.Msg.online_face_init="Initialization of online face detection";r.Msg.online_face_init_path="Detecting picture path";r.Msg.online_voice_result="Online speech recognition results";r.Msg.online_voice_loading="Load online speech recognition";r.Msg.online_voice_init="Online speech recognition initialization";r.Msg.online_voice_init_path="Recognizing speech paths";r.Msg.read_img_path_to="Read the picture file from";r.Msg.take_the_picture="will picture ";r.Msg.machine_translation_result="Online machine translation result ";r.Msg.machine_translation_load="Online machine translation load ";r.Msg.machine_translation_init="Machine translation initialization ";r.Msg.machine_translation_to="Translate to";r.Msg.online_card_result="Online License plate recognition Result ";r.Msg.online_card_load="Online License plate recognition load ";r.Msg.online_card_init="Initializing online License Plate Recognition ";r.Msg.online_object_init="Online object recognition initialization ";r.Msg.online_object_load="Online object recognition load ";r.Msg.online_object_result="Online object recognition result ";r.Msg.handwritten_text_result="Online handwritten character recognition result ";r.Msg.handwritten_text_load="Online handwritten text recognition load ";r.Msg.handwritten_text_init="handwritten text recognition initialization ";r.Msg.handwritten_text_language_init="Set identification language";r.Msg.system_voice="Setting the system volume";r.Msg.gesture_result="Gesture recognition result ";r.Msg.gesture_load="Gesture recognition load ";r.Msg.gesture_init="Gesture recognition initialization ";r.Msg.emotion_result="emotion recognition result ";r.Msg.emotion_load="Emotional recognition load ";r.Msg.emotion_init="Emotion recognition initialization ";r.Msg.set_dictionary="Set dictionary";r.Msg.dictionary_contain="Dictionary contains()age、emotion、gender、expression)";r.Msg.emotion_result_age="Age ";r.Msg.emotion_result_emotion="Emotion ";r.Msg.emotion_result_gender="Gender ";r.Msg.emotion_result_expression="Expression ";r.Msg.formula_result="Formula recognition result ";r.Msg.formula_load="Formula recognition load ";r.Msg.formula_init="formula recognition initialization ";r.Msg.numpy_mnist_get_result="Get recognition results";r.Msg.numpy_mnist_loading_model="Load saved model";r.Msg.numpy_mnist_setting_training_argument="Set training parameters";r.Msg.numpy_mnist_input_trait_dimensionality="Dimensions of input features:";r.Msg.numpy_mnist_setting_training_argument_number_node="Number of nodes:";r.Msg.numpy_mnist_output_dimensionality="Output dimensions:";r.Msg.numpy_mnist_setting_training_argument_learning_rate="Learning rate:";r.Msg.numpy_mnist_setting_training_argument_frequency="Training times:";r.Msg.numpy_mnist_is_training_start="Determine whether the training module is started";r.Msg.numpy_mnist_loading_train_and_test_set="Load training set and test set";r.Msg.numpy_mnist_train_set_url="Training set path:";r.Msg.numpy_mnist_test_set_url="Test Path";r.Msg.numpy_mnist_model_init="Numpy + mnist Training model initialization";r.Msg.numpy_mnist_clear="Clear numpy module";r.Msg;const Q6={xml:`<xml style="height: 100%">
- <category id="Logic" name="Logic" categorystyle="logic_category" colour="">
- <block type="controls_if"></block>
- <block type="logic_compare"></block>
- <block type="logic_operation"></block>
- <block type="logic_negate"></block>
- <block type="logic_boolean"></block>
- <block type="logic_null" disabled="true"></block>
- <block type="logic_ternary"></block>
- <block type="CocoRobo_return"></block>
- <block type="CocoRobo_try_except"></block>
- <block type="CocoRobo_try_except_finally"></block>
- <block type="CocoRobo_type"></block>
- <block type="CocoRobo_type_is"></block>
- <block type="CocoRobo_eval"></block>
- </category>
- <category id="catLoops" name="Loops" colour="#9d64fd">
- <block type="controls_repeat_forever"></block>
- <block type="controls_repeat_ext">
- <value name="TIMES">
- <shadow type="math_number">
- <field name="NUM">10</field>
- </shadow>
- </value>
- </block>
- <block type="controls_whileUntil"></block>
- <block type="controls_for">
- <value name="FROM">
- <shadow type="math_number">
- <field name="NUM">1</field>
- </shadow>
- </value>
- <value name="TO">
- <shadow type="math_number">
- <field name="NUM">10</field>
- </shadow>
- </value>
- <value name="BY">
- <shadow type="math_number">
- <field name="NUM">1</field>
- </shadow>
- </value>
- </block>
- <block type="controls_forEach"></block>
- <block type="controls_flow_statements"></block>
- </category>
- <category id="catMath" name="Math" colour="#5472ea">
- <block type="math_number" gap="32"></block>
- <block type="math_arithmetic">
- <value name="A">
- <shadow type="math_number">
- <field name="NUM">1</field>
- </shadow>
- </value>
- <value name="B">
- <shadow type="math_number">
- <field name="NUM">1</field>
- </shadow>
- </value>
- </block>
- <block type="math_degrad"></block>
- <block type="math_single">
- <value name="NUM">
- <shadow type="math_number">
- <field name="NUM">9</field>
- </shadow>
- </value>
- </block>
- <block type="math_trig">
- <value name="NUM">
- <shadow type="math_angle">
- <field name="angle">45</field>
- </shadow>
- </value>
- </block>
- <!--block type="math_trig">
- <value name="NUM">
- <shadow type="math_number">
- <field name="NUM">45</field>
- </shadow>
- </value>
- </block-->
- <block type="math_constant"></block>
- <block type="math_number_property">
- <value name="NUMBER_TO_CHECK">
- <shadow type="math_number">
- <field name="NUM">0</field>
- </shadow>
- </value>
- </block>
- <block type="math_round">
- <value name="NUM">
- <shadow type="math_number">
- <field name="NUM">3.1</field>
- </shadow>
- </value>
- </block>
- <block type="math_keep_decimal">
- <value name="NUM">
- <shadow type="math_number">
- <field name="NUM">3.1415926</field>
- </shadow>
- </value>
- <value name="PLACE">
- <shadow type="math_number">
- <field name="NUM">2</field>
- </shadow>
- </value>
- </block>
- <block type="math_on_list"></block>
- <block type="math_modulo">
- <value name="DIVIDEND">
- <shadow type="math_number">
- <field name="NUM">64</field>
- </shadow>
- </value>
- <value name="DIVISOR">
- <shadow type="math_number">
- <field name="NUM">10</field>
- </shadow>
- </value>
- </block>
- <block type="math_division_consult">
- <value name="DIVIDEND">
- <shadow type="math_number">
- <field name="NUM">64</field>
- </shadow>
- </value>
- <value name="DIVISOR">
- <shadow type="math_number">
- <field name="NUM">10</field>
- </shadow>
- </value>
- </block>
- <block type="math_constrain">
- <value name="VALUE">
- <shadow type="math_number">
- <field name="NUM">50</field>
- </shadow>
- </value>
- <value name="LOW">
- <shadow type="math_number">
- <field name="NUM">1</field>
- </shadow>
- </value>
- <value name="HIGH">
- <shadow type="math_number">
- <field name="NUM">100</field>
- </shadow>
- </value>
- </block>
- <block type="labplus_mapping">
- <value name="inputNum"><shadow type="math_number"><field name="NUM">10</field></shadow></value>
- <value name="bMin"><shadow type="math_number"><field name="NUM">0</field></shadow></value>
- <value name="bMax"><shadow type="math_number"><field name="NUM">100</field></shadow></value>
- <value name="cMin"><shadow type="math_number"><field name="NUM">0</field></shadow></value>
- <value name="cMax"><shadow type="math_number"><field name="NUM">200</field></shadow></value>
- </block>
- <block type="math_random_int">
- <value name="FROM">
- <shadow type="math_number">
- <field name="NUM">1</field>
- </shadow>
- </value>
- <value name="TO">
- <shadow type="math_number">
- <field name="NUM">100</field>
- </shadow>
- </value>
- </block>
- <block type="math_random_randrange">
- <value name="start"><shadow type="math_number"><field name="NUM">0</field></shadow></value>
- <value name="stop"><shadow type="math_number"><field name="NUM">10</field></shadow></value>
- <value name="step"><shadow type="math_number"><field name="NUM">2</field></shadow></value>
- </block>
- <block type="math_random_float"></block>
- <block type="math_convert"></block>
- <block type="math_number_bits_ops">
- <value name="A">
- <shadow type="math_number">
- <field name="NUM">1</field>
- </shadow>
- </value>
- <value name="B">
- <shadow type="math_number">
- <field name="NUM">1</field>
- </shadow>
- </value>
- </block>
- <block type="bit_inversion">
- <value name="data"><shadow type="math_number"><field name="NUM">60</field></shadow></value>
- </block>
- <block type="CocoRobo_ten_convert_to">
- <value name="int_num"><shadow type="math_number"><field name="NUM">10</field></shadow></value>
- </block>
- <block type="CocoRobo_convert_to_ten">
- <value name="convert_str"><shadow type="text"><field name="TEXT">11</field></shadow></value>
- </block>
- <block type="CocoRobo_ten_converted_to_bytes">
- <value name="convert_num"><shadow type="math_number"><field name="NUM">11</field></shadow></value>
- </block>
- <block type="CocoRobo_int_to_chr">
- <value name="convert_num"><shadow type="math_number"><field name="NUM">97</field></shadow></value>
- </block>
- <block type="CocoRobo_chr_to_int">
- <value name="convert_chr"><shadow type="text"><field name="TEXT">a</field></shadow></value>
- </block>
- <block type="CocoRobo_str_to_hex">
- <value name="convert_chr"><shadow type="text"><field name="TEXT">abcdfg</field></shadow></value>
- </block>
- <block type="CocoRobo_hex_to_bin_str">
- <value name="convert_chr"><shadow type="text"><field name="TEXT">313233</field></shadow></value>
- </block>
- <block type="CocoRobo_data_to_base64">
- <value name="data"><shadow type="text"><field name="TEXT">cocorobo</field></shadow></value>
- </block>
- <block type="CocoRobo_base64_to_data">
- <value name="data"><shadow type="text"><field name="TEXT">bXB5dGhvbg==</field></shadow></value>
- </block>
- </category>
- </xml>`};var f2={exports:{}},rC={exports:{}},eB;function J6(){return eB||(eB=1,function(t,e){(function(o,_){t.exports=_(aS())})(Is,function(o){var _=o.__namespace__,l=function(q,ue){return[ue.quote_(q.getFieldValue("COLOUR")),z.ATOMIC]},c=function(q,ue){return ue.definitions_.import_random="import random",["'#%06x' % random.randint(0, 2**24 - 1)",z.FUNCTION_CALL]},T=function(q,ue){const D=ue.provideFunction_("colour_rgb",`
- def ${ue.FUNCTION_NAME_PLACEHOLDER_}(r, g, b):
- r = round(min(100, max(0, r)) * 2.55)
- g = round(min(100, max(0, g)) * 2.55)
- b = round(min(100, max(0, b)) * 2.55)
- return '#%02x%02x%02x' % (r, g, b)
- `),Z=ue.valueToCode(q,"RED",z.NONE)||0,he=ue.valueToCode(q,"GREEN",z.NONE)||0;return q=ue.valueToCode(q,"BLUE",z.NONE)||0,[D+"("+Z+", "+he+", "+q+")",z.FUNCTION_CALL]},E=function(q,ue){const D=ue.provideFunction_("colour_blend",`
- def ${ue.FUNCTION_NAME_PLACEHOLDER_}(colour1, colour2, ratio):
- r1, r2 = int(colour1[1:3], 16), int(colour2[1:3], 16)
- g1, g2 = int(colour1[3:5], 16), int(colour2[3:5], 16)
- b1, b2 = int(colour1[5:7], 16), int(colour2[5:7], 16)
- ratio = min(1, max(0, ratio))
- r = round(r1 * (1 - ratio) + r2 * ratio)
- g = round(g1 * (1 - ratio) + g2 * ratio)
- b = round(b1 * (1 - ratio) + b2 * ratio)
- return '#%02x%02x%02x' % (r, g, b)
- `),Z=ue.valueToCode(q,"COLOUR1",z.NONE)||"'#000000'",he=ue.valueToCode(q,"COLOUR2",z.NONE)||"'#000000'";return q=ue.valueToCode(q,"RATIO",z.NONE)||0,[D+"("+Z+", "+he+", "+q+")",z.FUNCTION_CALL]},u=function(q,ue){return["[]",z.ATOMIC]},d=function(q,ue){const D=Array(q.itemCount_);for(let Z=0;Z<q.itemCount_;Z++)D[Z]=ue.valueToCode(q,"ADD"+Z,z.NONE)||"None";return["["+D.join(", ")+"]",z.ATOMIC]},O=function(q,ue){const D=ue.valueToCode(q,"ITEM",z.NONE)||"None";return q=ue.valueToCode(q,"NUM",z.MULTIPLICATIVE)||"0",["["+D+"] * "+q,z.MULTIPLICATIVE]},h=function(q,ue){return["len("+(ue.valueToCode(q,"VALUE",z.NONE)||"[]")+")",z.FUNCTION_CALL]},I=function(q,ue){return["not len("+(ue.valueToCode(q,"VALUE",z.NONE)||"[]")+")",z.LOGICAL_NOT]},S=function(q,ue){const D=ue.valueToCode(q,"FIND",z.NONE)||"[]",Z=ue.valueToCode(q,"VALUE",z.NONE)||"''";let he=" -1",ce="",Ge=" - 1";return q.workspace.options.oneBasedIndex&&(he=" 0",ce=" + 1",Ge=""),[(q.getFieldValue("END")==="FIRST"?ue.provideFunction_("first_index",`
- def ${ue.FUNCTION_NAME_PLACEHOLDER_}(my_list, elem):
- try: index = my_list.index(elem)${ce}
- except: index =${he}
- return index
- `):ue.provideFunction_("last_index",`
- def ${ue.FUNCTION_NAME_PLACEHOLDER_}(my_list, elem):
- try: index = len(my_list) - my_list[::-1].index(elem)${Ge}
- except: index =${he}
- return index
- `))+"("+Z+", "+D+")",z.FUNCTION_CALL]},L=function(q,ue){const D=q.getFieldValue("MODE")||"GET",Z=q.getFieldValue("WHERE")||"FROM_START";var he=ue.valueToCode(q,"VALUE",Z==="RANDOM"?z.NONE:z.MEMBER)||"[]";switch(Z){case"FIRST":if(D==="GET")return[he+"[0]",z.MEMBER];if(D==="GET_REMOVE")return[he+".pop(0)",z.FUNCTION_CALL];if(D==="REMOVE")return he+`.pop(0)
- `;break;case"LAST":if(D==="GET")return[he+"[-1]",z.MEMBER];if(D==="GET_REMOVE")return[he+".pop()",z.FUNCTION_CALL];if(D==="REMOVE")return he+`.pop()
- `;break;case"FROM_START":if(q=ue.getAdjustedInt(q,"AT"),D==="GET")return[he+"["+q+"]",z.MEMBER];if(D==="GET_REMOVE")return[he+".pop("+q+")",z.FUNCTION_CALL];if(D==="REMOVE")return he+".pop("+q+`)
- `;break;case"FROM_END":if(q=ue.getAdjustedInt(q,"AT",1,!0),D==="GET")return[he+"["+q+"]",z.MEMBER];if(D==="GET_REMOVE")return[he+".pop("+q+")",z.FUNCTION_CALL];if(D==="REMOVE")return he+".pop("+q+`)
- `;break;case"RANDOM":if(ue.definitions_.import_random="import random",D==="GET")return["random.choice("+he+")",z.FUNCTION_CALL];if(he=ue.provideFunction_("lists_remove_random_item",`
- def ${ue.FUNCTION_NAME_PLACEHOLDER_}(myList):
- x = int(random.random() * len(myList))
- return myList.pop(x)
- `)+"("+he+")",D==="GET_REMOVE")return[he,z.FUNCTION_CALL];if(D==="REMOVE")return he+`
- `}throw Error("Unhandled combination (lists_getIndex).")},p=function(q,ue){let D=ue.valueToCode(q,"LIST",z.MEMBER)||"[]";const Z=q.getFieldValue("MODE")||"GET";var he=q.getFieldValue("WHERE")||"FROM_START";const ce=ue.valueToCode(q,"TO",z.NONE)||"None";switch(he){case"FIRST":if(Z==="SET")return D+"[0] = "+ce+`
- `;if(Z==="INSERT")return D+".insert(0, "+ce+`)
- `;break;case"LAST":if(Z==="SET")return D+"[-1] = "+ce+`
- `;if(Z==="INSERT")return D+".append("+ce+`)
- `;break;case"FROM_START":if(ue=ue.getAdjustedInt(q,"AT"),Z==="SET")return D+"["+ue+"] = "+ce+`
- `;if(Z==="INSERT")return D+".insert("+ue+", "+ce+`)
- `;break;case"FROM_END":if(ue=ue.getAdjustedInt(q,"AT",1,!0),Z==="SET")return D+"["+ue+"] = "+ce+`
- `;if(Z==="INSERT")return D+".insert("+ue+", "+ce+`)
- `;break;case"RANDOM":if(ue.definitions_.import_random="import random",D.match(/^\w+$/)?q="":(q=ue.nameDB_.getDistinctName("tmp_list",_.NameType$$module$build$src$core$names.VARIABLE),he=q+" = "+D+`
- `,D=q,q=he),ue=ue.nameDB_.getDistinctName("tmp_x",_.NameType$$module$build$src$core$names.VARIABLE),q+=ue+" = int(random.random() * len("+D+`))
- `,Z==="SET")return q+(D+"["+ue+"] = "+ce+`
- `);if(Z==="INSERT")return q+(D+".insert("+ue+", "+ce+`)
- `)}throw Error("Unhandled combination (lists_setIndex).")},C=function(q,ue){const D=ue.valueToCode(q,"LIST",z.MEMBER)||"[]";var Z=q.getFieldValue("WHERE1");const he=q.getFieldValue("WHERE2");switch(Z){case"FROM_START":Z=ue.getAdjustedInt(q,"AT1"),Z===0&&(Z="");break;case"FROM_END":Z=ue.getAdjustedInt(q,"AT1",1,!0);break;case"FIRST":Z="";break;default:throw Error("Unhandled option (lists_getSublist)")}switch(he){case"FROM_START":q=ue.getAdjustedInt(q,"AT2",1);break;case"FROM_END":q=ue.getAdjustedInt(q,"AT2",0,!0),_.isNumber$$module$build$src$core$utils$string(String(q))?q===0&&(q=""):(ue.definitions_.import_sys="import sys",q+=" or sys.maxsize");break;case"LAST":q="";break;default:throw Error("Unhandled option (lists_getSublist)")}return[D+"["+Z+" : "+q+"]",z.MEMBER]},m=function(q,ue){const D=ue.valueToCode(q,"LIST",z.NONE)||"[]",Z=q.getFieldValue("TYPE");return q=q.getFieldValue("DIRECTION")==="1"?"False":"True",[ue.provideFunction_("lists_sort",`
- def ${ue.FUNCTION_NAME_PLACEHOLDER_}(my_list, type, reverse):
- def try_float(s):
- try:
- return float(s)
- except:
- return 0
- key_funcs = {
- "NUMERIC": try_float,
- "TEXT": str,
- "IGNORE_CASE": lambda s: str(s).lower()
- }
- key_func = key_funcs[type]
- list_cpy = list(my_list)
- return sorted(list_cpy, key=key_func, reverse=reverse)
- `)+"("+D+', "'+Z+'", '+q+")",z.FUNCTION_CALL]},A=function(q,ue){var D=q.getFieldValue("MODE");if(D==="SPLIT")D=ue.valueToCode(q,"INPUT",z.MEMBER)||"''",q=ue.valueToCode(q,"DELIM",z.NONE),q=D+".split("+q+")";else if(D==="JOIN")D=ue.valueToCode(q,"INPUT",z.NONE)||"[]",q=(ue.valueToCode(q,"DELIM",z.MEMBER)||"''")+".join("+D+")";else throw Error("Unknown mode: "+D);return[q,z.FUNCTION_CALL]},b=function(q,ue){return["list(reversed("+(ue.valueToCode(q,"LIST",z.NONE)||"[]")+"))",z.FUNCTION_CALL]},N=function(q,ue){let D=0,Z="",he,ce;ue.STATEMENT_PREFIX&&(Z+=ue.injectId(ue.STATEMENT_PREFIX,q));do ce=ue.valueToCode(q,"IF"+D,z.NONE)||"False",he=ue.statementToCode(q,"DO"+D)||ue.PASS,ue.STATEMENT_SUFFIX&&(he=ue.prefixLines(ue.injectId(ue.STATEMENT_SUFFIX,q),ue.INDENT)+he),Z+=(D===0?"if ":"elif ")+ce+`:
- `+he,D++;while(q.getInput("IF"+D));return(q.getInput("ELSE")||ue.STATEMENT_SUFFIX)&&(he=ue.statementToCode(q,"ELSE")||ue.PASS,ue.STATEMENT_SUFFIX&&(he=ue.prefixLines(ue.injectId(ue.STATEMENT_SUFFIX,q),ue.INDENT)+he),Z+=`else:
- `+he),Z},U=function(q,ue){const D={EQ:"==",NEQ:"!=",LT:"<",LTE:"<=",GT:">",GTE:">="}[q.getFieldValue("OP")],Z=z.RELATIONAL,he=ue.valueToCode(q,"A",Z)||"0";return q=ue.valueToCode(q,"B",Z)||"0",[he+" "+D+" "+q,Z]},P=function(q,ue){const D=q.getFieldValue("OP")==="AND"?"and":"or",Z=D==="and"?z.LOGICAL_AND:z.LOGICAL_OR;let he=ue.valueToCode(q,"A",Z);return q=ue.valueToCode(q,"B",Z),he||q?(ue=D==="and"?"True":"False",he||(he=ue),q||(q=ue)):q=he="False",[he+" "+D+" "+q,Z]},G=function(q,ue){return["not "+(ue.valueToCode(q,"BOOL",z.LOGICAL_NOT)||"True"),z.LOGICAL_NOT]},w=function(q,ue){return[q.getFieldValue("BOOL")==="TRUE"?"True":"False",z.ATOMIC]},F=function(q,ue){return["None",z.ATOMIC]},V=function(q,ue){const D=ue.valueToCode(q,"IF",z.CONDITIONAL)||"False",Z=ue.valueToCode(q,"THEN",z.CONDITIONAL)||"None";return q=ue.valueToCode(q,"ELSE",z.CONDITIONAL)||"None",[Z+" if "+D+" else "+q,z.CONDITIONAL]},W=function(q,ue){let D;D=q.getField("TIMES")?String(parseInt(q.getFieldValue("TIMES"),10)):ue.valueToCode(q,"TIMES",z.NONE)||"0",D=_.isNumber$$module$build$src$core$utils$string(D)?parseInt(D,10):"int("+D+")";let Z=ue.statementToCode(q,"DO");return Z=ue.addLoopTrap(Z,q)||ue.PASS,"for "+ue.nameDB_.getDistinctName("count",_.NameType$$module$build$src$core$names.VARIABLE)+" in range("+D+`):
- `+Z},K=function(q,ue){const D=q.getFieldValue("MODE")==="UNTIL";let Z=ue.valueToCode(q,"BOOL",D?z.LOGICAL_NOT:z.NONE)||"False",he=ue.statementToCode(q,"DO");return he=ue.addLoopTrap(he,q)||ue.PASS,D&&(Z="not "+Z),"while "+Z+`:
- `+he},ee=function(q,ue){const D=ue.getVariableName(q.getFieldValue("VAR"));var Z=ue.valueToCode(q,"FROM",z.NONE)||"0",he=ue.valueToCode(q,"TO",z.NONE)||"0",ce=ue.valueToCode(q,"BY",z.NONE)||"1";let Ge=ue.statementToCode(q,"DO");Ge=ue.addLoopTrap(Ge,q)||ue.PASS;let It="";q=function(){return ue.provideFunction_("upRange",`
- def ${ue.FUNCTION_NAME_PLACEHOLDER_}(start, stop, step):
- while start <= stop:
- yield start
- start += abs(step)
- `)};const bt=function(){return ue.provideFunction_("downRange",`
- def ${ue.FUNCTION_NAME_PLACEHOLDER_}(start, stop, step):
- while start >= stop:
- yield start
- start -= abs(step)
- `)};if(_.isNumber$$module$build$src$core$utils$string(Z)&&_.isNumber$$module$build$src$core$utils$string(he)&&_.isNumber$$module$build$src$core$utils$string(ce))Z=Number(Z),he=Number(he),ce=Math.abs(Number(ce)),Z%1===0&&he%1===0&&ce%1===0?(Z<=he?(he++,q=Z===0&&ce===1?he:Z+", "+he,ce!==1&&(q+=", "+ce)):(he--,q=Z+", "+he+", -"+ce),q="range("+q+")"):(q=Z<he?q():bt(),q+="("+Z+", "+he+", "+ce+")");else{const wo=function(Wo,ps){return _.isNumber$$module$build$src$core$utils$string(Wo)?Wo=String(Number(Wo)):Wo.match(/^\w+$/)||(ps=ue.nameDB_.getDistinctName(D+ps,_.NameType$$module$build$src$core$names.VARIABLE),It+=ps+" = "+Wo+`
- `,Wo=ps),Wo};Z=wo(Z,"_start"),he=wo(he,"_end"),ce=wo(ce,"_inc"),typeof Z=="number"&&typeof he=="number"?(q=Z<he?q():bt(),q+="("+Z+", "+he+", "+ce+")"):q="("+Z+" <= "+he+") and "+q()+"("+Z+", "+he+", "+ce+") or "+bt()+"("+Z+", "+he+", "+ce+")"}return It+="for "+D+" in "+q+`:
- `+Ge},j=function(q,ue){const D=ue.getVariableName(q.getFieldValue("VAR")),Z=ue.valueToCode(q,"LIST",z.RELATIONAL)||"[]";let he=ue.statementToCode(q,"DO");return he=ue.addLoopTrap(he,q)||ue.PASS,"for "+D+" in "+Z+`:
- `+he},J=function(q,ue){let D="";if(ue.STATEMENT_PREFIX&&(D+=ue.injectId(ue.STATEMENT_PREFIX,q)),ue.STATEMENT_SUFFIX&&(D+=ue.injectId(ue.STATEMENT_SUFFIX,q)),ue.STATEMENT_PREFIX){const Z=q.getSurroundLoop();Z&&!Z.suppressPrefixSuffix&&(D+=ue.injectId(ue.STATEMENT_PREFIX,Z))}switch(q.getFieldValue("FLOW")){case"BREAK":return D+`break
- `;case"CONTINUE":return D+`continue
- `}throw Error("Unknown flow statement.")},ie=function(q,ue){return q=Number(q.getFieldValue("NUM")),q===1/0?['float("inf")',z.FUNCTION_CALL]:q===-1/0?['-float("inf")',z.UNARY_SIGN]:[String(q),0>q?z.UNARY_SIGN:z.ATOMIC]},Y=function(q,ue){var D={ADD:[" + ",z.ADDITIVE],MINUS:[" - ",z.ADDITIVE],MULTIPLY:[" * ",z.MULTIPLICATIVE],DIVIDE:[" / ",z.MULTIPLICATIVE],POWER:[" ** ",z.EXPONENTIATION]}[q.getFieldValue("OP")];const Z=D[0];D=D[1];const he=ue.valueToCode(q,"A",D)||"0";return q=ue.valueToCode(q,"B",D)||"0",[he+Z+q,D]},re=function(q,ue){const D=q.getFieldValue("OP");let Z;if(D==="NEG")return Z=ue.valueToCode(q,"NUM",z.UNARY_SIGN)||"0",["-"+Z,z.UNARY_SIGN];switch(ue.definitions_.import_math="import math",q=D==="SIN"||D==="COS"||D==="TAN"?ue.valueToCode(q,"NUM",z.MULTIPLICATIVE)||"0":ue.valueToCode(q,"NUM",z.NONE)||"0",D){case"ABS":Z="math.fabs("+q+")";break;case"ROOT":Z="math.sqrt("+q+")";break;case"LN":Z="math.log("+q+")";break;case"LOG10":Z="math.log10("+q+")";break;case"EXP":Z="math.exp("+q+")";break;case"POW10":Z="math.pow(10,"+q+")";break;case"ROUND":Z="round("+q+")";break;case"ROUNDUP":Z="math.ceil("+q+")";break;case"ROUNDDOWN":Z="math.floor("+q+")";break;case"SIN":Z="math.sin("+q+" / 180.0 * math.pi)";break;case"COS":Z="math.cos("+q+" / 180.0 * math.pi)";break;case"TAN":Z="math.tan("+q+" / 180.0 * math.pi)"}if(Z)return[Z,z.FUNCTION_CALL];switch(D){case"ASIN":Z="math.asin("+q+") / math.pi * 180";break;case"ACOS":Z="math.acos("+q+") / math.pi * 180";break;case"ATAN":Z="math.atan("+q+") / math.pi * 180";break;default:throw Error("Unknown math operator: "+D)}return[Z,z.MULTIPLICATIVE]},H=function(q,ue){const D={PI:["math.pi",z.MEMBER],E:["math.e",z.MEMBER],GOLDEN_RATIO:["(1 + math.sqrt(5)) / 2",z.MULTIPLICATIVE],SQRT2:["math.sqrt(2)",z.MEMBER],SQRT1_2:["math.sqrt(1.0 / 2)",z.MEMBER],INFINITY:["float('inf')",z.ATOMIC]};return q=q.getFieldValue("CONSTANT"),q!=="INFINITY"&&(ue.definitions_.import_math="import math"),D[q]},Q=function(q,ue){var D={EVEN:[" % 2 == 0",z.MULTIPLICATIVE,z.RELATIONAL],ODD:[" % 2 == 1",z.MULTIPLICATIVE,z.RELATIONAL],WHOLE:[" % 1 == 0",z.MULTIPLICATIVE,z.RELATIONAL],POSITIVE:[" > 0",z.RELATIONAL,z.RELATIONAL],NEGATIVE:[" < 0",z.RELATIONAL,z.RELATIONAL],DIVISIBLE_BY:[null,z.MULTIPLICATIVE,z.RELATIONAL],PRIME:[null,z.NONE,z.FUNCTION_CALL]};const Z=q.getFieldValue("PROPERTY"),[he,ce,Ge]=D[Z];if(D=ue.valueToCode(q,"NUMBER_TO_CHECK",ce)||"0",Z==="PRIME")ue.definitions_.import_math="import math",ue.definitions_.from_numbers_import_Number="from numbers import Number",q=ue.provideFunction_("math_isPrime",`
- def ${ue.FUNCTION_NAME_PLACEHOLDER_}(n):
- # https://en.wikipedia.org/wiki/Primality_test#Naive_methods
- # If n is not a number but a string, try parsing it.
- if not isinstance(n, Number):
- try:
- n = float(n)
- except:
- return False
- if n == 2 or n == 3:
- return True
- # False if n is negative, is 1, or not whole, or if n is divisible by 2 or 3.
- if n <= 1 or n % 1 != 0 or n % 2 == 0 or n % 3 == 0:
- return False
- # Check all the numbers of form 6k +/- 1, up to sqrt(n).
- for x in range(6, int(math.sqrt(n)) + 2, 6):
- if n % (x - 1) == 0 or n % (x + 1) == 0:
- return False
- return True
- `)+"("+D+")";else if(Z==="DIVISIBLE_BY"){if(q=ue.valueToCode(q,"DIVISOR",z.MULTIPLICATIVE)||"0",q==="0")return["False",z.ATOMIC];q=D+" % "+q+" == 0"}else q=D+he;return[q,Ge]},ae=function(q,ue){ue.definitions_.from_numbers_import_Number="from numbers import Number";const D=ue.valueToCode(q,"DELTA",z.ADDITIVE)||"0";return q=ue.getVariableName(q.getFieldValue("VAR")),q+" = ("+q+" if isinstance("+q+", Number) else 0) + "+D+`
- `},ge=function(q,ue){const D=q.getFieldValue("OP");switch(q=ue.valueToCode(q,"LIST",z.NONE)||"[]",D){case"SUM":ue="sum("+q+")";break;case"MIN":ue="min("+q+")";break;case"MAX":ue="max("+q+")";break;case"AVERAGE":ue.definitions_.from_numbers_import_Number="from numbers import Number",ue=ue.provideFunction_("math_mean",`
- def ${ue.FUNCTION_NAME_PLACEHOLDER_}(myList):
- localList = [e for e in myList if isinstance(e, Number)]
- if not localList: return
- return float(sum(localList)) / len(localList)
- `)+"("+q+")";break;case"MEDIAN":ue.definitions_.from_numbers_import_Number="from numbers import Number",ue=ue.provideFunction_("math_median",`
- def ${ue.FUNCTION_NAME_PLACEHOLDER_}(myList):
- localList = sorted([e for e in myList if isinstance(e, Number)])
- if not localList: return
- if len(localList) % 2 == 0:
- return (localList[len(localList) // 2 - 1] + localList[len(localList) // 2]) / 2.0
- else:
- return localList[(len(localList) - 1) // 2]
- `)+"("+q+")";break;case"MODE":ue=ue.provideFunction_("math_modes",`
- def ${ue.FUNCTION_NAME_PLACEHOLDER_}(some_list):
- modes = []
- # Using a lists of [item, count] to keep count rather than dict
- # to avoid "unhashable" errors when the counted item is itself a list or dict.
- counts = []
- maxCount = 1
- for item in some_list:
- found = False
- for count in counts:
- if count[0] == item:
- count[1] += 1
- maxCount = max(maxCount, count[1])
- found = True
- if not found:
- counts.append([item, 1])
- for counted_item, item_count in counts:
- if item_count == maxCount:
- modes.append(counted_item)
- return modes
- `)+"("+q+")";break;case"STD_DEV":ue.definitions_.import_math="import math",ue=ue.provideFunction_("math_standard_deviation",`
- def ${ue.FUNCTION_NAME_PLACEHOLDER_}(numbers):
- n = len(numbers)
- if n == 0: return
- mean = float(sum(numbers)) / n
- variance = sum((x - mean) ** 2 for x in numbers) / n
- return math.sqrt(variance)
- `)+"("+q+")";break;case"RANDOM":ue.definitions_.import_random="import random",ue="random.choice("+q+")";break;default:throw Error("Unknown operator: "+D)}return[ue,z.FUNCTION_CALL]},Se=function(q,ue){const D=ue.valueToCode(q,"DIVIDEND",z.MULTIPLICATIVE)||"0";return q=ue.valueToCode(q,"DIVISOR",z.MULTIPLICATIVE)||"0",[D+" % "+q,z.MULTIPLICATIVE]},pe=function(q,ue){const D=ue.valueToCode(q,"VALUE",z.NONE)||"0",Z=ue.valueToCode(q,"LOW",z.NONE)||"0";return q=ue.valueToCode(q,"HIGH",z.NONE)||"float('inf')",["min(max("+D+", "+Z+"), "+q+")",z.FUNCTION_CALL]},We=function(q,ue){ue.definitions_.import_random="import random";const D=ue.valueToCode(q,"FROM",z.NONE)||"0";return q=ue.valueToCode(q,"TO",z.NONE)||"0",["random.randint("+D+", "+q+")",z.FUNCTION_CALL]},be=function(q,ue){return ue.definitions_.import_random="import random",["random.random()",z.FUNCTION_CALL]},Me=function(q,ue){ue.definitions_.import_math="import math";const D=ue.valueToCode(q,"X",z.NONE)||"0";return["math.atan2("+(ue.valueToCode(q,"Y",z.NONE)||"0")+", "+D+") / math.pi * 180",z.MULTIPLICATIVE]},Ie=function(q,ue){var D=[],Z=q.workspace,he=_.allUsedVarModels$$module$build$src$core$variables(Z)||[];for(var ce of he)he=ce.name,q.getVars().indexOf(he)===-1&&D.push(ue.getVariableName(he));for(Z=_.allDeveloperVariables$$module$build$src$core$variables(Z),ce=0;ce<Z.length;ce++)D.push(ue.nameDB_.getName(Z[ce],_.NameType$$module$build$src$core$names.DEVELOPER_VARIABLE));Z=D.length?ue.INDENT+"global "+D.join(", ")+`
- `:"",D=ue.getProcedureName(q.getFieldValue("NAME")),ce="",ue.STATEMENT_PREFIX&&(ce+=ue.injectId(ue.STATEMENT_PREFIX,q)),ue.STATEMENT_SUFFIX&&(ce+=ue.injectId(ue.STATEMENT_SUFFIX,q)),ce&&(ce=ue.prefixLines(ce,ue.INDENT)),he="",ue.INFINITE_LOOP_TRAP&&(he=ue.prefixLines(ue.injectId(ue.INFINITE_LOOP_TRAP,q),ue.INDENT));let Ge=ue.statementToCode(q,"STACK"),It=ue.valueToCode(q,"RETURN",z.NONE)||"",bt="";Ge&&It&&(bt=ce),It?It=ue.INDENT+"return "+It+`
- `:Ge||(Ge=ue.PASS);const wo=[],Wo=q.getVars();for(let ps=0;ps<Wo.length;ps++)wo[ps]=ue.getVariableName(Wo[ps]);return Z="def "+D+"("+wo.join(", ")+`):
- `+Z+ce+he+Ge+bt+It,Z=ue.scrub_(q,Z),ue.definitions_["%"+D]=Z,null},Pe=function(q,ue){const D=ue.getProcedureName(q.getFieldValue("NAME")),Z=[],he=q.getVars();for(let ce=0;ce<he.length;ce++)Z[ce]=ue.valueToCode(q,"ARG"+ce,z.NONE)||"None";return[D+"("+Z.join(", ")+")",z.FUNCTION_CALL]},Ae=function(q,ue){return ue.forBlock.procedures_callreturn(q,ue)[0]+`
- `},ke=function(q,ue){let D="if "+(ue.valueToCode(q,"CONDITION",z.NONE)||"False")+`:
- `;return ue.STATEMENT_SUFFIX&&(D+=ue.prefixLines(ue.injectId(ue.STATEMENT_SUFFIX,q),ue.INDENT)),q.hasReturnValue_?(q=ue.valueToCode(q,"VALUE",z.NONE)||"None",D+=ue.INDENT+"return "+q+`
- `):D+=ue.INDENT+`return
- `,D},ve=function(q,ue){return[ue.quote_(q.getFieldValue("TEXT")),z.ATOMIC]},Te=function(q,ue){return q=ue.multiline_quote_(q.getFieldValue("TEXT")),ue=q.indexOf("+")!==-1?z.ADDITIVE:z.ATOMIC,[q,ue]},Re=function(q,ue){switch(q.itemCount_){case 0:return["''",z.ATOMIC];case 1:return q=ue.valueToCode(q,"ADD0",z.NONE)||"''",Ho(q);case 2:var D=ue.valueToCode(q,"ADD0",z.NONE)||"''";return q=ue.valueToCode(q,"ADD1",z.NONE)||"''",[Ho(D)[0]+" + "+Ho(q)[0],z.ADDITIVE];default:D=[];for(let Z=0;Z<q.itemCount_;Z++)D[Z]=ue.valueToCode(q,"ADD"+Z,z.NONE)||"''";return q=ue.nameDB_.getDistinctName("x",_.NameType$$module$build$src$core$names.VARIABLE),["''.join([str("+q+") for "+q+" in ["+D.join(", ")+"]])",z.FUNCTION_CALL]}},Ue=function(q,ue){const D=ue.getVariableName(q.getFieldValue("VAR"));return q=ue.valueToCode(q,"TEXT",z.NONE)||"''",D+" = str("+D+") + "+Ho(q)[0]+`
- `},Ye=function(q,ue){return["len("+(ue.valueToCode(q,"VALUE",z.NONE)||"''")+")",z.FUNCTION_CALL]},De=function(q,ue){return["not len("+(ue.valueToCode(q,"VALUE",z.NONE)||"''")+")",z.LOGICAL_NOT]},Xe=function(q,ue){const D=q.getFieldValue("END")==="FIRST"?"find":"rfind",Z=ue.valueToCode(q,"FIND",z.NONE)||"''";return ue=(ue.valueToCode(q,"VALUE",z.MEMBER)||"''")+"."+D+"("+Z+")",q.workspace.options.oneBasedIndex?[ue+" + 1",z.ADDITIVE]:[ue,z.FUNCTION_CALL]},Ke=function(q,ue){const D=q.getFieldValue("WHERE")||"FROM_START",Z=ue.valueToCode(q,"VALUE",D==="RANDOM"?z.NONE:z.MEMBER)||"''";switch(D){case"FIRST":return[Z+"[0]",z.MEMBER];case"LAST":return[Z+"[-1]",z.MEMBER];case"FROM_START":return q=ue.getAdjustedInt(q,"AT"),[Z+"["+q+"]",z.MEMBER];case"FROM_END":return q=ue.getAdjustedInt(q,"AT",1,!0),[Z+"["+q+"]",z.MEMBER];case"RANDOM":return ue.definitions_.import_random="import random",[ue.provideFunction_("text_random_letter",`
- def ${ue.FUNCTION_NAME_PLACEHOLDER_}(text):
- x = int(random.random() * len(text))
- return text[x]
- `)+"("+Z+")",z.FUNCTION_CALL]}throw Error("Unhandled option (text_charAt).")},Be=function(q,ue){var D=q.getFieldValue("WHERE1");const Z=q.getFieldValue("WHERE2"),he=ue.valueToCode(q,"STRING",z.MEMBER)||"''";switch(D){case"FROM_START":D=ue.getAdjustedInt(q,"AT1"),D===0&&(D="");break;case"FROM_END":D=ue.getAdjustedInt(q,"AT1",1,!0);break;case"FIRST":D="";break;default:throw Error("Unhandled option (text_getSubstring)")}switch(Z){case"FROM_START":q=ue.getAdjustedInt(q,"AT2",1);break;case"FROM_END":q=ue.getAdjustedInt(q,"AT2",0,!0),_.isNumber$$module$build$src$core$utils$string(String(q))?q===0&&(q=""):(ue.definitions_.import_sys="import sys",q+=" or sys.maxsize");break;case"LAST":q="";break;default:throw Error("Unhandled option (text_getSubstring)")}return[he+"["+D+" : "+q+"]",z.MEMBER]},qe=function(q,ue){const D={UPPERCASE:".upper()",LOWERCASE:".lower()",TITLECASE:".title()"}[q.getFieldValue("CASE")];return[(ue.valueToCode(q,"TEXT",z.MEMBER)||"''")+D,z.FUNCTION_CALL]},xe=function(q,ue){const D={LEFT:".lstrip()",RIGHT:".rstrip()",BOTH:".strip()"}[q.getFieldValue("MODE")];return[(ue.valueToCode(q,"TEXT",z.MEMBER)||"''")+D,z.FUNCTION_CALL]},Le=function(q,ue){return"print("+(ue.valueToCode(q,"TEXT",z.NONE)||"''")+`)
- `},je=function(q,ue){var D=ue.provideFunction_("text_prompt",`
- def ${ue.FUNCTION_NAME_PLACEHOLDER_}(msg):
- try:
- return raw_input(msg)
- except NameError:
- return input(msg)
- `);return ue=q.getField("TEXT")?ue.quote_(q.getFieldValue("TEXT")):ue.valueToCode(q,"TEXT",z.NONE)||"''",D=D+"("+ue+")",q.getFieldValue("TYPE")==="NUMBER"&&(D="float("+D+")"),[D,z.FUNCTION_CALL]},He=function(q,ue){const D=ue.valueToCode(q,"TEXT",z.MEMBER)||"''";return q=ue.valueToCode(q,"SUB",z.NONE)||"''",[D+".count("+q+")",z.FUNCTION_CALL]},Je=function(q,ue){const D=ue.valueToCode(q,"TEXT",z.MEMBER)||"''",Z=ue.valueToCode(q,"FROM",z.NONE)||"''";return q=ue.valueToCode(q,"TO",z.NONE)||"''",[D+".replace("+Z+", "+q+")",z.MEMBER]},St=function(q,ue){return[(ue.valueToCode(q,"TEXT",z.MEMBER)||"''")+"[::-1]",z.MEMBER]},Ot=function(q,ue){return[ue.getVariableName(q.getFieldValue("VAR")),z.ATOMIC]},Nt=function(q,ue){const D=ue.valueToCode(q,"VALUE",z.NONE)||"0";return ue.getVariableName(q.getFieldValue("VAR"))+" = "+D+`
- `},z;(function(q){q[q.ATOMIC=0]="ATOMIC",q[q.COLLECTION=1]="COLLECTION",q[q.STRING_CONVERSION=1]="STRING_CONVERSION",q[q.MEMBER=2.1]="MEMBER",q[q.FUNCTION_CALL=2.2]="FUNCTION_CALL",q[q.EXPONENTIATION=3]="EXPONENTIATION",q[q.UNARY_SIGN=4]="UNARY_SIGN",q[q.BITWISE_NOT=4]="BITWISE_NOT",q[q.MULTIPLICATIVE=5]="MULTIPLICATIVE",q[q.ADDITIVE=6]="ADDITIVE",q[q.BITWISE_SHIFT=7]="BITWISE_SHIFT",q[q.BITWISE_AND=8]="BITWISE_AND",q[q.BITWISE_XOR=9]="BITWISE_XOR",q[q.BITWISE_OR=10]="BITWISE_OR",q[q.RELATIONAL=11]="RELATIONAL",q[q.LOGICAL_NOT=12]="LOGICAL_NOT",q[q.LOGICAL_AND=13]="LOGICAL_AND",q[q.LOGICAL_OR=14]="LOGICAL_OR",q[q.CONDITIONAL=15]="CONDITIONAL",q[q.LAMBDA=16]="LAMBDA",q[q.NONE=99]="NONE"})(z||(z={}));var y=class extends _.CodeGenerator$$module$build$src$core$generator{constructor(q="Python"){super(q),this.ORDER_OVERRIDES=[[z.FUNCTION_CALL,z.MEMBER],[z.FUNCTION_CALL,z.FUNCTION_CALL],[z.MEMBER,z.MEMBER],[z.MEMBER,z.FUNCTION_CALL],[z.LOGICAL_NOT,z.LOGICAL_NOT],[z.LOGICAL_AND,z.LOGICAL_AND],[z.LOGICAL_OR,z.LOGICAL_OR]],this.PASS="",this.isInitialized=!1;for(const ue in z)q=z[ue],typeof q!="string"&&(this["ORDER_"+ue]=q);this.addReservedWords("False,None,True,and,as,assert,break,class,continue,def,del,elif,else,except,exec,finally,for,from,global,if,import,in,is,lambda,nonlocal,not,or,pass,print,raise,return,try,while,with,yield,NotImplemented,Ellipsis,__debug__,quit,exit,copyright,license,credits,ArithmeticError,AssertionError,AttributeError,BaseException,BlockingIOError,BrokenPipeError,BufferError,BytesWarning,ChildProcessError,ConnectionAbortedError,ConnectionError,ConnectionRefusedError,ConnectionResetError,DeprecationWarning,EOFError,Ellipsis,EnvironmentError,Exception,FileExistsError,FileNotFoundError,FloatingPointError,FutureWarning,GeneratorExit,IOError,ImportError,ImportWarning,IndentationError,IndexError,InterruptedError,IsADirectoryError,KeyError,KeyboardInterrupt,LookupError,MemoryError,ModuleNotFoundError,NameError,NotADirectoryError,NotImplemented,NotImplementedError,OSError,OverflowError,PendingDeprecationWarning,PermissionError,ProcessLookupError,RecursionError,ReferenceError,ResourceWarning,RuntimeError,RuntimeWarning,StandardError,StopAsyncIteration,StopIteration,SyntaxError,SyntaxWarning,SystemError,SystemExit,TabError,TimeoutError,TypeError,UnboundLocalError,UnicodeDecodeError,UnicodeEncodeError,UnicodeError,UnicodeTranslateError,UnicodeWarning,UserWarning,ValueError,Warning,ZeroDivisionError,_,__build_class__,__debug__,__doc__,__import__,__loader__,__name__,__package__,__spec__,abs,all,any,apply,ascii,basestring,bin,bool,buffer,bytearray,bytes,callable,chr,classmethod,cmp,coerce,compile,complex,copyright,credits,delattr,dict,dir,divmod,enumerate,eval,exec,execfile,exit,file,filter,float,format,frozenset,getattr,globals,hasattr,hash,help,hex,id,input,int,intern,isinstance,issubclass,iter,len,license,list,locals,long,map,max,memoryview,min,next,object,oct,open,ord,pow,print,property,quit,range,raw_input,reduce,reload,repr,reversed,round,set,setattr,slice,sorted,staticmethod,str,sum,super,tuple,type,unichr,unicode,vars,xrange,zip")}init(q){super.init(q),this.PASS=this.INDENT+`pass
- `,this.nameDB_?this.nameDB_.reset():this.nameDB_=new _.Names$$module$build$src$core$names(this.RESERVED_WORDS_),this.nameDB_.setVariableMap(q.getVariableMap()),this.nameDB_.populateVariables(q),this.nameDB_.populateProcedures(q);const ue=[];var D=_.allDeveloperVariables$$module$build$src$core$variables(q);for(let Z=0;Z<D.length;Z++)ue.push(this.nameDB_.getName(D[Z],_.Names$$module$build$src$core$names.DEVELOPER_VARIABLE_TYPE)+" = None");for(q=_.allUsedVarModels$$module$build$src$core$variables(q),D=0;D<q.length;D++)ue.push(this.getVariableName(q[D].getId())+" = None");this.definitions_.variables=ue.join(`
- `),this.isInitialized=!0}finish(q){const ue=[],D=[];for(let Z in this.definitions_){const he=this.definitions_[Z];he.match(/^(from\s+\S+\s+)?import\s+\S+/)?ue.push(he):D.push(he)}return q=super.finish(q),this.isInitialized=!1,this.nameDB_.reset(),(ue.join(`
- `)+`
- `+D.join(`
- `)).replace(/\n\n+/g,`
- `).replace(/\n*$/,`
- `)+q}scrubNakedValue(q){return q+`
- `}quote_(q){q=q.replace(/\\/g,"\\\\").replace(/\n/g,`\\
- `);let ue="'";return q.indexOf("'")!==-1&&(q.indexOf('"')===-1?ue='"':q=q.replace(/'/g,"\\'")),ue+q+ue}multiline_quote_(q){return q.split(/\n/g).map(this.quote_).join(` + '\\n' +
- `)}scrub_(q,ue,D=!1){let Z="";if(!q.outputConnection||!q.outputConnection.targetConnection){var he=q.getCommentText();he&&(he=_.wrap$$module$build$src$core$utils$string(he,this.COMMENT_WRAP-3),Z+=this.prefixLines(he+`
- `,"# "));for(let ce=0;ce<q.inputList.length;ce++)q.inputList[ce].type===_.inputTypes$$module$build$src$core$inputs$input_types.VALUE&&(he=q.inputList[ce].connection.targetBlock())&&(he=this.allNestedComments(he))&&(Z+=this.prefixLines(he,"# "))}return q=q.nextConnection&&q.nextConnection.targetBlock(),D=D?"":this.blockToCode(q),Z+ue+D}getAdjustedInt(q,ue,D=0,Z=!1){q.workspace.options.oneBasedIndex&&D--;const he=q.workspace.options.oneBasedIndex?"1":"0";return q=this.valueToCode(q,ue,D?z.ADDITIVE:z.NONE)||he,_.isNumber$$module$build$src$core$utils$string(q)?(q=parseInt(q,10)+D,Z&&(q=-q)):(q=0<D?"int("+q+" + "+D+")":0>D?"int("+q+" - "+-D+")":"int("+q+")",Z&&(q="-"+q)),q}},x={};x.colour_blend=E,x.colour_picker=l,x.colour_random=c,x.colour_rgb=T;var oe={};oe.lists_create_empty=u,oe.lists_create_with=d,oe.lists_getIndex=L,oe.lists_getSublist=C,oe.lists_indexOf=S,oe.lists_isEmpty=I,oe.lists_length=h,oe.lists_repeat=O,oe.lists_reverse=b,oe.lists_setIndex=p,oe.lists_sort=m,oe.lists_split=A;var Ee={};Ee.controls_if=N,Ee.controls_ifelse=N,Ee.logic_boolean=w,Ee.logic_compare=U,Ee.logic_negate=G,Ee.logic_null=F,Ee.logic_operation=P,Ee.logic_ternary=V;var _e={};_e.controls_flow_statements=J,_e.controls_for=ee,_e.controls_forEach=j,_e.controls_repeat=W,_e.controls_repeat_ext=W,_e.controls_whileUntil=K;var ze={};ze.math_arithmetic=Y,ze.math_atan2=Me,ze.math_change=ae,ze.math_constant=H,ze.math_constrain=pe,ze.math_modulo=Se,ze.math_number=ie,ze.math_number_property=Q,ze.math_on_list=ge,ze.math_random_float=be,ze.math_random_int=We,ze.math_round=re,ze.math_single=re,ze.math_trig=re;var _t={};_t.procedures_callnoreturn=Ae,_t.procedures_callreturn=Pe,_t.procedures_defnoreturn=Ie,_t.procedures_defreturn=Ie,_t.procedures_ifreturn=ke;var wt=/^\s*'([^']|\\')*'\s*$/,Ho=function(q){return wt.test(q)?[q,z.ATOMIC]:["str("+q+")",z.FUNCTION_CALL]},_o={};_o.text=ve,_o.text_append=Ue,_o.text_changeCase=qe,_o.text_charAt=Ke,_o.text_count=He,_o.text_getSubstring=Be,_o.text_indexOf=Xe,_o.text_isEmpty=De,_o.text_join=Re,_o.text_length=Ye,_o.text_multiline=Te,_o.text_print=Le,_o.text_prompt=je,_o.text_prompt_ext=je,_o.text_replace=Je,_o.text_reverse=St,_o.text_trim=xe;var Ko={};Ko.variables_get=Ot,Ko.variables_set=Nt;var no={};no.variables_get_dynamic=Ot,no.variables_set_dynamic=Nt;var io=new y;io.addReservedWords("math,random,Number");var go=Object.assign({},x,oe,Ee,_e,ze,_t,_o,Ko,no);for(const q in go)io.forBlock[q]=go[q];var zo={};return zo.Order=z,zo.PythonGenerator=y,zo.pythonGenerator=io,zo.__namespace__=_,zo})}(rC)),rC.exports}(function(t,e){(function(o,_){t.exports=_(RP(),J6())})(Is,function(o,_){/**
- * @license
- * Copyright 2020 Google LLC
- * SPDX-License-Identifier: Apache-2.0
- */return _})})(f2);var IP=f2.exports;const ko={Common:"328",System:"#22398e",onboard_RGB:"0",Event:"32",Show:"#5bb2d6",Music:"192",Audio:"#24c48e",AI:"#24c48e",Pin:"#ff8b2c",Radio:"328",Wifi:"#386dc8",IoT_OneNet:"64",IoT_TinyWebIO:"160",IoT_Blynk:"#24c48e",IoT_MQTT:"288",IoT_OneNet_WeChat:"64",Neopixel:"288",Bluebit:"#336699",General:"260",Sensor:"260",Weather:"192",Logic:"#4c97ff",Loop:"120",Math:"#5472ea",Text:"#33cc99",List:"#40bfe4",Variables:"330",Functions:"290",Tuple:"192",Dictionary:"32",Set:"160",File:"#22398e",Network:"#183895",UART:"260",Box:"#24c48e",Microbit:"160",Accelerometer:"0",Button:"32",Compass:"64",Image:"128",Light:"224",Radio2:"288",AI_LCD:"#BA2FBA",AI_camera:"#008CFF",AI_face:"#6533CB",AI_20classid:"#3B67CC",AI_number:"#068227",AI_color:"#7C658C"};$e.Python=IP.pythonGenerator;$e.Blocks.custom_text_block={init:function(){this.appendDummyInput().appendField($e.Msg.numpy_mnist_clear).appendField(new $e.FieldTextInput("张三丰"),"TEXT_INPUT"),this.setPreviousStatement(!0,null),this.setNextStatement(!0,null),this.setTooltip(""),this.setHelpUrl(""),this.setStyle("custom_text_blocks")}};$e.Blocks.CocoRobo_return={init:function(){this.appendDummyInput().appendField("返回一个值"),this.setPreviousStatement(!0,null),this.setNextStatement(!0,null),this.setStyle("custom_text_blocks")}};$e.Blocks.CocoRobo_try_except={init:function(){this.appendStatementInput("TRY").appendField("try"),this.appendStatementInput("EXCEPT").appendField("except"),this.setStyle("custom_text_blocks")}};$e.Blocks.CocoRobo_try_except_finally={init:function(){this.appendStatementInput("TRY").appendField("try"),this.appendStatementInput("EXCEPT").appendField("except"),this.appendStatementInput("FINALLY").appendField("finally")}};$e.Blocks.CocoRobo_type={init:function(){this.jsonInit({message0:"值 %1 的类型",args0:[{type:"input_value",name:"VAR"}],output:null,colour:ko.Logic,tooltip:"返回当前值的类型",helpUrl:""})}};$e.Blocks.CocoRobo_type_is={init:function(){this.jsonInit({message0:"值 %1 的类型为 %2",args0:[{type:"input_value",name:"VAR"},{name:"TYPE",options:[["int","int"],["float","float"],["bool","bool"],["str","str"],["list","list"],["tuple","tuple"],["set","set"],["dict","dict"],["bytes","bytes"],["bytearray","bytearray"],["complex","complex"]],type:"field_dropdown"}],output:"Boolean",colour:ko.Logic,helpUrl:$e.Msg.CocoRobo_TYPE_IS_HELPURL});var t=this;this.setTooltip(function(){return $e.Msg.CocoRobo_TYPE_IS_TOOLTIP.replace("%2",t.getFieldValue("TYPE"))})}};$e.Blocks.CocoRobo_eval={init:function(){this.jsonInit({message0:"计算表达式 %1 的结果",args0:[{check:"String",type:"input_value",name:"VAR"}],output:null,colour:ko.Logic,tooltip:"计算字符串表达式,并返回结果",helpUrl:""})}};$e.controls={HUE:"#9d64fd"};$e.Blocks.controls_repeat_forever={init:function(){this.jsonInit({message0:$e.Msg.CONTROLS_REPEAT_FOREVER,previousStatement:null,nextStatement:null,colour:$e.controls.HUE,tooltip:$e.Msg.CONTROLS_REPEAT_FOREVER_TOOLTIP,helpUrl:$e.Msg.CONTROLS_REPEAT_HELPURL}),this.appendStatementInput("DO").appendField($e.Msg.CONTROLS_REPEAT_INPUT_DO)}};$e.Blocks.controls_repeat_ext={init:function(){this.jsonInit({message0:$e.Msg.CONTROLS_REPEAT_TITLE,args0:[{type:"input_value",name:"TIMES",check:"Number"}],previousStatement:null,nextStatement:null,colour:$e.controls.HUE,tooltip:$e.Msg.CONTROLS_REPEAT_TOOLTIP,helpUrl:$e.Msg.CONTROLS_REPEAT_HELPURL}),this.appendStatementInput("DO").appendField($e.Msg.CONTROLS_REPEAT_INPUT_DO)}};$e.Blocks.controls_repeat={init:function(){this.jsonInit({message0:$e.Msg.CONTROLS_REPEAT_TITLE,args0:[{type:"field_number",name:"TIMES",value:10,min:0,precision:1}],previousStatement:null,nextStatement:null,colour:$e.controls.HUE,tooltip:$e.Msg.CONTROLS_REPEAT_TOOLTIP,helpUrl:$e.Msg.CONTROLS_REPEAT_HELPURL}),this.appendStatementInput("DO").appendField($e.Msg.CONTROLS_REPEAT_INPUT_DO)}};$e.Blocks.controls_whileUntil={init:function(){var t=[[$e.Msg.CONTROLS_WHILEUNTIL_OPERATOR_WHILE,"WHILE"],[$e.Msg.CONTROLS_WHILEUNTIL_OPERATOR_UNTIL,"UNTIL"]];this.setHelpUrl($e.Msg.CONTROLS_WHILEUNTIL_HELPURL),this.setColour($e.controls.HUE),this.appendValueInput("BOOL").setCheck("Boolean").appendField(new $e.FieldDropdown(t),"MODE"),this.appendStatementInput("DO").appendField($e.Msg.CONTROLS_WHILEUNTIL_INPUT_DO),this.setPreviousStatement(!0),this.setNextStatement(!0);var e=this;this.setTooltip(function(){var o=e.getFieldValue("MODE");return{WHILE:$e.Msg.CONTROLS_WHILEUNTIL_TOOLTIP_WHILE,UNTIL:$e.Msg.CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL}[o]})}};$e.Blocks.controls_for={init:function(){this.jsonInit({message0:$e.Msg.CONTROLS_FOR_TITLE,args0:[{type:"field_variable",name:"VAR",variable:null},{type:"input_value",name:"FROM",check:"Number",align:"RIGHT"},{type:"input_value",name:"TO",check:"Number",align:"RIGHT"},{type:"input_value",name:"BY",check:"Number",align:"RIGHT"}],inputsInline:!0,previousStatement:null,nextStatement:null,colour:$e.controls.HUE,helpUrl:$e.Msg.CONTROLS_FOR_HELPURL}),this.appendStatementInput("DO").appendField($e.Msg.CONTROLS_FOR_INPUT_DO);var t=this;this.setTooltip(function(){return $e.Msg.CONTROLS_FOR_TOOLTIP.replace("%1",t.getFieldValue("VAR"))})},customContextMenu:function(t){if(!this.isCollapsed()){var e={enabled:!0},o=this.getFieldValue("VAR");e.text=$e.Msg.VARIABLES_SET_CREATE_GET.replace("%1",o),o=goog.dom.createDom("field",null,o),o.setAttribute("name","VAR"),o=goog.dom.createDom("block",null,o),o.setAttribute("type","variables_get"),e.callback=$e.ContextMenu.callbackFactory(this,o),t.push(e)}}};$e.Blocks.controls_forEach={init:function(){this.jsonInit({message0:$e.Msg.CONTROLS_FOREACH_TITLE,args0:[{type:"field_variable",name:"VAR",variable:null},{type:"input_value",name:"LIST",check:"Array"}],previousStatement:null,nextStatement:null,colour:$e.controls.HUE,helpUrl:$e.Msg.CONTROLS_FOREACH_HELPURL}),this.appendStatementInput("DO").appendField($e.Msg.CONTROLS_FOREACH_INPUT_DO);var t=this;this.setTooltip(function(){return $e.Msg.CONTROLS_FOREACH_TOOLTIP.replace("%1",t.getFieldValue("VAR"))})},customContextMenu:$e.Blocks.controls_for.customContextMenu};$e.Blocks.controls_flow_statements={init:function(){var t=[[$e.Msg.CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK,"BREAK"],[$e.Msg.CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE,"CONTINUE"]];this.setHelpUrl($e.Msg.CONTROLS_FLOW_STATEMENTS_HELPURL),this.setColour($e.controls.HUE),this.appendDummyInput().appendField(new $e.FieldDropdown(t),"FLOW"),this.setPreviousStatement(!0);var e=this;this.setTooltip(function(){var o=e.getFieldValue("FLOW");return{BREAK:$e.Msg.CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK,CONTINUE:$e.Msg.CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE}[o]})},onchange:function(t){if(!this.workspace.isDragging()){t=!1;var e=this;do{if(this.LOOP_TYPES.indexOf(e.type)!=-1){t=!0;break}e=e.getSurroundParent()}while(e);t?(this.setWarningText(null),this.isInFlyout||this.setDisabled(!1)):(this.setWarningText($e.Msg.CONTROLS_FLOW_STATEMENTS_WARNING),this.isInFlyout||this.getInheritedDisabled()||this.setDisabled(!0))}},LOOP_TYPES:"controls_repeat_forever controls_repeat controls_repeat_ext controls_forEach controls_for controls_whileUntil tello_repeat_forever".split(" ")};$e.math={HUE:"#5472ea"};$e.Blocks.math_degrad={init:function(){this.appendValueInput("convert").setCheck(null).appendField(new $e.FieldDropdown([[$e.Msg.math_degrad_rad,"radians"],[$e.Msg.math_degrad_deg,"degrees"]]),"rad_deg"),this.setOutput(!0,null),this.setColour("#5472ea"),this.setHelpUrl("");var t=this;this.setTooltip(function(){var e=t.getFieldValue("rad_deg"),o={radians:$e.Msg.Math_Degrad_RAD_TOOLTIP,degrees:$e.Msg.Math_Degrad_DEG_TOOLTIP};return o[e]})}};$e.Blocks.math_angle={init:function(){this.jsonInit({inputsInline:!0,output:"Number",colour:ko.Math,helpUrl:"",tooltip:"",message0:"%1",args0:[{name:"angle",type:"field_angle"}]})}};$e.Blocks.math_keep_decimal={init:function(){this.jsonInit({inputsInline:!0,output:"Number",colour:ko.Math,helpUrl:$e.Msg.MATH_KEEP_DECIMAL_HELPURL,tooltip:$e.Msg.MATH_KEEP_DECIMAL_TOOLTIP,message0:$e.Msg.MATH_KEEP_DECIMAL_MESSAGE0,args0:[{check:"Number",type:"input_value",name:"NUM"},{check:"Number",type:"input_value",name:"PLACE"}]})}};$e.Blocks.math_division_consult={init:function(){this.jsonInit({message0:$e.Msg.MATH_DIVISION_CONSULT_TITLE,args0:[{type:"input_value",name:"DIVIDEND",check:"Number"},{type:"input_value",name:"DIVISOR",check:"Number"}],inputsInline:!0,output:"Number",colour:$e.math.HUE,tooltip:$e.Msg.MATH_DIVISION_CONSULT_TOOLTIP,helpUrl:$e.Msg.MATH_DIVISION_CONSULT_HELPURL})}};$e.Blocks.labplus_mapping={init:function(){this.jsonInit({colour:230,args0:[{name:"inputNum",type:"input_value",check:"Number"},{name:"bMin",type:"input_value",check:"Number"},{name:"bMax",type:"input_value",check:"Number"},{name:"cMin",type:"input_value",check:"Number"},{name:"cMax",type:"input_value",check:"Number"}],output:"Number",message0:$e.Msg.labplus_mapping_MESSAGE0,tooltip:$e.Msg.labplus_mapping_TOOLTIP,helpUrl:$e.Msg.labplus_mapping_HELPURL})}};$e.Blocks.math_random_randrange={init:function(){this.jsonInit({inputsInline:!0,output:"Number",colour:ko.Math,helpUrl:$e.Msg.MATH_RANDOM_RANDRANGE_HELPURL,tooltip:$e.Msg.MATH_RANDOM_RANDRANGE_TOOLTIP,message0:$e.Msg.MATH_RANDOM_RANDRANGE_MESSAGE0,args0:[{check:"Number",type:"input_value",name:"start"},{check:"Number",type:"input_value",name:"stop"},{check:"Number",type:"input_value",name:"step"}]})}};$e.Blocks.math_convert={init:function(){this.jsonInit({message0:$e.Msg.MATH_CONVERT_MESSAGE0,args0:[{type:"field_dropdown",options:[["int","int"],["float","float"]],name:"TYPE0"},{type:"input_value",name:"INPUT0",check:["Number","String"]}],output:"Number",colour:ko.Math,tooltip:$e.Msg.MATH_CONVERT_TOOLTIP,helpUrl:$e.Msg.MATH_CONVERT_HELPURL})}};$e.Blocks.math_number_bits_ops={init:function(){this.jsonInit({message0:$e.Msg.MATH_NUMBER_BITS_OPS_MESSAGE0,args0:[{type:"input_value",name:"A",check:"Number"},{type:"field_dropdown",options:[["|"," | "],["&"," & "],["^"," ^ "],["<<"," << "],[">>"," >> "]],name:"OP"},{type:"input_value",name:"B",check:"Number"}],inputsInline:!0,output:"Number",colour:ko.Math,tooltip:$e.Msg.MATH_NUMBER_BITS_OPS_TOOLTIP,helpUrl:$e.Msg.MATH_NUMBER_BITS_OPS_HELPURL})}};$e.Blocks.bit_inversion={init:function(){this.jsonInit({inputsInline:!0,output:"Number",colour:ko.Math,helpUrl:$e.Msg.BIT_INVERSION_HELPURL,tooltip:$e.Msg.BIT_INVERSION_TOOLTIP,message0:$e.Msg.BIT_INVERSION_MESSAGE0,args0:[{type:"input_value",name:"data"}]})}};$e.Blocks.CocoRobo_ten_convert_to={init:function(){this.jsonInit({inputsInline:!0,output:"String",colour:ko.Math,helpUrl:$e.Msg.CocoRobo_TEN_CONVERT_TO_HELPURL,message0:$e.Msg.CocoRobo_TEN_CONVERT_TO_MESSAGE0,args0:[{check:"Number",type:"input_value",name:"int_num"},{options:[[$e.Msg.CocoRobo_BIN,"bin"],[$e.Msg.CocoRobo_OCT,"oct"],[$e.Msg.CocoRobo_HEX,"hex"]],type:"field_dropdown",name:"ten_convert_to"}]});var t=this;this.setTooltip(function(){return $e.Msg.CocoRobo_TEN_CONVERT_TO_TOOLTIP.replace("%2",t.getFieldValue("ten_convert_to"))})}};$e.Blocks.CocoRobo_convert_to_ten={init:function(){this.jsonInit({inputsInline:!0,output:"Number",colour:ko.Math,helpUrl:$e.Msg.CocoRobo_CONVERT_TO_TEN_HELPURL,message0:$e.Msg.CocoRobo_CONVERT_TO_TEN_MESSAGE0,args0:[{options:[[$e.Msg.CocoRobo_BIN,"2"],[$e.Msg.CocoRobo_OCT,"8"],[$e.Msg.CocoRobo_HEX,"16"]],type:"field_dropdown",name:"convert_choice"},{check:"String",type:"input_value",name:"convert_str"}]});var t=this;this.setTooltip(function(){var e=t.getFieldValue("convert_choice"),o={2:$e.Msg.CocoRobo_CONVERT_TO_TEN_TOOLTIP.replace("%2","bin"),8:$e.Msg.CocoRobo_CONVERT_TO_TEN_TOOLTIP.replace("%2","oct"),16:$e.Msg.CocoRobo_CONVERT_TO_TEN_TOOLTIP.replace("%2","hex")};return o[e]})}};$e.Blocks.CocoRobo_ten_convert_to={init:function(){this.jsonInit({inputsInline:!0,output:"String",colour:ko.Math,helpUrl:$e.Msg.CocoRobo_TEN_CONVERT_TO_HELPURL,message0:$e.Msg.CocoRobo_TEN_CONVERT_TO_MESSAGE0,args0:[{check:"Number",type:"input_value",name:"int_num"},{options:[[$e.Msg.CocoRobo_BIN,"bin"],[$e.Msg.CocoRobo_OCT,"oct"],[$e.Msg.CocoRobo_HEX,"hex"]],type:"field_dropdown",name:"ten_convert_to"}]});var t=this;this.setTooltip(function(){return $e.Msg.CocoRobo_TEN_CONVERT_TO_TOOLTIP.replace("%2",t.getFieldValue("ten_convert_to"))})}};$e.Blocks.CocoRobo_high_low={init:function(){this.jsonInit({inputsInline:!0,output:"Number",colour:ko.Pin,helpUrl:$e.Msg.CocoRobo_HIGH_LOW_HELPURL,tooltip:$e.Msg.CocoRobo_HIGH_LOW_TOOLTIP,message0:$e.Msg.CocoRobo_HIGH_LOW_MESSAGE0,args0:[{options:[["HIGH","1"],["LOW","0"]],type:"field_dropdown",name:"high_low"}]})}};$e.Blocks.CocoRobo_start_new_thread={init:function(){this.jsonInit({inputsInline:!0,nextStatement:null,previousStatement:null,colour:ko.Event,helpUrl:$e.Msg.CocoRobo_START_NEW_THREAD_HELPURL,tooltip:$e.Msg.CocoRobo_START_NEW_THREAD_TOOLTIP,message0:$e.Msg.CocoRobo_START_NEW_THREAD_MESSAGE0,args0:[{options:[["1","1"],["2","2"],["3","3"],["4","4"]],type:"field_dropdown",name:"thread_name"}]}),this.appendStatementInput("DO").appendField($e.Msg.CONTROLS_REPEAT_INPUT_DO)}};$e.Blocks.CocoRobo_lock_object_acquire_lock={init:function(){this.jsonInit({inputsInline:!0,nextStatement:null,previousStatement:null,colour:ko.Event,helpUrl:$e.Msg.CocoRobo_LOCK_OBJECT_ACQUIRE_LOCK_HELPURL,tooltip:$e.Msg.CocoRobo_LOCK_OBJECT_ACQUIRE_LOCK_TOOLTIP,message0:$e.Msg.CocoRobo_LOCK_OBJECT_ACQUIRE_LOCK_MESSAGE0,args0:[{type:"field_input",name:"thread_lock_object",text:"lock"}]})}};$e.Blocks.CocoRobo_ten_converted_to_bytes={init:function(){this.jsonInit({inputsInline:!0,output:null,colour:ko.Math,helpUrl:$e.Msg.CocoRobo_TEN_CONVERTED_TO_BYTES_HELPURL,message0:$e.Msg.CocoRobo_TEN_CONVERTED_TO_BYTES_MESSAGE0,args0:[{options:[["2","'<H'"],["4","'<L'"]],type:"field_dropdown",name:"convert_choice"},{check:"Number",type:"input_value",name:"convert_num"}]});var t=this;this.setTooltip(function(){var e=t.getFieldValue("convert_choice"),o={"'<HH'":$e.Msg.CocoRobo_TEN_CONVERTED_TO_BYTES_TOOLTIP.replace("%1","2"),"'<LL'":$e.Msg.CocoRobo_TEN_CONVERTED_TO_BYTES_TOOLTIP.replace("%1","4")};return o[e]})}};$e.Blocks.CocoRobo_int_to_chr={init:function(){this.jsonInit({inputsInline:!0,output:"String",colour:ko.Math,helpUrl:$e.Msg.CocoRobo_INT_TO_CHR_HELPURL,tooltip:$e.Msg.CocoRobo_INT_TO_CHR_TOOLTIP,message0:$e.Msg.CocoRobo_INT_TO_CHR_MESSAGE0,args0:[{check:"Number",type:"input_value",name:"convert_num"}]})}};$e.Blocks.CocoRobo_hcsr04_obj={init:function(){this.jsonInit({inputsInline:!0,nextStatement:null,previousStatement:null,colour:ko.General,helpUrl:$e.Msg.CocoRobo_HCSR04_OBJ_HELPURL,tooltip:$e.Msg.CocoRobo_HCSR04_OBJ_TOOLTIP,message0:$e.Msg.CocoRobo_HCSR04_OBJ_MESSAGE0,args0:[{text:"hcsr04",type:"field_input",name:"hcsr04_name"},{check:"Number",type:"input_value",name:"trigger"},{check:"Number",type:"input_value",name:"echo"}]})}};$e.Blocks.CocoRobo_hcsr04_distance={init:function(){this.jsonInit({inputsInline:!0,output:"Number",colour:ko.General,helpUrl:$e.Msg.CocoRobo_HCSR04_DISTANCE_HELPURL,tooltip:$e.Msg.CocoRobo_HCSR04_DISTANCE_TOOLTIP,message0:$e.Msg.CocoRobo_HCSR04_DISTANCE_MESSAGE0,args0:[{text:"hcsr04",type:"field_input",name:"hcsr04_name"},{options:[["mm","mm"],["cm","cm"]],type:"field_dropdown",name:"unit"}]})}};$e.Blocks.CocoRobo_hcsr04_distance_mm={init:function(){this.jsonInit({inputsInline:!0,output:"Number",colour:ko.Pin,helpUrl:$e.Msg.CocoRobo_HCSR04_DISTANCE_MM_HELPURL,tooltip:$e.Msg.CocoRobo_HCSR04_DISTANCE_MM_TOOLTIP,message0:$e.Msg.CocoRobo_HCSR04_DISTANCE_MM_MESSAGE0,args0:[{text:"hcsr04",type:"field_input",name:"hcsr04_name"}]})}};$e.Blocks.CocoRobo_pm2_5_MIC={init:function(){this.jsonInit({inputsInline:!0,output:"Number",colour:ko.General,helpUrl:$e.Msg.CocoRobo_PM2_5_MIC_HELPURL,tooltip:$e.Msg.CocoRobo_PM2_5_MIC_TOOLTIP,message0:$e.Msg.CocoRobo_PM2_5_MIC_MESSAGE0,args0:[{check:"Number",type:"input_value",name:"rx"},{options:[["PM1.0ug/m3","_pm_data[0]"],["PM2.5ug/m3","_pm_data[1]"],["PM10ug/m3","_pm_data[2]"]],type:"field_dropdown",name:"unit"}]})}};$e.Blocks.CocoRobo_pm2_5_LitresAir={init:function(){this.jsonInit({inputsInline:!0,output:"Number",colour:ko.General,helpUrl:$e.Msg.CocoRobo_PM2_5_LitresAir_HELPURL,tooltip:$e.Msg.CocoRobo_PM2_5_LitresAir_TOOLTIP,message0:$e.Msg.CocoRobo_PM2_5_LitresAir_MESSAGE0,args0:[{check:"Number",type:"input_value",name:"rx"},{options:[["0.3um","_pm_data[3]"],["0.5um","_pm_data[4]"],["1um","_pm_data[5]"],["2.5um","_pm_data[6]"],["5um","_pm_data[7]"],["10um","_pm_data[8]"]],type:"field_dropdown",name:"unit"}]})}};$e.Blocks.CocoRobo_mac_address={init:function(){this.jsonInit({inputsInline:!0,output:"String",colour:SOFTWARE_KEY=="X"?ko.System:ko.Wifi,helpUrl:$e.Msg.CocoRobo_MAC_ADDRESS_HELPURL,tooltip:$e.Msg.CocoRobo_MAC_ADDRESS_TOOLTIP,message0:$e.Msg.CocoRobo_MAC_ADDRESS_MESSAGE0})}};$e.Blocks.CocoRobo_ujson_loads={init:function(){this.jsonInit({inputsInline:!0,output:null,colour:ko.Text,helpUrl:$e.Msg.CocoRobo_UJSON_LOADS_HELPURL,tooltip:$e.Msg.CocoRobo_UJSON_LOADS_TOOLTIP,message0:$e.Msg.CocoRobo_UJSON_LOADS_MESSAGE0,args0:[{check:"String",type:"input_value",name:"data"}]})}};$e.Blocks.CocoRobo_code_annotation={init:function(){this.jsonInit({inputsInline:!0,nextStatement:null,previousStatement:null,colour:ko.Text,helpUrl:$e.Msg.CocoRobo_code_annotation_HELPURL,tooltip:$e.Msg.CocoRobo_code_annotation_TOOLTIP,message0:$e.Msg.CocoRobo_code_annotation_MESSAGE0,args0:[{check:"String",type:"input_value",name:"data"}]})}};$e.Blocks.CocoRobo_ujson_dumps={init:function(){this.jsonInit({inputsInline:!0,output:"String",colour:ko.Text,helpUrl:$e.Msg.CocoRobo_UJSON_DUMPS_HELPURL,tooltip:$e.Msg.CocoRobo_UJSON_DUMPS_TOOLTIP,message0:$e.Msg.CocoRobo_UJSON_DUMPS_MESSAGE0,args0:[{type:"input_value",name:"data"}]})}};$e.Blocks.CocoRobo_base64_to_data={init:function(){this.jsonInit({inputsInline:!0,output:null,colour:ko.Math,helpUrl:$e.Msg.CocoRobo_BASE64_TO_DATA_HELPURL,tooltip:$e.Msg.CocoRobo_BASE64_TO_DATA_TOOLTIP,message0:$e.Msg.CocoRobo_BASE64_TO_DATA_MESSAGE0,args0:[{type:"input_value",name:"data"}]})}};$e.Blocks.CocoRobo_data_to_base64={init:function(){this.jsonInit({inputsInline:!0,output:null,colour:ko.Math,helpUrl:$e.Msg.CocoRobo_DATA_TO_BASE64_HELPURL,tooltip:$e.Msg.CocoRobo_DATA_TO_BASE64_TOOLTIP,message0:$e.Msg.CocoRobo_DATA_TO_BASE64_MESSAGE0,args0:[{type:"input_value",name:"data"}]})}};$e.Blocks.CocoRobo_hex_to_bin_str={init:function(){this.jsonInit({inputsInline:!0,output:null,colour:ko.Math,helpUrl:$e.Msg.CocoRobo_HEX_TO_BIN_STR_HELPURL,tooltip:$e.Msg.CocoRobo_HEX_TO_BIN_STR_TOOLTIP,message0:$e.Msg.CocoRobo_HEX_TO_BIN_STR_MESSAGE0,args0:[{check:"String",type:"input_value",name:"convert_chr"}]})}};$e.Blocks.CocoRobo_str_to_hex={init:function(){this.jsonInit({inputsInline:!0,output:null,colour:ko.Math,helpUrl:$e.Msg.CocoRobo_STR_TO_HEX_HELPURL,tooltip:$e.Msg.CocoRobo_STR_TO_HEX_TOOLTIP,message0:$e.Msg.CocoRobo_STR_TO_HEX_MESSAGE0,args0:[{check:"String",type:"input_value",name:"convert_chr"}]})}};$e.Blocks.CocoRobo_chr_to_int={init:function(){this.jsonInit({inputsInline:!0,output:"String",colour:ko.Math,helpUrl:$e.Msg.CocoRobo_CHR_TO_INT_HELPURL,tooltip:$e.Msg.CocoRobo_CHR_TO_INT_TOOLTIP,message0:$e.Msg.CocoRobo_CHR_TO_INT_MESSAGE0,args0:[{check:"String",type:"input_value",name:"convert_chr"}]})}};const e9=$e.Theme.defineTheme("CUSTOM_THEME",{base:$e.Themes.Classic,categoryStyles:{custom_category:{colour:"#5ba5a5"}},blockStyles:{custom_text_blocks:{colourPrimary:"#5ba5a5",colourSecondary:"#5ba5a5",colourTertiary:"#C5EAFF"}},componentStyles:{workspaceBackgroundColour:"#fff",toolboxBackgroundColour:"rgba(236, 241, 247, 0.8)",toolboxForegroundColour:"#000",flyoutBackgroundColour:"#d0f0ffbf",flyoutForegroundColour:"#333",flyoutOpacity:1,scrollbarColour:"#aaa",scrollbarOpacity:.4,insertionMarkerColour:"#f5f5f5",insertionMarkerOpacity:.3,cursorColour:"#f5f5f5"}}),st={Python:IP.pythonGenerator||{Msg:Object.create(null)}};st.Python.math_degrad=function(t){var e=t.getFieldValue("rad_deg"),o=st.Python.valueToCode(t,"convert",st.Python.ORDER_ATOMIC);st.Python.definitions_.import_math=`import math
- `;var _="math."+e+"("+o+")";return[_,st.Python.ORDER_NONE]};st.Python.math_angle=function(t){return[t.getFieldValue("angle"),st.Python.ORDER_ATOMIC]};st.Python.math_keep_decimal=function(t){var e=st.Python.valueToCode(t,"NUM",st.Python.ORDER_ATOMIC);return t=st.Python.valueToCode(t,"PLACE",st.Python.ORDER_ATOMIC),["round("+e+", "+t+")",st.Python.ORDER_ATOMIC]};st.Python.math_division_consult=function(t){var e=st.Python.valueToCode(t,"DIVIDEND",st.Python.ORDER_MULTIPLICATIVE)||"0";return t=st.Python.valueToCode(t,"DIVISOR",st.Python.ORDER_MULTIPLICATIVE)||"0",[e+" // "+t,st.Python.ORDER_MULTIPLICATIVE]};st.Python.labplus_mapping=function(t){st.Python.definitions_.import_microbit="from microbit import *";var e=st.Python.valueToCode(t,"inputNum",st.Python.ORDER_ATOMIC);st.Python.valueToCode(t,"outputNum",st.Python.ORDER_ATOMIC);var o=st.Python.valueToCode(t,"bMin",st.Python.ORDER_ATOMIC),_=st.Python.valueToCode(t,"bMax",st.Python.ORDER_ATOMIC),l=st.Python.valueToCode(t,"cMin",st.Python.ORDER_ATOMIC);return t=st.Python.valueToCode(t,"cMax",st.Python.ORDER_ATOMIC),st.Python.definitions_.labplus_mapping=`def numberMap(inputNum,bMin,bMax,cMin,cMax):
- outputNum = 0
- outputNum =((cMax - cMin) / (bMax - bMin))*(inputNum - bMin)+cMin
- return outputNum
- `,["numberMap("+e+","+o+","+_+","+l+","+t+")",st.Python.ORDER_ATOMIC]};st.Python.math_random_randrange=function(t){st.Python.definitions_.import_time="import time",st.Python.definitions_.import_random="import random";var e=st.Python.valueToCode(t,"start",st.Python.ORDER_ATOMIC),o=st.Python.valueToCode(t,"stop",st.Python.ORDER_ATOMIC);return t=st.Python.valueToCode(t,"step",st.Python.ORDER_ATOMIC),["random.randrange("+e+", "+o+", "+t+")",st.Python.ORDER_ATOMIC]};st.Python.bit_inversion=function(t){return["~"+st.Python.valueToCode(t,"data",st.Python.ORDER_ATOMIC),st.Python.ORDER_ATOMIC]};st.Python.CocoRobo_ten_convert_to=function(t){var e=st.Python.valueToCode(t,"int_num",st.Python.ORDER_ATOMIC);return[t.getFieldValue("ten_convert_to")+"("+e+")",st.Python.ORDER_ATOMIC]};st.Python.CocoRobo_convert_to_ten=function(t){var e=st.Python.valueToCode(t,"convert_str",st.Python.ORDER_ATOMIC);return t=t.getFieldValue("convert_choice"),["int("+e+", "+t+")",st.Python.ORDER_ATOMIC]};st.Python.CocoRobo_ten_convert_to=function(t){var e=st.Python.valueToCode(t,"int_num",st.Python.ORDER_ATOMIC);return[t.getFieldValue("ten_convert_to")+"("+e+")",st.Python.ORDER_ATOMIC]};st.Python.CocoRobo_high_low=function(t){return[t.getFieldValue("high_low"),st.Python.ORDER_ATOMIC]};st.Python.CocoRobo_baudrate=function(t){return[t.getFieldValue("baudrate"),st.Python.ORDER_ATOMIC]};st.Python.CocoRobo_start_new_thread=function(t){st.Python.definitions_.import_thread="import _thread";var e=t.getFieldValue("thread_name"),o=st.Python.statementToCode(t,"DO"),o=st.Python.addLoopTrap(o,t.id)||st.Python.PASS;return st.Python.codeFunctions_["thread_"+e]="def thread_"+e+`():
- `+o,"_thread.start_new_thread(thread_"+e+`, ())
- `};st.Python.CocoRobo_ten_converted_to_bytes=function(t){st.Python.definitions_.import_struct="import struct";var e=st.Python.valueToCode(t,"convert_num",st.Python.ORDER_ATOMIC);return["struct.pack("+t.getFieldValue("convert_choice")+", "+e+")",st.Python.ORDER_ATOMIC]};st.Python.CocoRobo_int_to_chr=function(t){return["chr("+st.Python.valueToCode(t,"convert_num",st.Python.ORDER_ATOMIC)+")",st.Python.ORDER_ATOMIC]};st.Python.CocoRobo_hcsr04_obj=function(t){st.Python.definitions_.from_hcsr04_import_HCSR04="from hcsr04 import HCSR04";var e=t.getFieldValue("hcsr04_name"),o=st.Python.valueToCode(t,"trigger",st.Python.ORDER_ATOMIC);return t=st.Python.valueToCode(t,"echo",st.Python.ORDER_ATOMIC),st.Python.definitions_["CocoRobo_hcsr04_object"+e]=e+" = HCSR04(trigger_pin=Pin.P"+o+", echo_pin=Pin.P"+t+")",`
- `};st.Python.CocoRobo_hcsr04_distance=function(t){st.Python.definitions_.from_hcsr04_import_HCSR04="from hcsr04 import HCSR04";var e=t.getFieldValue("hcsr04_name");return t=t.getFieldValue("unit"),[e+".distance_"+t+"()",st.Python.ORDER_ATOMIC]};st.Python.CocoRobo_hcsr04_distance_mm=function(t){return st.Python.definitions_.from_hcsr04_import_HCSR04="from hcsr04 import HCSR04",[t.getFieldValue("hcsr04_name")+".distance_mm()",st.Python.ORDER_ATOMIC]};st.Python.CocoRobo_pm2_5_MIC=function(t){st.Python.definitions_.machine_Timer="from machine import Timer";var e=st.Python.valueToCode(t,"rx",st.Python.ORDER_ATOMIC);return st.Python.codeFunctions_.CocoRobo_pm2_5="uart=UART(1, baudrate=9600, rx=Pin.P"+e+`, timeout=200)
- _pm_data = [None, None, None, None, None, None, None, None, None]
- def timer13_tick(_):
- global _pm_data
- try:
- if uart.any():
- d = uart.read(0x42)
- if d[0] == 0x42 and d[1] == 0x4d:
- _pm_data = [d[5], d[7], d[9], d[17], d[19], d[21], d[23], d[25], d[27]]
- except: pass
- tim13 = Timer(13)
- tim13.init(period=1000, mode=Timer.PERIODIC, callback=timer13_tick)`,[t.getFieldValue("unit"),st.Python.ORDER_ATOMIC]};st.Python.CocoRobo_pm2_5_LitresAir=function(t){st.Python.definitions_.machine_Timer="from machine import Timer";var e=st.Python.valueToCode(t,"rx",st.Python.ORDER_ATOMIC);return st.Python.codeFunctions_.CocoRobo_pm2_5="uart=UART(1, baudrate=9600, rx=Pin.P"+e+`, timeout=200)
- _pm_data = [None, None, None, None, None, None, None, None, None]
- def timer13_tick(_):
- global _pm_data
- try:
- if uart.any():
- d = uart.read(0x42)
- if d[0] == 0x42 and d[1] == 0x4d:
- _pm_data = [d[5], d[7], d[9], d[17], d[19], d[21], d[23], d[25], d[27]]
- except: pass
- tim13 = Timer(13)
- tim13.init(period=1000, mode=Timer.PERIODIC, callback=timer13_tick)`,[t.getFieldValue("unit"),st.Python.ORDER_ATOMIC]};st.Python.CocoRobo_mac_address=function(t){return st.Python.definitions_.import_machine="import machine",st.Python.definitions_.import_ubinascii="import ubinascii",["ubinascii.hexlify(machine.unique_id()).decode().upper()",st.Python.ORDER_ATOMIC]};st.Python.CocoRobo_ujson_loads=function(t){return st.Python.definitions_.import_ujson="import json",["json.loads("+st.Python.valueToCode(t,"data",st.Python.ORDER_ATOMIC)+")",st.Python.ORDER_ATOMIC]};st.Python.CocoRobo_code_annotation=function(t){var e=st.Python.valueToCode(t,"data",st.Python.ORDER_ATOMIC);return"# "+e.replace('"',"").replace('"',"")+`
- `};st.Python.CocoRobo_ujson_dumps=function(t){return st.Python.definitions_.import_ujson="import json",["json.dumps("+st.Python.valueToCode(t,"data",st.Python.ORDER_ATOMIC)+")",st.Python.ORDER_ATOMIC]};st.Python.CocoRobo_base64_to_data=function(t){return st.Python.definitions_.v831_import_base64="import base64",["base64.b64decode("+st.Python.valueToCode(t,"data",st.Python.ORDER_ATOMIC)+")",st.Python.ORDER_ATOMIC]};st.Python.CocoRobo_data_to_base64=function(t){return st.Python.definitions_.v831_import_base64="import base64",["base64.b64encode("+st.Python.valueToCode(t,"data",st.Python.ORDER_ATOMIC)+".encode('utf-8'))",st.Python.ORDER_ATOMIC]};st.Python.CocoRobo_hex_to_bin_str=function(t){return["bytes.fromhex("+st.Python.valueToCode(t,"convert_chr",st.Python.ORDER_ATOMIC)+")",st.Python.ORDER_ATOMIC]};st.Python.CocoRobo_str_to_hex=function(t){return[st.Python.valueToCode(t,"convert_chr",st.Python.ORDER_ATOMIC)+".encode().hex()",st.Python.ORDER_ATOMIC]};st.Python.CocoRobo_chr_to_int=function(t){return["ord("+st.Python.valueToCode(t,"convert_chr",st.Python.ORDER_ATOMIC)+")",st.Python.ORDER_ATOMIC]};const m2={Python:IP.pythonGenerator||{Msg:Object.create(null)}};m2.Python.custom_text_block=function(t){return"1111111"};const t9={...st,...m2};let xo=class C2{lineAt(e){if(e<0||e>this.length)throw new RangeError(`Invalid position ${e} in document of length ${this.length}`);return this.lineInner(e,!1,1,0)}line(e){if(e<1||e>this.lines)throw new RangeError(`Invalid line number ${e} in ${this.lines}-line document`);return this.lineInner(e,!0,1,0)}replace(e,o,_){[e,o]=XE(this,e,o);let l=[];return this.decompose(0,e,l,2),_.length&&_.decompose(0,_.length,l,3),this.decompose(o,this.length,l,1),e_.from(l,this.length-(o-e)+_.length)}append(e){return this.replace(this.length,this.length,e)}slice(e,o=this.length){[e,o]=XE(this,e,o);let _=[];return this.decompose(e,o,_,0),e_.from(_,o-e)}eq(e){if(e==this)return!0;if(e.length!=this.length||e.lines!=this.lines)return!1;let o=this.scanIdentical(e,1),_=this.length-this.scanIdentical(e,-1),l=new Yg(this),c=new Yg(e);for(let T=o,E=o;;){if(l.next(T),c.next(T),T=0,l.lineBreak!=c.lineBreak||l.done!=c.done||l.value!=c.value)return!1;if(E+=l.value.length,l.done||E>=_)return!0}}iter(e=1){return new Yg(this,e)}iterRange(e,o=this.length){return new A2(this,e,o)}iterLines(e,o){let _;if(e==null)_=this.iter();else{o==null&&(o=this.lines+1);let l=this.line(e).from;_=this.iterRange(l,Math.max(l,o==this.lines+1?this.length:o<=1?0:this.line(o-1).to))}return new b2(_)}toString(){return this.sliceString(0)}toJSON(){let e=[];return this.flatten(e),e}constructor(){}static of(e){if(e.length==0)throw new RangeError("A document must have at least one line");return e.length==1&&!e[0]?C2.empty:e.length<=32?new As(e):e_.from(As.split(e,[]))}};class As extends xo{constructor(e,o=o9(e)){super(),this.text=e,this.length=o}get lines(){return this.text.length}get children(){return null}lineInner(e,o,_,l){for(let c=0;;c++){let T=this.text[c],E=l+T.length;if((o?_:E)>=e)return new s9(l,E,_,T);l=E+1,_++}}decompose(e,o,_,l){let c=e<=0&&o>=this.length?this:new As(tB(this.text,e,o),Math.min(o,this.length)-Math.max(0,e));if(l&1){let T=_.pop(),E=_R(c.text,T.text.slice(),0,c.length);if(E.length<=32)_.push(new As(E,T.length+c.length));else{let u=E.length>>1;_.push(new As(E.slice(0,u)),new As(E.slice(u)))}}else _.push(c)}replace(e,o,_){if(!(_ instanceof As))return super.replace(e,o,_);[e,o]=XE(this,e,o);let l=_R(this.text,_R(_.text,tB(this.text,0,e)),o),c=this.length+_.length-(o-e);return l.length<=32?new As(l,c):e_.from(As.split(l,[]),c)}sliceString(e,o=this.length,_=`
- `){[e,o]=XE(this,e,o);let l="";for(let c=0,T=0;c<=o&&T<this.text.length;T++){let E=this.text[T],u=c+E.length;c>e&&T&&(l+=_),e<u&&o>c&&(l+=E.slice(Math.max(0,e-c),o-c)),c=u+1}return l}flatten(e){for(let o of this.text)e.push(o)}scanIdentical(){return 0}static split(e,o){let _=[],l=-1;for(let c of e)_.push(c),l+=c.length+1,_.length==32&&(o.push(new As(_,l)),_=[],l=-1);return l>-1&&o.push(new As(_,l)),o}}class e_ extends xo{constructor(e,o){super(),this.children=e,this.length=o,this.lines=0;for(let _ of e)this.lines+=_.lines}lineInner(e,o,_,l){for(let c=0;;c++){let T=this.children[c],E=l+T.length,u=_+T.lines-1;if((o?u:E)>=e)return T.lineInner(e,o,_,l);l=E+1,_=u+1}}decompose(e,o,_,l){for(let c=0,T=0;T<=o&&c<this.children.length;c++){let E=this.children[c],u=T+E.length;if(e<=u&&o>=T){let d=l&((T<=e?1:0)|(u>=o?2:0));T>=e&&u<=o&&!d?_.push(E):E.decompose(e-T,o-T,_,d)}T=u+1}}replace(e,o,_){if([e,o]=XE(this,e,o),_.lines<this.lines)for(let l=0,c=0;l<this.children.length;l++){let T=this.children[l],E=c+T.length;if(e>=c&&o<=E){let u=T.replace(e-c,o-c,_),d=this.lines-T.lines+u.lines;if(u.lines<d>>4&&u.lines>d>>6){let O=this.children.slice();return O[l]=u,new e_(O,this.length-(o-e)+_.length)}return super.replace(c,E,u)}c=E+1}return super.replace(e,o,_)}sliceString(e,o=this.length,_=`
- `){[e,o]=XE(this,e,o);let l="";for(let c=0,T=0;c<this.children.length&&T<=o;c++){let E=this.children[c],u=T+E.length;T>e&&c&&(l+=_),e<u&&o>T&&(l+=E.sliceString(e-T,o-T,_)),T=u+1}return l}flatten(e){for(let o of this.children)o.flatten(e)}scanIdentical(e,o){if(!(e instanceof e_))return 0;let _=0,[l,c,T,E]=o>0?[0,0,this.children.length,e.children.length]:[this.children.length-1,e.children.length-1,-1,-1];for(;;l+=o,c+=o){if(l==T||c==E)return _;let u=this.children[l],d=e.children[c];if(u!=d)return _+u.scanIdentical(d,o);_+=u.length+1}}static from(e,o=e.reduce((_,l)=>_+l.length+1,-1)){let _=0;for(let S of e)_+=S.lines;if(_<32){let S=[];for(let L of e)L.flatten(S);return new As(S,o)}let l=Math.max(32,_>>5),c=l<<1,T=l>>1,E=[],u=0,d=-1,O=[];function h(S){let L;if(S.lines>c&&S instanceof e_)for(let p of S.children)h(p);else S.lines>T&&(u>T||!u)?(I(),E.push(S)):S instanceof As&&u&&(L=O[O.length-1])instanceof As&&S.lines+L.lines<=32?(u+=S.lines,d+=S.length+1,O[O.length-1]=new As(L.text.concat(S.text),L.length+1+S.length)):(u+S.lines>l&&I(),u+=S.lines,d+=S.length+1,O.push(S))}function I(){u!=0&&(E.push(O.length==1?O[0]:e_.from(O,d)),d=-1,u=O.length=0)}for(let S of e)h(S);return I(),E.length==1?E[0]:new e_(E,o)}}xo.empty=new As([""],0);function o9(t){let e=-1;for(let o of t)e+=o.length+1;return e}function _R(t,e,o=0,_=1e9){for(let l=0,c=0,T=!0;c<t.length&&l<=_;c++){let E=t[c],u=l+E.length;u>=o&&(u>_&&(E=E.slice(0,_-l)),l<o&&(E=E.slice(o-l)),T?(e[e.length-1]+=E,T=!1):e.push(E)),l=u+1}return e}function tB(t,e,o){return _R(t,[""],e,o)}class Yg{constructor(e,o=1){this.dir=o,this.done=!1,this.lineBreak=!1,this.value="",this.nodes=[e],this.offsets=[o>0?1:(e instanceof As?e.text.length:e.children.length)<<1]}nextInner(e,o){for(this.done=this.lineBreak=!1;;){let _=this.nodes.length-1,l=this.nodes[_],c=this.offsets[_],T=c>>1,E=l instanceof As?l.text.length:l.children.length;if(T==(o>0?E:0)){if(_==0)return this.done=!0,this.value="",this;o>0&&this.offsets[_-1]++,this.nodes.pop(),this.offsets.pop()}else if((c&1)==(o>0?0:1)){if(this.offsets[_]+=o,e==0)return this.lineBreak=!0,this.value=`
- `,this;e--}else if(l instanceof As){let u=l.text[T+(o<0?-1:0)];if(this.offsets[_]+=o,u.length>Math.max(0,e))return this.value=e==0?u:o>0?u.slice(e):u.slice(0,u.length-e),this;e-=u.length}else{let u=l.children[T+(o<0?-1:0)];e>u.length?(e-=u.length,this.offsets[_]+=o):(o<0&&this.offsets[_]--,this.nodes.push(u),this.offsets.push(o>0?1:(u instanceof As?u.text.length:u.children.length)<<1))}}}next(e=0){return e<0&&(this.nextInner(-e,-this.dir),e=this.value.length),this.nextInner(e,this.dir)}}class A2{constructor(e,o,_){this.value="",this.done=!1,this.cursor=new Yg(e,o>_?-1:1),this.pos=o>_?e.length:0,this.from=Math.min(o,_),this.to=Math.max(o,_)}nextInner(e,o){if(o<0?this.pos<=this.from:this.pos>=this.to)return this.value="",this.done=!0,this;e+=Math.max(0,o<0?this.pos-this.to:this.from-this.pos);let _=o<0?this.pos-this.from:this.to-this.pos;e>_&&(e=_),_-=e;let{value:l}=this.cursor.next(e);return this.pos+=(l.length+e)*o,this.value=l.length<=_?l:o<0?l.slice(l.length-_):l.slice(0,_),this.done=!this.value,this}next(e=0){return e<0?e=Math.max(e,this.from-this.pos):e>0&&(e=Math.min(e,this.to-this.pos)),this.nextInner(e,this.cursor.dir)}get lineBreak(){return this.cursor.lineBreak&&this.value!=""}}class b2{constructor(e){this.inner=e,this.afterBreak=!0,this.value="",this.done=!1}next(e=0){let{done:o,lineBreak:_,value:l}=this.inner.next(e);return o&&this.afterBreak?(this.value="",this.afterBreak=!1):o?(this.done=!0,this.value=""):_?this.afterBreak?this.value="":(this.afterBreak=!0,this.next()):(this.value=l,this.afterBreak=!1),this}get lineBreak(){return!1}}typeof Symbol<"u"&&(xo.prototype[Symbol.iterator]=function(){return this.iter()},Yg.prototype[Symbol.iterator]=A2.prototype[Symbol.iterator]=b2.prototype[Symbol.iterator]=function(){return this});class s9{constructor(e,o,_,l){this.from=e,this.to=o,this.number=_,this.text=l}get length(){return this.to-this.from}}function XE(t,e,o){return e=Math.max(0,Math.min(t.length,e)),[e,Math.max(e,Math.min(t.length,o))]}let bE="lc,34,7n,7,7b,19,,,,2,,2,,,20,b,1c,l,g,,2t,7,2,6,2,2,,4,z,,u,r,2j,b,1m,9,9,,o,4,,9,,3,,5,17,3,3b,f,,w,1j,,,,4,8,4,,3,7,a,2,t,,1m,,,,2,4,8,,9,,a,2,q,,2,2,1l,,4,2,4,2,2,3,3,,u,2,3,,b,2,1l,,4,5,,2,4,,k,2,m,6,,,1m,,,2,,4,8,,7,3,a,2,u,,1n,,,,c,,9,,14,,3,,1l,3,5,3,,4,7,2,b,2,t,,1m,,2,,2,,3,,5,2,7,2,b,2,s,2,1l,2,,,2,4,8,,9,,a,2,t,,20,,4,,2,3,,,8,,29,,2,7,c,8,2q,,2,9,b,6,22,2,r,,,,,,1j,e,,5,,2,5,b,,10,9,,2u,4,,6,,2,2,2,p,2,4,3,g,4,d,,2,2,6,,f,,jj,3,qa,3,t,3,t,2,u,2,1s,2,,7,8,,2,b,9,,19,3,3b,2,y,,3a,3,4,2,9,,6,3,63,2,2,,1m,,,7,,,,,2,8,6,a,2,,1c,h,1r,4,1c,7,,,5,,14,9,c,2,w,4,2,2,,3,1k,,,2,3,,,3,1m,8,2,2,48,3,,d,,7,4,,6,,3,2,5i,1m,,5,ek,,5f,x,2da,3,3x,,2o,w,fe,6,2x,2,n9w,4,,a,w,2,28,2,7k,,3,,4,,p,2,5,,47,2,q,i,d,,12,8,p,b,1a,3,1c,,2,4,2,2,13,,1v,6,2,2,2,2,c,,8,,1b,,1f,,,3,2,2,5,2,,,16,2,8,,6m,,2,,4,,fn4,,kh,g,g,g,a6,2,gt,,6a,,45,5,1ae,3,,2,5,4,14,3,4,,4l,2,fx,4,ar,2,49,b,4w,,1i,f,1k,3,1d,4,2,2,1x,3,10,5,,8,1q,,c,2,1g,9,a,4,2,,2n,3,2,,,2,6,,4g,,3,8,l,2,1l,2,,,,,m,,e,7,3,5,5f,8,2,3,,,n,,29,,2,6,,,2,,,2,,2,6j,,2,4,6,2,,2,r,2,2d,8,2,,,2,2y,,,,2,6,,,2t,3,2,4,,5,77,9,,2,6t,,a,2,,,4,,40,4,2,2,4,,w,a,14,6,2,4,8,,9,6,2,3,1a,d,,2,ba,7,,6,,,2a,m,2,7,,2,,2,3e,6,3,,,2,,7,,,20,2,3,,,,9n,2,f0b,5,1n,7,t4,,1r,4,29,,f5k,2,43q,,,3,4,5,8,8,2,7,u,4,44,3,1iz,1j,4,1e,8,,e,,m,5,,f,11s,7,,h,2,7,,2,,5,79,7,c5,4,15s,7,31,7,240,5,gx7k,2o,3k,6o".split(",").map(t=>t?parseInt(t,36):1);for(let t=1;t<bE.length;t++)bE[t]+=bE[t-1];function i9(t){for(let e=1;e<bE.length;e+=2)if(bE[e]>t)return bE[e-1]<=t;return!1}function oB(t){return t>=127462&&t<=127487}const sB=8205;function Ti(t,e,o=!0,_=!0){return(o?N2:n9)(t,e,_)}function N2(t,e,o){if(e==t.length)return e;e&&P2(t.charCodeAt(e))&&v2(t.charCodeAt(e-1))&&e--;let _=ri(t,e);for(e+=$n(_);e<t.length;){let l=ri(t,e);if(_==sB||l==sB||o&&i9(l))e+=$n(l),_=l;else if(oB(l)){let c=0,T=e-2;for(;T>=0&&oB(ri(t,T));)c++,T-=2;if(c%2==0)break;e+=2}else break}return e}function n9(t,e,o){for(;e>0;){let _=N2(t,e-2,o);if(_<e)return _;e--}return 0}function P2(t){return t>=56320&&t<57344}function v2(t){return t>=55296&&t<56320}function ri(t,e){let o=t.charCodeAt(e);if(!v2(o)||e+1==t.length)return o;let _=t.charCodeAt(e+1);return P2(_)?(o-55296<<10)+(_-56320)+65536:o}function SP(t){return t<=65535?String.fromCharCode(t):(t-=65536,String.fromCharCode((t>>10)+55296,(t&1023)+56320))}function $n(t){return t<65536?1:2}const PA=/\r\n?|\n/;var li=function(t){return t[t.Simple=0]="Simple",t[t.TrackDel=1]="TrackDel",t[t.TrackBefore=2]="TrackBefore",t[t.TrackAfter=3]="TrackAfter",t}(li||(li={}));class a_{constructor(e){this.sections=e}get length(){let e=0;for(let o=0;o<this.sections.length;o+=2)e+=this.sections[o];return e}get newLength(){let e=0;for(let o=0;o<this.sections.length;o+=2){let _=this.sections[o+1];e+=_<0?this.sections[o]:_}return e}get empty(){return this.sections.length==0||this.sections.length==2&&this.sections[1]<0}iterGaps(e){for(let o=0,_=0,l=0;o<this.sections.length;){let c=this.sections[o++],T=this.sections[o++];T<0?(e(_,l,c),l+=c):l+=T,_+=c}}iterChangedRanges(e,o=!1){vA(this,e,o)}get invertedDesc(){let e=[];for(let o=0;o<this.sections.length;){let _=this.sections[o++],l=this.sections[o++];l<0?e.push(_,l):e.push(l,_)}return new a_(e)}composeDesc(e){return this.empty?e:e.empty?this:D2(this,e)}mapDesc(e,o=!1){return e.empty?this:DA(this,e,o)}mapPos(e,o=-1,_=li.Simple){let l=0,c=0;for(let T=0;T<this.sections.length;){let E=this.sections[T++],u=this.sections[T++],d=l+E;if(u<0){if(d>e)return c+(e-l);c+=E}else{if(_!=li.Simple&&d>=e&&(_==li.TrackDel&&l<e&&d>e||_==li.TrackBefore&&l<e||_==li.TrackAfter&&d>e))return null;if(d>e||d==e&&o<0&&!E)return e==l||o<0?c:c+u;c+=u}l=d}if(e>l)throw new RangeError(`Position ${e} is out of range for changeset of length ${l}`);return c}touchesRange(e,o=e){for(let _=0,l=0;_<this.sections.length&&l<=o;){let c=this.sections[_++],T=this.sections[_++],E=l+c;if(T>=0&&l<=o&&E>=e)return l<e&&E>o?"cover":!0;l=E}return!1}toString(){let e="";for(let o=0;o<this.sections.length;){let _=this.sections[o++],l=this.sections[o++];e+=(e?" ":"")+_+(l>=0?":"+l:"")}return e}toJSON(){return this.sections}static fromJSON(e){if(!Array.isArray(e)||e.length%2||e.some(o=>typeof o!="number"))throw new RangeError("Invalid JSON representation of ChangeDesc");return new a_(e)}static create(e){return new a_(e)}}class Fs extends a_{constructor(e,o){super(e),this.inserted=o}apply(e){if(this.length!=e.length)throw new RangeError("Applying change set to a document with the wrong length");return vA(this,(o,_,l,c,T)=>e=e.replace(l,l+(_-o),T),!1),e}mapDesc(e,o=!1){return DA(this,e,o,!0)}invert(e){let o=this.sections.slice(),_=[];for(let l=0,c=0;l<o.length;l+=2){let T=o[l],E=o[l+1];if(E>=0){o[l]=E,o[l+1]=T;let u=l>>1;for(;_.length<u;)_.push(xo.empty);_.push(T?e.slice(c,c+T):xo.empty)}c+=T}return new Fs(o,_)}compose(e){return this.empty?e:e.empty?this:D2(this,e,!0)}map(e,o=!1){return e.empty?this:DA(this,e,o,!0)}iterChanges(e,o=!1){vA(this,e,o)}get desc(){return a_.create(this.sections)}filter(e){let o=[],_=[],l=[],c=new hd(this);e:for(let T=0,E=0;;){let u=T==e.length?1e9:e[T++];for(;E<u||E==u&&c.len==0;){if(c.done)break e;let O=Math.min(c.len,u-E);Oi(l,O,-1);let h=c.ins==-1?-1:c.off==0?c.ins:0;Oi(o,O,h),h>0&&ea(_,o,c.text),c.forward(O),E+=O}let d=e[T++];for(;E<d;){if(c.done)break e;let O=Math.min(c.len,d-E);Oi(o,O,-1),Oi(l,O,c.ins==-1?-1:c.off==0?c.ins:0),c.forward(O),E+=O}}return{changes:new Fs(o,_),filtered:a_.create(l)}}toJSON(){let e=[];for(let o=0;o<this.sections.length;o+=2){let _=this.sections[o],l=this.sections[o+1];l<0?e.push(_):l==0?e.push([_]):e.push([_].concat(this.inserted[o>>1].toJSON()))}return e}static of(e,o,_){let l=[],c=[],T=0,E=null;function u(O=!1){if(!O&&!l.length)return;T<o&&Oi(l,o-T,-1);let h=new Fs(l,c);E=E?E.compose(h.map(E)):h,l=[],c=[],T=0}function d(O){if(Array.isArray(O))for(let h of O)d(h);else if(O instanceof Fs){if(O.length!=o)throw new RangeError(`Mismatched change set length (got ${O.length}, expected ${o})`);u(),E=E?E.compose(O.map(E)):O}else{let{from:h,to:I=h,insert:S}=O;if(h>I||h<0||I>o)throw new RangeError(`Invalid change range ${h} to ${I} (in doc of length ${o})`);let L=S?typeof S=="string"?xo.of(S.split(_||PA)):S:xo.empty,p=L.length;if(h==I&&p==0)return;h<T&&u(),h>T&&Oi(l,h-T,-1),Oi(l,I-h,p),ea(c,l,L),T=I}}return d(e),u(!E),E}static empty(e){return new Fs(e?[e,-1]:[],[])}static fromJSON(e){if(!Array.isArray(e))throw new RangeError("Invalid JSON representation of ChangeSet");let o=[],_=[];for(let l=0;l<e.length;l++){let c=e[l];if(typeof c=="number")o.push(c,-1);else{if(!Array.isArray(c)||typeof c[0]!="number"||c.some((T,E)=>E&&typeof T!="string"))throw new RangeError("Invalid JSON representation of ChangeSet");if(c.length==1)o.push(c[0],0);else{for(;_.length<l;)_.push(xo.empty);_[l]=xo.of(c.slice(1)),o.push(c[0],_[l].length)}}}return new Fs(o,_)}static createSet(e,o){return new Fs(e,o)}}function Oi(t,e,o,_=!1){if(e==0&&o<=0)return;let l=t.length-2;l>=0&&o<=0&&o==t[l+1]?t[l]+=e:e==0&&t[l]==0?t[l+1]+=o:_?(t[l]+=e,t[l+1]+=o):t.push(e,o)}function ea(t,e,o){if(o.length==0)return;let _=e.length-2>>1;if(_<t.length)t[t.length-1]=t[t.length-1].append(o);else{for(;t.length<_;)t.push(xo.empty);t.push(o)}}function vA(t,e,o){let _=t.inserted;for(let l=0,c=0,T=0;T<t.sections.length;){let E=t.sections[T++],u=t.sections[T++];if(u<0)l+=E,c+=E;else{let d=l,O=c,h=xo.empty;for(;d+=E,O+=u,u&&_&&(h=h.append(_[T-2>>1])),!(o||T==t.sections.length||t.sections[T+1]<0);)E=t.sections[T++],u=t.sections[T++];e(l,d,c,O,h),l=d,c=O}}}function DA(t,e,o,_=!1){let l=[],c=_?[]:null,T=new hd(t),E=new hd(e);for(let u=-1;;)if(T.ins==-1&&E.ins==-1){let d=Math.min(T.len,E.len);Oi(l,d,-1),T.forward(d),E.forward(d)}else if(E.ins>=0&&(T.ins<0||u==T.i||T.off==0&&(E.len<T.len||E.len==T.len&&!o))){let d=E.len;for(Oi(l,E.ins,-1);d;){let O=Math.min(T.len,d);T.ins>=0&&u<T.i&&T.len<=O&&(Oi(l,0,T.ins),c&&ea(c,l,T.text),u=T.i),T.forward(O),d-=O}E.next()}else if(T.ins>=0){let d=0,O=T.len;for(;O;)if(E.ins==-1){let h=Math.min(O,E.len);d+=h,O-=h,E.forward(h)}else if(E.ins==0&&E.len<O)O-=E.len,E.next();else break;Oi(l,d,u<T.i?T.ins:0),c&&u<T.i&&ea(c,l,T.text),u=T.i,T.forward(T.len-O)}else{if(T.done&&E.done)return c?Fs.createSet(l,c):a_.create(l);throw new Error("Mismatched change set lengths")}}function D2(t,e,o=!1){let _=[],l=o?[]:null,c=new hd(t),T=new hd(e);for(let E=!1;;){if(c.done&&T.done)return l?Fs.createSet(_,l):a_.create(_);if(c.ins==0)Oi(_,c.len,0,E),c.next();else if(T.len==0&&!T.done)Oi(_,0,T.ins,E),l&&ea(l,_,T.text),T.next();else{if(c.done||T.done)throw new Error("Mismatched change set lengths");{let u=Math.min(c.len2,T.len),d=_.length;if(c.ins==-1){let O=T.ins==-1?-1:T.off?0:T.ins;Oi(_,u,O,E),l&&O&&ea(l,_,T.text)}else T.ins==-1?(Oi(_,c.off?0:c.len,u,E),l&&ea(l,_,c.textBit(u))):(Oi(_,c.off?0:c.len,T.off?0:T.ins,E),l&&!T.off&&ea(l,_,T.text));E=(c.ins>u||T.ins>=0&&T.len>u)&&(E||_.length>d),c.forward2(u),T.forward(u)}}}}class hd{constructor(e){this.set=e,this.i=0,this.next()}next(){let{sections:e}=this.set;this.i<e.length?(this.len=e[this.i++],this.ins=e[this.i++]):(this.len=0,this.ins=-2),this.off=0}get done(){return this.ins==-2}get len2(){return this.ins<0?this.len:this.ins}get text(){let{inserted:e}=this.set,o=this.i-2>>1;return o>=e.length?xo.empty:e[o]}textBit(e){let{inserted:o}=this.set,_=this.i-2>>1;return _>=o.length&&!e?xo.empty:o[_].slice(this.off,e==null?void 0:this.off+e)}forward(e){e==this.len?this.next():(this.len-=e,this.off+=e)}forward2(e){this.ins==-1?this.forward(e):e==this.ins?this.next():(this.ins-=e,this.off+=e)}}class Lc{constructor(e,o,_){this.from=e,this.to=o,this.flags=_}get anchor(){return this.flags&32?this.to:this.from}get head(){return this.flags&32?this.from:this.to}get empty(){return this.from==this.to}get assoc(){return this.flags&8?-1:this.flags&16?1:0}get bidiLevel(){let e=this.flags&7;return e==7?null:e}get goalColumn(){let e=this.flags>>6;return e==16777215?void 0:e}map(e,o=-1){let _,l;return this.empty?_=l=e.mapPos(this.from,o):(_=e.mapPos(this.from,1),l=e.mapPos(this.to,-1)),_==this.from&&l==this.to?this:new Lc(_,l,this.flags)}extend(e,o=e){if(e<=this.anchor&&o>=this.anchor)return ct.range(e,o);let _=Math.abs(e-this.anchor)>Math.abs(o-this.anchor)?e:o;return ct.range(this.anchor,_)}eq(e,o=!1){return this.anchor==e.anchor&&this.head==e.head&&(!o||!this.empty||this.assoc==e.assoc)}toJSON(){return{anchor:this.anchor,head:this.head}}static fromJSON(e){if(!e||typeof e.anchor!="number"||typeof e.head!="number")throw new RangeError("Invalid JSON representation for SelectionRange");return ct.range(e.anchor,e.head)}static create(e,o,_){return new Lc(e,o,_)}}class ct{constructor(e,o){this.ranges=e,this.mainIndex=o}map(e,o=-1){return e.empty?this:ct.create(this.ranges.map(_=>_.map(e,o)),this.mainIndex)}eq(e,o=!1){if(this.ranges.length!=e.ranges.length||this.mainIndex!=e.mainIndex)return!1;for(let _=0;_<this.ranges.length;_++)if(!this.ranges[_].eq(e.ranges[_],o))return!1;return!0}get main(){return this.ranges[this.mainIndex]}asSingle(){return this.ranges.length==1?this:new ct([this.main],0)}addRange(e,o=!0){return ct.create([e].concat(this.ranges),o?0:this.mainIndex+1)}replaceRange(e,o=this.mainIndex){let _=this.ranges.slice();return _[o]=e,ct.create(_,this.mainIndex)}toJSON(){return{ranges:this.ranges.map(e=>e.toJSON()),main:this.mainIndex}}static fromJSON(e){if(!e||!Array.isArray(e.ranges)||typeof e.main!="number"||e.main>=e.ranges.length)throw new RangeError("Invalid JSON representation for EditorSelection");return new ct(e.ranges.map(o=>Lc.fromJSON(o)),e.main)}static single(e,o=e){return new ct([ct.range(e,o)],0)}static create(e,o=0){if(e.length==0)throw new RangeError("A selection needs at least one range");for(let _=0,l=0;l<e.length;l++){let c=e[l];if(c.empty?c.from<=_:c.from<_)return ct.normalized(e.slice(),o);_=c.to}return new ct(e,o)}static cursor(e,o=0,_,l){return Lc.create(e,e,(o==0?0:o<0?8:16)|(_==null?7:Math.min(6,_))|(l??16777215)<<6)}static range(e,o,_,l){let c=(_??16777215)<<6|(l==null?7:Math.min(6,l));return o<e?Lc.create(o,e,48|c):Lc.create(e,o,(o>e?8:0)|c)}static normalized(e,o=0){let _=e[o];e.sort((l,c)=>l.from-c.from),o=e.indexOf(_);for(let l=1;l<e.length;l++){let c=e[l],T=e[l-1];if(c.empty?c.from<=T.to:c.from<T.to){let E=T.from,u=Math.max(c.to,T.to);l<=o&&o--,e.splice(--l,2,c.anchor>c.head?ct.range(u,E):ct.range(E,u))}}return new ct(e,o)}}function U2(t,e){for(let o of t.ranges)if(o.to>e)throw new RangeError("Selection points outside of document")}let pP=0;class Ft{constructor(e,o,_,l,c){this.combine=e,this.compareInput=o,this.compare=_,this.isStatic=l,this.id=pP++,this.default=e([]),this.extensions=typeof c=="function"?c(this):c}get reader(){return this}static define(e={}){return new Ft(e.combine||(o=>o),e.compareInput||((o,_)=>o===_),e.compare||(e.combine?(o,_)=>o===_:LP),!!e.static,e.enables)}of(e){return new lR([],this,0,e)}compute(e,o){if(this.isStatic)throw new Error("Can't compute a static facet");return new lR(e,this,1,o)}computeN(e,o){if(this.isStatic)throw new Error("Can't compute a static facet");return new lR(e,this,2,o)}from(e,o){return o||(o=_=>_),this.compute([e],_=>o(_.field(e)))}}function LP(t,e){return t==e||t.length==e.length&&t.every((o,_)=>o===e[_])}class lR{constructor(e,o,_,l){this.dependencies=e,this.facet=o,this.type=_,this.value=l,this.id=pP++}dynamicSlot(e){var o;let _=this.value,l=this.facet.compareInput,c=this.id,T=e[c]>>1,E=this.type==2,u=!1,d=!1,O=[];for(let h of this.dependencies)h=="doc"?u=!0:h=="selection"?d=!0:((o=e[h.id])!==null&&o!==void 0?o:1)&1||O.push(e[h.id]);return{create(h){return h.values[T]=_(h),1},update(h,I){if(u&&I.docChanged||d&&(I.docChanged||I.selection)||UA(h,O)){let S=_(h);if(E?!iB(S,h.values[T],l):!l(S,h.values[T]))return h.values[T]=S,1}return 0},reconfigure:(h,I)=>{let S,L=I.config.address[c];if(L!=null){let p=oI(I,L);if(this.dependencies.every(C=>C instanceof Ft?I.facet(C)===h.facet(C):C instanceof Js?I.field(C,!1)==h.field(C,!1):!0)||(E?iB(S=_(h),p,l):l(S=_(h),p)))return h.values[T]=p,0}else S=_(h);return h.values[T]=S,1}}}}function iB(t,e,o){if(t.length!=e.length)return!1;for(let _=0;_<t.length;_++)if(!o(t[_],e[_]))return!1;return!0}function UA(t,e){let o=!1;for(let _ of e)Kg(t,_)&1&&(o=!0);return o}function r9(t,e,o){let _=o.map(u=>t[u.id]),l=o.map(u=>u.type),c=_.filter(u=>!(u&1)),T=t[e.id]>>1;function E(u){let d=[];for(let O=0;O<_.length;O++){let h=oI(u,_[O]);if(l[O]==2)for(let I of h)d.push(I);else d.push(h)}return e.combine(d)}return{create(u){for(let d of _)Kg(u,d);return u.values[T]=E(u),1},update(u,d){if(!UA(u,c))return 0;let O=E(u);return e.compare(O,u.values[T])?0:(u.values[T]=O,1)},reconfigure(u,d){let O=UA(u,_),h=d.config.facets[e.id],I=d.facet(e);if(h&&!O&&LP(o,h))return u.values[T]=I,0;let S=E(u);return e.compare(S,I)?(u.values[T]=I,0):(u.values[T]=S,1)}}}const nB=Ft.define({static:!0});class Js{constructor(e,o,_,l,c){this.id=e,this.createF=o,this.updateF=_,this.compareF=l,this.spec=c,this.provides=void 0}static define(e){let o=new Js(pP++,e.create,e.update,e.compare||((_,l)=>_===l),e);return e.provide&&(o.provides=e.provide(o)),o}create(e){let o=e.facet(nB).find(_=>_.field==this);return((o==null?void 0:o.create)||this.createF)(e)}slot(e){let o=e[this.id]>>1;return{create:_=>(_.values[o]=this.create(_),1),update:(_,l)=>{let c=_.values[o],T=this.updateF(c,l);return this.compareF(c,T)?0:(_.values[o]=T,1)},reconfigure:(_,l)=>l.config.address[this.id]!=null?(_.values[o]=l.field(this),0):(_.values[o]=this.create(_),1)}}init(e){return[this,nB.of({field:this,create:e})]}get extension(){return this}}const hc={lowest:4,low:3,default:2,high:1,highest:0};function Ig(t){return e=>new y2(e,t)}const eT={highest:Ig(hc.highest),high:Ig(hc.high),default:Ig(hc.default),low:Ig(hc.low),lowest:Ig(hc.lowest)};class y2{constructor(e,o){this.inner=e,this.prec=o}}class rO{of(e){return new yA(this,e)}reconfigure(e){return rO.reconfigure.of({compartment:this,extension:e})}get(e){return e.config.compartments.get(this)}}class yA{constructor(e,o){this.compartment=e,this.inner=o}}class tI{constructor(e,o,_,l,c,T){for(this.base=e,this.compartments=o,this.dynamicSlots=_,this.address=l,this.staticValues=c,this.facets=T,this.statusTemplate=[];this.statusTemplate.length<_.length;)this.statusTemplate.push(0)}staticFacet(e){let o=this.address[e.id];return o==null?e.default:this.staticValues[o>>1]}static resolve(e,o,_){let l=[],c=Object.create(null),T=new Map;for(let I of _9(e,o,T))I instanceof Js?l.push(I):(c[I.facet.id]||(c[I.facet.id]=[])).push(I);let E=Object.create(null),u=[],d=[];for(let I of l)E[I.id]=d.length<<1,d.push(S=>I.slot(S));let O=_==null?void 0:_.config.facets;for(let I in c){let S=c[I],L=S[0].facet,p=O&&O[I]||[];if(S.every(C=>C.type==0))if(E[L.id]=u.length<<1|1,LP(p,S))u.push(_.facet(L));else{let C=L.combine(S.map(m=>m.value));u.push(_&&L.compare(C,_.facet(L))?_.facet(L):C)}else{for(let C of S)C.type==0?(E[C.id]=u.length<<1|1,u.push(C.value)):(E[C.id]=d.length<<1,d.push(m=>C.dynamicSlot(m)));E[L.id]=d.length<<1,d.push(C=>r9(C,L,S))}}let h=d.map(I=>I(E));return new tI(e,T,h,E,u,c)}}function _9(t,e,o){let _=[[],[],[],[],[]],l=new Map;function c(T,E){let u=l.get(T);if(u!=null){if(u<=E)return;let d=_[u].indexOf(T);d>-1&&_[u].splice(d,1),T instanceof yA&&o.delete(T.compartment)}if(l.set(T,E),Array.isArray(T))for(let d of T)c(d,E);else if(T instanceof yA){if(o.has(T.compartment))throw new RangeError("Duplicate use of compartment in extensions");let d=e.get(T.compartment)||T.inner;o.set(T.compartment,d),c(d,E)}else if(T instanceof y2)c(T.inner,T.prec);else if(T instanceof Js)_[E].push(T),T.provides&&c(T.provides,E);else if(T instanceof lR)_[E].push(T),T.facet.extensions&&c(T.facet.extensions,hc.default);else{let d=T.extension;if(!d)throw new Error(`Unrecognized extension value in extension set (${T}). This sometimes happens because multiple instances of @codemirror/state are loaded, breaking instanceof checks.`);c(d,E)}}return c(t,hc.default),_.reduce((T,E)=>T.concat(E))}function Kg(t,e){if(e&1)return 2;let o=e>>1,_=t.status[o];if(_==4)throw new Error("Cyclic dependency between fields and/or facets");if(_&2)return _;t.status[o]=4;let l=t.computeSlot(t,t.config.dynamicSlots[o]);return t.status[o]=2|l}function oI(t,e){return e&1?t.config.staticValues[e>>1]:t.values[e>>1]}const $2=Ft.define(),$A=Ft.define({combine:t=>t.some(e=>e),static:!0}),B2=Ft.define({combine:t=>t.length?t[0]:void 0,static:!0}),w2=Ft.define(),G2=Ft.define(),k2=Ft.define(),H2=Ft.define({combine:t=>t.length?t[0]:!1});class ll{constructor(e,o){this.type=e,this.value=o}static define(){return new l9}}class l9{of(e){return new ll(this,e)}}class a9{constructor(e){this.map=e}of(e){return new uo(this,e)}}class uo{constructor(e,o){this.type=e,this.value=o}map(e){let o=this.type.map(this.value,e);return o===void 0?void 0:o==this.value?this:new uo(this.type,o)}is(e){return this.type==e}static define(e={}){return new a9(e.map||(o=>o))}static mapEffects(e,o){if(!e.length)return e;let _=[];for(let l of e){let c=l.map(o);c&&_.push(c)}return _}}uo.reconfigure=uo.define();uo.appendConfig=uo.define();class Bs{constructor(e,o,_,l,c,T){this.startState=e,this.changes=o,this.selection=_,this.effects=l,this.annotations=c,this.scrollIntoView=T,this._doc=null,this._state=null,_&&U2(_,o.newLength),c.some(E=>E.type==Bs.time)||(this.annotations=c.concat(Bs.time.of(Date.now())))}static create(e,o,_,l,c,T){return new Bs(e,o,_,l,c,T)}get newDoc(){return this._doc||(this._doc=this.changes.apply(this.startState.doc))}get newSelection(){return this.selection||this.startState.selection.map(this.changes)}get state(){return this._state||this.startState.applyTransaction(this),this._state}annotation(e){for(let o of this.annotations)if(o.type==e)return o.value}get docChanged(){return!this.changes.empty}get reconfigured(){return this.startState.config!=this.state.config}isUserEvent(e){let o=this.annotation(Bs.userEvent);return!!(o&&(o==e||o.length>e.length&&o.slice(0,e.length)==e&&o[e.length]=="."))}}Bs.time=ll.define();Bs.userEvent=ll.define();Bs.addToHistory=ll.define();Bs.remote=ll.define();function c9(t,e){let o=[];for(let _=0,l=0;;){let c,T;if(_<t.length&&(l==e.length||e[l]>=t[_]))c=t[_++],T=t[_++];else if(l<e.length)c=e[l++],T=e[l++];else return o;!o.length||o[o.length-1]<c?o.push(c,T):o[o.length-1]<T&&(o[o.length-1]=T)}}function x2(t,e,o){var _;let l,c,T;return o?(l=e.changes,c=Fs.empty(e.changes.length),T=t.changes.compose(e.changes)):(l=e.changes.map(t.changes),c=t.changes.mapDesc(e.changes,!0),T=t.changes.compose(l)),{changes:T,selection:e.selection?e.selection.map(c):(_=t.selection)===null||_===void 0?void 0:_.map(l),effects:uo.mapEffects(t.effects,l).concat(uo.mapEffects(e.effects,c)),annotations:t.annotations.length?t.annotations.concat(e.annotations):e.annotations,scrollIntoView:t.scrollIntoView||e.scrollIntoView}}function BA(t,e,o){let _=e.selection,l=NE(e.annotations);return e.userEvent&&(l=l.concat(Bs.userEvent.of(e.userEvent))),{changes:e.changes instanceof Fs?e.changes:Fs.of(e.changes||[],o,t.facet(B2)),selection:_&&(_ instanceof ct?_:ct.single(_.anchor,_.head)),effects:NE(e.effects),annotations:l,scrollIntoView:!!e.scrollIntoView}}function F2(t,e,o){let _=BA(t,e.length?e[0]:{},t.doc.length);e.length&&e[0].filter===!1&&(o=!1);for(let c=1;c<e.length;c++){e[c].filter===!1&&(o=!1);let T=!!e[c].sequential;_=x2(_,BA(t,e[c],T?_.changes.newLength:t.doc.length),T)}let l=Bs.create(t,_.changes,_.selection,_.effects,_.annotations,_.scrollIntoView);return E9(o?T9(l):l)}function T9(t){let e=t.startState,o=!0;for(let l of e.facet(w2)){let c=l(t);if(c===!1){o=!1;break}Array.isArray(c)&&(o=o===!0?c:c9(o,c))}if(o!==!0){let l,c;if(o===!1)c=t.changes.invertedDesc,l=Fs.empty(e.doc.length);else{let T=t.changes.filter(o);l=T.changes,c=T.filtered.mapDesc(T.changes).invertedDesc}t=Bs.create(e,l,t.selection&&t.selection.map(c),uo.mapEffects(t.effects,c),t.annotations,t.scrollIntoView)}let _=e.facet(G2);for(let l=_.length-1;l>=0;l--){let c=_[l](t);c instanceof Bs?t=c:Array.isArray(c)&&c.length==1&&c[0]instanceof Bs?t=c[0]:t=F2(e,NE(c),!1)}return t}function E9(t){let e=t.startState,o=e.facet(k2),_=t;for(let l=o.length-1;l>=0;l--){let c=o[l](t);c&&Object.keys(c).length&&(_=x2(_,BA(e,c,t.changes.newLength),!0))}return _==t?t:Bs.create(e,t.changes,t.selection,_.effects,_.annotations,_.scrollIntoView)}const u9=[];function NE(t){return t==null?u9:Array.isArray(t)?t:[t]}var Os=function(t){return t[t.Word=0]="Word",t[t.Space=1]="Space",t[t.Other=2]="Other",t}(Os||(Os={}));const g9=/[\u00df\u0587\u0590-\u05f4\u0600-\u06ff\u3040-\u309f\u30a0-\u30ff\u3400-\u4db5\u4e00-\u9fcc\uac00-\ud7af]/;let wA;try{wA=new RegExp("[\\p{Alphabetic}\\p{Number}_]","u")}catch{}function d9(t){if(wA)return wA.test(t);for(let e=0;e<t.length;e++){let o=t[e];if(/\w/.test(o)||o>""&&(o.toUpperCase()!=o.toLowerCase()||g9.test(o)))return!0}return!1}function O9(t){return e=>{if(!/\S/.test(e))return Os.Space;if(d9(e))return Os.Word;for(let o=0;o<t.length;o++)if(e.indexOf(t[o])>-1)return Os.Word;return Os.Other}}class fo{constructor(e,o,_,l,c,T){this.config=e,this.doc=o,this.selection=_,this.values=l,this.status=e.statusTemplate.slice(),this.computeSlot=c,T&&(T._state=this);for(let E=0;E<this.config.dynamicSlots.length;E++)Kg(this,E<<1);this.computeSlot=null}field(e,o=!0){let _=this.config.address[e.id];if(_==null){if(o)throw new RangeError("Field is not present in this state");return}return Kg(this,_),oI(this,_)}update(...e){return F2(this,e,!0)}applyTransaction(e){let o=this.config,{base:_,compartments:l}=o;for(let E of e.effects)E.is(rO.reconfigure)?(o&&(l=new Map,o.compartments.forEach((u,d)=>l.set(d,u)),o=null),l.set(E.value.compartment,E.value.extension)):E.is(uo.reconfigure)?(o=null,_=E.value):E.is(uo.appendConfig)&&(o=null,_=NE(_).concat(E.value));let c;o?c=e.startState.values.slice():(o=tI.resolve(_,l,this),c=new fo(o,this.doc,this.selection,o.dynamicSlots.map(()=>null),(u,d)=>d.reconfigure(u,this),null).values);let T=e.startState.facet($A)?e.newSelection:e.newSelection.asSingle();new fo(o,e.newDoc,T,c,(E,u)=>u.update(E,e),e)}replaceSelection(e){return typeof e=="string"&&(e=this.toText(e)),this.changeByRange(o=>({changes:{from:o.from,to:o.to,insert:e},range:ct.cursor(o.from+e.length)}))}changeByRange(e){let o=this.selection,_=e(o.ranges[0]),l=this.changes(_.changes),c=[_.range],T=NE(_.effects);for(let E=1;E<o.ranges.length;E++){let u=e(o.ranges[E]),d=this.changes(u.changes),O=d.map(l);for(let I=0;I<E;I++)c[I]=c[I].map(O);let h=l.mapDesc(d,!0);c.push(u.range.map(h)),l=l.compose(O),T=uo.mapEffects(T,O).concat(uo.mapEffects(NE(u.effects),h))}return{changes:l,selection:ct.create(c,o.mainIndex),effects:T}}changes(e=[]){return e instanceof Fs?e:Fs.of(e,this.doc.length,this.facet(fo.lineSeparator))}toText(e){return xo.of(e.split(this.facet(fo.lineSeparator)||PA))}sliceDoc(e=0,o=this.doc.length){return this.doc.sliceString(e,o,this.lineBreak)}facet(e){let o=this.config.address[e.id];return o==null?e.default:(Kg(this,o),oI(this,o))}toJSON(e){let o={doc:this.sliceDoc(),selection:this.selection.toJSON()};if(e)for(let _ in e){let l=e[_];l instanceof Js&&this.config.address[l.id]!=null&&(o[_]=l.spec.toJSON(this.field(e[_]),this))}return o}static fromJSON(e,o={},_){if(!e||typeof e.doc!="string")throw new RangeError("Invalid JSON representation for EditorState");let l=[];if(_){for(let c in _)if(Object.prototype.hasOwnProperty.call(e,c)){let T=_[c],E=e[c];l.push(T.init(u=>T.spec.fromJSON(E,u)))}}return fo.create({doc:e.doc,selection:ct.fromJSON(e.selection),extensions:o.extensions?l.concat([o.extensions]):l})}static create(e={}){let o=tI.resolve(e.extensions||[],new Map),_=e.doc instanceof xo?e.doc:xo.of((e.doc||"").split(o.staticFacet(fo.lineSeparator)||PA)),l=e.selection?e.selection instanceof ct?e.selection:ct.single(e.selection.anchor,e.selection.head):ct.single(0);return U2(l,_.length),o.staticFacet($A)||(l=l.asSingle()),new fo(o,_,l,o.dynamicSlots.map(()=>null),(c,T)=>T.create(c),null)}get tabSize(){return this.facet(fo.tabSize)}get lineBreak(){return this.facet(fo.lineSeparator)||`
- `}get readOnly(){return this.facet(H2)}phrase(e,...o){for(let _ of this.facet(fo.phrases))if(Object.prototype.hasOwnProperty.call(_,e)){e=_[e];break}return o.length&&(e=e.replace(/\$(\$|\d*)/g,(_,l)=>{if(l=="$")return"$";let c=+(l||1);return!c||c>o.length?_:o[c-1]})),e}languageDataAt(e,o,_=-1){let l=[];for(let c of this.facet($2))for(let T of c(this,o,_))Object.prototype.hasOwnProperty.call(T,e)&&l.push(T[e]);return l}charCategorizer(e){return O9(this.languageDataAt("wordChars",e).join(""))}wordAt(e){let{text:o,from:_,length:l}=this.doc.lineAt(e),c=this.charCategorizer(e),T=e-_,E=e-_;for(;T>0;){let u=Ti(o,T,!1);if(c(o.slice(u,T))!=Os.Word)break;T=u}for(;E<l;){let u=Ti(o,E);if(c(o.slice(E,u))!=Os.Word)break;E=u}return T==E?null:ct.range(T+_,E+_)}}fo.allowMultipleSelections=$A;fo.tabSize=Ft.define({combine:t=>t.length?t[0]:4});fo.lineSeparator=B2;fo.readOnly=H2;fo.phrases=Ft.define({compare(t,e){let o=Object.keys(t),_=Object.keys(e);return o.length==_.length&&o.every(l=>t[l]==e[l])}});fo.languageData=$2;fo.changeFilter=w2;fo.transactionFilter=G2;fo.transactionExtender=k2;rO.reconfigure=uo.define();function O_(t,e,o={}){let _={};for(let l of t)for(let c of Object.keys(l)){let T=l[c],E=_[c];if(E===void 0)_[c]=T;else if(!(E===T||T===void 0))if(Object.hasOwnProperty.call(o,c))_[c]=o[c](E,T);else throw new Error("Config merge conflict for field "+c)}for(let l in e)_[l]===void 0&&(_[l]=e[l]);return _}class kc{eq(e){return this==e}range(e,o=e){return GA.create(e,o,this)}}kc.prototype.startSide=kc.prototype.endSide=0;kc.prototype.point=!1;kc.prototype.mapMode=li.TrackDel;let GA=class V2{constructor(e,o,_){this.from=e,this.to=o,this.value=_}static create(e,o,_){return new V2(e,o,_)}};function kA(t,e){return t.from-e.from||t.value.startSide-e.value.startSide}class fP{constructor(e,o,_,l){this.from=e,this.to=o,this.value=_,this.maxPoint=l}get length(){return this.to[this.to.length-1]}findIndex(e,o,_,l=0){let c=_?this.to:this.from;for(let T=l,E=c.length;;){if(T==E)return T;let u=T+E>>1,d=c[u]-e||(_?this.value[u].endSide:this.value[u].startSide)-o;if(u==T)return d>=0?T:E;d>=0?E=u:T=u+1}}between(e,o,_,l){for(let c=this.findIndex(o,-1e9,!0),T=this.findIndex(_,1e9,!1,c);c<T;c++)if(l(this.from[c]+e,this.to[c]+e,this.value[c])===!1)return!1}map(e,o){let _=[],l=[],c=[],T=-1,E=-1;for(let u=0;u<this.value.length;u++){let d=this.value[u],O=this.from[u]+e,h=this.to[u]+e,I,S;if(O==h){let L=o.mapPos(O,d.startSide,d.mapMode);if(L==null||(I=S=L,d.startSide!=d.endSide&&(S=o.mapPos(O,d.endSide),S<I)))continue}else if(I=o.mapPos(O,d.startSide),S=o.mapPos(h,d.endSide),I>S||I==S&&d.startSide>0&&d.endSide<=0)continue;(S-I||d.endSide-d.startSide)<0||(T<0&&(T=I),d.point&&(E=Math.max(E,S-I)),_.push(d),l.push(I-T),c.push(S-T))}return{mapped:_.length?new fP(l,c,_,E):null,pos:T}}}class Bo{constructor(e,o,_,l){this.chunkPos=e,this.chunk=o,this.nextLayer=_,this.maxPoint=l}static create(e,o,_,l){return new Bo(e,o,_,l)}get length(){let e=this.chunk.length-1;return e<0?0:Math.max(this.chunkEnd(e),this.nextLayer.length)}get size(){if(this.isEmpty)return 0;let e=this.nextLayer.size;for(let o of this.chunk)e+=o.value.length;return e}chunkEnd(e){return this.chunkPos[e]+this.chunk[e].length}update(e){let{add:o=[],sort:_=!1,filterFrom:l=0,filterTo:c=this.length}=e,T=e.filter;if(o.length==0&&!T)return this;if(_&&(o=o.slice().sort(kA)),this.isEmpty)return o.length?Bo.of(o):this;let E=new W2(this,null,-1).goto(0),u=0,d=[],O=new Oa;for(;E.value||u<o.length;)if(u<o.length&&(E.from-o[u].from||E.startSide-o[u].value.startSide)>=0){let h=o[u++];O.addInner(h.from,h.to,h.value)||d.push(h)}else E.rangeIndex==1&&E.chunkIndex<this.chunk.length&&(u==o.length||this.chunkEnd(E.chunkIndex)<o[u].from)&&(!T||l>this.chunkEnd(E.chunkIndex)||c<this.chunkPos[E.chunkIndex])&&O.addChunk(this.chunkPos[E.chunkIndex],this.chunk[E.chunkIndex])?E.nextChunk():((!T||l>E.to||c<E.from||T(E.from,E.to,E.value))&&(O.addInner(E.from,E.to,E.value)||d.push(GA.create(E.from,E.to,E.value))),E.next());return O.finishInner(this.nextLayer.isEmpty&&!d.length?Bo.empty:this.nextLayer.update({add:d,filter:T,filterFrom:l,filterTo:c}))}map(e){if(e.empty||this.isEmpty)return this;let o=[],_=[],l=-1;for(let T=0;T<this.chunk.length;T++){let E=this.chunkPos[T],u=this.chunk[T],d=e.touchesRange(E,E+u.length);if(d===!1)l=Math.max(l,u.maxPoint),o.push(u),_.push(e.mapPos(E));else if(d===!0){let{mapped:O,pos:h}=u.map(E,e);O&&(l=Math.max(l,O.maxPoint),o.push(O),_.push(h))}}let c=this.nextLayer.map(e);return o.length==0?c:new Bo(_,o,c||Bo.empty,l)}between(e,o,_){if(!this.isEmpty){for(let l=0;l<this.chunk.length;l++){let c=this.chunkPos[l],T=this.chunk[l];if(o>=c&&e<=c+T.length&&T.between(c,e-c,o-c,_)===!1)return}this.nextLayer.between(e,o,_)}}iter(e=0){return Md.from([this]).goto(e)}get isEmpty(){return this.nextLayer==this}static iter(e,o=0){return Md.from(e).goto(o)}static compare(e,o,_,l,c=-1){let T=e.filter(h=>h.maxPoint>0||!h.isEmpty&&h.maxPoint>=c),E=o.filter(h=>h.maxPoint>0||!h.isEmpty&&h.maxPoint>=c),u=rB(T,E,_),d=new Sg(T,u,c),O=new Sg(E,u,c);_.iterGaps((h,I,S)=>_B(d,h,O,I,S,l)),_.empty&&_.length==0&&_B(d,0,O,0,0,l)}static eq(e,o,_=0,l){l==null&&(l=999999999);let c=e.filter(O=>!O.isEmpty&&o.indexOf(O)<0),T=o.filter(O=>!O.isEmpty&&e.indexOf(O)<0);if(c.length!=T.length)return!1;if(!c.length)return!0;let E=rB(c,T),u=new Sg(c,E,0).goto(_),d=new Sg(T,E,0).goto(_);for(;;){if(u.to!=d.to||!HA(u.active,d.active)||u.point&&(!d.point||!u.point.eq(d.point)))return!1;if(u.to>l)return!0;u.next(),d.next()}}static spans(e,o,_,l,c=-1){let T=new Sg(e,null,c).goto(o),E=o,u=T.openStart;for(;;){let d=Math.min(T.to,_);if(T.point){let O=T.activeForPoint(T.to),h=T.pointFrom<o?O.length+1:Math.min(O.length,u);l.point(E,d,T.point,O,h,T.pointRank),u=Math.min(T.openEnd(d),O.length)}else d>E&&(l.span(E,d,T.active,u),u=T.openEnd(d));if(T.to>_)return u+(T.point&&T.to>_?1:0);E=T.to,T.next()}}static of(e,o=!1){let _=new Oa;for(let l of e instanceof GA?[e]:o?h9(e):e)_.add(l.from,l.to,l.value);return _.finish()}static join(e){if(!e.length)return Bo.empty;let o=e[e.length-1];for(let _=e.length-2;_>=0;_--)for(let l=e[_];l!=Bo.empty;l=l.nextLayer)o=new Bo(l.chunkPos,l.chunk,o,Math.max(l.maxPoint,o.maxPoint));return o}}Bo.empty=new Bo([],[],null,-1);function h9(t){if(t.length>1)for(let e=t[0],o=1;o<t.length;o++){let _=t[o];if(kA(e,_)>0)return t.slice().sort(kA);e=_}return t}Bo.empty.nextLayer=Bo.empty;class Oa{finishChunk(e){this.chunks.push(new fP(this.from,this.to,this.value,this.maxPoint)),this.chunkPos.push(this.chunkStart),this.chunkStart=-1,this.setMaxPoint=Math.max(this.setMaxPoint,this.maxPoint),this.maxPoint=-1,e&&(this.from=[],this.to=[],this.value=[])}constructor(){this.chunks=[],this.chunkPos=[],this.chunkStart=-1,this.last=null,this.lastFrom=-1e9,this.lastTo=-1e9,this.from=[],this.to=[],this.value=[],this.maxPoint=-1,this.setMaxPoint=-1,this.nextLayer=null}add(e,o,_){this.addInner(e,o,_)||(this.nextLayer||(this.nextLayer=new Oa)).add(e,o,_)}addInner(e,o,_){let l=e-this.lastTo||_.startSide-this.last.endSide;if(l<=0&&(e-this.lastFrom||_.startSide-this.last.startSide)<0)throw new Error("Ranges must be added sorted by `from` position and `startSide`");return l<0?!1:(this.from.length==250&&this.finishChunk(!0),this.chunkStart<0&&(this.chunkStart=e),this.from.push(e-this.chunkStart),this.to.push(o-this.chunkStart),this.last=_,this.lastFrom=e,this.lastTo=o,this.value.push(_),_.point&&(this.maxPoint=Math.max(this.maxPoint,o-e)),!0)}addChunk(e,o){if((e-this.lastTo||o.value[0].startSide-this.last.endSide)<0)return!1;this.from.length&&this.finishChunk(!0),this.setMaxPoint=Math.max(this.setMaxPoint,o.maxPoint),this.chunks.push(o),this.chunkPos.push(e);let _=o.value.length-1;return this.last=o.value[_],this.lastFrom=o.from[_]+e,this.lastTo=o.to[_]+e,!0}finish(){return this.finishInner(Bo.empty)}finishInner(e){if(this.from.length&&this.finishChunk(!1),this.chunks.length==0)return e;let o=Bo.create(this.chunkPos,this.chunks,this.nextLayer?this.nextLayer.finishInner(e):e,this.setMaxPoint);return this.from=null,o}}function rB(t,e,o){let _=new Map;for(let c of t)for(let T=0;T<c.chunk.length;T++)c.chunk[T].maxPoint<=0&&_.set(c.chunk[T],c.chunkPos[T]);let l=new Set;for(let c of e)for(let T=0;T<c.chunk.length;T++){let E=_.get(c.chunk[T]);E!=null&&(o?o.mapPos(E):E)==c.chunkPos[T]&&!(o!=null&&o.touchesRange(E,E+c.chunk[T].length))&&l.add(c.chunk[T])}return l}class W2{constructor(e,o,_,l=0){this.layer=e,this.skip=o,this.minPoint=_,this.rank=l}get startSide(){return this.value?this.value.startSide:0}get endSide(){return this.value?this.value.endSide:0}goto(e,o=-1e9){return this.chunkIndex=this.rangeIndex=0,this.gotoInner(e,o,!1),this}gotoInner(e,o,_){for(;this.chunkIndex<this.layer.chunk.length;){let l=this.layer.chunk[this.chunkIndex];if(!(this.skip&&this.skip.has(l)||this.layer.chunkEnd(this.chunkIndex)<e||l.maxPoint<this.minPoint))break;this.chunkIndex++,_=!1}if(this.chunkIndex<this.layer.chunk.length){let l=this.layer.chunk[this.chunkIndex].findIndex(e-this.layer.chunkPos[this.chunkIndex],o,!0);(!_||this.rangeIndex<l)&&this.setRangeIndex(l)}this.next()}forward(e,o){(this.to-e||this.endSide-o)<0&&this.gotoInner(e,o,!0)}next(){for(;;)if(this.chunkIndex==this.layer.chunk.length){this.from=this.to=1e9,this.value=null;break}else{let e=this.layer.chunkPos[this.chunkIndex],o=this.layer.chunk[this.chunkIndex],_=e+o.from[this.rangeIndex];if(this.from=_,this.to=e+o.to[this.rangeIndex],this.value=o.value[this.rangeIndex],this.setRangeIndex(this.rangeIndex+1),this.minPoint<0||this.value.point&&this.to-this.from>=this.minPoint)break}}setRangeIndex(e){if(e==this.layer.chunk[this.chunkIndex].value.length){if(this.chunkIndex++,this.skip)for(;this.chunkIndex<this.layer.chunk.length&&this.skip.has(this.layer.chunk[this.chunkIndex]);)this.chunkIndex++;this.rangeIndex=0}else this.rangeIndex=e}nextChunk(){this.chunkIndex++,this.rangeIndex=0,this.next()}compare(e){return this.from-e.from||this.startSide-e.startSide||this.rank-e.rank||this.to-e.to||this.endSide-e.endSide}}class Md{constructor(e){this.heap=e}static from(e,o=null,_=-1){let l=[];for(let c=0;c<e.length;c++)for(let T=e[c];!T.isEmpty;T=T.nextLayer)T.maxPoint>=_&&l.push(new W2(T,o,_,c));return l.length==1?l[0]:new Md(l)}get startSide(){return this.value?this.value.startSide:0}goto(e,o=-1e9){for(let _ of this.heap)_.goto(e,o);for(let _=this.heap.length>>1;_>=0;_--)_C(this.heap,_);return this.next(),this}forward(e,o){for(let _ of this.heap)_.forward(e,o);for(let _=this.heap.length>>1;_>=0;_--)_C(this.heap,_);(this.to-e||this.value.endSide-o)<0&&this.next()}next(){if(this.heap.length==0)this.from=this.to=1e9,this.value=null,this.rank=-1;else{let e=this.heap[0];this.from=e.from,this.to=e.to,this.value=e.value,this.rank=e.rank,e.value&&e.next(),_C(this.heap,0)}}}function _C(t,e){for(let o=t[e];;){let _=(e<<1)+1;if(_>=t.length)break;let l=t[_];if(_+1<t.length&&l.compare(t[_+1])>=0&&(l=t[_+1],_++),o.compare(l)<0)break;t[_]=o,t[e]=l,e=_}}class Sg{constructor(e,o,_){this.minPoint=_,this.active=[],this.activeTo=[],this.activeRank=[],this.minActive=-1,this.point=null,this.pointFrom=0,this.pointRank=0,this.to=-1e9,this.endSide=0,this.openStart=-1,this.cursor=Md.from(e,o,_)}goto(e,o=-1e9){return this.cursor.goto(e,o),this.active.length=this.activeTo.length=this.activeRank.length=0,this.minActive=-1,this.to=e,this.endSide=o,this.openStart=-1,this.next(),this}forward(e,o){for(;this.minActive>-1&&(this.activeTo[this.minActive]-e||this.active[this.minActive].endSide-o)<0;)this.removeActive(this.minActive);this.cursor.forward(e,o)}removeActive(e){uM(this.active,e),uM(this.activeTo,e),uM(this.activeRank,e),this.minActive=lB(this.active,this.activeTo)}addActive(e){let o=0,{value:_,to:l,rank:c}=this.cursor;for(;o<this.activeRank.length&&(c-this.activeRank[o]||l-this.activeTo[o])>0;)o++;gM(this.active,o,_),gM(this.activeTo,o,l),gM(this.activeRank,o,c),e&&gM(e,o,this.cursor.from),this.minActive=lB(this.active,this.activeTo)}next(){let e=this.to,o=this.point;this.point=null;let _=this.openStart<0?[]:null;for(;;){let l=this.minActive;if(l>-1&&(this.activeTo[l]-this.cursor.from||this.active[l].endSide-this.cursor.startSide)<0){if(this.activeTo[l]>e){this.to=this.activeTo[l],this.endSide=this.active[l].endSide;break}this.removeActive(l),_&&uM(_,l)}else if(this.cursor.value)if(this.cursor.from>e){this.to=this.cursor.from,this.endSide=this.cursor.startSide;break}else{let c=this.cursor.value;if(!c.point)this.addActive(_),this.cursor.next();else if(o&&this.cursor.to==this.to&&this.cursor.from<this.cursor.to)this.cursor.next();else{this.point=c,this.pointFrom=this.cursor.from,this.pointRank=this.cursor.rank,this.to=this.cursor.to,this.endSide=c.endSide,this.cursor.next(),this.forward(this.to,this.endSide);break}}else{this.to=this.endSide=1e9;break}}if(_){this.openStart=0;for(let l=_.length-1;l>=0&&_[l]<e;l--)this.openStart++}}activeForPoint(e){if(!this.active.length)return this.active;let o=[];for(let _=this.active.length-1;_>=0&&!(this.activeRank[_]<this.pointRank);_--)(this.activeTo[_]>e||this.activeTo[_]==e&&this.active[_].endSide>=this.point.endSide)&&o.push(this.active[_]);return o.reverse()}openEnd(e){let o=0;for(let _=this.activeTo.length-1;_>=0&&this.activeTo[_]>e;_--)o++;return o}}function _B(t,e,o,_,l,c){t.goto(e),o.goto(_);let T=_+l,E=_,u=_-e;for(;;){let d=t.to+u-o.to||t.endSide-o.endSide,O=d<0?t.to+u:o.to,h=Math.min(O,T);if(t.point||o.point?t.point&&o.point&&(t.point==o.point||t.point.eq(o.point))&&HA(t.activeForPoint(t.to),o.activeForPoint(o.to))||c.comparePoint(E,h,t.point,o.point):h>E&&!HA(t.active,o.active)&&c.compareRange(E,h,t.active,o.active),O>T)break;E=O,d<=0&&t.next(),d>=0&&o.next()}}function HA(t,e){if(t.length!=e.length)return!1;for(let o=0;o<t.length;o++)if(t[o]!=e[o]&&!t[o].eq(e[o]))return!1;return!0}function uM(t,e){for(let o=e,_=t.length-1;o<_;o++)t[o]=t[o+1];t.pop()}function gM(t,e,o){for(let _=t.length-1;_>=e;_--)t[_+1]=t[_];t[e]=o}function lB(t,e){let o=-1,_=1e9;for(let l=0;l<e.length;l++)(e[l]-_||t[l].endSide-t[o].endSide)<0&&(o=l,_=e[l]);return o}function Iu(t,e,o=t.length){let _=0;for(let l=0;l<o;)t.charCodeAt(l)==9?(_+=e-_%e,l++):(_++,l=Ti(t,l));return _}function xA(t,e,o,_){for(let l=0,c=0;;){if(c>=e)return l;if(l==t.length)break;c+=t.charCodeAt(l)==9?o-c%o:1,l=Ti(t,l)}return _===!0?-1:t.length}const FA="ͼ",aB=typeof Symbol>"u"?"__"+FA:Symbol.for(FA),VA=typeof Symbol>"u"?"__styleSet"+Math.floor(Math.random()*1e8):Symbol("styleSet"),cB=typeof globalThis<"u"?globalThis:typeof window<"u"?window:{};class ha{constructor(e,o){this.rules=[];let{finish:_}=o||{};function l(T){return/^@/.test(T)?[T]:T.split(/,\s*/)}function c(T,E,u,d){let O=[],h=/^@(\w+)\b/.exec(T[0]),I=h&&h[1]=="keyframes";if(h&&E==null)return u.push(T[0]+";");for(let S in E){let L=E[S];if(/&/.test(S))c(S.split(/,\s*/).map(p=>T.map(C=>p.replace(/&/,C))).reduce((p,C)=>p.concat(C)),L,u);else if(L&&typeof L=="object"){if(!h)throw new RangeError("The value of a property ("+S+") should be a primitive value.");c(l(S),L,O,I)}else L!=null&&O.push(S.replace(/_.*/,"").replace(/[A-Z]/g,p=>"-"+p.toLowerCase())+": "+L+";")}(O.length||I)&&u.push((_&&!h&&!d?T.map(_):T).join(", ")+" {"+O.join(" ")+"}")}for(let T in e)c(l(T),e[T],this.rules)}getRules(){return this.rules.join(`
- `)}static newName(){let e=cB[aB]||1;return cB[aB]=e+1,FA+e.toString(36)}static mount(e,o,_){let l=e[VA],c=_&&_.nonce;l?c&&l.setNonce(c):l=new M9(e,c),l.mount(Array.isArray(o)?o:[o])}}let TB=new Map;class M9{constructor(e,o){let _=e.ownerDocument||e,l=_.defaultView;if(!e.head&&e.adoptedStyleSheets&&l.CSSStyleSheet){let c=TB.get(_);if(c)return e.adoptedStyleSheets=[c.sheet,...e.adoptedStyleSheets],e[VA]=c;this.sheet=new l.CSSStyleSheet,e.adoptedStyleSheets=[this.sheet,...e.adoptedStyleSheets],TB.set(_,this)}else{this.styleTag=_.createElement("style"),o&&this.styleTag.setAttribute("nonce",o);let c=e.head||e;c.insertBefore(this.styleTag,c.firstChild)}this.modules=[],e[VA]=this}mount(e){let o=this.sheet,_=0,l=0;for(let c=0;c<e.length;c++){let T=e[c],E=this.modules.indexOf(T);if(E<l&&E>-1&&(this.modules.splice(E,1),l--,E=-1),E==-1){if(this.modules.splice(l++,0,T),o)for(let u=0;u<T.rules.length;u++)o.insertRule(T.rules[u],_++)}else{for(;l<E;)_+=this.modules[l++].rules.length;_+=T.rules.length,l++}}if(!o){let c="";for(let T=0;T<this.modules.length;T++)c+=this.modules[T].getRules()+`
- `;this.styleTag.textContent=c}}setNonce(e){this.styleTag&&this.styleTag.getAttribute("nonce")!=e&&this.styleTag.setAttribute("nonce",e)}}var Ma={8:"Backspace",9:"Tab",10:"Enter",12:"NumLock",13:"Enter",16:"Shift",17:"Control",18:"Alt",20:"CapsLock",27:"Escape",32:" ",33:"PageUp",34:"PageDown",35:"End",36:"Home",37:"ArrowLeft",38:"ArrowUp",39:"ArrowRight",40:"ArrowDown",44:"PrintScreen",45:"Insert",46:"Delete",59:";",61:"=",91:"Meta",92:"Meta",106:"*",107:"+",108:",",109:"-",110:".",111:"/",144:"NumLock",145:"ScrollLock",160:"Shift",161:"Shift",162:"Control",163:"Control",164:"Alt",165:"Alt",173:"-",186:";",187:"=",188:",",189:"-",190:".",191:"/",192:"`",219:"[",220:"\\",221:"]",222:"'"},Rd={48:")",49:"!",50:"@",51:"#",52:"$",53:"%",54:"^",55:"&",56:"*",57:"(",59:":",61:"+",173:"_",186:":",187:"+",188:"<",189:"_",190:">",191:"?",192:"~",219:"{",220:"|",221:"}",222:'"'},R9=typeof navigator<"u"&&/Mac/.test(navigator.platform),I9=typeof navigator<"u"&&/MSIE \d|Trident\/(?:[7-9]|\d{2,})\..*rv:(\d+)/.exec(navigator.userAgent);for(var _i=0;_i<10;_i++)Ma[48+_i]=Ma[96+_i]=String(_i);for(var _i=1;_i<=24;_i++)Ma[_i+111]="F"+_i;for(var _i=65;_i<=90;_i++)Ma[_i]=String.fromCharCode(_i+32),Rd[_i]=String.fromCharCode(_i);for(var lC in Ma)Rd.hasOwnProperty(lC)||(Rd[lC]=Ma[lC]);function S9(t){var e=R9&&t.metaKey&&t.shiftKey&&!t.ctrlKey&&!t.altKey||I9&&t.shiftKey&&t.key&&t.key.length==1||t.key=="Unidentified",o=!e&&t.key||(t.shiftKey?Rd:Ma)[t.keyCode]||t.key||"Unidentified";return o=="Esc"&&(o="Escape"),o=="Del"&&(o="Delete"),o=="Left"&&(o="ArrowLeft"),o=="Up"&&(o="ArrowUp"),o=="Right"&&(o="ArrowRight"),o=="Down"&&(o="ArrowDown"),o}function sI(t){let e;return t.nodeType==11?e=t.getSelection?t:t.ownerDocument:e=t,e.getSelection()}function WA(t,e){return e?t==e||t.contains(e.nodeType!=1?e.parentNode:e):!1}function p9(t){let e=t.activeElement;for(;e&&e.shadowRoot;)e=e.shadowRoot.activeElement;return e}function aR(t,e){if(!e.anchorNode)return!1;try{return WA(t,e.anchorNode)}catch{return!1}}function YE(t){return t.nodeType==3?Hc(t,0,t.nodeValue.length).getClientRects():t.nodeType==1?t.getClientRects():[]}function zg(t,e,o,_){return o?EB(t,e,o,_,-1)||EB(t,e,o,_,1):!1}function Id(t){for(var e=0;;e++)if(t=t.previousSibling,!t)return e}function EB(t,e,o,_,l){for(;;){if(t==o&&e==_)return!0;if(e==(l<0?0:J_(t))){if(t.nodeName=="DIV")return!1;let c=t.parentNode;if(!c||c.nodeType!=1)return!1;e=Id(t)+(l<0?0:1),t=c}else if(t.nodeType==1){if(t=t.childNodes[e+(l<0?-1:0)],t.nodeType==1&&t.contentEditable=="false")return!1;e=l<0?J_(t):0}else return!1}}function J_(t){return t.nodeType==3?t.nodeValue.length:t.childNodes.length}function cS(t,e){let o=e?t.left:t.right;return{left:o,right:o,top:t.top,bottom:t.bottom}}function L9(t){return{left:0,right:t.innerWidth,top:0,bottom:t.innerHeight}}function X2(t,e){let o=e.width/t.offsetWidth,_=e.height/t.offsetHeight;return(o>.995&&o<1.005||!isFinite(o)||Math.abs(e.width-t.offsetWidth)<1)&&(o=1),(_>.995&&_<1.005||!isFinite(_)||Math.abs(e.height-t.offsetHeight)<1)&&(_=1),{scaleX:o,scaleY:_}}function f9(t,e,o,_,l,c,T,E){let u=t.ownerDocument,d=u.defaultView||window;for(let O=t,h=!1;O&&!h;)if(O.nodeType==1){let I,S=O==u.body,L=1,p=1;if(S)I=L9(d);else{if(/^(fixed|sticky)$/.test(getComputedStyle(O).position)&&(h=!0),O.scrollHeight<=O.clientHeight&&O.scrollWidth<=O.clientWidth){O=O.assignedSlot||O.parentNode;continue}let A=O.getBoundingClientRect();({scaleX:L,scaleY:p}=X2(O,A)),I={left:A.left,right:A.left+O.clientWidth*L,top:A.top,bottom:A.top+O.clientHeight*p}}let C=0,m=0;if(l=="nearest")e.top<I.top?(m=-(I.top-e.top+T),o>0&&e.bottom>I.bottom+m&&(m=e.bottom-I.bottom+m+T)):e.bottom>I.bottom&&(m=e.bottom-I.bottom+T,o<0&&e.top-m<I.top&&(m=-(I.top+m-e.top+T)));else{let A=e.bottom-e.top,b=I.bottom-I.top;m=(l=="center"&&A<=b?e.top+A/2-b/2:l=="start"||l=="center"&&o<0?e.top-T:e.bottom-b+T)-I.top}if(_=="nearest"?e.left<I.left?(C=-(I.left-e.left+c),o>0&&e.right>I.right+C&&(C=e.right-I.right+C+c)):e.right>I.right&&(C=e.right-I.right+c,o<0&&e.left<I.left+C&&(C=-(I.left+C-e.left+c))):C=(_=="center"?e.left+(e.right-e.left)/2-(I.right-I.left)/2:_=="start"==E?e.left-c:e.right-(I.right-I.left)+c)-I.left,C||m)if(S)d.scrollBy(C,m);else{let A=0,b=0;if(m){let N=O.scrollTop;O.scrollTop+=m/p,b=(O.scrollTop-N)*p}if(C){let N=O.scrollLeft;O.scrollLeft+=C/L,A=(O.scrollLeft-N)*L}e={left:e.left-A,top:e.top-b,right:e.right-A,bottom:e.bottom-b},A&&Math.abs(A-C)<1&&(_="nearest"),b&&Math.abs(b-m)<1&&(l="nearest")}if(S)break;O=O.assignedSlot||O.parentNode}else if(O.nodeType==11)O=O.host;else break}function m9(t){let e=t.ownerDocument;for(let o=t.parentNode;o&&o!=e.body;)if(o.nodeType==1){if(o.scrollHeight>o.clientHeight||o.scrollWidth>o.clientWidth)return o;o=o.assignedSlot||o.parentNode}else if(o.nodeType==11)o=o.host;else break;return null}class C9{constructor(){this.anchorNode=null,this.anchorOffset=0,this.focusNode=null,this.focusOffset=0}eq(e){return this.anchorNode==e.anchorNode&&this.anchorOffset==e.anchorOffset&&this.focusNode==e.focusNode&&this.focusOffset==e.focusOffset}setRange(e){let{anchorNode:o,focusNode:_}=e;this.set(o,Math.min(e.anchorOffset,o?J_(o):0),_,Math.min(e.focusOffset,_?J_(_):0))}set(e,o,_,l){this.anchorNode=e,this.anchorOffset=o,this.focusNode=_,this.focusOffset=l}}let iE=null;function Y2(t){if(t.setActive)return t.setActive();if(iE)return t.focus(iE);let e=[];for(let o=t;o&&(e.push(o,o.scrollTop,o.scrollLeft),o!=o.ownerDocument);o=o.parentNode);if(t.focus(iE==null?{get preventScroll(){return iE={preventScroll:!0},!0}}:void 0),!iE){iE=!1;for(let o=0;o<e.length;){let _=e[o++],l=e[o++],c=e[o++];_.scrollTop!=l&&(_.scrollTop=l),_.scrollLeft!=c&&(_.scrollLeft=c)}}}let uB;function Hc(t,e,o=e){let _=uB||(uB=document.createRange());return _.setEnd(t,o),_.setStart(t,e),_}function PE(t,e,o){let _={key:e,code:e,keyCode:o,which:o,cancelable:!0},l=new KeyboardEvent("keydown",_);l.synthetic=!0,t.dispatchEvent(l);let c=new KeyboardEvent("keyup",_);return c.synthetic=!0,t.dispatchEvent(c),l.defaultPrevented||c.defaultPrevented}function A9(t){for(;t;){if(t&&(t.nodeType==9||t.nodeType==11&&t.host))return t;t=t.assignedSlot||t.parentNode}return null}function K2(t){for(;t.attributes.length;)t.removeAttributeNode(t.attributes[0])}function b9(t,e){let o=e.focusNode,_=e.focusOffset;if(!o||e.anchorNode!=o||e.anchorOffset!=_)return!1;for(_=Math.min(_,J_(o));;)if(_){if(o.nodeType!=1)return!1;let l=o.childNodes[_-1];l.contentEditable=="false"?_--:(o=l,_=J_(o))}else{if(o==t)return!0;_=Id(o),o=o.parentNode}}function z2(t){return t.scrollTop>Math.max(1,t.scrollHeight-t.clientHeight-4)}class Mi{constructor(e,o,_=!0){this.node=e,this.offset=o,this.precise=_}static before(e,o){return new Mi(e.parentNode,Id(e),o)}static after(e,o){return new Mi(e.parentNode,Id(e)+1,o)}}const mP=[];class Es{constructor(){this.parent=null,this.dom=null,this.flags=2}get overrideDOMText(){return null}get posAtStart(){return this.parent?this.parent.posBefore(this):0}get posAtEnd(){return this.posAtStart+this.length}posBefore(e){let o=this.posAtStart;for(let _ of this.children){if(_==e)return o;o+=_.length+_.breakAfter}throw new RangeError("Invalid child in posBefore")}posAfter(e){return this.posBefore(e)+e.length}sync(e,o){if(this.flags&2){let _=this.dom,l=null,c;for(let T of this.children){if(T.flags&7){if(!T.dom&&(c=l?l.nextSibling:_.firstChild)){let E=Es.get(c);(!E||!E.parent&&E.canReuseDOM(T))&&T.reuseDOM(c)}T.sync(e,o),T.flags&=-8}if(c=l?l.nextSibling:_.firstChild,o&&!o.written&&o.node==_&&c!=T.dom&&(o.written=!0),T.dom.parentNode==_)for(;c&&c!=T.dom;)c=gB(c);else _.insertBefore(T.dom,c);l=T.dom}for(c=l?l.nextSibling:_.firstChild,c&&o&&o.node==_&&(o.written=!0);c;)c=gB(c)}else if(this.flags&1)for(let _ of this.children)_.flags&7&&(_.sync(e,o),_.flags&=-8)}reuseDOM(e){}localPosFromDOM(e,o){let _;if(e==this.dom)_=this.dom.childNodes[o];else{let l=J_(e)==0?0:o==0?-1:1;for(;;){let c=e.parentNode;if(c==this.dom)break;l==0&&c.firstChild!=c.lastChild&&(e==c.firstChild?l=-1:l=1),e=c}l<0?_=e:_=e.nextSibling}if(_==this.dom.firstChild)return 0;for(;_&&!Es.get(_);)_=_.nextSibling;if(!_)return this.length;for(let l=0,c=0;;l++){let T=this.children[l];if(T.dom==_)return c;c+=T.length+T.breakAfter}}domBoundsAround(e,o,_=0){let l=-1,c=-1,T=-1,E=-1;for(let u=0,d=_,O=_;u<this.children.length;u++){let h=this.children[u],I=d+h.length;if(d<e&&I>o)return h.domBoundsAround(e,o,d);if(I>=e&&l==-1&&(l=u,c=d),d>o&&h.dom.parentNode==this.dom){T=u,E=O;break}O=I,d=I+h.breakAfter}return{from:c,to:E<0?_+this.length:E,startDOM:(l?this.children[l-1].dom.nextSibling:null)||this.dom.firstChild,endDOM:T<this.children.length&&T>=0?this.children[T].dom:null}}markDirty(e=!1){this.flags|=2,this.markParentsDirty(e)}markParentsDirty(e){for(let o=this.parent;o;o=o.parent){if(e&&(o.flags|=2),o.flags&1)return;o.flags|=1,e=!1}}setParent(e){this.parent!=e&&(this.parent=e,this.flags&7&&this.markParentsDirty(!0))}setDOM(e){this.dom!=e&&(this.dom&&(this.dom.cmView=null),this.dom=e,e.cmView=this)}get rootView(){for(let e=this;;){let o=e.parent;if(!o)return e;e=o}}replaceChildren(e,o,_=mP){this.markDirty();for(let l=e;l<o;l++){let c=this.children[l];c.parent==this&&_.indexOf(c)<0&&c.destroy()}this.children.splice(e,o-e,..._);for(let l=0;l<_.length;l++)_[l].setParent(this)}ignoreMutation(e){return!1}ignoreEvent(e){return!1}childCursor(e=this.length){return new Z2(this.children,e,this.children.length)}childPos(e,o=1){return this.childCursor().findPos(e,o)}toString(){let e=this.constructor.name.replace("View","");return e+(this.children.length?"("+this.children.join()+")":this.length?"["+(e=="Text"?this.text:this.length)+"]":"")+(this.breakAfter?"#":"")}static get(e){return e.cmView}get isEditable(){return!0}get isWidget(){return!1}get isHidden(){return!1}merge(e,o,_,l,c,T){return!1}become(e){return!1}canReuseDOM(e){return e.constructor==this.constructor&&!((this.flags|e.flags)&8)}getSide(){return 0}destroy(){for(let e of this.children)e.parent==this&&e.destroy();this.parent=null}}Es.prototype.breakAfter=0;function gB(t){let e=t.nextSibling;return t.parentNode.removeChild(t),e}class Z2{constructor(e,o,_){this.children=e,this.pos=o,this.i=_,this.off=0}findPos(e,o=1){for(;;){if(e>this.pos||e==this.pos&&(o>0||this.i==0||this.children[this.i-1].breakAfter))return this.off=e-this.pos,this;let _=this.children[--this.i];this.pos-=_.length+_.breakAfter}}}function j2(t,e,o,_,l,c,T,E,u){let{children:d}=t,O=d.length?d[e]:null,h=c.length?c[c.length-1]:null,I=h?h.breakAfter:T;if(!(e==_&&O&&!T&&!I&&c.length<2&&O.merge(o,l,c.length?h:null,o==0,E,u))){if(_<d.length){let S=d[_];S&&(l<S.length||S.breakAfter&&(h!=null&&h.breakAfter))?(e==_&&(S=S.split(l),l=0),!I&&h&&S.merge(0,l,h,!0,0,u)?c[c.length-1]=S:((l||S.children.length&&!S.children[0].length)&&S.merge(0,l,null,!1,0,u),c.push(S))):S!=null&&S.breakAfter&&(h?h.breakAfter=1:T=1),_++}for(O&&(O.breakAfter=T,o>0&&(!T&&c.length&&O.merge(o,O.length,c[0],!1,E,0)?O.breakAfter=c.shift().breakAfter:(o<O.length||O.children.length&&O.children[O.children.length-1].length==0)&&O.merge(o,O.length,null,!1,E,0),e++));e<_&&c.length;)if(d[_-1].become(c[c.length-1]))_--,c.pop(),u=c.length?0:E;else if(d[e].become(c[0]))e++,c.shift(),E=c.length?0:u;else break;!c.length&&e&&_<d.length&&!d[e-1].breakAfter&&d[_].merge(0,0,d[e-1],!1,E,u)&&e--,(e<_||c.length)&&t.replaceChildren(e,_,c)}}function q2(t,e,o,_,l,c){let T=t.childCursor(),{i:E,off:u}=T.findPos(o,1),{i:d,off:O}=T.findPos(e,-1),h=e-o;for(let I of _)h+=I.length;t.length+=h,j2(t,d,O,E,u,_,0,l,c)}let pn=typeof navigator<"u"?navigator:{userAgent:"",vendor:"",platform:""},XA=typeof document<"u"?document:{documentElement:{style:{}}};const YA=/Edge\/(\d+)/.exec(pn.userAgent),Q2=/MSIE \d/.test(pn.userAgent),KA=/Trident\/(?:[7-9]|\d{2,})\..*rv:(\d+)/.exec(pn.userAgent),TS=!!(Q2||KA||YA),dB=!TS&&/gecko\/(\d+)/i.test(pn.userAgent),aC=!TS&&/Chrome\/(\d+)/.exec(pn.userAgent),OB="webkitFontSmoothing"in XA.documentElement.style,J2=!TS&&/Apple Computer/.test(pn.vendor),hB=J2&&(/Mobile\/\w+/.test(pn.userAgent)||pn.maxTouchPoints>2);var zt={mac:hB||/Mac/.test(pn.platform),windows:/Win/.test(pn.platform),linux:/Linux|X11/.test(pn.platform),ie:TS,ie_version:Q2?XA.documentMode||6:KA?+KA[1]:YA?+YA[1]:0,gecko:dB,gecko_version:dB?+(/Firefox\/(\d+)/.exec(pn.userAgent)||[0,0])[1]:0,chrome:!!aC,chrome_version:aC?+aC[1]:0,ios:hB,android:/Android\b/.test(pn.userAgent),webkit:OB,safari:J2,webkit_version:OB?+(/\bAppleWebKit\/(\d+)/.exec(navigator.userAgent)||[0,0])[1]:0,tabSize:XA.documentElement.style.tabSize!=null?"tab-size":"-moz-tab-size"};const N9=256;class el extends Es{constructor(e){super(),this.text=e}get length(){return this.text.length}createDOM(e){this.setDOM(e||document.createTextNode(this.text))}sync(e,o){this.dom||this.createDOM(),this.dom.nodeValue!=this.text&&(o&&o.node==this.dom&&(o.written=!0),this.dom.nodeValue=this.text)}reuseDOM(e){e.nodeType==3&&this.createDOM(e)}merge(e,o,_){return this.flags&8||_&&(!(_ instanceof el)||this.length-(o-e)+_.length>N9||_.flags&8)?!1:(this.text=this.text.slice(0,e)+(_?_.text:"")+this.text.slice(o),this.markDirty(),!0)}split(e){let o=new el(this.text.slice(e));return this.text=this.text.slice(0,e),this.markDirty(),o.flags|=this.flags&8,o}localPosFromDOM(e,o){return e==this.dom?o:o?this.text.length:0}domAtPos(e){return new Mi(this.dom,e)}domBoundsAround(e,o,_){return{from:_,to:_+this.length,startDOM:this.dom,endDOM:this.dom.nextSibling}}coordsAt(e,o){return P9(this.dom,e,o)}}class tl extends Es{constructor(e,o=[],_=0){super(),this.mark=e,this.children=o,this.length=_;for(let l of o)l.setParent(this)}setAttrs(e){if(K2(e),this.mark.class&&(e.className=this.mark.class),this.mark.attrs)for(let o in this.mark.attrs)e.setAttribute(o,this.mark.attrs[o]);return e}canReuseDOM(e){return super.canReuseDOM(e)&&!((this.flags|e.flags)&8)}reuseDOM(e){e.nodeName==this.mark.tagName.toUpperCase()&&(this.setDOM(e),this.flags|=6)}sync(e,o){this.dom?this.flags&4&&this.setAttrs(this.dom):this.setDOM(this.setAttrs(document.createElement(this.mark.tagName))),super.sync(e,o)}merge(e,o,_,l,c,T){return _&&(!(_ instanceof tl&&_.mark.eq(this.mark))||e&&c<=0||o<this.length&&T<=0)?!1:(q2(this,e,o,_?_.children.slice():[],c-1,T-1),this.markDirty(),!0)}split(e){let o=[],_=0,l=-1,c=0;for(let E of this.children){let u=_+E.length;u>e&&o.push(_<e?E.split(e-_):E),l<0&&_>=e&&(l=c),_=u,c++}let T=this.length-e;return this.length=e,l>-1&&(this.children.length=l,this.markDirty()),new tl(this.mark,o,T)}domAtPos(e){return eF(this,e)}coordsAt(e,o){return oF(this,e,o)}}function P9(t,e,o){let _=t.nodeValue.length;e>_&&(e=_);let l=e,c=e,T=0;e==0&&o<0||e==_&&o>=0?zt.chrome||zt.gecko||(e?(l--,T=1):c<_&&(c++,T=-1)):o<0?l--:c<_&&c++;let E=Hc(t,l,c).getClientRects();if(!E.length)return null;let u=E[(T?T<0:o>=0)?0:E.length-1];return zt.safari&&!T&&u.width==0&&(u=Array.prototype.find.call(E,d=>d.width)||u),T?cS(u,T<0):u||null}class ta extends Es{static create(e,o,_){return new ta(e,o,_)}constructor(e,o,_){super(),this.widget=e,this.length=o,this.side=_,this.prevWidget=null}split(e){let o=ta.create(this.widget,this.length-e,this.side);return this.length-=e,o}sync(e){(!this.dom||!this.widget.updateDOM(this.dom,e))&&(this.dom&&this.prevWidget&&this.prevWidget.destroy(this.dom),this.prevWidget=null,this.setDOM(this.widget.toDOM(e)),this.widget.editable||(this.dom.contentEditable="false"))}getSide(){return this.side}merge(e,o,_,l,c,T){return _&&(!(_ instanceof ta)||!this.widget.compare(_.widget)||e>0&&c<=0||o<this.length&&T<=0)?!1:(this.length=e+(_?_.length:0)+(this.length-o),!0)}become(e){return e instanceof ta&&e.side==this.side&&this.widget.constructor==e.widget.constructor?(this.widget.compare(e.widget)||this.markDirty(!0),this.dom&&!this.prevWidget&&(this.prevWidget=this.widget),this.widget=e.widget,this.length=e.length,!0):!1}ignoreMutation(){return!0}ignoreEvent(e){return this.widget.ignoreEvent(e)}get overrideDOMText(){if(this.length==0)return xo.empty;let e=this;for(;e.parent;)e=e.parent;let{view:o}=e,_=o&&o.state.doc,l=this.posAtStart;return _?_.slice(l,l+this.length):xo.empty}domAtPos(e){return(this.length?e==0:this.side>0)?Mi.before(this.dom):Mi.after(this.dom,e==this.length)}domBoundsAround(){return null}coordsAt(e,o){let _=this.widget.coordsAt(this.dom,e,o);if(_)return _;let l=this.dom.getClientRects(),c=null;if(!l.length)return null;let T=this.side?this.side<0:e>0;for(let E=T?l.length-1:0;c=l[E],!(e>0?E==0:E==l.length-1||c.top<c.bottom);E+=T?-1:1);return cS(c,!T)}get isEditable(){return!1}get isWidget(){return!0}get isHidden(){return this.widget.isHidden}destroy(){super.destroy(),this.dom&&this.widget.destroy(this.dom)}}class KE extends Es{constructor(e){super(),this.side=e}get length(){return 0}merge(){return!1}become(e){return e instanceof KE&&e.side==this.side}split(){return new KE(this.side)}sync(){if(!this.dom){let e=document.createElement("img");e.className="cm-widgetBuffer",e.setAttribute("aria-hidden","true"),this.setDOM(e)}}getSide(){return this.side}domAtPos(e){return this.side>0?Mi.before(this.dom):Mi.after(this.dom)}localPosFromDOM(){return 0}domBoundsAround(){return null}coordsAt(e){return this.dom.getBoundingClientRect()}get overrideDOMText(){return xo.empty}get isHidden(){return!0}}el.prototype.children=ta.prototype.children=KE.prototype.children=mP;function eF(t,e){let o=t.dom,{children:_}=t,l=0;for(let c=0;l<_.length;l++){let T=_[l],E=c+T.length;if(!(E==c&&T.getSide()<=0)){if(e>c&&e<E&&T.dom.parentNode==o)return T.domAtPos(e-c);if(e<=c)break;c=E}}for(let c=l;c>0;c--){let T=_[c-1];if(T.dom.parentNode==o)return T.domAtPos(T.length)}for(let c=l;c<_.length;c++){let T=_[c];if(T.dom.parentNode==o)return T.domAtPos(0)}return new Mi(o,0)}function tF(t,e,o){let _,{children:l}=t;o>0&&e instanceof tl&&l.length&&(_=l[l.length-1])instanceof tl&&_.mark.eq(e.mark)?tF(_,e.children[0],o-1):(l.push(e),e.setParent(t)),t.length+=e.length}function oF(t,e,o){let _=null,l=-1,c=null,T=-1;function E(d,O){for(let h=0,I=0;h<d.children.length&&I<=O;h++){let S=d.children[h],L=I+S.length;L>=O&&(S.children.length?E(S,O-I):(!c||c.isHidden&&o>0)&&(L>O||I==L&&S.getSide()>0)?(c=S,T=O-I):(I<O||I==L&&S.getSide()<0&&!S.isHidden)&&(_=S,l=O-I)),I=L}}E(t,e);let u=(o<0?_:c)||_||c;return u?u.coordsAt(Math.max(0,u==_?l:T),o):v9(t)}function v9(t){let e=t.dom.lastChild;if(!e)return t.dom.getBoundingClientRect();let o=YE(e);return o[o.length-1]||null}function zA(t,e){for(let o in t)o=="class"&&e.class?e.class+=" "+t.class:o=="style"&&e.style?e.style+=";"+t.style:e[o]=t[o];return e}const MB=Object.create(null);function CP(t,e,o){if(t==e)return!0;t||(t=MB),e||(e=MB);let _=Object.keys(t),l=Object.keys(e);if(_.length-(o&&_.indexOf(o)>-1?1:0)!=l.length-(o&&l.indexOf(o)>-1?1:0))return!1;for(let c of _)if(c!=o&&(l.indexOf(c)==-1||t[c]!==e[c]))return!1;return!0}function ZA(t,e,o){let _=!1;if(e)for(let l in e)o&&l in o||(_=!0,l=="style"?t.style.cssText="":t.removeAttribute(l));if(o)for(let l in o)e&&e[l]==o[l]||(_=!0,l=="style"?t.style.cssText=o[l]:t.setAttribute(l,o[l]));return _}function D9(t){let e=Object.create(null);for(let o=0;o<t.attributes.length;o++){let _=t.attributes[o];e[_.name]=_.value}return e}class xs extends Es{constructor(){super(...arguments),this.children=[],this.length=0,this.prevAttrs=void 0,this.attrs=null,this.breakAfter=0}merge(e,o,_,l,c,T){if(_){if(!(_ instanceof xs))return!1;this.dom||_.transferDOM(this)}return l&&this.setDeco(_?_.attrs:null),q2(this,e,o,_?_.children.slice():[],c,T),!0}split(e){let o=new xs;if(o.breakAfter=this.breakAfter,this.length==0)return o;let{i:_,off:l}=this.childPos(e);l&&(o.append(this.children[_].split(l),0),this.children[_].merge(l,this.children[_].length,null,!1,0,0),_++);for(let c=_;c<this.children.length;c++)o.append(this.children[c],0);for(;_>0&&this.children[_-1].length==0;)this.children[--_].destroy();return this.children.length=_,this.markDirty(),this.length=e,o}transferDOM(e){this.dom&&(this.markDirty(),e.setDOM(this.dom),e.prevAttrs=this.prevAttrs===void 0?this.attrs:this.prevAttrs,this.prevAttrs=void 0,this.dom=null)}setDeco(e){CP(this.attrs,e)||(this.dom&&(this.prevAttrs=this.attrs,this.markDirty()),this.attrs=e)}append(e,o){tF(this,e,o)}addLineDeco(e){let o=e.spec.attributes,_=e.spec.class;o&&(this.attrs=zA(o,this.attrs||{})),_&&(this.attrs=zA({class:_},this.attrs||{}))}domAtPos(e){return eF(this,e)}reuseDOM(e){e.nodeName=="DIV"&&(this.setDOM(e),this.flags|=6)}sync(e,o){var _;this.dom?this.flags&4&&(K2(this.dom),this.dom.className="cm-line",this.prevAttrs=this.attrs?null:void 0):(this.setDOM(document.createElement("div")),this.dom.className="cm-line",this.prevAttrs=this.attrs?null:void 0),this.prevAttrs!==void 0&&(ZA(this.dom,this.prevAttrs,this.attrs),this.dom.classList.add("cm-line"),this.prevAttrs=void 0),super.sync(e,o);let l=this.dom.lastChild;for(;l&&Es.get(l)instanceof tl;)l=l.lastChild;if(!l||!this.length||l.nodeName!="BR"&&((_=Es.get(l))===null||_===void 0?void 0:_.isEditable)==!1&&(!zt.ios||!this.children.some(c=>c instanceof el))){let c=document.createElement("BR");c.cmIgnore=!0,this.dom.appendChild(c)}}measureTextSize(){if(this.children.length==0||this.length>20)return null;let e=0,o;for(let _ of this.children){if(!(_ instanceof el)||/[^ -~]/.test(_.text))return null;let l=YE(_.dom);if(l.length!=1)return null;e+=l[0].width,o=l[0].height}return e?{lineHeight:this.dom.getBoundingClientRect().height,charWidth:e/this.length,textHeight:o}:null}coordsAt(e,o){let _=oF(this,e,o);if(!this.children.length&&_&&this.parent){let{heightOracle:l}=this.parent.view.viewState,c=_.bottom-_.top;if(Math.abs(c-l.lineHeight)<2&&l.textHeight<c){let T=(c-l.textHeight)/2;return{top:_.top+T,bottom:_.bottom-T,left:_.left,right:_.left}}}return _}become(e){return!1}covers(){return!0}static find(e,o){for(let _=0,l=0;_<e.children.length;_++){let c=e.children[_],T=l+c.length;if(T>=o){if(c instanceof xs)return c;if(T>o)break}l=T+c.breakAfter}return null}}class la extends Es{constructor(e,o,_){super(),this.widget=e,this.length=o,this.deco=_,this.breakAfter=0,this.prevWidget=null}merge(e,o,_,l,c,T){return _&&(!(_ instanceof la)||!this.widget.compare(_.widget)||e>0&&c<=0||o<this.length&&T<=0)?!1:(this.length=e+(_?_.length:0)+(this.length-o),!0)}domAtPos(e){return e==0?Mi.before(this.dom):Mi.after(this.dom,e==this.length)}split(e){let o=this.length-e;this.length=e;let _=new la(this.widget,o,this.deco);return _.breakAfter=this.breakAfter,_}get children(){return mP}sync(e){(!this.dom||!this.widget.updateDOM(this.dom,e))&&(this.dom&&this.prevWidget&&this.prevWidget.destroy(this.dom),this.prevWidget=null,this.setDOM(this.widget.toDOM(e)),this.widget.editable||(this.dom.contentEditable="false"))}get overrideDOMText(){return this.parent?this.parent.view.state.doc.slice(this.posAtStart,this.posAtEnd):xo.empty}domBoundsAround(){return null}become(e){return e instanceof la&&e.widget.constructor==this.widget.constructor?(e.widget.compare(this.widget)||this.markDirty(!0),this.dom&&!this.prevWidget&&(this.prevWidget=this.widget),this.widget=e.widget,this.length=e.length,this.deco=e.deco,this.breakAfter=e.breakAfter,!0):!1}ignoreMutation(){return!0}ignoreEvent(e){return this.widget.ignoreEvent(e)}get isEditable(){return!1}get isWidget(){return!0}coordsAt(e,o){return this.widget.coordsAt(this.dom,e,o)}destroy(){super.destroy(),this.dom&&this.widget.destroy(this.dom)}covers(e){let{startSide:o,endSide:_}=this.deco;return o==_?!1:e<0?o<0:_>0}}class h_{eq(e){return!1}updateDOM(e,o){return!1}compare(e){return this==e||this.constructor==e.constructor&&this.eq(e)}get estimatedHeight(){return-1}get lineBreaks(){return 0}ignoreEvent(e){return!0}coordsAt(e,o,_){return null}get isHidden(){return!1}get editable(){return!1}destroy(e){}}var vi=function(t){return t[t.Text=0]="Text",t[t.WidgetBefore=1]="WidgetBefore",t[t.WidgetAfter=2]="WidgetAfter",t[t.WidgetRange=3]="WidgetRange",t}(vi||(vi={}));class eo extends kc{constructor(e,o,_,l){super(),this.startSide=e,this.endSide=o,this.widget=_,this.spec=l}get heightRelevant(){return!1}static mark(e){return new _O(e)}static widget(e){let o=Math.max(-1e4,Math.min(1e4,e.side||0)),_=!!e.block;return o+=_&&!e.inlineOrder?o>0?3e8:-4e8:o>0?1e8:-1e8,new Ra(e,o,o,_,e.widget||null,!1)}static replace(e){let o=!!e.block,_,l;if(e.isBlockGap)_=-5e8,l=4e8;else{let{start:c,end:T}=sF(e,o);_=(c?o?-3e8:-1:5e8)-1,l=(T?o?2e8:1:-6e8)+1}return new Ra(e,_,l,o,e.widget||null,!0)}static line(e){return new lO(e)}static set(e,o=!1){return Bo.of(e,o)}hasHeight(){return this.widget?this.widget.estimatedHeight>-1:!1}}eo.none=Bo.empty;class _O extends eo{constructor(e){let{start:o,end:_}=sF(e);super(o?-1:5e8,_?1:-6e8,null,e),this.tagName=e.tagName||"span",this.class=e.class||"",this.attrs=e.attributes||null}eq(e){var o,_;return this==e||e instanceof _O&&this.tagName==e.tagName&&(this.class||((o=this.attrs)===null||o===void 0?void 0:o.class))==(e.class||((_=e.attrs)===null||_===void 0?void 0:_.class))&&CP(this.attrs,e.attrs,"class")}range(e,o=e){if(e>=o)throw new RangeError("Mark decorations may not be empty");return super.range(e,o)}}_O.prototype.point=!1;class lO extends eo{constructor(e){super(-2e8,-2e8,null,e)}eq(e){return e instanceof lO&&this.spec.class==e.spec.class&&CP(this.spec.attributes,e.spec.attributes)}range(e,o=e){if(o!=e)throw new RangeError("Line decoration ranges must be zero-length");return super.range(e,o)}}lO.prototype.mapMode=li.TrackBefore;lO.prototype.point=!0;class Ra extends eo{constructor(e,o,_,l,c,T){super(o,_,c,e),this.block=l,this.isReplace=T,this.mapMode=l?o<=0?li.TrackBefore:li.TrackAfter:li.TrackDel}get type(){return this.startSide!=this.endSide?vi.WidgetRange:this.startSide<=0?vi.WidgetBefore:vi.WidgetAfter}get heightRelevant(){return this.block||!!this.widget&&(this.widget.estimatedHeight>=5||this.widget.lineBreaks>0)}eq(e){return e instanceof Ra&&U9(this.widget,e.widget)&&this.block==e.block&&this.startSide==e.startSide&&this.endSide==e.endSide}range(e,o=e){if(this.isReplace&&(e>o||e==o&&this.startSide>0&&this.endSide<=0))throw new RangeError("Invalid range for replacement decoration");if(!this.isReplace&&o!=e)throw new RangeError("Widget decorations can only have zero-length ranges");return super.range(e,o)}}Ra.prototype.point=!0;function sF(t,e=!1){let{inclusiveStart:o,inclusiveEnd:_}=t;return o==null&&(o=t.inclusive),_==null&&(_=t.inclusive),{start:o??e,end:_??e}}function U9(t,e){return t==e||!!(t&&e&&t.compare(e))}function jA(t,e,o,_=0){let l=o.length-1;l>=0&&o[l]+_>=t?o[l]=Math.max(o[l],e):o.push(t,e)}class Zg{constructor(e,o,_,l){this.doc=e,this.pos=o,this.end=_,this.disallowBlockEffectsFor=l,this.content=[],this.curLine=null,this.breakAtStart=0,this.pendingBuffer=0,this.bufferMarks=[],this.atCursorPos=!0,this.openStart=-1,this.openEnd=-1,this.text="",this.textOff=0,this.cursor=e.iter(),this.skip=o}posCovered(){if(this.content.length==0)return!this.breakAtStart&&this.doc.lineAt(this.pos).from!=this.pos;let e=this.content[this.content.length-1];return!(e.breakAfter||e instanceof la&&e.deco.endSide<0)}getLine(){return this.curLine||(this.content.push(this.curLine=new xs),this.atCursorPos=!0),this.curLine}flushBuffer(e=this.bufferMarks){this.pendingBuffer&&(this.curLine.append(dM(new KE(-1),e),e.length),this.pendingBuffer=0)}addBlockWidget(e){this.flushBuffer(),this.curLine=null,this.content.push(e)}finish(e){this.pendingBuffer&&e<=this.bufferMarks.length?this.flushBuffer():this.pendingBuffer=0,!this.posCovered()&&!(e&&this.content.length&&this.content[this.content.length-1]instanceof la)&&this.getLine()}buildText(e,o,_){for(;e>0;){if(this.textOff==this.text.length){let{value:c,lineBreak:T,done:E}=this.cursor.next(this.skip);if(this.skip=0,E)throw new Error("Ran out of text content when drawing inline views");if(T){this.posCovered()||this.getLine(),this.content.length?this.content[this.content.length-1].breakAfter=1:this.breakAtStart=1,this.flushBuffer(),this.curLine=null,this.atCursorPos=!0,e--;continue}else this.text=c,this.textOff=0}let l=Math.min(this.text.length-this.textOff,e,512);this.flushBuffer(o.slice(o.length-_)),this.getLine().append(dM(new el(this.text.slice(this.textOff,this.textOff+l)),o),_),this.atCursorPos=!0,this.textOff+=l,e-=l,_=0}}span(e,o,_,l){this.buildText(o-e,_,l),this.pos=o,this.openStart<0&&(this.openStart=l)}point(e,o,_,l,c,T){if(this.disallowBlockEffectsFor[T]&&_ instanceof Ra){if(_.block)throw new RangeError("Block decorations may not be specified via plugins");if(o>this.doc.lineAt(this.pos).to)throw new RangeError("Decorations that replace line breaks may not be specified via plugins")}let E=o-e;if(_ instanceof Ra)if(_.block)_.startSide>0&&!this.posCovered()&&this.getLine(),this.addBlockWidget(new la(_.widget||new RB("div"),E,_));else{let u=ta.create(_.widget||new RB("span"),E,E?0:_.startSide),d=this.atCursorPos&&!u.isEditable&&c<=l.length&&(e<o||_.startSide>0),O=!u.isEditable&&(e<o||c>l.length||_.startSide<=0),h=this.getLine();this.pendingBuffer==2&&!d&&!u.isEditable&&(this.pendingBuffer=0),this.flushBuffer(l),d&&(h.append(dM(new KE(1),l),c),c=l.length+Math.max(0,c-l.length)),h.append(dM(u,l),c),this.atCursorPos=O,this.pendingBuffer=O?e<o||c>l.length?1:2:0,this.pendingBuffer&&(this.bufferMarks=l.slice())}else this.doc.lineAt(this.pos).from==this.pos&&this.getLine().addLineDeco(_);E&&(this.textOff+E<=this.text.length?this.textOff+=E:(this.skip+=E-(this.text.length-this.textOff),this.text="",this.textOff=0),this.pos=o),this.openStart<0&&(this.openStart=c)}static build(e,o,_,l,c){let T=new Zg(e,o,_,c);return T.openEnd=Bo.spans(l,o,_,T),T.openStart<0&&(T.openStart=T.openEnd),T.finish(T.openEnd),T}}function dM(t,e){for(let o of e)t=new tl(o,[t],t.length);return t}class RB extends h_{constructor(e){super(),this.tag=e}eq(e){return e.tag==this.tag}toDOM(){return document.createElement(this.tag)}updateDOM(e){return e.nodeName.toLowerCase()==this.tag}get isHidden(){return!0}}var us=function(t){return t[t.LTR=0]="LTR",t[t.RTL=1]="RTL",t}(us||(us={}));const xc=us.LTR,AP=us.RTL;function iF(t){let e=[];for(let o=0;o<t.length;o++)e.push(1<<+t[o]);return e}const y9=iF("88888888888888888888888888888888888666888888787833333333337888888000000000000000000000000008888880000000000000000000000000088888888888888888888888888888888888887866668888088888663380888308888800000000000000000000000800000000000000000000000000000008"),$9=iF("4444448826627288999999999992222222222222222222222222222222222222222222222229999999999999999999994444444444644222822222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222999999949999999229989999223333333333"),qA=Object.create(null),zr=[];for(let t of["()","[]","{}"]){let e=t.charCodeAt(0),o=t.charCodeAt(1);qA[e]=o,qA[o]=-e}function nF(t){return t<=247?y9[t]:1424<=t&&t<=1524?2:1536<=t&&t<=1785?$9[t-1536]:1774<=t&&t<=2220?4:8192<=t&&t<=8204?256:64336<=t&&t<=65023?4:1}const B9=/[\u0590-\u05f4\u0600-\u06ff\u0700-\u08ac\ufb50-\ufdff]/;class oa{get dir(){return this.level%2?AP:xc}constructor(e,o,_){this.from=e,this.to=o,this.level=_}side(e,o){return this.dir==o==e?this.to:this.from}forward(e,o){return e==(this.dir==o)}static find(e,o,_,l){let c=-1;for(let T=0;T<e.length;T++){let E=e[T];if(E.from<=o&&E.to>=o){if(E.level==_)return T;(c<0||(l!=0?l<0?E.from<o:E.to>o:e[c].level>E.level))&&(c=T)}}if(c<0)throw new RangeError("Index out of range");return c}}function rF(t,e){if(t.length!=e.length)return!1;for(let o=0;o<t.length;o++){let _=t[o],l=e[o];if(_.from!=l.from||_.to!=l.to||_.direction!=l.direction||!rF(_.inner,l.inner))return!1}return!0}const os=[];function w9(t,e,o,_,l){for(let c=0;c<=_.length;c++){let T=c?_[c-1].to:e,E=c<_.length?_[c].from:o,u=c?256:l;for(let d=T,O=u,h=u;d<E;d++){let I=nF(t.charCodeAt(d));I==512?I=O:I==8&&h==4&&(I=16),os[d]=I==4?2:I,I&7&&(h=I),O=I}for(let d=T,O=u,h=u;d<E;d++){let I=os[d];if(I==128)d<E-1&&O==os[d+1]&&O&24?I=os[d]=O:os[d]=256;else if(I==64){let S=d+1;for(;S<E&&os[S]==64;)S++;let L=d&&O==8||S<o&&os[S]==8?h==1?1:8:256;for(let p=d;p<S;p++)os[p]=L;d=S-1}else I==8&&h==1&&(os[d]=1);O=I,I&7&&(h=I)}}}function G9(t,e,o,_,l){let c=l==1?2:1;for(let T=0,E=0,u=0;T<=_.length;T++){let d=T?_[T-1].to:e,O=T<_.length?_[T].from:o;for(let h=d,I,S,L;h<O;h++)if(S=qA[I=t.charCodeAt(h)])if(S<0){for(let p=E-3;p>=0;p-=3)if(zr[p+1]==-S){let C=zr[p+2],m=C&2?l:C&4?C&1?c:l:0;m&&(os[h]=os[zr[p]]=m),E=p;break}}else{if(zr.length==189)break;zr[E++]=h,zr[E++]=I,zr[E++]=u}else if((L=os[h])==2||L==1){let p=L==l;u=p?0:1;for(let C=E-3;C>=0;C-=3){let m=zr[C+2];if(m&2)break;if(p)zr[C+2]|=2;else{if(m&4)break;zr[C+2]|=4}}}}}function k9(t,e,o,_){for(let l=0,c=_;l<=o.length;l++){let T=l?o[l-1].to:t,E=l<o.length?o[l].from:e;for(let u=T;u<E;){let d=os[u];if(d==256){let O=u+1;for(;;)if(O==E){if(l==o.length)break;O=o[l++].to,E=l<o.length?o[l].from:e}else if(os[O]==256)O++;else break;let h=c==1,I=(O<e?os[O]:_)==1,S=h==I?h?1:2:_;for(let L=O,p=l,C=p?o[p-1].to:t;L>u;)L==C&&(L=o[--p].from,C=p?o[p-1].to:t),os[--L]=S;u=O}else c=d,u++}}}function QA(t,e,o,_,l,c,T){let E=_%2?2:1;if(_%2==l%2)for(let u=e,d=0;u<o;){let O=!0,h=!1;if(d==c.length||u<c[d].from){let p=os[u];p!=E&&(O=!1,h=p==16)}let I=!O&&E==1?[]:null,S=O?_:_+1,L=u;e:for(;;)if(d<c.length&&L==c[d].from){if(h)break e;let p=c[d];if(!O)for(let C=p.to,m=d+1;;){if(C==o)break e;if(m<c.length&&c[m].from==C)C=c[m++].to;else{if(os[C]==E)break e;break}}if(d++,I)I.push(p);else{p.from>u&&T.push(new oa(u,p.from,S));let C=p.direction==xc!=!(S%2);JA(t,C?_+1:_,l,p.inner,p.from,p.to,T),u=p.to}L=p.to}else{if(L==o||(O?os[L]!=E:os[L]==E))break;L++}I?QA(t,u,L,_+1,l,I,T):u<L&&T.push(new oa(u,L,S)),u=L}else for(let u=o,d=c.length;u>e;){let O=!0,h=!1;if(!d||u>c[d-1].to){let p=os[u-1];p!=E&&(O=!1,h=p==16)}let I=!O&&E==1?[]:null,S=O?_:_+1,L=u;e:for(;;)if(d&&L==c[d-1].to){if(h)break e;let p=c[--d];if(!O)for(let C=p.from,m=d;;){if(C==e)break e;if(m&&c[m-1].to==C)C=c[--m].from;else{if(os[C-1]==E)break e;break}}if(I)I.push(p);else{p.to<u&&T.push(new oa(p.to,u,S));let C=p.direction==xc!=!(S%2);JA(t,C?_+1:_,l,p.inner,p.from,p.to,T),u=p.from}L=p.from}else{if(L==e||(O?os[L-1]!=E:os[L-1]==E))break;L--}I?QA(t,L,u,_+1,l,I,T):L<u&&T.push(new oa(L,u,S)),u=L}}function JA(t,e,o,_,l,c,T){let E=e%2?2:1;w9(t,l,c,_,E),G9(t,l,c,_,E),k9(l,c,_,E),QA(t,l,c,e,o,_,T)}function H9(t,e,o){if(!t)return[new oa(0,0,e==AP?1:0)];if(e==xc&&!o.length&&!B9.test(t))return _F(t.length);if(o.length)for(;t.length>os.length;)os[os.length]=256;let _=[],l=e==xc?0:1;return JA(t,l,l,o,0,t.length,_),_}function _F(t){return[new oa(0,t,0)]}let lF="";function x9(t,e,o,_,l){var c;let T=_.head-t.from,E=oa.find(e,T,(c=_.bidiLevel)!==null&&c!==void 0?c:-1,_.assoc),u=e[E],d=u.side(l,o);if(T==d){let I=E+=l?1:-1;if(I<0||I>=e.length)return null;u=e[E=I],T=u.side(!l,o),d=u.side(l,o)}let O=Ti(t.text,T,u.forward(l,o));(O<u.from||O>u.to)&&(O=d),lF=t.text.slice(Math.min(T,O),Math.max(T,O));let h=E==(l?e.length-1:0)?null:e[E+(l?1:-1)];return h&&O==d&&h.level+(l?0:1)<u.level?ct.cursor(h.side(!l,o)+t.from,h.forward(l,o)?1:-1,h.level):ct.cursor(O+t.from,u.forward(l,o)?-1:1,u.level)}function F9(t,e,o){for(let _=e;_<o;_++){let l=nF(t.charCodeAt(_));if(l==1)return xc;if(l==2||l==4)return AP}return xc}const aF=Ft.define(),cF=Ft.define(),TF=Ft.define(),EF=Ft.define(),eb=Ft.define(),uF=Ft.define(),gF=Ft.define(),dF=Ft.define({combine:t=>t.some(e=>e)}),OF=Ft.define({combine:t=>t.some(e=>e)});class vE{constructor(e,o="nearest",_="nearest",l=5,c=5,T=!1){this.range=e,this.y=o,this.x=_,this.yMargin=l,this.xMargin=c,this.isSnapshot=T}map(e){return e.empty?this:new vE(this.range.map(e),this.y,this.x,this.yMargin,this.xMargin,this.isSnapshot)}clip(e){return this.range.to<=e.doc.length?this:new vE(ct.cursor(e.doc.length),this.y,this.x,this.yMargin,this.xMargin,this.isSnapshot)}}const OM=uo.define({map:(t,e)=>t.map(e)});function xn(t,e,o){let _=t.facet(EF);_.length?_[0](e):window.onerror?window.onerror(String(e),o,void 0,void 0,e):o?console.error(o+":",e):console.error(e)}const ES=Ft.define({combine:t=>t.length?t[0]:!0});let V9=0;const $g=Ft.define();class Ps{constructor(e,o,_,l,c){this.id=e,this.create=o,this.domEventHandlers=_,this.domEventObservers=l,this.extension=c(this)}static define(e,o){const{eventHandlers:_,eventObservers:l,provide:c,decorations:T}=o||{};return new Ps(V9++,e,_,l,E=>{let u=[$g.of(E)];return T&&u.push(Sd.of(d=>{let O=d.plugin(E);return O?T(O):eo.none})),c&&u.push(c(E)),u})}static fromClass(e,o){return Ps.define(_=>new e(_),o)}}class cC{constructor(e){this.spec=e,this.mustUpdate=null,this.value=null}update(e){if(this.value){if(this.mustUpdate){let o=this.mustUpdate;if(this.mustUpdate=null,this.value.update)try{this.value.update(o)}catch(_){if(xn(o.state,_,"CodeMirror plugin crashed"),this.value.destroy)try{this.value.destroy()}catch{}this.deactivate()}}}else if(this.spec)try{this.value=this.spec.create(e)}catch(o){xn(e.state,o,"CodeMirror plugin crashed"),this.deactivate()}return this}destroy(e){var o;if(!((o=this.value)===null||o===void 0)&&o.destroy)try{this.value.destroy()}catch(_){xn(e.state,_,"CodeMirror plugin crashed")}}deactivate(){this.spec=this.value=null}}const hF=Ft.define(),bP=Ft.define(),Sd=Ft.define(),MF=Ft.define(),NP=Ft.define(),RF=Ft.define();function IB(t,e){let o=t.state.facet(RF);if(!o.length)return o;let _=o.map(c=>c instanceof Function?c(t):c),l=[];return Bo.spans(_,e.from,e.to,{point(){},span(c,T,E,u){let d=c-e.from,O=T-e.from,h=l;for(let I=E.length-1;I>=0;I--,u--){let S=E[I].spec.bidiIsolate,L;if(S==null&&(S=F9(e.text,d,O)),u>0&&h.length&&(L=h[h.length-1]).to==d&&L.direction==S)L.to=O,h=L.inner;else{let p={from:d,to:O,direction:S,inner:[]};h.push(p),h=p.inner}}}}),l}const IF=Ft.define();function SF(t){let e=0,o=0,_=0,l=0;for(let c of t.state.facet(IF)){let T=c(t);T&&(T.left!=null&&(e=Math.max(e,T.left)),T.right!=null&&(o=Math.max(o,T.right)),T.top!=null&&(_=Math.max(_,T.top)),T.bottom!=null&&(l=Math.max(l,T.bottom)))}return{left:e,right:o,top:_,bottom:l}}const Bg=Ft.define();class Fn{constructor(e,o,_,l){this.fromA=e,this.toA=o,this.fromB=_,this.toB=l}join(e){return new Fn(Math.min(this.fromA,e.fromA),Math.max(this.toA,e.toA),Math.min(this.fromB,e.fromB),Math.max(this.toB,e.toB))}addToSet(e){let o=e.length,_=this;for(;o>0;o--){let l=e[o-1];if(!(l.fromA>_.toA)){if(l.toA<_.fromA)break;_=_.join(l),e.splice(o-1,1)}}return e.splice(o,0,_),e}static extendWithRanges(e,o){if(o.length==0)return e;let _=[];for(let l=0,c=0,T=0,E=0;;l++){let u=l==e.length?null:e[l],d=T-E,O=u?u.fromB:1e9;for(;c<o.length&&o[c]<O;){let h=o[c],I=o[c+1],S=Math.max(E,h),L=Math.min(O,I);if(S<=L&&new Fn(S+d,L+d,S,L).addToSet(_),I>O)break;c+=2}if(!u)return _;new Fn(u.fromA,u.toA,u.fromB,u.toB).addToSet(_),T=u.toA,E=u.toB}}}class iI{constructor(e,o,_){this.view=e,this.state=o,this.transactions=_,this.flags=0,this.startState=e.state,this.changes=Fs.empty(this.startState.doc.length);for(let c of _)this.changes=this.changes.compose(c.changes);let l=[];this.changes.iterChangedRanges((c,T,E,u)=>l.push(new Fn(c,T,E,u))),this.changedRanges=l}static create(e,o,_){return new iI(e,o,_)}get viewportChanged(){return(this.flags&4)>0}get heightChanged(){return(this.flags&2)>0}get geometryChanged(){return this.docChanged||(this.flags&10)>0}get focusChanged(){return(this.flags&1)>0}get docChanged(){return!this.changes.empty}get selectionSet(){return this.transactions.some(e=>e.selection)}get empty(){return this.flags==0&&this.transactions.length==0}}class SB extends Es{get length(){return this.view.state.doc.length}constructor(e){super(),this.view=e,this.decorations=[],this.dynamicDecorationMap=[],this.domChanged=null,this.hasComposition=null,this.markedForComposition=new Set,this.minWidth=0,this.minWidthFrom=0,this.minWidthTo=0,this.impreciseAnchor=null,this.impreciseHead=null,this.forceSelection=!1,this.lastUpdate=Date.now(),this.setDOM(e.contentDOM),this.children=[new xs],this.children[0].setParent(this),this.updateDeco(),this.updateInner([new Fn(0,0,0,e.state.doc.length)],0,null)}update(e){var o;let _=e.changedRanges;this.minWidth>0&&_.length&&(_.every(({fromA:d,toA:O})=>O<this.minWidthFrom||d>this.minWidthTo)?(this.minWidthFrom=e.changes.mapPos(this.minWidthFrom,1),this.minWidthTo=e.changes.mapPos(this.minWidthTo,1)):this.minWidth=this.minWidthFrom=this.minWidthTo=0);let l=-1;this.view.inputState.composing>=0&&(!((o=this.domChanged)===null||o===void 0)&&o.newSel?l=this.domChanged.newSel.head:!j9(e.changes,this.hasComposition)&&!e.selectionSet&&(l=e.state.selection.main.head));let c=l>-1?X9(this.view,e.changes,l):null;if(this.domChanged=null,this.hasComposition){this.markedForComposition.clear();let{from:d,to:O}=this.hasComposition;_=new Fn(d,O,e.changes.mapPos(d,-1),e.changes.mapPos(O,1)).addToSet(_.slice())}this.hasComposition=c?{from:c.range.fromB,to:c.range.toB}:null,(zt.ie||zt.chrome)&&!c&&e&&e.state.doc.lines!=e.startState.doc.lines&&(this.forceSelection=!0);let T=this.decorations,E=this.updateDeco(),u=z9(T,E,e.changes);return _=Fn.extendWithRanges(_,u),!(this.flags&7)&&_.length==0?!1:(this.updateInner(_,e.startState.doc.length,c),e.transactions.length&&(this.lastUpdate=Date.now()),!0)}updateInner(e,o,_){this.view.viewState.mustMeasureContent=!0,this.updateChildren(e,o,_);let{observer:l}=this.view;l.ignore(()=>{this.dom.style.height=this.view.viewState.contentHeight/this.view.scaleY+"px",this.dom.style.flexBasis=this.minWidth?this.minWidth+"px":"";let T=zt.chrome||zt.ios?{node:l.selectionRange.focusNode,written:!1}:void 0;this.sync(this.view,T),this.flags&=-8,T&&(T.written||l.selectionRange.focusNode!=T.node)&&(this.forceSelection=!0),this.dom.style.height=""}),this.markedForComposition.forEach(T=>T.flags&=-9);let c=[];if(this.view.viewport.from||this.view.viewport.to<this.view.state.doc.length)for(let T of this.children)T instanceof la&&T.widget instanceof pB&&c.push(T.dom);l.updateGaps(c)}updateChildren(e,o,_){let l=_?_.range.addToSet(e.slice()):e,c=this.childCursor(o);for(let T=l.length-1;;T--){let E=T>=0?l[T]:null;if(!E)break;let{fromA:u,toA:d,fromB:O,toB:h}=E,I,S,L,p;if(_&&_.range.fromB<h&&_.range.toB>O){let N=Zg.build(this.view.state.doc,O,_.range.fromB,this.decorations,this.dynamicDecorationMap),U=Zg.build(this.view.state.doc,_.range.toB,h,this.decorations,this.dynamicDecorationMap);S=N.breakAtStart,L=N.openStart,p=U.openEnd;let P=this.compositionView(_);U.breakAtStart?P.breakAfter=1:U.content.length&&P.merge(P.length,P.length,U.content[0],!1,U.openStart,0)&&(P.breakAfter=U.content[0].breakAfter,U.content.shift()),N.content.length&&P.merge(0,0,N.content[N.content.length-1],!0,0,N.openEnd)&&N.content.pop(),I=N.content.concat(P).concat(U.content)}else({content:I,breakAtStart:S,openStart:L,openEnd:p}=Zg.build(this.view.state.doc,O,h,this.decorations,this.dynamicDecorationMap));let{i:C,off:m}=c.findPos(d,1),{i:A,off:b}=c.findPos(u,-1);j2(this,A,b,C,m,I,S,L,p)}_&&this.fixCompositionDOM(_)}compositionView(e){let o=new el(e.text.nodeValue);o.flags|=8;for(let{deco:l}of e.marks)o=new tl(l,[o],o.length);let _=new xs;return _.append(o,0),_}fixCompositionDOM(e){let o=(c,T)=>{T.flags|=8|(T.children.some(u=>u.flags&7)?1:0),this.markedForComposition.add(T);let E=Es.get(c);E&&E!=T&&(E.dom=null),T.setDOM(c)},_=this.childPos(e.range.fromB,1),l=this.children[_.i];o(e.line,l);for(let c=e.marks.length-1;c>=-1;c--)_=l.childPos(_.off,1),l=l.children[_.i],o(c>=0?e.marks[c].node:e.text,l)}updateSelection(e=!1,o=!1){(e||!this.view.observer.selectionRange.focusNode)&&this.view.observer.readSelectionRange();let _=this.view.root.activeElement,l=_==this.dom,c=!l&&aR(this.dom,this.view.observer.selectionRange)&&!(_&&this.dom.contains(_));if(!(l||o||c))return;let T=this.forceSelection;this.forceSelection=!1;let E=this.view.state.selection.main,u=this.moveToLine(this.domAtPos(E.anchor)),d=E.empty?u:this.moveToLine(this.domAtPos(E.head));if(zt.gecko&&E.empty&&!this.hasComposition&&W9(u)){let h=document.createTextNode("");this.view.observer.ignore(()=>u.node.insertBefore(h,u.node.childNodes[u.offset]||null)),u=d=new Mi(h,0),T=!0}let O=this.view.observer.selectionRange;(T||!O.focusNode||(!zg(u.node,u.offset,O.anchorNode,O.anchorOffset)||!zg(d.node,d.offset,O.focusNode,O.focusOffset))&&!this.suppressWidgetCursorChange(O,E))&&(this.view.observer.ignore(()=>{zt.android&&zt.chrome&&this.dom.contains(O.focusNode)&&Z9(O.focusNode,this.dom)&&(this.dom.blur(),this.dom.focus({preventScroll:!0}));let h=sI(this.view.root);if(h)if(E.empty){if(zt.gecko){let I=Y9(u.node,u.offset);if(I&&I!=3){let S=LF(u.node,u.offset,I==1?1:-1);S&&(u=new Mi(S.node,S.offset))}}h.collapse(u.node,u.offset),E.bidiLevel!=null&&h.caretBidiLevel!==void 0&&(h.caretBidiLevel=E.bidiLevel)}else if(h.extend){h.collapse(u.node,u.offset);try{h.extend(d.node,d.offset)}catch{}}else{let I=document.createRange();E.anchor>E.head&&([u,d]=[d,u]),I.setEnd(d.node,d.offset),I.setStart(u.node,u.offset),h.removeAllRanges(),h.addRange(I)}c&&this.view.root.activeElement==this.dom&&(this.dom.blur(),_&&_.focus())}),this.view.observer.setSelectionRange(u,d)),this.impreciseAnchor=u.precise?null:new Mi(O.anchorNode,O.anchorOffset),this.impreciseHead=d.precise?null:new Mi(O.focusNode,O.focusOffset)}suppressWidgetCursorChange(e,o){return this.hasComposition&&o.empty&&zg(e.focusNode,e.focusOffset,e.anchorNode,e.anchorOffset)&&this.posFromDOM(e.focusNode,e.focusOffset)==o.head}enforceCursorAssoc(){if(this.hasComposition)return;let{view:e}=this,o=e.state.selection.main,_=sI(e.root),{anchorNode:l,anchorOffset:c}=e.observer.selectionRange;if(!_||!o.empty||!o.assoc||!_.modify)return;let T=xs.find(this,o.head);if(!T)return;let E=T.posAtStart;if(o.head==E||o.head==E+T.length)return;let u=this.coordsAt(o.head,-1),d=this.coordsAt(o.head,1);if(!u||!d||u.bottom>d.top)return;let O=this.domAtPos(o.head+o.assoc);_.collapse(O.node,O.offset),_.modify("move",o.assoc<0?"forward":"backward","lineboundary"),e.observer.readSelectionRange();let h=e.observer.selectionRange;e.docView.posFromDOM(h.anchorNode,h.anchorOffset)!=o.from&&_.collapse(l,c)}moveToLine(e){let o=this.dom,_;if(e.node!=o)return e;for(let l=e.offset;!_&&l<o.childNodes.length;l++){let c=Es.get(o.childNodes[l]);c instanceof xs&&(_=c.domAtPos(0))}for(let l=e.offset-1;!_&&l>=0;l--){let c=Es.get(o.childNodes[l]);c instanceof xs&&(_=c.domAtPos(c.length))}return _?new Mi(_.node,_.offset,!0):e}nearest(e){for(let o=e;o;){let _=Es.get(o);if(_&&_.rootView==this)return _;o=o.parentNode}return null}posFromDOM(e,o){let _=this.nearest(e);if(!_)throw new RangeError("Trying to find position for a DOM position outside of the document");return _.localPosFromDOM(e,o)+_.posAtStart}domAtPos(e){let{i:o,off:_}=this.childCursor().findPos(e,-1);for(;o<this.children.length-1;){let l=this.children[o];if(_<l.length||l instanceof xs)break;o++,_=0}return this.children[o].domAtPos(_)}coordsAt(e,o){let _=null,l=0;for(let c=this.length,T=this.children.length-1;T>=0;T--){let E=this.children[T],u=c-E.breakAfter,d=u-E.length;if(u<e)break;d<=e&&(d<e||E.covers(-1))&&(u>e||E.covers(1))&&(!_||E instanceof xs&&!(_ instanceof xs&&o>=0))&&(_=E,l=d),c=d}return _?_.coordsAt(e-l,o):null}coordsForChar(e){let{i:o,off:_}=this.childPos(e,1),l=this.children[o];if(!(l instanceof xs))return null;for(;l.children.length;){let{i:E,off:u}=l.childPos(_,1);for(;;E++){if(E==l.children.length)return null;if((l=l.children[E]).length)break}_=u}if(!(l instanceof el))return null;let c=Ti(l.text,_);if(c==_)return null;let T=Hc(l.dom,_,c).getClientRects();for(let E=0;E<T.length;E++){let u=T[E];if(E==T.length-1||u.top<u.bottom&&u.left<u.right)return u}return null}measureVisibleLineHeights(e){let o=[],{from:_,to:l}=e,c=this.view.contentDOM.clientWidth,T=c>Math.max(this.view.scrollDOM.clientWidth,this.minWidth)+1,E=-1,u=this.view.textDirection==us.LTR;for(let d=0,O=0;O<this.children.length;O++){let h=this.children[O],I=d+h.length;if(I>l)break;if(d>=_){let S=h.dom.getBoundingClientRect();if(o.push(S.height),T){let L=h.dom.lastChild,p=L?YE(L):[];if(p.length){let C=p[p.length-1],m=u?C.right-S.left:S.right-C.left;m>E&&(E=m,this.minWidth=c,this.minWidthFrom=d,this.minWidthTo=I)}}}d=I+h.breakAfter}return o}textDirectionAt(e){let{i:o}=this.childPos(e,1);return getComputedStyle(this.children[o].dom).direction=="rtl"?us.RTL:us.LTR}measureTextSize(){for(let c of this.children)if(c instanceof xs){let T=c.measureTextSize();if(T)return T}let e=document.createElement("div"),o,_,l;return e.className="cm-line",e.style.width="99999px",e.style.position="absolute",e.textContent="abc def ghi jkl mno pqr stu",this.view.observer.ignore(()=>{this.dom.appendChild(e);let c=YE(e.firstChild)[0];o=e.getBoundingClientRect().height,_=c?c.width/27:7,l=c?c.height:o,e.remove()}),{lineHeight:o,charWidth:_,textHeight:l}}childCursor(e=this.length){let o=this.children.length;return o&&(e-=this.children[--o].length),new Z2(this.children,e,o)}computeBlockGapDeco(){let e=[],o=this.view.viewState;for(let _=0,l=0;;l++){let c=l==o.viewports.length?null:o.viewports[l],T=c?c.from-1:this.length;if(T>_){let E=(o.lineBlockAt(T).bottom-o.lineBlockAt(_).top)/this.view.scaleY;e.push(eo.replace({widget:new pB(E),block:!0,inclusive:!0,isBlockGap:!0}).range(_,T))}if(!c)break;_=c.to+1}return eo.set(e)}updateDeco(){let e=this.view.state.facet(Sd).map((l,c)=>(this.dynamicDecorationMap[c]=typeof l=="function")?l(this.view):l),o=!1,_=this.view.state.facet(MF).map((l,c)=>{let T=typeof l=="function";return T&&(o=!0),T?l(this.view):l});_.length&&(this.dynamicDecorationMap[e.length]=o,e.push(Bo.join(_)));for(let l=e.length;l<e.length+3;l++)this.dynamicDecorationMap[l]=!1;return this.decorations=[...e,this.computeBlockGapDeco(),this.view.viewState.lineGapDeco]}scrollIntoView(e){if(e.isSnapshot){let d=this.view.viewState.lineBlockAt(e.range.head);this.view.scrollDOM.scrollTop=d.top-e.yMargin,this.view.scrollDOM.scrollLeft=e.xMargin;return}let{range:o}=e,_=this.coordsAt(o.head,o.empty?o.assoc:o.head>o.anchor?-1:1),l;if(!_)return;!o.empty&&(l=this.coordsAt(o.anchor,o.anchor>o.head?-1:1))&&(_={left:Math.min(_.left,l.left),top:Math.min(_.top,l.top),right:Math.max(_.right,l.right),bottom:Math.max(_.bottom,l.bottom)});let c=SF(this.view),T={left:_.left-c.left,top:_.top-c.top,right:_.right+c.right,bottom:_.bottom+c.bottom},{offsetWidth:E,offsetHeight:u}=this.view.scrollDOM;f9(this.view.scrollDOM,T,o.head<o.anchor?-1:1,e.x,e.y,Math.max(Math.min(e.xMargin,E),-E),Math.max(Math.min(e.yMargin,u),-u),this.view.textDirection==us.LTR)}}function W9(t){return t.node.nodeType==1&&t.node.firstChild&&(t.offset==0||t.node.childNodes[t.offset-1].contentEditable=="false")&&(t.offset==t.node.childNodes.length||t.node.childNodes[t.offset].contentEditable=="false")}class pB extends h_{constructor(e){super(),this.height=e}toDOM(){let e=document.createElement("div");return e.className="cm-gap",this.updateDOM(e),e}eq(e){return e.height==this.height}updateDOM(e){return e.style.height=this.height+"px",!0}get editable(){return!0}get estimatedHeight(){return this.height}}function pF(t,e){let o=t.observer.selectionRange,_=o.focusNode&&LF(o.focusNode,o.focusOffset,0);if(!_)return null;let l=e-_.offset;return{from:l,to:l+_.node.nodeValue.length,node:_.node}}function X9(t,e,o){let _=pF(t,o);if(!_)return null;let{node:l,from:c,to:T}=_,E=l.nodeValue;if(/[\n\r]/.test(E)||t.state.doc.sliceString(_.from,_.to)!=E)return null;let u=e.invertedDesc,d=new Fn(u.mapPos(c),u.mapPos(T),c,T),O=[];for(let h=l.parentNode;;h=h.parentNode){let I=Es.get(h);if(I instanceof tl)O.push({node:h,deco:I.mark});else{if(I instanceof xs||h.nodeName=="DIV"&&h.parentNode==t.contentDOM)return{range:d,text:l,marks:O,line:h};if(h!=t.contentDOM)O.push({node:h,deco:new _O({inclusive:!0,attributes:D9(h),tagName:h.tagName.toLowerCase()})});else return null}}}function LF(t,e,o){if(o<=0)for(let _=t,l=e;;){if(_.nodeType==3)return{node:_,offset:l};if(_.nodeType==1&&l>0)_=_.childNodes[l-1],l=J_(_);else break}if(o>=0)for(let _=t,l=e;;){if(_.nodeType==3)return{node:_,offset:l};if(_.nodeType==1&&l<_.childNodes.length&&o>=0)_=_.childNodes[l],l=0;else break}return null}function Y9(t,e){return t.nodeType!=1?0:(e&&t.childNodes[e-1].contentEditable=="false"?1:0)|(e<t.childNodes.length&&t.childNodes[e].contentEditable=="false"?2:0)}let K9=class{constructor(){this.changes=[]}compareRange(e,o){jA(e,o,this.changes)}comparePoint(e,o){jA(e,o,this.changes)}};function z9(t,e,o){let _=new K9;return Bo.compare(t,e,o,_),_.changes}function Z9(t,e){for(let o=t;o&&o!=e;o=o.assignedSlot||o.parentNode)if(o.nodeType==1&&o.contentEditable=="false")return!0;return!1}function j9(t,e){let o=!1;return e&&t.iterChangedRanges((_,l)=>{_<e.to&&l>e.from&&(o=!0)}),o}function q9(t,e,o=1){let _=t.charCategorizer(e),l=t.doc.lineAt(e),c=e-l.from;if(l.length==0)return ct.cursor(e);c==0?o=1:c==l.length&&(o=-1);let T=c,E=c;o<0?T=Ti(l.text,c,!1):E=Ti(l.text,c);let u=_(l.text.slice(T,E));for(;T>0;){let d=Ti(l.text,T,!1);if(_(l.text.slice(d,T))!=u)break;T=d}for(;E<l.length;){let d=Ti(l.text,E);if(_(l.text.slice(E,d))!=u)break;E=d}return ct.range(T+l.from,E+l.from)}function Q9(t,e){return e.left>t?e.left-t:Math.max(0,t-e.right)}function J9(t,e){return e.top>t?e.top-t:Math.max(0,t-e.bottom)}function TC(t,e){return t.top<e.bottom-1&&t.bottom>e.top+1}function LB(t,e){return e<t.top?{top:e,left:t.left,right:t.right,bottom:t.bottom}:t}function fB(t,e){return e>t.bottom?{top:t.top,left:t.left,right:t.right,bottom:e}:t}function tb(t,e,o){let _,l,c,T,E=!1,u,d,O,h;for(let L=t.firstChild;L;L=L.nextSibling){let p=YE(L);for(let C=0;C<p.length;C++){let m=p[C];l&&TC(l,m)&&(m=LB(fB(m,l.bottom),l.top));let A=Q9(e,m),b=J9(o,m);if(A==0&&b==0)return L.nodeType==3?mB(L,e,o):tb(L,e,o);if(!_||T>b||T==b&&c>A){_=L,l=m,c=A,T=b;let N=b?o<m.top?-1:1:A?e<m.left?-1:1:0;E=!N||(N>0?C<p.length-1:C>0)}A==0?o>m.bottom&&(!O||O.bottom<m.bottom)?(u=L,O=m):o<m.top&&(!h||h.top>m.top)&&(d=L,h=m):O&&TC(O,m)?O=fB(O,m.bottom):h&&TC(h,m)&&(h=LB(h,m.top))}}if(O&&O.bottom>=o?(_=u,l=O):h&&h.top<=o&&(_=d,l=h),!_)return{node:t,offset:0};let I=Math.max(l.left,Math.min(l.right,e));if(_.nodeType==3)return mB(_,I,o);if(E&&_.contentEditable!="false")return tb(_,I,o);let S=Array.prototype.indexOf.call(t.childNodes,_)+(e>=(l.left+l.right)/2?1:0);return{node:t,offset:S}}function mB(t,e,o){let _=t.nodeValue.length,l=-1,c=1e9,T=0;for(let E=0;E<_;E++){let u=Hc(t,E,E+1).getClientRects();for(let d=0;d<u.length;d++){let O=u[d];if(O.top==O.bottom)continue;T||(T=e-O.left);let h=(O.top>o?O.top-o:o-O.bottom)-1;if(O.left-1<=e&&O.right+1>=e&&h<c){let I=e>=(O.left+O.right)/2,S=I;if((zt.chrome||zt.gecko)&&Hc(t,E).getBoundingClientRect().left==O.right&&(S=!I),h<=0)return{node:t,offset:E+(S?1:0)};l=E+(S?1:0),c=h}}}return{node:t,offset:l>-1?l:T>0?t.nodeValue.length:0}}function fF(t,e,o,_=-1){var l,c;let T=t.contentDOM.getBoundingClientRect(),E=T.top+t.viewState.paddingTop,u,{docHeight:d}=t.viewState,{x:O,y:h}=e,I=h-E;if(I<0)return 0;if(I>d)return t.state.doc.length;for(let N=t.viewState.heightOracle.textHeight/2,U=!1;u=t.elementAtHeight(I),u.type!=vi.Text;)for(;I=_>0?u.bottom+N:u.top-N,!(I>=0&&I<=d);){if(U)return o?null:0;U=!0,_=-_}h=E+I;let S=u.from;if(S<t.viewport.from)return t.viewport.from==0?0:o?null:CB(t,T,u,O,h);if(S>t.viewport.to)return t.viewport.to==t.state.doc.length?t.state.doc.length:o?null:CB(t,T,u,O,h);let L=t.dom.ownerDocument,p=t.root.elementFromPoint?t.root:L,C=p.elementFromPoint(O,h);C&&!t.contentDOM.contains(C)&&(C=null),C||(O=Math.max(T.left+1,Math.min(T.right-1,O)),C=p.elementFromPoint(O,h),C&&!t.contentDOM.contains(C)&&(C=null));let m,A=-1;if(C&&((l=t.docView.nearest(C))===null||l===void 0?void 0:l.isEditable)!=!1){if(L.caretPositionFromPoint){let N=L.caretPositionFromPoint(O,h);N&&({offsetNode:m,offset:A}=N)}else if(L.caretRangeFromPoint){let N=L.caretRangeFromPoint(O,h);N&&({startContainer:m,startOffset:A}=N,(!t.contentDOM.contains(m)||zt.safari&&eZ(m,A,O)||zt.chrome&&tZ(m,A,O))&&(m=void 0))}}if(!m||!t.docView.dom.contains(m)){let N=xs.find(t.docView,S);if(!N)return I>u.top+u.height/2?u.to:u.from;({node:m,offset:A}=tb(N.dom,O,h))}let b=t.docView.nearest(m);if(!b)return null;if(b.isWidget&&((c=b.dom)===null||c===void 0?void 0:c.nodeType)==1){let N=b.dom.getBoundingClientRect();return e.y<N.top||e.y<=N.bottom&&e.x<=(N.left+N.right)/2?b.posAtStart:b.posAtEnd}else return b.localPosFromDOM(m,A)+b.posAtStart}function CB(t,e,o,_,l){let c=Math.round((_-e.left)*t.defaultCharacterWidth);if(t.lineWrapping&&o.height>t.defaultLineHeight*1.5){let E=t.viewState.heightOracle.textHeight,u=Math.floor((l-o.top-(t.defaultLineHeight-E)*.5)/E);c+=u*t.viewState.heightOracle.lineLength}let T=t.state.sliceDoc(o.from,o.to);return o.from+xA(T,c,t.state.tabSize)}function eZ(t,e,o){let _;if(t.nodeType!=3||e!=(_=t.nodeValue.length))return!1;for(let l=t.nextSibling;l;l=l.nextSibling)if(l.nodeType!=1||l.nodeName!="BR")return!1;return Hc(t,_-1,_).getBoundingClientRect().left>o}function tZ(t,e,o){if(e!=0)return!1;for(let l=t;;){let c=l.parentNode;if(!c||c.nodeType!=1||c.firstChild!=l)return!1;if(c.classList.contains("cm-line"))break;l=c}let _=t.nodeType==1?t.getBoundingClientRect():Hc(t,0,Math.max(t.nodeValue.length,1)).getBoundingClientRect();return o-_.left>5}function ob(t,e){let o=t.lineBlockAt(e);if(Array.isArray(o.type)){for(let _ of o.type)if(_.to>e||_.to==e&&(_.to==o.to||_.type==vi.Text))return _}return o}function oZ(t,e,o,_){let l=ob(t,e.head),c=!_||l.type!=vi.Text||!(t.lineWrapping||l.widgetLineBreaks)?null:t.coordsAtPos(e.assoc<0&&e.head>l.from?e.head-1:e.head);if(c){let T=t.dom.getBoundingClientRect(),E=t.textDirectionAt(l.from),u=t.posAtCoords({x:o==(E==us.LTR)?T.right-1:T.left+1,y:(c.top+c.bottom)/2});if(u!=null)return ct.cursor(u,o?-1:1)}return ct.cursor(o?l.to:l.from,o?-1:1)}function AB(t,e,o,_){let l=t.state.doc.lineAt(e.head),c=t.bidiSpans(l),T=t.textDirectionAt(l.from);for(let E=e,u=null;;){let d=x9(l,c,T,E,o),O=lF;if(!d){if(l.number==(o?t.state.doc.lines:1))return E;O=`
- `,l=t.state.doc.line(l.number+(o?1:-1)),c=t.bidiSpans(l),d=t.visualLineSide(l,!o)}if(u){if(!u(O))return E}else{if(!_)return d;u=_(O)}E=d}}function sZ(t,e,o){let _=t.state.charCategorizer(e),l=_(o);return c=>{let T=_(c);return l==Os.Space&&(l=T),l==T}}function iZ(t,e,o,_){let l=e.head,c=o?1:-1;if(l==(o?t.state.doc.length:0))return ct.cursor(l,e.assoc);let T=e.goalColumn,E,u=t.contentDOM.getBoundingClientRect(),d=t.coordsAtPos(l,e.assoc||-1),O=t.documentTop;if(d)T==null&&(T=d.left-u.left),E=c<0?d.top:d.bottom;else{let S=t.viewState.lineBlockAt(l);T==null&&(T=Math.min(u.right-u.left,t.defaultCharacterWidth*(l-S.from))),E=(c<0?S.top:S.bottom)+O}let h=u.left+T,I=_??t.viewState.heightOracle.textHeight>>1;for(let S=0;;S+=10){let L=E+(I+S)*c,p=fF(t,{x:h,y:L},!1,c);if(L<u.top||L>u.bottom||(c<0?p<l:p>l)){let C=t.docView.coordsForChar(p),m=!C||L<C.top?-1:1;return ct.cursor(p,m,void 0,T)}}}function cR(t,e,o){for(;;){let _=0;for(let l of t)l.between(e-1,e+1,(c,T,E)=>{if(e>c&&e<T){let u=_||o||(e-c<T-e?-1:1);e=u<0?c:T,_=u}});if(!_)return e}}function EC(t,e,o){let _=cR(t.state.facet(NP).map(l=>l(t)),o.from,e.head>o.from?-1:1);return _==o.from?o:ct.cursor(_,_<o.from?1:-1)}class nZ{setSelectionOrigin(e){this.lastSelectionOrigin=e,this.lastSelectionTime=Date.now()}constructor(e){this.view=e,this.lastKeyCode=0,this.lastKeyTime=0,this.lastTouchTime=0,this.lastFocusTime=0,this.lastScrollTop=0,this.lastScrollLeft=0,this.pendingIOSKey=void 0,this.lastSelectionOrigin=null,this.lastSelectionTime=0,this.lastEscPress=0,this.lastContextMenu=0,this.scrollHandlers=[],this.handlers=Object.create(null),this.composing=-1,this.compositionFirstChange=null,this.compositionEndedAt=0,this.compositionPendingKey=!1,this.compositionPendingChange=!1,this.mouseSelection=null,this.draggedContent=null,this.handleEvent=this.handleEvent.bind(this),this.notifiedFocused=e.hasFocus,zt.safari&&e.contentDOM.addEventListener("input",()=>null),zt.gecko&&SZ(e.contentDOM.ownerDocument)}handleEvent(e){!uZ(this.view,e)||this.ignoreDuringComposition(e)||e.type=="keydown"&&this.keydown(e)||this.runHandlers(e.type,e)}runHandlers(e,o){let _=this.handlers[e];if(_){for(let l of _.observers)l(this.view,o);for(let l of _.handlers){if(o.defaultPrevented)break;if(l(this.view,o)){o.preventDefault();break}}}}ensureHandlers(e){let o=rZ(e),_=this.handlers,l=this.view.contentDOM;for(let c in o)if(c!="scroll"){let T=!o[c].handlers.length,E=_[c];E&&T!=!E.handlers.length&&(l.removeEventListener(c,this.handleEvent),E=null),E||l.addEventListener(c,this.handleEvent,{passive:T})}for(let c in _)c!="scroll"&&!o[c]&&l.removeEventListener(c,this.handleEvent);this.handlers=o}keydown(e){if(this.lastKeyCode=e.keyCode,this.lastKeyTime=Date.now(),e.keyCode==9&&Date.now()<this.lastEscPress+2e3)return!0;if(e.keyCode!=27&&CF.indexOf(e.keyCode)<0&&(this.view.inputState.lastEscPress=0),zt.android&&zt.chrome&&!e.synthetic&&(e.keyCode==13||e.keyCode==8))return this.view.observer.delayAndroidKey(e.key,e.keyCode),!0;let o;return zt.ios&&!e.synthetic&&!e.altKey&&!e.metaKey&&((o=mF.find(_=>_.keyCode==e.keyCode))&&!e.ctrlKey||_Z.indexOf(e.key)>-1&&e.ctrlKey&&!e.shiftKey)?(this.pendingIOSKey=o||e,setTimeout(()=>this.flushIOSKey(),250),!0):(e.keyCode!=229&&this.view.observer.forceFlush(),!1)}flushIOSKey(){let e=this.pendingIOSKey;return e?(this.pendingIOSKey=void 0,PE(this.view.contentDOM,e.key,e.keyCode)):!1}ignoreDuringComposition(e){return/^key/.test(e.type)?this.composing>0?!0:zt.safari&&!zt.ios&&this.compositionPendingKey&&Date.now()-this.compositionEndedAt<100?(this.compositionPendingKey=!1,!0):!1:!1}startMouseSelection(e){this.mouseSelection&&this.mouseSelection.destroy(),this.mouseSelection=e}update(e){this.mouseSelection&&this.mouseSelection.update(e),this.draggedContent&&e.docChanged&&(this.draggedContent=this.draggedContent.map(e.changes)),e.transactions.length&&(this.lastKeyCode=this.lastSelectionTime=0)}destroy(){this.mouseSelection&&this.mouseSelection.destroy()}}function bB(t,e){return(o,_)=>{try{return e.call(t,_,o)}catch(l){xn(o.state,l)}}}function rZ(t){let e=Object.create(null);function o(_){return e[_]||(e[_]={observers:[],handlers:[]})}for(let _ of t){let l=_.spec;if(l&&l.domEventHandlers)for(let c in l.domEventHandlers){let T=l.domEventHandlers[c];T&&o(c).handlers.push(bB(_.value,T))}if(l&&l.domEventObservers)for(let c in l.domEventObservers){let T=l.domEventObservers[c];T&&o(c).observers.push(bB(_.value,T))}}for(let _ in hr)o(_).handlers.push(hr[_]);for(let _ in Mr)o(_).observers.push(Mr[_]);return e}const mF=[{key:"Backspace",keyCode:8,inputType:"deleteContentBackward"},{key:"Enter",keyCode:13,inputType:"insertParagraph"},{key:"Enter",keyCode:13,inputType:"insertLineBreak"},{key:"Delete",keyCode:46,inputType:"deleteContentForward"}],_Z="dthko",CF=[16,17,18,20,91,92,224,225],hM=6;function MM(t){return Math.max(0,t)*.7+8}function lZ(t,e){return Math.max(Math.abs(t.clientX-e.clientX),Math.abs(t.clientY-e.clientY))}class aZ{constructor(e,o,_,l){this.view=e,this.startEvent=o,this.style=_,this.mustSelect=l,this.scrollSpeed={x:0,y:0},this.scrolling=-1,this.lastEvent=o,this.scrollParent=m9(e.contentDOM),this.atoms=e.state.facet(NP).map(T=>T(e));let c=e.contentDOM.ownerDocument;c.addEventListener("mousemove",this.move=this.move.bind(this)),c.addEventListener("mouseup",this.up=this.up.bind(this)),this.extend=o.shiftKey,this.multiple=e.state.facet(fo.allowMultipleSelections)&&cZ(e,o),this.dragging=EZ(e,o)&&PF(o)==1?null:!1}start(e){this.dragging===!1&&this.select(e)}move(e){var o;if(e.buttons==0)return this.destroy();if(this.dragging||this.dragging==null&&lZ(this.startEvent,e)<10)return;this.select(this.lastEvent=e);let _=0,l=0,c=((o=this.scrollParent)===null||o===void 0?void 0:o.getBoundingClientRect())||{left:0,top:0,right:this.view.win.innerWidth,bottom:this.view.win.innerHeight},T=SF(this.view);e.clientX-T.left<=c.left+hM?_=-MM(c.left-e.clientX):e.clientX+T.right>=c.right-hM&&(_=MM(e.clientX-c.right)),e.clientY-T.top<=c.top+hM?l=-MM(c.top-e.clientY):e.clientY+T.bottom>=c.bottom-hM&&(l=MM(e.clientY-c.bottom)),this.setScrollSpeed(_,l)}up(e){this.dragging==null&&this.select(this.lastEvent),this.dragging||e.preventDefault(),this.destroy()}destroy(){this.setScrollSpeed(0,0);let e=this.view.contentDOM.ownerDocument;e.removeEventListener("mousemove",this.move),e.removeEventListener("mouseup",this.up),this.view.inputState.mouseSelection=this.view.inputState.draggedContent=null}setScrollSpeed(e,o){this.scrollSpeed={x:e,y:o},e||o?this.scrolling<0&&(this.scrolling=setInterval(()=>this.scroll(),50)):this.scrolling>-1&&(clearInterval(this.scrolling),this.scrolling=-1)}scroll(){this.scrollParent?(this.scrollParent.scrollLeft+=this.scrollSpeed.x,this.scrollParent.scrollTop+=this.scrollSpeed.y):this.view.win.scrollBy(this.scrollSpeed.x,this.scrollSpeed.y),this.dragging===!1&&this.select(this.lastEvent)}skipAtoms(e){let o=null;for(let _=0;_<e.ranges.length;_++){let l=e.ranges[_],c=null;if(l.empty){let T=cR(this.atoms,l.from,0);T!=l.from&&(c=ct.cursor(T,-1))}else{let T=cR(this.atoms,l.from,-1),E=cR(this.atoms,l.to,1);(T!=l.from||E!=l.to)&&(c=ct.range(l.from==l.anchor?T:E,l.from==l.head?T:E))}c&&(o||(o=e.ranges.slice()),o[_]=c)}return o?ct.create(o,e.mainIndex):e}select(e){let{view:o}=this,_=this.skipAtoms(this.style.get(e,this.extend,this.multiple));(this.mustSelect||!_.eq(o.state.selection,this.dragging===!1))&&this.view.dispatch({selection:_,userEvent:"select.pointer"}),this.mustSelect=!1}update(e){this.style.update(e)&&setTimeout(()=>this.select(this.lastEvent),20)}}function cZ(t,e){let o=t.state.facet(aF);return o.length?o[0](e):zt.mac?e.metaKey:e.ctrlKey}function TZ(t,e){let o=t.state.facet(cF);return o.length?o[0](e):zt.mac?!e.altKey:!e.ctrlKey}function EZ(t,e){let{main:o}=t.state.selection;if(o.empty)return!1;let _=sI(t.root);if(!_||_.rangeCount==0)return!0;let l=_.getRangeAt(0).getClientRects();for(let c=0;c<l.length;c++){let T=l[c];if(T.left<=e.clientX&&T.right>=e.clientX&&T.top<=e.clientY&&T.bottom>=e.clientY)return!0}return!1}function uZ(t,e){if(!e.bubbles)return!0;if(e.defaultPrevented)return!1;for(let o=e.target,_;o!=t.contentDOM;o=o.parentNode)if(!o||o.nodeType==11||(_=Es.get(o))&&_.ignoreEvent(e))return!1;return!0}const hr=Object.create(null),Mr=Object.create(null),AF=zt.ie&&zt.ie_version<15||zt.ios&&zt.webkit_version<604;function gZ(t){let e=t.dom.parentNode;if(!e)return;let o=e.appendChild(document.createElement("textarea"));o.style.cssText="position: fixed; left: -10000px; top: 10px",o.focus(),setTimeout(()=>{t.focus(),o.remove(),bF(t,o.value)},50)}function bF(t,e){let{state:o}=t,_,l=1,c=o.toText(e),T=c.lines==o.selection.ranges.length;if(sb!=null&&o.selection.ranges.every(u=>u.empty)&&sb==c.toString()){let u=-1;_=o.changeByRange(d=>{let O=o.doc.lineAt(d.from);if(O.from==u)return{range:d};u=O.from;let h=o.toText((T?c.line(l++).text:e)+o.lineBreak);return{changes:{from:O.from,insert:h},range:ct.cursor(d.from+h.length)}})}else T?_=o.changeByRange(u=>{let d=c.line(l++);return{changes:{from:u.from,to:u.to,insert:d.text},range:ct.cursor(u.from+d.length)}}):_=o.replaceSelection(c);t.dispatch(_,{userEvent:"input.paste",scrollIntoView:!0})}Mr.scroll=t=>{t.inputState.lastScrollTop=t.scrollDOM.scrollTop,t.inputState.lastScrollLeft=t.scrollDOM.scrollLeft};hr.keydown=(t,e)=>(t.inputState.setSelectionOrigin("select"),e.keyCode==27&&(t.inputState.lastEscPress=Date.now()),!1);Mr.touchstart=(t,e)=>{t.inputState.lastTouchTime=Date.now(),t.inputState.setSelectionOrigin("select.pointer")};Mr.touchmove=t=>{t.inputState.setSelectionOrigin("select.pointer")};hr.mousedown=(t,e)=>{if(t.observer.flush(),t.inputState.lastTouchTime>Date.now()-2e3)return!1;let o=null;for(let _ of t.state.facet(TF))if(o=_(t,e),o)break;if(!o&&e.button==0&&(o=hZ(t,e)),o){let _=!t.hasFocus;t.inputState.startMouseSelection(new aZ(t,e,o,_)),_&&t.observer.ignore(()=>Y2(t.contentDOM));let l=t.inputState.mouseSelection;if(l)return l.start(e),l.dragging===!1}return!1};function NB(t,e,o,_){if(_==1)return ct.cursor(e,o);if(_==2)return q9(t.state,e,o);{let l=xs.find(t.docView,e),c=t.state.doc.lineAt(l?l.posAtEnd:e),T=l?l.posAtStart:c.from,E=l?l.posAtEnd:c.to;return E<t.state.doc.length&&E==c.to&&E++,ct.range(T,E)}}let NF=(t,e)=>t>=e.top&&t<=e.bottom,PB=(t,e,o)=>NF(e,o)&&t>=o.left&&t<=o.right;function dZ(t,e,o,_){let l=xs.find(t.docView,e);if(!l)return 1;let c=e-l.posAtStart;if(c==0)return 1;if(c==l.length)return-1;let T=l.coordsAt(c,-1);if(T&&PB(o,_,T))return-1;let E=l.coordsAt(c,1);return E&&PB(o,_,E)?1:T&&NF(_,T)?-1:1}function vB(t,e){let o=t.posAtCoords({x:e.clientX,y:e.clientY},!1);return{pos:o,bias:dZ(t,o,e.clientX,e.clientY)}}const OZ=zt.ie&&zt.ie_version<=11;let DB=null,UB=0,yB=0;function PF(t){if(!OZ)return t.detail;let e=DB,o=yB;return DB=t,yB=Date.now(),UB=!e||o>Date.now()-400&&Math.abs(e.clientX-t.clientX)<2&&Math.abs(e.clientY-t.clientY)<2?(UB+1)%3:1}function hZ(t,e){let o=vB(t,e),_=PF(e),l=t.state.selection;return{update(c){c.docChanged&&(o.pos=c.changes.mapPos(o.pos),l=l.map(c.changes))},get(c,T,E){let u=vB(t,c),d,O=NB(t,u.pos,u.bias,_);if(o.pos!=u.pos&&!T){let h=NB(t,o.pos,o.bias,_),I=Math.min(h.from,O.from),S=Math.max(h.to,O.to);O=I<O.from?ct.range(I,S):ct.range(S,I)}return T?l.replaceRange(l.main.extend(O.from,O.to)):E&&_==1&&l.ranges.length>1&&(d=MZ(l,u.pos))?d:E?l.addRange(O):ct.create([O])}}}function MZ(t,e){for(let o=0;o<t.ranges.length;o++){let{from:_,to:l}=t.ranges[o];if(_<=e&&l>=e)return ct.create(t.ranges.slice(0,o).concat(t.ranges.slice(o+1)),t.mainIndex==o?0:t.mainIndex-(t.mainIndex>o?1:0))}return null}hr.dragstart=(t,e)=>{let{selection:{main:o}}=t.state;if(e.target.draggable){let l=t.docView.nearest(e.target);if(l&&l.isWidget){let c=l.posAtStart,T=c+l.length;(c>=o.to||T<=o.from)&&(o=ct.range(c,T))}}let{inputState:_}=t;return _.mouseSelection&&(_.mouseSelection.dragging=!0),_.draggedContent=o,e.dataTransfer&&(e.dataTransfer.setData("Text",t.state.sliceDoc(o.from,o.to)),e.dataTransfer.effectAllowed="copyMove"),!1};hr.dragend=t=>(t.inputState.draggedContent=null,!1);function $B(t,e,o,_){if(!o)return;let l=t.posAtCoords({x:e.clientX,y:e.clientY},!1),{draggedContent:c}=t.inputState,T=_&&c&&TZ(t,e)?{from:c.from,to:c.to}:null,E={from:l,insert:o},u=t.state.changes(T?[T,E]:E);t.focus(),t.dispatch({changes:u,selection:{anchor:u.mapPos(l,-1),head:u.mapPos(l,1)},userEvent:T?"move.drop":"input.drop"}),t.inputState.draggedContent=null}hr.drop=(t,e)=>{if(!e.dataTransfer)return!1;if(t.state.readOnly)return!0;let o=e.dataTransfer.files;if(o&&o.length){let _=Array(o.length),l=0,c=()=>{++l==o.length&&$B(t,e,_.filter(T=>T!=null).join(t.state.lineBreak),!1)};for(let T=0;T<o.length;T++){let E=new FileReader;E.onerror=c,E.onload=()=>{/[\x00-\x08\x0e-\x1f]{2}/.test(E.result)||(_[T]=E.result),c()},E.readAsText(o[T])}return!0}else{let _=e.dataTransfer.getData("Text");if(_)return $B(t,e,_,!0),!0}return!1};hr.paste=(t,e)=>{if(t.state.readOnly)return!0;t.observer.flush();let o=AF?null:e.clipboardData;return o?(bF(t,o.getData("text/plain")||o.getData("text/uri-text")),!0):(gZ(t),!1)};function RZ(t,e){let o=t.dom.parentNode;if(!o)return;let _=o.appendChild(document.createElement("textarea"));_.style.cssText="position: fixed; left: -10000px; top: 10px",_.value=e,_.focus(),_.selectionEnd=e.length,_.selectionStart=0,setTimeout(()=>{_.remove(),t.focus()},50)}function IZ(t){let e=[],o=[],_=!1;for(let l of t.selection.ranges)l.empty||(e.push(t.sliceDoc(l.from,l.to)),o.push(l));if(!e.length){let l=-1;for(let{from:c}of t.selection.ranges){let T=t.doc.lineAt(c);T.number>l&&(e.push(T.text),o.push({from:T.from,to:Math.min(t.doc.length,T.to+1)})),l=T.number}_=!0}return{text:e.join(t.lineBreak),ranges:o,linewise:_}}let sb=null;hr.copy=hr.cut=(t,e)=>{let{text:o,ranges:_,linewise:l}=IZ(t.state);if(!o&&!l)return!1;sb=l?o:null,e.type=="cut"&&!t.state.readOnly&&t.dispatch({changes:_,scrollIntoView:!0,userEvent:"delete.cut"});let c=AF?null:e.clipboardData;return c?(c.clearData(),c.setData("text/plain",o),!0):(RZ(t,o),!1)};const vF=ll.define();function DF(t,e){let o=[];for(let _ of t.facet(gF)){let l=_(t,e);l&&o.push(l)}return o?t.update({effects:o,annotations:vF.of(!0)}):null}function UF(t){setTimeout(()=>{let e=t.hasFocus;if(e!=t.inputState.notifiedFocused){let o=DF(t.state,e);o?t.dispatch(o):t.update([])}},10)}Mr.focus=t=>{t.inputState.lastFocusTime=Date.now(),!t.scrollDOM.scrollTop&&(t.inputState.lastScrollTop||t.inputState.lastScrollLeft)&&(t.scrollDOM.scrollTop=t.inputState.lastScrollTop,t.scrollDOM.scrollLeft=t.inputState.lastScrollLeft),UF(t)};Mr.blur=t=>{t.observer.clearSelectionRange(),UF(t)};Mr.compositionstart=Mr.compositionupdate=t=>{t.inputState.compositionFirstChange==null&&(t.inputState.compositionFirstChange=!0),t.inputState.composing<0&&(t.inputState.composing=0)};Mr.compositionend=t=>{t.inputState.composing=-1,t.inputState.compositionEndedAt=Date.now(),t.inputState.compositionPendingKey=!0,t.inputState.compositionPendingChange=t.observer.pendingRecords().length>0,t.inputState.compositionFirstChange=null,zt.chrome&&zt.android?t.observer.flushSoon():t.inputState.compositionPendingChange?Promise.resolve().then(()=>t.observer.flush()):setTimeout(()=>{t.inputState.composing<0&&t.docView.hasComposition&&t.update([])},50)};Mr.contextmenu=t=>{t.inputState.lastContextMenu=Date.now()};hr.beforeinput=(t,e)=>{var o;let _;if(zt.chrome&&zt.android&&(_=mF.find(l=>l.inputType==e.inputType))&&(t.observer.delayAndroidKey(_.key,_.keyCode),_.key=="Backspace"||_.key=="Delete")){let l=((o=window.visualViewport)===null||o===void 0?void 0:o.height)||0;setTimeout(()=>{var c;(((c=window.visualViewport)===null||c===void 0?void 0:c.height)||0)>l+10&&t.hasFocus&&(t.contentDOM.blur(),t.focus())},100)}return!1};const BB=new Set;function SZ(t){BB.has(t)||(BB.add(t),t.addEventListener("copy",()=>{}),t.addEventListener("cut",()=>{}))}const wB=["pre-wrap","normal","pre-line","break-spaces"];class pZ{constructor(e){this.lineWrapping=e,this.doc=xo.empty,this.heightSamples={},this.lineHeight=14,this.charWidth=7,this.textHeight=14,this.lineLength=30,this.heightChanged=!1}heightForGap(e,o){let _=this.doc.lineAt(o).number-this.doc.lineAt(e).number+1;return this.lineWrapping&&(_+=Math.max(0,Math.ceil((o-e-_*this.lineLength*.5)/this.lineLength))),this.lineHeight*_}heightForLine(e){return this.lineWrapping?(1+Math.max(0,Math.ceil((e-this.lineLength)/(this.lineLength-5))))*this.lineHeight:this.lineHeight}setDoc(e){return this.doc=e,this}mustRefreshForWrapping(e){return wB.indexOf(e)>-1!=this.lineWrapping}mustRefreshForHeights(e){let o=!1;for(let _=0;_<e.length;_++){let l=e[_];l<0?_++:this.heightSamples[Math.floor(l*10)]||(o=!0,this.heightSamples[Math.floor(l*10)]=!0)}return o}refresh(e,o,_,l,c,T){let E=wB.indexOf(e)>-1,u=Math.round(o)!=Math.round(this.lineHeight)||this.lineWrapping!=E;if(this.lineWrapping=E,this.lineHeight=o,this.charWidth=_,this.textHeight=l,this.lineLength=c,u){this.heightSamples={};for(let d=0;d<T.length;d++){let O=T[d];O<0?d++:this.heightSamples[Math.floor(O*10)]=!0}}return u}}class LZ{constructor(e,o){this.from=e,this.heights=o,this.index=0}get more(){return this.index<this.heights.length}}class t_{constructor(e,o,_,l,c){this.from=e,this.length=o,this.top=_,this.height=l,this._content=c}get type(){return typeof this._content=="number"?vi.Text:Array.isArray(this._content)?this._content:this._content.type}get to(){return this.from+this.length}get bottom(){return this.top+this.height}get widget(){return this._content instanceof Ra?this._content.widget:null}get widgetLineBreaks(){return typeof this._content=="number"?this._content:0}join(e){let o=(Array.isArray(this._content)?this._content:[this]).concat(Array.isArray(e._content)?e._content:[e]);return new t_(this.from,this.length+e.length,this.top,this.height+e.height,o)}}var cs=function(t){return t[t.ByPos=0]="ByPos",t[t.ByHeight=1]="ByHeight",t[t.ByPosNoHeight=2]="ByPosNoHeight",t}(cs||(cs={}));const TR=.001;class Di{constructor(e,o,_=2){this.length=e,this.height=o,this.flags=_}get outdated(){return(this.flags&2)>0}set outdated(e){this.flags=(e?2:0)|this.flags&-3}setHeight(e,o){this.height!=o&&(Math.abs(this.height-o)>TR&&(e.heightChanged=!0),this.height=o)}replace(e,o,_){return Di.of(_)}decomposeLeft(e,o){o.push(this)}decomposeRight(e,o){o.push(this)}applyChanges(e,o,_,l){let c=this,T=_.doc;for(let E=l.length-1;E>=0;E--){let{fromA:u,toA:d,fromB:O,toB:h}=l[E],I=c.lineAt(u,cs.ByPosNoHeight,_.setDoc(o),0,0),S=I.to>=d?I:c.lineAt(d,cs.ByPosNoHeight,_,0,0);for(h+=S.to-d,d=S.to;E>0&&I.from<=l[E-1].toA;)u=l[E-1].fromA,O=l[E-1].fromB,E--,u<I.from&&(I=c.lineAt(u,cs.ByPosNoHeight,_,0,0));O+=I.from-u,u=I.from;let L=PP.build(_.setDoc(T),e,O,h);c=c.replace(u,d,L)}return c.updateHeight(_,0)}static empty(){return new In(0,0)}static of(e){if(e.length==1)return e[0];let o=0,_=e.length,l=0,c=0;for(;;)if(o==_)if(l>c*2){let E=e[o-1];E.break?e.splice(--o,1,E.left,null,E.right):e.splice(--o,1,E.left,E.right),_+=1+E.break,l-=E.size}else if(c>l*2){let E=e[_];E.break?e.splice(_,1,E.left,null,E.right):e.splice(_,1,E.left,E.right),_+=2+E.break,c-=E.size}else break;else if(l<c){let E=e[o++];E&&(l+=E.size)}else{let E=e[--_];E&&(c+=E.size)}let T=0;return e[o-1]==null?(T=1,o--):e[o]==null&&(T=1,_++),new fZ(Di.of(e.slice(0,o)),T,Di.of(e.slice(_)))}}Di.prototype.size=1;class yF extends Di{constructor(e,o,_){super(e,o),this.deco=_}blockAt(e,o,_,l){return new t_(l,this.length,_,this.height,this.deco||0)}lineAt(e,o,_,l,c){return this.blockAt(0,_,l,c)}forEachLine(e,o,_,l,c,T){e<=c+this.length&&o>=c&&T(this.blockAt(0,_,l,c))}updateHeight(e,o=0,_=!1,l){return l&&l.from<=o&&l.more&&this.setHeight(e,l.heights[l.index++]),this.outdated=!1,this}toString(){return`block(${this.length})`}}class In extends yF{constructor(e,o){super(e,o,null),this.collapsed=0,this.widgetHeight=0,this.breaks=0}blockAt(e,o,_,l){return new t_(l,this.length,_,this.height,this.breaks)}replace(e,o,_){let l=_[0];return _.length==1&&(l instanceof In||l instanceof ni&&l.flags&4)&&Math.abs(this.length-l.length)<10?(l instanceof ni?l=new In(l.length,this.height):l.height=this.height,this.outdated||(l.outdated=!1),l):Di.of(_)}updateHeight(e,o=0,_=!1,l){return l&&l.from<=o&&l.more?this.setHeight(e,l.heights[l.index++]):(_||this.outdated)&&this.setHeight(e,Math.max(this.widgetHeight,e.heightForLine(this.length-this.collapsed))+this.breaks*e.lineHeight),this.outdated=!1,this}toString(){return`line(${this.length}${this.collapsed?-this.collapsed:""}${this.widgetHeight?":"+this.widgetHeight:""})`}}class ni extends Di{constructor(e){super(e,0)}heightMetrics(e,o){let _=e.doc.lineAt(o).number,l=e.doc.lineAt(o+this.length).number,c=l-_+1,T,E=0;if(e.lineWrapping){let u=Math.min(this.height,e.lineHeight*c);T=u/c,this.length>c+1&&(E=(this.height-u)/(this.length-c-1))}else T=this.height/c;return{firstLine:_,lastLine:l,perLine:T,perChar:E}}blockAt(e,o,_,l){let{firstLine:c,lastLine:T,perLine:E,perChar:u}=this.heightMetrics(o,l);if(o.lineWrapping){let d=l+Math.round(Math.max(0,Math.min(1,(e-_)/this.height))*this.length),O=o.doc.lineAt(d),h=E+O.length*u,I=Math.max(_,e-h/2);return new t_(O.from,O.length,I,h,0)}else{let d=Math.max(0,Math.min(T-c,Math.floor((e-_)/E))),{from:O,length:h}=o.doc.line(c+d);return new t_(O,h,_+E*d,E,0)}}lineAt(e,o,_,l,c){if(o==cs.ByHeight)return this.blockAt(e,_,l,c);if(o==cs.ByPosNoHeight){let{from:S,to:L}=_.doc.lineAt(e);return new t_(S,L-S,0,0,0)}let{firstLine:T,perLine:E,perChar:u}=this.heightMetrics(_,c),d=_.doc.lineAt(e),O=E+d.length*u,h=d.number-T,I=l+E*h+u*(d.from-c-h);return new t_(d.from,d.length,Math.max(l,Math.min(I,l+this.height-O)),O,0)}forEachLine(e,o,_,l,c,T){e=Math.max(e,c),o=Math.min(o,c+this.length);let{firstLine:E,perLine:u,perChar:d}=this.heightMetrics(_,c);for(let O=e,h=l;O<=o;){let I=_.doc.lineAt(O);if(O==e){let L=I.number-E;h+=u*L+d*(e-c-L)}let S=u+d*I.length;T(new t_(I.from,I.length,h,S,0)),h+=S,O=I.to+1}}replace(e,o,_){let l=this.length-o;if(l>0){let c=_[_.length-1];c instanceof ni?_[_.length-1]=new ni(c.length+l):_.push(null,new ni(l-1))}if(e>0){let c=_[0];c instanceof ni?_[0]=new ni(e+c.length):_.unshift(new ni(e-1),null)}return Di.of(_)}decomposeLeft(e,o){o.push(new ni(e-1),null)}decomposeRight(e,o){o.push(null,new ni(this.length-e-1))}updateHeight(e,o=0,_=!1,l){let c=o+this.length;if(l&&l.from<=o+this.length&&l.more){let T=[],E=Math.max(o,l.from),u=-1;for(l.from>o&&T.push(new ni(l.from-o-1).updateHeight(e,o));E<=c&&l.more;){let O=e.doc.lineAt(E).length;T.length&&T.push(null);let h=l.heights[l.index++];u==-1?u=h:Math.abs(h-u)>=TR&&(u=-2);let I=new In(O,h);I.outdated=!1,T.push(I),E+=O+1}E<=c&&T.push(null,new ni(c-E).updateHeight(e,E));let d=Di.of(T);return(u<0||Math.abs(d.height-this.height)>=TR||Math.abs(u-this.heightMetrics(e,o).perLine)>=TR)&&(e.heightChanged=!0),d}else(_||this.outdated)&&(this.setHeight(e,e.heightForGap(o,o+this.length)),this.outdated=!1);return this}toString(){return`gap(${this.length})`}}class fZ extends Di{constructor(e,o,_){super(e.length+o+_.length,e.height+_.height,o|(e.outdated||_.outdated?2:0)),this.left=e,this.right=_,this.size=e.size+_.size}get break(){return this.flags&1}blockAt(e,o,_,l){let c=_+this.left.height;return e<c?this.left.blockAt(e,o,_,l):this.right.blockAt(e,o,c,l+this.left.length+this.break)}lineAt(e,o,_,l,c){let T=l+this.left.height,E=c+this.left.length+this.break,u=o==cs.ByHeight?e<T:e<E,d=u?this.left.lineAt(e,o,_,l,c):this.right.lineAt(e,o,_,T,E);if(this.break||(u?d.to<E:d.from>E))return d;let O=o==cs.ByPosNoHeight?cs.ByPosNoHeight:cs.ByPos;return u?d.join(this.right.lineAt(E,O,_,T,E)):this.left.lineAt(E,O,_,l,c).join(d)}forEachLine(e,o,_,l,c,T){let E=l+this.left.height,u=c+this.left.length+this.break;if(this.break)e<u&&this.left.forEachLine(e,o,_,l,c,T),o>=u&&this.right.forEachLine(e,o,_,E,u,T);else{let d=this.lineAt(u,cs.ByPos,_,l,c);e<d.from&&this.left.forEachLine(e,d.from-1,_,l,c,T),d.to>=e&&d.from<=o&&T(d),o>d.to&&this.right.forEachLine(d.to+1,o,_,E,u,T)}}replace(e,o,_){let l=this.left.length+this.break;if(o<l)return this.balanced(this.left.replace(e,o,_),this.right);if(e>this.left.length)return this.balanced(this.left,this.right.replace(e-l,o-l,_));let c=[];e>0&&this.decomposeLeft(e,c);let T=c.length;for(let E of _)c.push(E);if(e>0&&GB(c,T-1),o<this.length){let E=c.length;this.decomposeRight(o,c),GB(c,E)}return Di.of(c)}decomposeLeft(e,o){let _=this.left.length;if(e<=_)return this.left.decomposeLeft(e,o);o.push(this.left),this.break&&(_++,e>=_&&o.push(null)),e>_&&this.right.decomposeLeft(e-_,o)}decomposeRight(e,o){let _=this.left.length,l=_+this.break;if(e>=l)return this.right.decomposeRight(e-l,o);e<_&&this.left.decomposeRight(e,o),this.break&&e<l&&o.push(null),o.push(this.right)}balanced(e,o){return e.size>2*o.size||o.size>2*e.size?Di.of(this.break?[e,null,o]:[e,o]):(this.left=e,this.right=o,this.height=e.height+o.height,this.outdated=e.outdated||o.outdated,this.size=e.size+o.size,this.length=e.length+this.break+o.length,this)}updateHeight(e,o=0,_=!1,l){let{left:c,right:T}=this,E=o+c.length+this.break,u=null;return l&&l.from<=o+c.length&&l.more?u=c=c.updateHeight(e,o,_,l):c.updateHeight(e,o,_),l&&l.from<=E+T.length&&l.more?u=T=T.updateHeight(e,E,_,l):T.updateHeight(e,E,_),u?this.balanced(c,T):(this.height=this.left.height+this.right.height,this.outdated=!1,this)}toString(){return this.left+(this.break?" ":"-")+this.right}}function GB(t,e){let o,_;t[e]==null&&(o=t[e-1])instanceof ni&&(_=t[e+1])instanceof ni&&t.splice(e-1,3,new ni(o.length+1+_.length))}const mZ=5;class PP{constructor(e,o){this.pos=e,this.oracle=o,this.nodes=[],this.lineStart=-1,this.lineEnd=-1,this.covering=null,this.writtenTo=e}get isCovered(){return this.covering&&this.nodes[this.nodes.length-1]==this.covering}span(e,o){if(this.lineStart>-1){let _=Math.min(o,this.lineEnd),l=this.nodes[this.nodes.length-1];l instanceof In?l.length+=_-this.pos:(_>this.pos||!this.isCovered)&&this.nodes.push(new In(_-this.pos,-1)),this.writtenTo=_,o>_&&(this.nodes.push(null),this.writtenTo++,this.lineStart=-1)}this.pos=o}point(e,o,_){if(e<o||_.heightRelevant){let l=_.widget?_.widget.estimatedHeight:0,c=_.widget?_.widget.lineBreaks:0;l<0&&(l=this.oracle.lineHeight);let T=o-e;_.block?this.addBlock(new yF(T,l,_)):(T||c||l>=mZ)&&this.addLineDeco(l,c,T)}else o>e&&this.span(e,o);this.lineEnd>-1&&this.lineEnd<this.pos&&(this.lineEnd=this.oracle.doc.lineAt(this.pos).to)}enterLine(){if(this.lineStart>-1)return;let{from:e,to:o}=this.oracle.doc.lineAt(this.pos);this.lineStart=e,this.lineEnd=o,this.writtenTo<e&&((this.writtenTo<e-1||this.nodes[this.nodes.length-1]==null)&&this.nodes.push(this.blankContent(this.writtenTo,e-1)),this.nodes.push(null)),this.pos>e&&this.nodes.push(new In(this.pos-e,-1)),this.writtenTo=this.pos}blankContent(e,o){let _=new ni(o-e);return this.oracle.doc.lineAt(e).to==o&&(_.flags|=4),_}ensureLine(){this.enterLine();let e=this.nodes.length?this.nodes[this.nodes.length-1]:null;if(e instanceof In)return e;let o=new In(0,-1);return this.nodes.push(o),o}addBlock(e){this.enterLine();let o=e.deco;o&&o.startSide>0&&!this.isCovered&&this.ensureLine(),this.nodes.push(e),this.writtenTo=this.pos=this.pos+e.length,o&&o.endSide>0&&(this.covering=e)}addLineDeco(e,o,_){let l=this.ensureLine();l.length+=_,l.collapsed+=_,l.widgetHeight=Math.max(l.widgetHeight,e),l.breaks+=o,this.writtenTo=this.pos=this.pos+_}finish(e){let o=this.nodes.length==0?null:this.nodes[this.nodes.length-1];this.lineStart>-1&&!(o instanceof In)&&!this.isCovered?this.nodes.push(new In(0,-1)):(this.writtenTo<this.pos||o==null)&&this.nodes.push(this.blankContent(this.writtenTo,this.pos));let _=e;for(let l of this.nodes)l instanceof In&&l.updateHeight(this.oracle,_),_+=l?l.length:1;return this.nodes}static build(e,o,_,l){let c=new PP(_,e);return Bo.spans(o,_,l,c,0),c.finish(_)}}function CZ(t,e,o){let _=new AZ;return Bo.compare(t,e,o,_,0),_.changes}class AZ{constructor(){this.changes=[]}compareRange(){}comparePoint(e,o,_,l){(e<o||_&&_.heightRelevant||l&&l.heightRelevant)&&jA(e,o,this.changes,5)}}function bZ(t,e){let o=t.getBoundingClientRect(),_=t.ownerDocument,l=_.defaultView||window,c=Math.max(0,o.left),T=Math.min(l.innerWidth,o.right),E=Math.max(0,o.top),u=Math.min(l.innerHeight,o.bottom);for(let d=t.parentNode;d&&d!=_.body;)if(d.nodeType==1){let O=d,h=window.getComputedStyle(O);if((O.scrollHeight>O.clientHeight||O.scrollWidth>O.clientWidth)&&h.overflow!="visible"){let I=O.getBoundingClientRect();c=Math.max(c,I.left),T=Math.min(T,I.right),E=Math.max(E,I.top),u=d==t.parentNode?I.bottom:Math.min(u,I.bottom)}d=h.position=="absolute"||h.position=="fixed"?O.offsetParent:O.parentNode}else if(d.nodeType==11)d=d.host;else break;return{left:c-o.left,right:Math.max(c,T)-o.left,top:E-(o.top+e),bottom:Math.max(E,u)-(o.top+e)}}function NZ(t,e){let o=t.getBoundingClientRect();return{left:0,right:o.right-o.left,top:e,bottom:o.bottom-(o.top+e)}}class uC{constructor(e,o,_){this.from=e,this.to=o,this.size=_}static same(e,o){if(e.length!=o.length)return!1;for(let _=0;_<e.length;_++){let l=e[_],c=o[_];if(l.from!=c.from||l.to!=c.to||l.size!=c.size)return!1}return!0}draw(e,o){return eo.replace({widget:new PZ(this.size*(o?e.scaleY:e.scaleX),o)}).range(this.from,this.to)}}class PZ extends h_{constructor(e,o){super(),this.size=e,this.vertical=o}eq(e){return e.size==this.size&&e.vertical==this.vertical}toDOM(){let e=document.createElement("div");return this.vertical?e.style.height=this.size+"px":(e.style.width=this.size+"px",e.style.height="2px",e.style.display="inline-block"),e}get estimatedHeight(){return this.vertical?this.size:-1}}class kB{constructor(e){this.state=e,this.pixelViewport={left:0,right:window.innerWidth,top:0,bottom:0},this.inView=!0,this.paddingTop=0,this.paddingBottom=0,this.contentDOMWidth=0,this.contentDOMHeight=0,this.editorHeight=0,this.editorWidth=0,this.scrollTop=0,this.scrolledToBottom=!0,this.scaleX=1,this.scaleY=1,this.scrollAnchorPos=0,this.scrollAnchorHeight=-1,this.scaler=HB,this.scrollTarget=null,this.printing=!1,this.mustMeasureContent=!0,this.defaultTextDirection=us.LTR,this.visibleRanges=[],this.mustEnforceCursorAssoc=!1;let o=e.facet(bP).some(_=>typeof _!="function"&&_.class=="cm-lineWrapping");this.heightOracle=new pZ(o),this.stateDeco=e.facet(Sd).filter(_=>typeof _!="function"),this.heightMap=Di.empty().applyChanges(this.stateDeco,xo.empty,this.heightOracle.setDoc(e.doc),[new Fn(0,0,0,e.doc.length)]),this.viewport=this.getViewport(0,null),this.updateViewportLines(),this.updateForViewport(),this.lineGaps=this.ensureLineGaps([]),this.lineGapDeco=eo.set(this.lineGaps.map(_=>_.draw(this,!1))),this.computeVisibleRanges()}updateForViewport(){let e=[this.viewport],{main:o}=this.state.selection;for(let _=0;_<=1;_++){let l=_?o.head:o.anchor;if(!e.some(({from:c,to:T})=>l>=c&&l<=T)){let{from:c,to:T}=this.lineBlockAt(l);e.push(new RM(c,T))}}this.viewports=e.sort((_,l)=>_.from-l.from),this.scaler=this.heightMap.height<=7e6?HB:new UZ(this.heightOracle,this.heightMap,this.viewports)}updateViewportLines(){this.viewportLines=[],this.heightMap.forEachLine(this.viewport.from,this.viewport.to,this.heightOracle.setDoc(this.state.doc),0,0,e=>{this.viewportLines.push(this.scaler.scale==1?e:wg(e,this.scaler))})}update(e,o=null){this.state=e.state;let _=this.stateDeco;this.stateDeco=this.state.facet(Sd).filter(O=>typeof O!="function");let l=e.changedRanges,c=Fn.extendWithRanges(l,CZ(_,this.stateDeco,e?e.changes:Fs.empty(this.state.doc.length))),T=this.heightMap.height,E=this.scrolledToBottom?null:this.scrollAnchorAt(this.scrollTop);this.heightMap=this.heightMap.applyChanges(this.stateDeco,e.startState.doc,this.heightOracle.setDoc(this.state.doc),c),this.heightMap.height!=T&&(e.flags|=2),E?(this.scrollAnchorPos=e.changes.mapPos(E.from,-1),this.scrollAnchorHeight=E.top):(this.scrollAnchorPos=-1,this.scrollAnchorHeight=this.heightMap.height);let u=c.length?this.mapViewport(this.viewport,e.changes):this.viewport;(o&&(o.range.head<u.from||o.range.head>u.to)||!this.viewportIsAppropriate(u))&&(u=this.getViewport(0,o));let d=!e.changes.empty||e.flags&2||u.from!=this.viewport.from||u.to!=this.viewport.to;this.viewport=u,this.updateForViewport(),d&&this.updateViewportLines(),(this.lineGaps.length||this.viewport.to-this.viewport.from>4e3)&&this.updateLineGaps(this.ensureLineGaps(this.mapLineGaps(this.lineGaps,e.changes))),e.flags|=this.computeVisibleRanges(),o&&(this.scrollTarget=o),!this.mustEnforceCursorAssoc&&e.selectionSet&&e.view.lineWrapping&&e.state.selection.main.empty&&e.state.selection.main.assoc&&!e.state.facet(OF)&&(this.mustEnforceCursorAssoc=!0)}measure(e){let o=e.contentDOM,_=window.getComputedStyle(o),l=this.heightOracle,c=_.whiteSpace;this.defaultTextDirection=_.direction=="rtl"?us.RTL:us.LTR;let T=this.heightOracle.mustRefreshForWrapping(c),E=o.getBoundingClientRect(),u=T||this.mustMeasureContent||this.contentDOMHeight!=E.height;this.contentDOMHeight=E.height,this.mustMeasureContent=!1;let d=0,O=0;if(E.width&&E.height){let{scaleX:N,scaleY:U}=X2(o,E);(this.scaleX!=N||this.scaleY!=U)&&(this.scaleX=N,this.scaleY=U,d|=8,T=u=!0)}let h=(parseInt(_.paddingTop)||0)*this.scaleY,I=(parseInt(_.paddingBottom)||0)*this.scaleY;(this.paddingTop!=h||this.paddingBottom!=I)&&(this.paddingTop=h,this.paddingBottom=I,d|=10),this.editorWidth!=e.scrollDOM.clientWidth&&(l.lineWrapping&&(u=!0),this.editorWidth=e.scrollDOM.clientWidth,d|=8);let S=e.scrollDOM.scrollTop*this.scaleY;this.scrollTop!=S&&(this.scrollAnchorHeight=-1,this.scrollTop=S),this.scrolledToBottom=z2(e.scrollDOM);let L=(this.printing?NZ:bZ)(o,this.paddingTop),p=L.top-this.pixelViewport.top,C=L.bottom-this.pixelViewport.bottom;this.pixelViewport=L;let m=this.pixelViewport.bottom>this.pixelViewport.top&&this.pixelViewport.right>this.pixelViewport.left;if(m!=this.inView&&(this.inView=m,m&&(u=!0)),!this.inView&&!this.scrollTarget)return 0;let A=E.width;if((this.contentDOMWidth!=A||this.editorHeight!=e.scrollDOM.clientHeight)&&(this.contentDOMWidth=E.width,this.editorHeight=e.scrollDOM.clientHeight,d|=8),u){let N=e.docView.measureVisibleLineHeights(this.viewport);if(l.mustRefreshForHeights(N)&&(T=!0),T||l.lineWrapping&&Math.abs(A-this.contentDOMWidth)>l.charWidth){let{lineHeight:U,charWidth:P,textHeight:G}=e.docView.measureTextSize();T=U>0&&l.refresh(c,U,P,G,A/P,N),T&&(e.docView.minWidth=0,d|=8)}p>0&&C>0?O=Math.max(p,C):p<0&&C<0&&(O=Math.min(p,C)),l.heightChanged=!1;for(let U of this.viewports){let P=U.from==this.viewport.from?N:e.docView.measureVisibleLineHeights(U);this.heightMap=(T?Di.empty().applyChanges(this.stateDeco,xo.empty,this.heightOracle,[new Fn(0,0,0,e.state.doc.length)]):this.heightMap).updateHeight(l,0,T,new LZ(U.from,P))}l.heightChanged&&(d|=2)}let b=!this.viewportIsAppropriate(this.viewport,O)||this.scrollTarget&&(this.scrollTarget.range.head<this.viewport.from||this.scrollTarget.range.head>this.viewport.to);return b&&(this.viewport=this.getViewport(O,this.scrollTarget)),this.updateForViewport(),(d&2||b)&&this.updateViewportLines(),(this.lineGaps.length||this.viewport.to-this.viewport.from>4e3)&&this.updateLineGaps(this.ensureLineGaps(T?[]:this.lineGaps,e)),d|=this.computeVisibleRanges(),this.mustEnforceCursorAssoc&&(this.mustEnforceCursorAssoc=!1,e.docView.enforceCursorAssoc()),d}get visibleTop(){return this.scaler.fromDOM(this.pixelViewport.top)}get visibleBottom(){return this.scaler.fromDOM(this.pixelViewport.bottom)}getViewport(e,o){let _=.5-Math.max(-.5,Math.min(.5,e/1e3/2)),l=this.heightMap,c=this.heightOracle,{visibleTop:T,visibleBottom:E}=this,u=new RM(l.lineAt(T-_*1e3,cs.ByHeight,c,0,0).from,l.lineAt(E+(1-_)*1e3,cs.ByHeight,c,0,0).to);if(o){let{head:d}=o.range;if(d<u.from||d>u.to){let O=Math.min(this.editorHeight,this.pixelViewport.bottom-this.pixelViewport.top),h=l.lineAt(d,cs.ByPos,c,0,0),I;o.y=="center"?I=(h.top+h.bottom)/2-O/2:o.y=="start"||o.y=="nearest"&&d<u.from?I=h.top:I=h.bottom-O,u=new RM(l.lineAt(I-1e3/2,cs.ByHeight,c,0,0).from,l.lineAt(I+O+1e3/2,cs.ByHeight,c,0,0).to)}}return u}mapViewport(e,o){let _=o.mapPos(e.from,-1),l=o.mapPos(e.to,1);return new RM(this.heightMap.lineAt(_,cs.ByPos,this.heightOracle,0,0).from,this.heightMap.lineAt(l,cs.ByPos,this.heightOracle,0,0).to)}viewportIsAppropriate({from:e,to:o},_=0){if(!this.inView)return!0;let{top:l}=this.heightMap.lineAt(e,cs.ByPos,this.heightOracle,0,0),{bottom:c}=this.heightMap.lineAt(o,cs.ByPos,this.heightOracle,0,0),{visibleTop:T,visibleBottom:E}=this;return(e==0||l<=T-Math.max(10,Math.min(-_,250)))&&(o==this.state.doc.length||c>=E+Math.max(10,Math.min(_,250)))&&l>T-2*1e3&&c<E+2*1e3}mapLineGaps(e,o){if(!e.length||o.empty)return e;let _=[];for(let l of e)o.touchesRange(l.from,l.to)||_.push(new uC(o.mapPos(l.from),o.mapPos(l.to),l.size));return _}ensureLineGaps(e,o){let _=this.heightOracle.lineWrapping,l=_?1e4:2e3,c=l>>1,T=l<<1;if(this.defaultTextDirection!=us.LTR&&!_)return[];let E=[],u=(d,O,h,I)=>{if(O-d<c)return;let S=this.state.selection.main,L=[S.from];S.empty||L.push(S.to);for(let C of L)if(C>d&&C<O){u(d,C-10,h,I),u(C+10,O,h,I);return}let p=DZ(e,C=>C.from>=h.from&&C.to<=h.to&&Math.abs(C.from-d)<c&&Math.abs(C.to-O)<c&&!L.some(m=>C.from<m&&C.to>m));if(!p){if(O<h.to&&o&&_&&o.visibleRanges.some(C=>C.from<=O&&C.to>=O)){let C=o.moveToLineBoundary(ct.cursor(O),!1,!0).head;C>d&&(O=C)}p=new uC(d,O,this.gapSize(h,d,O,I))}E.push(p)};for(let d of this.viewportLines){if(d.length<T)continue;let O=vZ(d.from,d.to,this.stateDeco);if(O.total<T)continue;let h=this.scrollTarget?this.scrollTarget.range.head:null,I,S;if(_){let L=l/this.heightOracle.lineLength*this.heightOracle.lineHeight,p,C;if(h!=null){let m=SM(O,h),A=((this.visibleBottom-this.visibleTop)/2+L)/d.height;p=m-A,C=m+A}else p=(this.visibleTop-d.top-L)/d.height,C=(this.visibleBottom-d.top+L)/d.height;I=IM(O,p),S=IM(O,C)}else{let L=O.total*this.heightOracle.charWidth,p=l*this.heightOracle.charWidth,C,m;if(h!=null){let A=SM(O,h),b=((this.pixelViewport.right-this.pixelViewport.left)/2+p)/L;C=A-b,m=A+b}else C=(this.pixelViewport.left-p)/L,m=(this.pixelViewport.right+p)/L;I=IM(O,C),S=IM(O,m)}I>d.from&&u(d.from,I,d,O),S<d.to&&u(S,d.to,d,O)}return E}gapSize(e,o,_,l){let c=SM(l,_)-SM(l,o);return this.heightOracle.lineWrapping?e.height*c:l.total*this.heightOracle.charWidth*c}updateLineGaps(e){uC.same(e,this.lineGaps)||(this.lineGaps=e,this.lineGapDeco=eo.set(e.map(o=>o.draw(this,this.heightOracle.lineWrapping))))}computeVisibleRanges(){let e=this.stateDeco;this.lineGaps.length&&(e=e.concat(this.lineGapDeco));let o=[];Bo.spans(e,this.viewport.from,this.viewport.to,{span(l,c){o.push({from:l,to:c})},point(){}},20);let _=o.length!=this.visibleRanges.length||this.visibleRanges.some((l,c)=>l.from!=o[c].from||l.to!=o[c].to);return this.visibleRanges=o,_?4:0}lineBlockAt(e){return e>=this.viewport.from&&e<=this.viewport.to&&this.viewportLines.find(o=>o.from<=e&&o.to>=e)||wg(this.heightMap.lineAt(e,cs.ByPos,this.heightOracle,0,0),this.scaler)}lineBlockAtHeight(e){return wg(this.heightMap.lineAt(this.scaler.fromDOM(e),cs.ByHeight,this.heightOracle,0,0),this.scaler)}scrollAnchorAt(e){let o=this.lineBlockAtHeight(e+8);return o.from>=this.viewport.from||this.viewportLines[0].top-e>200?o:this.viewportLines[0]}elementAtHeight(e){return wg(this.heightMap.blockAt(this.scaler.fromDOM(e),this.heightOracle,0,0),this.scaler)}get docHeight(){return this.scaler.toDOM(this.heightMap.height)}get contentHeight(){return this.docHeight+this.paddingTop+this.paddingBottom}}class RM{constructor(e,o){this.from=e,this.to=o}}function vZ(t,e,o){let _=[],l=t,c=0;return Bo.spans(o,t,e,{span(){},point(T,E){T>l&&(_.push({from:l,to:T}),c+=T-l),l=E}},20),l<e&&(_.push({from:l,to:e}),c+=e-l),{total:c,ranges:_}}function IM({total:t,ranges:e},o){if(o<=0)return e[0].from;if(o>=1)return e[e.length-1].to;let _=Math.floor(t*o);for(let l=0;;l++){let{from:c,to:T}=e[l],E=T-c;if(_<=E)return c+_;_-=E}}function SM(t,e){let o=0;for(let{from:_,to:l}of t.ranges){if(e<=l){o+=e-_;break}o+=l-_}return o/t.total}function DZ(t,e){for(let o of t)if(e(o))return o}const HB={toDOM(t){return t},fromDOM(t){return t},scale:1};class UZ{constructor(e,o,_){let l=0,c=0,T=0;this.viewports=_.map(({from:E,to:u})=>{let d=o.lineAt(E,cs.ByPos,e,0,0).top,O=o.lineAt(u,cs.ByPos,e,0,0).bottom;return l+=O-d,{from:E,to:u,top:d,bottom:O,domTop:0,domBottom:0}}),this.scale=(7e6-l)/(o.height-l);for(let E of this.viewports)E.domTop=T+(E.top-c)*this.scale,T=E.domBottom=E.domTop+(E.bottom-E.top),c=E.bottom}toDOM(e){for(let o=0,_=0,l=0;;o++){let c=o<this.viewports.length?this.viewports[o]:null;if(!c||e<c.top)return l+(e-_)*this.scale;if(e<=c.bottom)return c.domTop+(e-c.top);_=c.bottom,l=c.domBottom}}fromDOM(e){for(let o=0,_=0,l=0;;o++){let c=o<this.viewports.length?this.viewports[o]:null;if(!c||e<c.domTop)return _+(e-l)/this.scale;if(e<=c.domBottom)return c.top+(e-c.domTop);_=c.bottom,l=c.domBottom}}}function wg(t,e){if(e.scale==1)return t;let o=e.toDOM(t.top),_=e.toDOM(t.bottom);return new t_(t.from,t.length,o,_-o,Array.isArray(t._content)?t._content.map(l=>wg(l,e)):t._content)}const pM=Ft.define({combine:t=>t.join(" ")}),ib=Ft.define({combine:t=>t.indexOf(!0)>-1}),nb=ha.newName(),$F=ha.newName(),BF=ha.newName(),wF={"&light":"."+$F,"&dark":"."+BF};function rb(t,e,o){return new ha(e,{finish(_){return/&/.test(_)?_.replace(/&\w*/,l=>{if(l=="&")return t;if(!o||!o[l])throw new RangeError(`Unsupported selector: ${l}`);return o[l]}):t+" "+_}})}const yZ=rb("."+nb,{"&":{position:"relative !important",boxSizing:"border-box","&.cm-focused":{outline:"1px dotted #212121"},display:"flex !important",flexDirection:"column"},".cm-scroller":{display:"flex !important",alignItems:"flex-start !important",fontFamily:"monospace",lineHeight:1.4,height:"100%",overflowX:"auto",position:"relative",zIndex:0},".cm-content":{margin:0,flexGrow:2,flexShrink:0,display:"block",whiteSpace:"pre",wordWrap:"normal",boxSizing:"border-box",minHeight:"100%",padding:"4px 0",outline:"none","&[contenteditable=true]":{WebkitUserModify:"read-write-plaintext-only"}},".cm-lineWrapping":{whiteSpace_fallback:"pre-wrap",whiteSpace:"break-spaces",wordBreak:"break-word",overflowWrap:"anywhere",flexShrink:1},"&light .cm-content":{caretColor:"black"},"&dark .cm-content":{caretColor:"white"},".cm-line":{display:"block",padding:"0 2px 0 6px"},".cm-layer":{position:"absolute",left:0,top:0,contain:"size style","& > *":{position:"absolute"}},"&light .cm-selectionBackground":{background:"#d9d9d9"},"&dark .cm-selectionBackground":{background:"#222"},"&light.cm-focused > .cm-scroller > .cm-selectionLayer .cm-selectionBackground":{background:"#d7d4f0"},"&dark.cm-focused > .cm-scroller > .cm-selectionLayer .cm-selectionBackground":{background:"#233"},".cm-cursorLayer":{pointerEvents:"none"},"&.cm-focused > .cm-scroller > .cm-cursorLayer":{animation:"steps(1) cm-blink 1.2s infinite"},"@keyframes cm-blink":{"0%":{},"50%":{opacity:0},"100%":{}},"@keyframes cm-blink2":{"0%":{},"50%":{opacity:0},"100%":{}},".cm-cursor, .cm-dropCursor":{borderLeft:"1.2px solid black",marginLeft:"-0.6px",pointerEvents:"none"},".cm-cursor":{display:"none"},"&dark .cm-cursor":{borderLeftColor:"#444"},".cm-dropCursor":{position:"absolute"},"&.cm-focused > .cm-scroller > .cm-cursorLayer .cm-cursor":{display:"block"},".cm-iso":{unicodeBidi:"isolate"},".cm-announced":{position:"fixed",top:"-10000px"},"@media print":{".cm-announced":{display:"none"}},"&light .cm-activeLine":{backgroundColor:"#cceeff44"},"&dark .cm-activeLine":{backgroundColor:"#99eeff33"},"&light .cm-specialChar":{color:"red"},"&dark .cm-specialChar":{color:"#f78"},".cm-gutters":{flexShrink:0,display:"flex",height:"100%",boxSizing:"border-box",insetInlineStart:0,zIndex:200},"&light .cm-gutters":{backgroundColor:"#f5f5f5",color:"#6c6c6c",borderRight:"1px solid #ddd"},"&dark .cm-gutters":{backgroundColor:"#333338",color:"#ccc"},".cm-gutter":{display:"flex !important",flexDirection:"column",flexShrink:0,boxSizing:"border-box",minHeight:"100%",overflow:"hidden"},".cm-gutterElement":{boxSizing:"border-box"},".cm-lineNumbers .cm-gutterElement":{padding:"0 3px 0 5px",minWidth:"20px",textAlign:"right",whiteSpace:"nowrap"},"&light .cm-activeLineGutter":{backgroundColor:"#e2f2ff"},"&dark .cm-activeLineGutter":{backgroundColor:"#222227"},".cm-panels":{boxSizing:"border-box",position:"sticky",left:0,right:0},"&light .cm-panels":{backgroundColor:"#f5f5f5",color:"black"},"&light .cm-panels-top":{borderBottom:"1px solid #ddd"},"&light .cm-panels-bottom":{borderTop:"1px solid #ddd"},"&dark .cm-panels":{backgroundColor:"#333338",color:"white"},".cm-tab":{display:"inline-block",overflow:"hidden",verticalAlign:"bottom"},".cm-widgetBuffer":{verticalAlign:"text-top",height:"1em",width:0,display:"inline"},".cm-placeholder":{color:"#888",display:"inline-block",verticalAlign:"top"},".cm-highlightSpace:before":{content:"attr(data-display)",position:"absolute",pointerEvents:"none",color:"#888"},".cm-highlightTab":{backgroundImage:`url('data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg" width="200" height="20"><path stroke="%23888" stroke-width="1" fill="none" d="M1 10H196L190 5M190 15L196 10M197 4L197 16"/></svg>')`,backgroundSize:"auto 100%",backgroundPosition:"right 90%",backgroundRepeat:"no-repeat"},".cm-trailingSpace":{backgroundColor:"#ff332255"},".cm-button":{verticalAlign:"middle",color:"inherit",fontSize:"70%",padding:".2em 1em",borderRadius:"1px"},"&light .cm-button":{backgroundImage:"linear-gradient(#eff1f5, #d9d9df)",border:"1px solid #888","&:active":{backgroundImage:"linear-gradient(#b4b4b4, #d0d3d6)"}},"&dark .cm-button":{backgroundImage:"linear-gradient(#393939, #111)",border:"1px solid #888","&:active":{backgroundImage:"linear-gradient(#111, #333)"}},".cm-textfield":{verticalAlign:"middle",color:"inherit",fontSize:"70%",border:"1px solid silver",padding:".2em .5em"},"&light .cm-textfield":{backgroundColor:"white"},"&dark .cm-textfield":{border:"1px solid #555",backgroundColor:"inherit"}},wF),Gg="";class $Z{constructor(e,o){this.points=e,this.text="",this.lineSeparator=o.facet(fo.lineSeparator)}append(e){this.text+=e}lineBreak(){this.text+=Gg}readRange(e,o){if(!e)return this;let _=e.parentNode;for(let l=e;;){this.findPointBefore(_,l);let c=this.text.length;this.readNode(l);let T=l.nextSibling;if(T==o)break;let E=Es.get(l),u=Es.get(T);(E&&u?E.breakAfter:(E?E.breakAfter:xB(l))||xB(T)&&(l.nodeName!="BR"||l.cmIgnore)&&this.text.length>c)&&this.lineBreak(),l=T}return this.findPointBefore(_,o),this}readTextNode(e){let o=e.nodeValue;for(let _ of this.points)_.node==e&&(_.pos=this.text.length+Math.min(_.offset,o.length));for(let _=0,l=this.lineSeparator?null:/\r\n?|\n/g;;){let c=-1,T=1,E;if(this.lineSeparator?(c=o.indexOf(this.lineSeparator,_),T=this.lineSeparator.length):(E=l.exec(o))&&(c=E.index,T=E[0].length),this.append(o.slice(_,c<0?o.length:c)),c<0)break;if(this.lineBreak(),T>1)for(let u of this.points)u.node==e&&u.pos>this.text.length&&(u.pos-=T-1);_=c+T}}readNode(e){if(e.cmIgnore)return;let o=Es.get(e),_=o&&o.overrideDOMText;if(_!=null){this.findPointInside(e,_.length);for(let l=_.iter();!l.next().done;)l.lineBreak?this.lineBreak():this.append(l.value)}else e.nodeType==3?this.readTextNode(e):e.nodeName=="BR"?e.nextSibling&&this.lineBreak():e.nodeType==1&&this.readRange(e.firstChild,null)}findPointBefore(e,o){for(let _ of this.points)_.node==e&&e.childNodes[_.offset]==o&&(_.pos=this.text.length)}findPointInside(e,o){for(let _ of this.points)(e.nodeType==3?_.node==e:e.contains(_.node))&&(_.pos=this.text.length+(BZ(e,_.node,_.offset)?o:0))}}function BZ(t,e,o){for(;;){if(!e||o<J_(e))return!1;if(e==t)return!0;o=Id(e)+1,e=e.parentNode}}function xB(t){return t.nodeType==1&&/^(DIV|P|LI|UL|OL|BLOCKQUOTE|DD|DT|H\d|SECTION|PRE)$/.test(t.nodeName)}class FB{constructor(e,o){this.node=e,this.offset=o,this.pos=-1}}class wZ{constructor(e,o,_,l){this.typeOver=l,this.bounds=null,this.text="";let{impreciseHead:c,impreciseAnchor:T}=e.docView;if(e.state.readOnly&&o>-1)this.newSel=null;else if(o>-1&&(this.bounds=e.docView.domBoundsAround(o,_,0))){let E=c||T?[]:HZ(e),u=new $Z(E,e.state);u.readRange(this.bounds.startDOM,this.bounds.endDOM),this.text=u.text,this.newSel=xZ(E,this.bounds.from)}else{let E=e.observer.selectionRange,u=c&&c.node==E.focusNode&&c.offset==E.focusOffset||!WA(e.contentDOM,E.focusNode)?e.state.selection.main.head:e.docView.posFromDOM(E.focusNode,E.focusOffset),d=T&&T.node==E.anchorNode&&T.offset==E.anchorOffset||!WA(e.contentDOM,E.anchorNode)?e.state.selection.main.anchor:e.docView.posFromDOM(E.anchorNode,E.anchorOffset),O=e.viewport;if(zt.ios&&e.state.selection.main.empty&&u!=d&&(O.from>0||O.to<e.state.doc.length)){let h=O.from-Math.min(u,d),I=O.to-Math.max(u,d);(h==0||h==1)&&(I==0||I==-1)&&(u=0,d=e.state.doc.length)}this.newSel=ct.single(d,u)}}}function GF(t,e){let o,{newSel:_}=e,l=t.state.selection.main,c=t.inputState.lastKeyTime>Date.now()-100?t.inputState.lastKeyCode:-1;if(e.bounds){let{from:T,to:E}=e.bounds,u=l.from,d=null;(c===8||zt.android&&e.text.length<E-T)&&(u=l.to,d="end");let O=kZ(t.state.doc.sliceString(T,E,Gg),e.text,u-T,d);O&&(zt.chrome&&c==13&&O.toB==O.from+2&&e.text.slice(O.from,O.toB)==Gg+Gg&&O.toB--,o={from:T+O.from,to:T+O.toA,insert:xo.of(e.text.slice(O.from,O.toB).split(Gg))})}else _&&(!t.hasFocus&&t.state.facet(ES)||_.main.eq(l))&&(_=null);if(!o&&!_)return!1;if(!o&&e.typeOver&&!l.empty&&_&&_.main.empty?o={from:l.from,to:l.to,insert:t.state.doc.slice(l.from,l.to)}:o&&o.from>=l.from&&o.to<=l.to&&(o.from!=l.from||o.to!=l.to)&&l.to-l.from-(o.to-o.from)<=4?o={from:l.from,to:l.to,insert:t.state.doc.slice(l.from,o.from).append(o.insert).append(t.state.doc.slice(o.to,l.to))}:(zt.mac||zt.android)&&o&&o.from==o.to&&o.from==l.head-1&&/^\. ?$/.test(o.insert.toString())&&t.contentDOM.getAttribute("autocorrect")=="off"?(_&&o.insert.length==2&&(_=ct.single(_.main.anchor-1,_.main.head-1)),o={from:l.from,to:l.to,insert:xo.of([" "])}):zt.chrome&&o&&o.from==o.to&&o.from==l.head&&o.insert.toString()==`
- `&&t.lineWrapping&&(_&&(_=ct.single(_.main.anchor-1,_.main.head-1)),o={from:l.from,to:l.to,insert:xo.of([" "])}),o){if(zt.ios&&t.inputState.flushIOSKey()||zt.android&&(o.from==l.from&&o.to==l.to&&o.insert.length==1&&o.insert.lines==2&&PE(t.contentDOM,"Enter",13)||(o.from==l.from-1&&o.to==l.to&&o.insert.length==0||c==8&&o.insert.length<o.to-o.from&&o.to>l.head)&&PE(t.contentDOM,"Backspace",8)||o.from==l.from&&o.to==l.to+1&&o.insert.length==0&&PE(t.contentDOM,"Delete",46)))return!0;let T=o.insert.toString();t.inputState.composing>=0&&t.inputState.composing++;let E,u=()=>E||(E=GZ(t,o,_));return t.state.facet(uF).some(d=>d(t,o.from,o.to,T,u))||t.dispatch(u()),!0}else if(_&&!_.main.eq(l)){let T=!1,E="select";return t.inputState.lastSelectionTime>Date.now()-50&&(t.inputState.lastSelectionOrigin=="select"&&(T=!0),E=t.inputState.lastSelectionOrigin),t.dispatch({selection:_,scrollIntoView:T,userEvent:E}),!0}else return!1}function GZ(t,e,o){let _,l=t.state,c=l.selection.main;if(e.from>=c.from&&e.to<=c.to&&e.to-e.from>=(c.to-c.from)/3&&(!o||o.main.empty&&o.main.from==e.from+e.insert.length)&&t.inputState.composing<0){let E=c.from<e.from?l.sliceDoc(c.from,e.from):"",u=c.to>e.to?l.sliceDoc(e.to,c.to):"";_=l.replaceSelection(t.state.toText(E+e.insert.sliceString(0,void 0,t.state.lineBreak)+u))}else{let E=l.changes(e),u=o&&o.main.to<=E.newLength?o.main:void 0;if(l.selection.ranges.length>1&&t.inputState.composing>=0&&e.to<=c.to&&e.to>=c.to-10){let d=t.state.sliceDoc(e.from,e.to),O,h=o&&pF(t,o.main.head);if(h){let L=e.insert.length-(e.to-e.from);O={from:h.from,to:h.to-L}}else O=t.state.doc.lineAt(c.head);let I=c.to-e.to,S=c.to-c.from;_=l.changeByRange(L=>{if(L.from==c.from&&L.to==c.to)return{changes:E,range:u||L.map(E)};let p=L.to-I,C=p-d.length;if(L.to-L.from!=S||t.state.sliceDoc(C,p)!=d||L.to>=O.from&&L.from<=O.to)return{range:L};let m=l.changes({from:C,to:p,insert:e.insert}),A=L.to-c.to;return{changes:m,range:u?ct.range(Math.max(0,u.anchor+A),Math.max(0,u.head+A)):L.map(m)}})}else _={changes:E,selection:u&&l.selection.replaceRange(u)}}let T="input.type";return(t.composing||t.inputState.compositionPendingChange&&t.inputState.compositionEndedAt>Date.now()-50)&&(t.inputState.compositionPendingChange=!1,T+=".compose",t.inputState.compositionFirstChange&&(T+=".start",t.inputState.compositionFirstChange=!1)),l.update(_,{userEvent:T,scrollIntoView:!0})}function kZ(t,e,o,_){let l=Math.min(t.length,e.length),c=0;for(;c<l&&t.charCodeAt(c)==e.charCodeAt(c);)c++;if(c==l&&t.length==e.length)return null;let T=t.length,E=e.length;for(;T>0&&E>0&&t.charCodeAt(T-1)==e.charCodeAt(E-1);)T--,E--;if(_=="end"){let u=Math.max(0,c-Math.min(T,E));o-=T+u-c}if(T<c&&t.length<e.length){let u=o<=c&&o>=T?c-o:0;c-=u,E=c+(E-T),T=c}else if(E<c){let u=o<=c&&o>=E?c-o:0;c-=u,T=c+(T-E),E=c}return{from:c,toA:T,toB:E}}function HZ(t){let e=[];if(t.root.activeElement!=t.contentDOM)return e;let{anchorNode:o,anchorOffset:_,focusNode:l,focusOffset:c}=t.observer.selectionRange;return o&&(e.push(new FB(o,_)),(l!=o||c!=_)&&e.push(new FB(l,c))),e}function xZ(t,e){if(t.length==0)return null;let o=t[0].pos,_=t.length==2?t[1].pos:o;return o>-1&&_>-1?ct.single(o+e,_+e):null}const FZ={childList:!0,characterData:!0,subtree:!0,attributes:!0,characterDataOldValue:!0},gC=zt.ie&&zt.ie_version<=11;class VZ{constructor(e){this.view=e,this.active=!1,this.selectionRange=new C9,this.selectionChanged=!1,this.delayedFlush=-1,this.resizeTimeout=-1,this.queue=[],this.delayedAndroidKey=null,this.flushingAndroidKey=-1,this.lastChange=0,this.scrollTargets=[],this.intersection=null,this.resizeScroll=null,this.intersecting=!1,this.gapIntersection=null,this.gaps=[],this.parentCheck=-1,this.dom=e.contentDOM,this.observer=new MutationObserver(o=>{for(let _ of o)this.queue.push(_);(zt.ie&&zt.ie_version<=11||zt.ios&&e.composing)&&o.some(_=>_.type=="childList"&&_.removedNodes.length||_.type=="characterData"&&_.oldValue.length>_.target.nodeValue.length)?this.flushSoon():this.flush()}),gC&&(this.onCharData=o=>{this.queue.push({target:o.target,type:"characterData",oldValue:o.prevValue}),this.flushSoon()}),this.onSelectionChange=this.onSelectionChange.bind(this),this.onResize=this.onResize.bind(this),this.onPrint=this.onPrint.bind(this),this.onScroll=this.onScroll.bind(this),typeof ResizeObserver=="function"&&(this.resizeScroll=new ResizeObserver(()=>{var o;((o=this.view.docView)===null||o===void 0?void 0:o.lastUpdate)<Date.now()-75&&this.onResize()}),this.resizeScroll.observe(e.scrollDOM)),this.addWindowListeners(this.win=e.win),this.start(),typeof IntersectionObserver=="function"&&(this.intersection=new IntersectionObserver(o=>{this.parentCheck<0&&(this.parentCheck=setTimeout(this.listenForScroll.bind(this),1e3)),o.length>0&&o[o.length-1].intersectionRatio>0!=this.intersecting&&(this.intersecting=!this.intersecting,this.intersecting!=this.view.inView&&this.onScrollChanged(document.createEvent("Event")))},{threshold:[0,.001]}),this.intersection.observe(this.dom),this.gapIntersection=new IntersectionObserver(o=>{o.length>0&&o[o.length-1].intersectionRatio>0&&this.onScrollChanged(document.createEvent("Event"))},{})),this.listenForScroll(),this.readSelectionRange()}onScrollChanged(e){this.view.inputState.runHandlers("scroll",e),this.intersecting&&this.view.measure()}onScroll(e){this.intersecting&&this.flush(!1),this.onScrollChanged(e)}onResize(){this.resizeTimeout<0&&(this.resizeTimeout=setTimeout(()=>{this.resizeTimeout=-1,this.view.requestMeasure()},50))}onPrint(){this.view.viewState.printing=!0,this.view.measure(),setTimeout(()=>{this.view.viewState.printing=!1,this.view.requestMeasure()},500)}updateGaps(e){if(this.gapIntersection&&(e.length!=this.gaps.length||this.gaps.some((o,_)=>o!=e[_]))){this.gapIntersection.disconnect();for(let o of e)this.gapIntersection.observe(o);this.gaps=e}}onSelectionChange(e){let o=this.selectionChanged;if(!this.readSelectionRange()||this.delayedAndroidKey)return;let{view:_}=this,l=this.selectionRange;if(_.state.facet(ES)?_.root.activeElement!=this.dom:!aR(_.dom,l))return;let c=l.anchorNode&&_.docView.nearest(l.anchorNode);if(c&&c.ignoreEvent(e)){o||(this.selectionChanged=!1);return}(zt.ie&&zt.ie_version<=11||zt.android&&zt.chrome)&&!_.state.selection.main.empty&&l.focusNode&&zg(l.focusNode,l.focusOffset,l.anchorNode,l.anchorOffset)?this.flushSoon():this.flush(!1)}readSelectionRange(){let{view:e}=this,o=zt.safari&&e.root.nodeType==11&&p9(this.dom.ownerDocument)==this.dom&&WZ(this.view)||sI(e.root);if(!o||this.selectionRange.eq(o))return!1;let _=aR(this.dom,o);return _&&!this.selectionChanged&&e.inputState.lastFocusTime>Date.now()-200&&e.inputState.lastTouchTime<Date.now()-300&&b9(this.dom,o)?(this.view.inputState.lastFocusTime=0,e.docView.updateSelection(),!1):(this.selectionRange.setRange(o),_&&(this.selectionChanged=!0),!0)}setSelectionRange(e,o){this.selectionRange.set(e.node,e.offset,o.node,o.offset),this.selectionChanged=!1}clearSelectionRange(){this.selectionRange.set(null,0,null,0)}listenForScroll(){this.parentCheck=-1;let e=0,o=null;for(let _=this.dom;_;)if(_.nodeType==1)!o&&e<this.scrollTargets.length&&this.scrollTargets[e]==_?e++:o||(o=this.scrollTargets.slice(0,e)),o&&o.push(_),_=_.assignedSlot||_.parentNode;else if(_.nodeType==11)_=_.host;else break;if(e<this.scrollTargets.length&&!o&&(o=this.scrollTargets.slice(0,e)),o){for(let _ of this.scrollTargets)_.removeEventListener("scroll",this.onScroll);for(let _ of this.scrollTargets=o)_.addEventListener("scroll",this.onScroll)}}ignore(e){if(!this.active)return e();try{return this.stop(),e()}finally{this.start(),this.clear()}}start(){this.active||(this.observer.observe(this.dom,FZ),gC&&this.dom.addEventListener("DOMCharacterDataModified",this.onCharData),this.active=!0)}stop(){this.active&&(this.active=!1,this.observer.disconnect(),gC&&this.dom.removeEventListener("DOMCharacterDataModified",this.onCharData))}clear(){this.processRecords(),this.queue.length=0,this.selectionChanged=!1}delayAndroidKey(e,o){var _;if(!this.delayedAndroidKey){let l=()=>{let c=this.delayedAndroidKey;c&&(this.clearDelayedAndroidKey(),this.view.inputState.lastKeyCode=c.keyCode,this.view.inputState.lastKeyTime=Date.now(),!this.flush()&&c.force&&PE(this.dom,c.key,c.keyCode))};this.flushingAndroidKey=this.view.win.requestAnimationFrame(l)}(!this.delayedAndroidKey||e=="Enter")&&(this.delayedAndroidKey={key:e,keyCode:o,force:this.lastChange<Date.now()-50||!!(!((_=this.delayedAndroidKey)===null||_===void 0)&&_.force)})}clearDelayedAndroidKey(){this.win.cancelAnimationFrame(this.flushingAndroidKey),this.delayedAndroidKey=null,this.flushingAndroidKey=-1}flushSoon(){this.delayedFlush<0&&(this.delayedFlush=this.view.win.requestAnimationFrame(()=>{this.delayedFlush=-1,this.flush()}))}forceFlush(){this.delayedFlush>=0&&(this.view.win.cancelAnimationFrame(this.delayedFlush),this.delayedFlush=-1),this.flush()}pendingRecords(){for(let e of this.observer.takeRecords())this.queue.push(e);return this.queue}processRecords(){let e=this.pendingRecords();e.length&&(this.queue=[]);let o=-1,_=-1,l=!1;for(let c of e){let T=this.readMutation(c);T&&(T.typeOver&&(l=!0),o==-1?{from:o,to:_}=T:(o=Math.min(T.from,o),_=Math.max(T.to,_)))}return{from:o,to:_,typeOver:l}}readChange(){let{from:e,to:o,typeOver:_}=this.processRecords(),l=this.selectionChanged&&aR(this.dom,this.selectionRange);if(e<0&&!l)return null;e>-1&&(this.lastChange=Date.now()),this.view.inputState.lastFocusTime=0,this.selectionChanged=!1;let c=new wZ(this.view,e,o,_);return this.view.docView.domChanged={newSel:c.newSel?c.newSel.main:null},c}flush(e=!0){if(this.delayedFlush>=0||this.delayedAndroidKey)return!1;e&&this.readSelectionRange();let o=this.readChange();if(!o)return this.view.requestMeasure(),!1;let _=this.view.state,l=GF(this.view,o);return this.view.state==_&&this.view.update([]),l}readMutation(e){let o=this.view.docView.nearest(e.target);if(!o||o.ignoreMutation(e))return null;if(o.markDirty(e.type=="attributes"),e.type=="attributes"&&(o.flags|=4),e.type=="childList"){let _=VB(o,e.previousSibling||e.target.previousSibling,-1),l=VB(o,e.nextSibling||e.target.nextSibling,1);return{from:_?o.posAfter(_):o.posAtStart,to:l?o.posBefore(l):o.posAtEnd,typeOver:!1}}else return e.type=="characterData"?{from:o.posAtStart,to:o.posAtEnd,typeOver:e.target.nodeValue==e.oldValue}:null}setWindow(e){e!=this.win&&(this.removeWindowListeners(this.win),this.win=e,this.addWindowListeners(this.win))}addWindowListeners(e){e.addEventListener("resize",this.onResize),e.addEventListener("beforeprint",this.onPrint),e.addEventListener("scroll",this.onScroll),e.document.addEventListener("selectionchange",this.onSelectionChange)}removeWindowListeners(e){e.removeEventListener("scroll",this.onScroll),e.removeEventListener("resize",this.onResize),e.removeEventListener("beforeprint",this.onPrint),e.document.removeEventListener("selectionchange",this.onSelectionChange)}destroy(){var e,o,_;this.stop(),(e=this.intersection)===null||e===void 0||e.disconnect(),(o=this.gapIntersection)===null||o===void 0||o.disconnect(),(_=this.resizeScroll)===null||_===void 0||_.disconnect();for(let l of this.scrollTargets)l.removeEventListener("scroll",this.onScroll);this.removeWindowListeners(this.win),clearTimeout(this.parentCheck),clearTimeout(this.resizeTimeout),this.win.cancelAnimationFrame(this.delayedFlush),this.win.cancelAnimationFrame(this.flushingAndroidKey)}}function VB(t,e,o){for(;e;){let _=Es.get(e);if(_&&_.parent==t)return _;let l=e.parentNode;e=l!=t.dom?l:o>0?e.nextSibling:e.previousSibling}return null}function WZ(t){let e=null;function o(u){u.preventDefault(),u.stopImmediatePropagation(),e=u.getTargetRanges()[0]}if(t.contentDOM.addEventListener("beforeinput",o,!0),t.dom.ownerDocument.execCommand("indent"),t.contentDOM.removeEventListener("beforeinput",o,!0),!e)return null;let _=e.startContainer,l=e.startOffset,c=e.endContainer,T=e.endOffset,E=t.docView.domAtPos(t.state.selection.main.anchor);return zg(E.node,E.offset,c,T)&&([_,l,c,T]=[c,T,_,l]),{anchorNode:_,anchorOffset:l,focusNode:c,focusOffset:T}}class Gt{get state(){return this.viewState.state}get viewport(){return this.viewState.viewport}get visibleRanges(){return this.viewState.visibleRanges}get inView(){return this.viewState.inView}get composing(){return this.inputState.composing>0}get compositionStarted(){return this.inputState.composing>=0}get root(){return this._root}get win(){return this.dom.ownerDocument.defaultView||window}constructor(e={}){this.plugins=[],this.pluginMap=new Map,this.editorAttrs={},this.contentAttrs={},this.bidiCache=[],this.destroyed=!1,this.updateState=2,this.measureScheduled=-1,this.measureRequests=[],this.contentDOM=document.createElement("div"),this.scrollDOM=document.createElement("div"),this.scrollDOM.tabIndex=-1,this.scrollDOM.className="cm-scroller",this.scrollDOM.appendChild(this.contentDOM),this.announceDOM=document.createElement("div"),this.announceDOM.className="cm-announced",this.announceDOM.setAttribute("aria-live","polite"),this.dom=document.createElement("div"),this.dom.appendChild(this.announceDOM),this.dom.appendChild(this.scrollDOM),e.parent&&e.parent.appendChild(this.dom);let{dispatch:o}=e;this.dispatchTransactions=e.dispatchTransactions||o&&(_=>_.forEach(l=>o(l,this)))||(_=>this.update(_)),this.dispatch=this.dispatch.bind(this),this._root=e.root||A9(e.parent)||document,this.viewState=new kB(e.state||fo.create(e)),e.scrollTo&&e.scrollTo.is(OM)&&(this.viewState.scrollTarget=e.scrollTo.value.clip(this.viewState.state)),this.plugins=this.state.facet($g).map(_=>new cC(_));for(let _ of this.plugins)_.update(this);this.observer=new VZ(this),this.inputState=new nZ(this),this.inputState.ensureHandlers(this.plugins),this.docView=new SB(this),this.mountStyles(),this.updateAttrs(),this.updateState=0,this.requestMeasure()}dispatch(...e){let o=e.length==1&&e[0]instanceof Bs?e:e.length==1&&Array.isArray(e[0])?e[0]:[this.state.update(...e)];this.dispatchTransactions(o,this)}update(e){if(this.updateState!=0)throw new Error("Calls to EditorView.update are not allowed while an update is in progress");let o=!1,_=!1,l,c=this.state;for(let I of e){if(I.startState!=c)throw new RangeError("Trying to update state with a transaction that doesn't start from the previous state.");c=I.state}if(this.destroyed){this.viewState.state=c;return}let T=this.hasFocus,E=0,u=null;e.some(I=>I.annotation(vF))?(this.inputState.notifiedFocused=T,E=1):T!=this.inputState.notifiedFocused&&(this.inputState.notifiedFocused=T,u=DF(c,T),u||(E=1));let d=this.observer.delayedAndroidKey,O=null;if(d?(this.observer.clearDelayedAndroidKey(),O=this.observer.readChange(),(O&&!this.state.doc.eq(c.doc)||!this.state.selection.eq(c.selection))&&(O=null)):this.observer.clear(),c.facet(fo.phrases)!=this.state.facet(fo.phrases))return this.setState(c);l=iI.create(this,c,e),l.flags|=E;let h=this.viewState.scrollTarget;try{this.updateState=2;for(let I of e){if(h&&(h=h.map(I.changes)),I.scrollIntoView){let{main:S}=I.state.selection;h=new vE(S.empty?S:ct.cursor(S.head,S.head>S.anchor?-1:1))}for(let S of I.effects)S.is(OM)&&(h=S.value.clip(this.state))}this.viewState.update(l,h),this.bidiCache=nI.update(this.bidiCache,l.changes),l.empty||(this.updatePlugins(l),this.inputState.update(l)),o=this.docView.update(l),this.state.facet(Bg)!=this.styleModules&&this.mountStyles(),_=this.updateAttrs(),this.showAnnouncements(e),this.docView.updateSelection(o,e.some(I=>I.isUserEvent("select.pointer")))}finally{this.updateState=0}if(l.startState.facet(pM)!=l.state.facet(pM)&&(this.viewState.mustMeasureContent=!0),(o||_||h||this.viewState.mustEnforceCursorAssoc||this.viewState.mustMeasureContent)&&this.requestMeasure(),!l.empty)for(let I of this.state.facet(eb))try{I(l)}catch(S){xn(this.state,S,"update listener")}(u||O)&&Promise.resolve().then(()=>{u&&this.state==u.startState&&this.dispatch(u),O&&!GF(this,O)&&d.force&&PE(this.contentDOM,d.key,d.keyCode)})}setState(e){if(this.updateState!=0)throw new Error("Calls to EditorView.setState are not allowed while an update is in progress");if(this.destroyed){this.viewState.state=e;return}this.updateState=2;let o=this.hasFocus;try{for(let _ of this.plugins)_.destroy(this);this.viewState=new kB(e),this.plugins=e.facet($g).map(_=>new cC(_)),this.pluginMap.clear();for(let _ of this.plugins)_.update(this);this.docView.destroy(),this.docView=new SB(this),this.inputState.ensureHandlers(this.plugins),this.mountStyles(),this.updateAttrs(),this.bidiCache=[]}finally{this.updateState=0}o&&this.focus(),this.requestMeasure()}updatePlugins(e){let o=e.startState.facet($g),_=e.state.facet($g);if(o!=_){let l=[];for(let c of _){let T=o.indexOf(c);if(T<0)l.push(new cC(c));else{let E=this.plugins[T];E.mustUpdate=e,l.push(E)}}for(let c of this.plugins)c.mustUpdate!=e&&c.destroy(this);this.plugins=l,this.pluginMap.clear()}else for(let l of this.plugins)l.mustUpdate=e;for(let l=0;l<this.plugins.length;l++)this.plugins[l].update(this);o!=_&&this.inputState.ensureHandlers(this.plugins)}measure(e=!0){if(this.destroyed)return;if(this.measureScheduled>-1&&this.win.cancelAnimationFrame(this.measureScheduled),this.observer.delayedAndroidKey){this.measureScheduled=-1,this.requestMeasure();return}this.measureScheduled=0,e&&this.observer.forceFlush();let o=null,_=this.scrollDOM,l=_.scrollTop*this.scaleY,{scrollAnchorPos:c,scrollAnchorHeight:T}=this.viewState;Math.abs(l-this.viewState.scrollTop)>1&&(T=-1),this.viewState.scrollAnchorHeight=-1;try{for(let E=0;;E++){if(T<0)if(z2(_))c=-1,T=this.viewState.heightMap.height;else{let S=this.viewState.scrollAnchorAt(l);c=S.from,T=S.top}this.updateState=1;let u=this.viewState.measure(this);if(!u&&!this.measureRequests.length&&this.viewState.scrollTarget==null)break;if(E>5){console.warn(this.measureRequests.length?"Measure loop restarted more than 5 times":"Viewport failed to stabilize");break}let d=[];u&4||([this.measureRequests,d]=[d,this.measureRequests]);let O=d.map(S=>{try{return S.read(this)}catch(L){return xn(this.state,L),WB}}),h=iI.create(this,this.state,[]),I=!1;h.flags|=u,o?o.flags|=u:o=h,this.updateState=2,h.empty||(this.updatePlugins(h),this.inputState.update(h),this.updateAttrs(),I=this.docView.update(h));for(let S=0;S<d.length;S++)if(O[S]!=WB)try{let L=d[S];L.write&&L.write(O[S],this)}catch(L){xn(this.state,L)}if(I&&this.docView.updateSelection(!0),!h.viewportChanged&&this.measureRequests.length==0){if(this.viewState.editorHeight)if(this.viewState.scrollTarget){this.docView.scrollIntoView(this.viewState.scrollTarget),this.viewState.scrollTarget=null,T=-1;continue}else{let L=(c<0?this.viewState.heightMap.height:this.viewState.lineBlockAt(c).top)-T;if(L>1||L<-1){l=l+L,_.scrollTop=l/this.scaleY,T=-1;continue}}break}}}finally{this.updateState=0,this.measureScheduled=-1}if(o&&!o.empty)for(let E of this.state.facet(eb))E(o)}get themeClasses(){return nb+" "+(this.state.facet(ib)?BF:$F)+" "+this.state.facet(pM)}updateAttrs(){let e=XB(this,hF,{class:"cm-editor"+(this.hasFocus?" cm-focused ":" ")+this.themeClasses}),o={spellcheck:"false",autocorrect:"off",autocapitalize:"off",translate:"no",contenteditable:this.state.facet(ES)?"true":"false",class:"cm-content",style:`${zt.tabSize}: ${this.state.tabSize}`,role:"textbox","aria-multiline":"true"};this.state.readOnly&&(o["aria-readonly"]="true"),XB(this,bP,o);let _=this.observer.ignore(()=>{let l=ZA(this.contentDOM,this.contentAttrs,o),c=ZA(this.dom,this.editorAttrs,e);return l||c});return this.editorAttrs=e,this.contentAttrs=o,_}showAnnouncements(e){let o=!0;for(let _ of e)for(let l of _.effects)if(l.is(Gt.announce)){o&&(this.announceDOM.textContent=""),o=!1;let c=this.announceDOM.appendChild(document.createElement("div"));c.textContent=l.value}}mountStyles(){this.styleModules=this.state.facet(Bg);let e=this.state.facet(Gt.cspNonce);ha.mount(this.root,this.styleModules.concat(yZ).reverse(),e?{nonce:e}:void 0)}readMeasured(){if(this.updateState==2)throw new Error("Reading the editor layout isn't allowed during an update");this.updateState==0&&this.measureScheduled>-1&&this.measure(!1)}requestMeasure(e){if(this.measureScheduled<0&&(this.measureScheduled=this.win.requestAnimationFrame(()=>this.measure())),e){if(this.measureRequests.indexOf(e)>-1)return;if(e.key!=null){for(let o=0;o<this.measureRequests.length;o++)if(this.measureRequests[o].key===e.key){this.measureRequests[o]=e;return}}this.measureRequests.push(e)}}plugin(e){let o=this.pluginMap.get(e);return(o===void 0||o&&o.spec!=e)&&this.pluginMap.set(e,o=this.plugins.find(_=>_.spec==e)||null),o&&o.update(this).value}get documentTop(){return this.contentDOM.getBoundingClientRect().top+this.viewState.paddingTop}get documentPadding(){return{top:this.viewState.paddingTop,bottom:this.viewState.paddingBottom}}get scaleX(){return this.viewState.scaleX}get scaleY(){return this.viewState.scaleY}elementAtHeight(e){return this.readMeasured(),this.viewState.elementAtHeight(e)}lineBlockAtHeight(e){return this.readMeasured(),this.viewState.lineBlockAtHeight(e)}get viewportLineBlocks(){return this.viewState.viewportLines}lineBlockAt(e){return this.viewState.lineBlockAt(e)}get contentHeight(){return this.viewState.contentHeight}moveByChar(e,o,_){return EC(this,e,AB(this,e,o,_))}moveByGroup(e,o){return EC(this,e,AB(this,e,o,_=>sZ(this,e.head,_)))}visualLineSide(e,o){let _=this.bidiSpans(e),l=this.textDirectionAt(e.from),c=_[o?_.length-1:0];return ct.cursor(c.side(o,l)+e.from,c.forward(!o,l)?1:-1)}moveToLineBoundary(e,o,_=!0){return oZ(this,e,o,_)}moveVertically(e,o,_){return EC(this,e,iZ(this,e,o,_))}domAtPos(e){return this.docView.domAtPos(e)}posAtDOM(e,o=0){return this.docView.posFromDOM(e,o)}posAtCoords(e,o=!0){return this.readMeasured(),fF(this,e,o)}coordsAtPos(e,o=1){this.readMeasured();let _=this.docView.coordsAt(e,o);if(!_||_.left==_.right)return _;let l=this.state.doc.lineAt(e),c=this.bidiSpans(l),T=c[oa.find(c,e-l.from,-1,o)];return cS(_,T.dir==us.LTR==o>0)}coordsForChar(e){return this.readMeasured(),this.docView.coordsForChar(e)}get defaultCharacterWidth(){return this.viewState.heightOracle.charWidth}get defaultLineHeight(){return this.viewState.heightOracle.lineHeight}get textDirection(){return this.viewState.defaultTextDirection}textDirectionAt(e){return!this.state.facet(dF)||e<this.viewport.from||e>this.viewport.to?this.textDirection:(this.readMeasured(),this.docView.textDirectionAt(e))}get lineWrapping(){return this.viewState.heightOracle.lineWrapping}bidiSpans(e){if(e.length>XZ)return _F(e.length);let o=this.textDirectionAt(e.from),_;for(let c of this.bidiCache)if(c.from==e.from&&c.dir==o&&(c.fresh||rF(c.isolates,_=IB(this,e))))return c.order;_||(_=IB(this,e));let l=H9(e.text,o,_);return this.bidiCache.push(new nI(e.from,e.to,o,_,!0,l)),l}get hasFocus(){var e;return(this.dom.ownerDocument.hasFocus()||zt.safari&&((e=this.inputState)===null||e===void 0?void 0:e.lastContextMenu)>Date.now()-3e4)&&this.root.activeElement==this.contentDOM}focus(){this.observer.ignore(()=>{Y2(this.contentDOM),this.docView.updateSelection()})}setRoot(e){this._root!=e&&(this._root=e,this.observer.setWindow((e.nodeType==9?e:e.ownerDocument).defaultView||window),this.mountStyles())}destroy(){for(let e of this.plugins)e.destroy(this);this.plugins=[],this.inputState.destroy(),this.docView.destroy(),this.dom.remove(),this.observer.destroy(),this.measureScheduled>-1&&this.win.cancelAnimationFrame(this.measureScheduled),this.destroyed=!0}static scrollIntoView(e,o={}){return OM.of(new vE(typeof e=="number"?ct.cursor(e):e,o.y,o.x,o.yMargin,o.xMargin))}scrollSnapshot(){let{scrollTop:e,scrollLeft:o}=this.scrollDOM,_=this.viewState.scrollAnchorAt(e);return OM.of(new vE(ct.cursor(_.from),"start","start",_.top-e,o,!0))}static domEventHandlers(e){return Ps.define(()=>({}),{eventHandlers:e})}static domEventObservers(e){return Ps.define(()=>({}),{eventObservers:e})}static theme(e,o){let _=ha.newName(),l=[pM.of(_),Bg.of(rb(`.${_}`,e))];return o&&o.dark&&l.push(ib.of(!0)),l}static baseTheme(e){return eT.lowest(Bg.of(rb("."+nb,e,wF)))}static findFromDOM(e){var o;let _=e.querySelector(".cm-content"),l=_&&Es.get(_)||Es.get(e);return((o=l==null?void 0:l.rootView)===null||o===void 0?void 0:o.view)||null}}Gt.styleModule=Bg;Gt.inputHandler=uF;Gt.focusChangeEffect=gF;Gt.perLineTextDirection=dF;Gt.exceptionSink=EF;Gt.updateListener=eb;Gt.editable=ES;Gt.mouseSelectionStyle=TF;Gt.dragMovesSelection=cF;Gt.clickAddsSelectionRange=aF;Gt.decorations=Sd;Gt.outerDecorations=MF;Gt.atomicRanges=NP;Gt.bidiIsolatedRanges=RF;Gt.scrollMargins=IF;Gt.darkTheme=ib;Gt.cspNonce=Ft.define({combine:t=>t.length?t[0]:""});Gt.contentAttributes=bP;Gt.editorAttributes=hF;Gt.lineWrapping=Gt.contentAttributes.of({class:"cm-lineWrapping"});Gt.announce=uo.define();const XZ=4096,WB={};class nI{constructor(e,o,_,l,c,T){this.from=e,this.to=o,this.dir=_,this.isolates=l,this.fresh=c,this.order=T}static update(e,o){if(o.empty&&!e.some(c=>c.fresh))return e;let _=[],l=e.length?e[e.length-1].dir:us.LTR;for(let c=Math.max(0,e.length-10);c<e.length;c++){let T=e[c];T.dir==l&&!o.touchesRange(T.from,T.to)&&_.push(new nI(o.mapPos(T.from,1),o.mapPos(T.to,-1),T.dir,T.isolates,!1,T.order))}return _}}function XB(t,e,o){for(let _=t.state.facet(e),l=_.length-1;l>=0;l--){let c=_[l],T=typeof c=="function"?c(t):c;T&&zA(T,o)}return o}const YZ=zt.mac?"mac":zt.windows?"win":zt.linux?"linux":"key";function KZ(t,e){const o=t.split(/-(?!$)/);let _=o[o.length-1];_=="Space"&&(_=" ");let l,c,T,E;for(let u=0;u<o.length-1;++u){const d=o[u];if(/^(cmd|meta|m)$/i.test(d))E=!0;else if(/^a(lt)?$/i.test(d))l=!0;else if(/^(c|ctrl|control)$/i.test(d))c=!0;else if(/^s(hift)?$/i.test(d))T=!0;else if(/^mod$/i.test(d))e=="mac"?E=!0:c=!0;else throw new Error("Unrecognized modifier name: "+d)}return l&&(_="Alt-"+_),c&&(_="Ctrl-"+_),E&&(_="Meta-"+_),T&&(_="Shift-"+_),_}function LM(t,e,o){return e.altKey&&(t="Alt-"+t),e.ctrlKey&&(t="Ctrl-"+t),e.metaKey&&(t="Meta-"+t),o!==!1&&e.shiftKey&&(t="Shift-"+t),t}const zZ=eT.default(Gt.domEventHandlers({keydown(t,e){return HF(kF(e.state),t,e,"editor")}})),aO=Ft.define({enables:zZ}),YB=new WeakMap;function kF(t){let e=t.facet(aO),o=YB.get(e);return o||YB.set(e,o=qZ(e.reduce((_,l)=>_.concat(l),[]))),o}function ZZ(t,e,o){return HF(kF(t.state),e,t,o)}let Ql=null;const jZ=4e3;function qZ(t,e=YZ){let o=Object.create(null),_=Object.create(null),l=(T,E)=>{let u=_[T];if(u==null)_[T]=E;else if(u!=E)throw new Error("Key binding "+T+" is used both as a regular binding and as a multi-stroke prefix")},c=(T,E,u,d,O)=>{var h,I;let S=o[T]||(o[T]=Object.create(null)),L=E.split(/ (?!$)/).map(m=>KZ(m,e));for(let m=1;m<L.length;m++){let A=L.slice(0,m).join(" ");l(A,!0),S[A]||(S[A]={preventDefault:!0,stopPropagation:!1,run:[b=>{let N=Ql={view:b,prefix:A,scope:T};return setTimeout(()=>{Ql==N&&(Ql=null)},jZ),!0}]})}let p=L.join(" ");l(p,!1);let C=S[p]||(S[p]={preventDefault:!1,stopPropagation:!1,run:((I=(h=S._any)===null||h===void 0?void 0:h.run)===null||I===void 0?void 0:I.slice())||[]});u&&C.run.push(u),d&&(C.preventDefault=!0),O&&(C.stopPropagation=!0)};for(let T of t){let E=T.scope?T.scope.split(" "):["editor"];if(T.any)for(let d of E){let O=o[d]||(o[d]=Object.create(null));O._any||(O._any={preventDefault:!1,stopPropagation:!1,run:[]});for(let h in O)O[h].run.push(T.any)}let u=T[e]||T.key;if(u)for(let d of E)c(d,u,T.run,T.preventDefault,T.stopPropagation),T.shift&&c(d,"Shift-"+u,T.shift,T.preventDefault,T.stopPropagation)}return o}function HF(t,e,o,_){let l=S9(e),c=ri(l,0),T=$n(c)==l.length&&l!=" ",E="",u=!1,d=!1,O=!1;Ql&&Ql.view==o&&Ql.scope==_&&(E=Ql.prefix+" ",CF.indexOf(e.keyCode)<0&&(d=!0,Ql=null));let h=new Set,I=C=>{if(C){for(let m of C.run)if(!h.has(m)&&(h.add(m),m(o,e)))return C.stopPropagation&&(O=!0),!0;C.preventDefault&&(C.stopPropagation&&(O=!0),d=!0)}return!1},S=t[_],L,p;return S&&(I(S[E+LM(l,e,!T)])?u=!0:T&&(e.altKey||e.metaKey||e.ctrlKey)&&!(zt.windows&&e.ctrlKey&&e.altKey)&&(L=Ma[e.keyCode])&&L!=l?(I(S[E+LM(L,e,!0)])||e.shiftKey&&(p=Rd[e.keyCode])!=l&&p!=L&&I(S[E+LM(p,e,!1)]))&&(u=!0):T&&e.shiftKey&&I(S[E+LM(l,e,!0)])&&(u=!0),!u&&I(S._any)&&(u=!0)),d&&(u=!0),u&&O&&e.stopPropagation(),u}class cO{constructor(e,o,_,l,c){this.className=e,this.left=o,this.top=_,this.width=l,this.height=c}draw(){let e=document.createElement("div");return e.className=this.className,this.adjust(e),e}update(e,o){return o.className!=this.className?!1:(this.adjust(e),!0)}adjust(e){e.style.left=this.left+"px",e.style.top=this.top+"px",this.width!=null&&(e.style.width=this.width+"px"),e.style.height=this.height+"px"}eq(e){return this.left==e.left&&this.top==e.top&&this.width==e.width&&this.height==e.height&&this.className==e.className}static forRange(e,o,_){if(_.empty){let l=e.coordsAtPos(_.head,_.assoc||1);if(!l)return[];let c=xF(e);return[new cO(o,l.left-c.left,l.top-c.top,null,l.bottom-l.top)]}else return QZ(e,o,_)}}function xF(t){let e=t.scrollDOM.getBoundingClientRect();return{left:(t.textDirection==us.LTR?e.left:e.right-t.scrollDOM.clientWidth*t.scaleX)-t.scrollDOM.scrollLeft*t.scaleX,top:e.top-t.scrollDOM.scrollTop*t.scaleY}}function KB(t,e,o){let _=ct.cursor(e);return{from:Math.max(o.from,t.moveToLineBoundary(_,!1,!0).from),to:Math.min(o.to,t.moveToLineBoundary(_,!0,!0).from),type:vi.Text}}function QZ(t,e,o){if(o.to<=t.viewport.from||o.from>=t.viewport.to)return[];let _=Math.max(o.from,t.viewport.from),l=Math.min(o.to,t.viewport.to),c=t.textDirection==us.LTR,T=t.contentDOM,E=T.getBoundingClientRect(),u=xF(t),d=T.querySelector(".cm-line"),O=d&&window.getComputedStyle(d),h=E.left+(O?parseInt(O.paddingLeft)+Math.min(0,parseInt(O.textIndent)):0),I=E.right-(O?parseInt(O.paddingRight):0),S=ob(t,_),L=ob(t,l),p=S.type==vi.Text?S:null,C=L.type==vi.Text?L:null;if(p&&(t.lineWrapping||S.widgetLineBreaks)&&(p=KB(t,_,p)),C&&(t.lineWrapping||L.widgetLineBreaks)&&(C=KB(t,l,C)),p&&C&&p.from==C.from)return A(b(o.from,o.to,p));{let U=p?b(o.from,null,p):N(S,!1),P=C?b(null,o.to,C):N(L,!0),G=[];return(p||S).to<(C||L).from-(p&&C?1:0)||S.widgetLineBreaks>1&&U.bottom+t.defaultLineHeight/2<P.top?G.push(m(h,U.bottom,I,P.top)):U.bottom<P.top&&t.elementAtHeight((U.bottom+P.top)/2).type==vi.Text&&(U.bottom=P.top=(U.bottom+P.top)/2),A(U).concat(G).concat(A(P))}function m(U,P,G,w){return new cO(e,U-u.left,P-u.top-.01,G-U,w-P+.01)}function A({top:U,bottom:P,horizontal:G}){let w=[];for(let F=0;F<G.length;F+=2)w.push(m(G[F],U,G[F+1],P));return w}function b(U,P,G){let w=1e9,F=-1e9,V=[];function W(j,J,ie,Y,re){let H=t.coordsAtPos(j,j==G.to?-2:2),Q=t.coordsAtPos(ie,ie==G.from?2:-2);!H||!Q||(w=Math.min(H.top,Q.top,w),F=Math.max(H.bottom,Q.bottom,F),re==us.LTR?V.push(c&&J?h:H.left,c&&Y?I:Q.right):V.push(!c&&Y?h:Q.left,!c&&J?I:H.right))}let K=U??G.from,ee=P??G.to;for(let j of t.visibleRanges)if(j.to>K&&j.from<ee)for(let J=Math.max(j.from,K),ie=Math.min(j.to,ee);;){let Y=t.state.doc.lineAt(J);for(let re of t.bidiSpans(Y)){let H=re.from+Y.from,Q=re.to+Y.from;if(H>=ie)break;Q>J&&W(Math.max(H,J),U==null&&H<=K,Math.min(Q,ie),P==null&&Q>=ee,re.dir)}if(J=Y.to+1,J>=ie)break}return V.length==0&&W(K,U==null,ee,P==null,t.textDirection),{top:w,bottom:F,horizontal:V}}function N(U,P){let G=E.top+(P?U.top:U.bottom);return{top:G,bottom:G,horizontal:[]}}}function JZ(t,e){return t.constructor==e.constructor&&t.eq(e)}class ej{constructor(e,o){this.view=e,this.layer=o,this.drawn=[],this.scaleX=1,this.scaleY=1,this.measureReq={read:this.measure.bind(this),write:this.draw.bind(this)},this.dom=e.scrollDOM.appendChild(document.createElement("div")),this.dom.classList.add("cm-layer"),o.above&&this.dom.classList.add("cm-layer-above"),o.class&&this.dom.classList.add(o.class),this.scale(),this.dom.setAttribute("aria-hidden","true"),this.setOrder(e.state),e.requestMeasure(this.measureReq),o.mount&&o.mount(this.dom,e)}update(e){e.startState.facet(ER)!=e.state.facet(ER)&&this.setOrder(e.state),(this.layer.update(e,this.dom)||e.geometryChanged)&&(this.scale(),e.view.requestMeasure(this.measureReq))}setOrder(e){let o=0,_=e.facet(ER);for(;o<_.length&&_[o]!=this.layer;)o++;this.dom.style.zIndex=String((this.layer.above?150:-1)-o)}measure(){return this.layer.markers(this.view)}scale(){let{scaleX:e,scaleY:o}=this.view;(e!=this.scaleX||o!=this.scaleY)&&(this.scaleX=e,this.scaleY=o,this.dom.style.transform=`scale(${1/e}, ${1/o})`)}draw(e){if(e.length!=this.drawn.length||e.some((o,_)=>!JZ(o,this.drawn[_]))){let o=this.dom.firstChild,_=0;for(let l of e)l.update&&o&&l.constructor&&this.drawn[_].constructor&&l.update(o,this.drawn[_])?(o=o.nextSibling,_++):this.dom.insertBefore(l.draw(),o);for(;o;){let l=o.nextSibling;o.remove(),o=l}this.drawn=e}}destroy(){this.layer.destroy&&this.layer.destroy(this.dom,this.view),this.dom.remove()}}const ER=Ft.define();function FF(t){return[Ps.define(e=>new ej(e,t)),ER.of(t)]}const VF=!zt.ios,pd=Ft.define({combine(t){return O_(t,{cursorBlinkRate:1200,drawRangeCursor:!0},{cursorBlinkRate:(e,o)=>Math.min(e,o),drawRangeCursor:(e,o)=>e||o})}});function tj(t={}){return[pd.of(t),oj,sj,ij,OF.of(!0)]}function WF(t){return t.startState.facet(pd)!=t.state.facet(pd)}const oj=FF({above:!0,markers(t){let{state:e}=t,o=e.facet(pd),_=[];for(let l of e.selection.ranges){let c=l==e.selection.main;if(l.empty?!c||VF:o.drawRangeCursor){let T=c?"cm-cursor cm-cursor-primary":"cm-cursor cm-cursor-secondary",E=l.empty?l:ct.cursor(l.head,l.head>l.anchor?-1:1);for(let u of cO.forRange(t,T,E))_.push(u)}}return _},update(t,e){t.transactions.some(_=>_.selection)&&(e.style.animationName=e.style.animationName=="cm-blink"?"cm-blink2":"cm-blink");let o=WF(t);return o&&zB(t.state,e),t.docChanged||t.selectionSet||o},mount(t,e){zB(e.state,t)},class:"cm-cursorLayer"});function zB(t,e){e.style.animationDuration=t.facet(pd).cursorBlinkRate+"ms"}const sj=FF({above:!1,markers(t){return t.state.selection.ranges.map(e=>e.empty?[]:cO.forRange(t,"cm-selectionBackground",e)).reduce((e,o)=>e.concat(o))},update(t,e){return t.docChanged||t.selectionSet||t.viewportChanged||WF(t)},class:"cm-selectionLayer"}),_b={".cm-line":{"& ::selection":{backgroundColor:"transparent !important"},"&::selection":{backgroundColor:"transparent !important"}}};VF&&(_b[".cm-line"].caretColor="transparent !important",_b[".cm-content"]={caretColor:"transparent !important"});const ij=eT.highest(Gt.theme(_b)),XF=uo.define({map(t,e){return t==null?null:e.mapPos(t)}}),kg=Js.define({create(){return null},update(t,e){return t!=null&&(t=e.changes.mapPos(t)),e.effects.reduce((o,_)=>_.is(XF)?_.value:o,t)}}),nj=Ps.fromClass(class{constructor(t){this.view=t,this.cursor=null,this.measureReq={read:this.readPos.bind(this),write:this.drawCursor.bind(this)}}update(t){var e;let o=t.state.field(kg);o==null?this.cursor!=null&&((e=this.cursor)===null||e===void 0||e.remove(),this.cursor=null):(this.cursor||(this.cursor=this.view.scrollDOM.appendChild(document.createElement("div")),this.cursor.className="cm-dropCursor"),(t.startState.field(kg)!=o||t.docChanged||t.geometryChanged)&&this.view.requestMeasure(this.measureReq))}readPos(){let{view:t}=this,e=t.state.field(kg),o=e!=null&&t.coordsAtPos(e);if(!o)return null;let _=t.scrollDOM.getBoundingClientRect();return{left:o.left-_.left+t.scrollDOM.scrollLeft*t.scaleX,top:o.top-_.top+t.scrollDOM.scrollTop*t.scaleY,height:o.bottom-o.top}}drawCursor(t){if(this.cursor){let{scaleX:e,scaleY:o}=this.view;t?(this.cursor.style.left=t.left/e+"px",this.cursor.style.top=t.top/o+"px",this.cursor.style.height=t.height/o+"px"):this.cursor.style.left="-100000px"}}destroy(){this.cursor&&this.cursor.remove()}setDropPos(t){this.view.state.field(kg)!=t&&this.view.dispatch({effects:XF.of(t)})}},{eventObservers:{dragover(t){this.setDropPos(this.view.posAtCoords({x:t.clientX,y:t.clientY}))},dragleave(t){(t.target==this.view.contentDOM||!this.view.contentDOM.contains(t.relatedTarget))&&this.setDropPos(null)},dragend(){this.setDropPos(null)},drop(){this.setDropPos(null)}}});function rj(){return[kg,nj]}function ZB(t,e,o,_,l){e.lastIndex=0;for(let c=t.iterRange(o,_),T=o,E;!c.next().done;T+=c.value.length)if(!c.lineBreak)for(;E=e.exec(c.value);)l(T+E.index,E)}function _j(t,e){let o=t.visibleRanges;if(o.length==1&&o[0].from==t.viewport.from&&o[0].to==t.viewport.to)return o;let _=[];for(let{from:l,to:c}of o)l=Math.max(t.state.doc.lineAt(l).from,l-e),c=Math.min(t.state.doc.lineAt(c).to,c+e),_.length&&_[_.length-1].to>=l?_[_.length-1].to=c:_.push({from:l,to:c});return _}class lj{constructor(e){const{regexp:o,decoration:_,decorate:l,boundary:c,maxLength:T=1e3}=e;if(!o.global)throw new RangeError("The regular expression given to MatchDecorator should have its 'g' flag set");if(this.regexp=o,l)this.addMatch=(E,u,d,O)=>l(O,d,d+E[0].length,E,u);else if(typeof _=="function")this.addMatch=(E,u,d,O)=>{let h=_(E,u,d);h&&O(d,d+E[0].length,h)};else if(_)this.addMatch=(E,u,d,O)=>O(d,d+E[0].length,_);else throw new RangeError("Either 'decorate' or 'decoration' should be provided to MatchDecorator");this.boundary=c,this.maxLength=T}createDeco(e){let o=new Oa,_=o.add.bind(o);for(let{from:l,to:c}of _j(e,this.maxLength))ZB(e.state.doc,this.regexp,l,c,(T,E)=>this.addMatch(E,e,T,_));return o.finish()}updateDeco(e,o){let _=1e9,l=-1;return e.docChanged&&e.changes.iterChanges((c,T,E,u)=>{u>e.view.viewport.from&&E<e.view.viewport.to&&(_=Math.min(E,_),l=Math.max(u,l))}),e.viewportChanged||l-_>1e3?this.createDeco(e.view):l>-1?this.updateRange(e.view,o.map(e.changes),_,l):o}updateRange(e,o,_,l){for(let c of e.visibleRanges){let T=Math.max(c.from,_),E=Math.min(c.to,l);if(E>T){let u=e.state.doc.lineAt(T),d=u.to<E?e.state.doc.lineAt(E):u,O=Math.max(c.from,u.from),h=Math.min(c.to,d.to);if(this.boundary){for(;T>u.from;T--)if(this.boundary.test(u.text[T-1-u.from])){O=T;break}for(;E<d.to;E++)if(this.boundary.test(d.text[E-d.from])){h=E;break}}let I=[],S,L=(p,C,m)=>I.push(m.range(p,C));if(u==d)for(this.regexp.lastIndex=O-u.from;(S=this.regexp.exec(u.text))&&S.index<h-u.from;)this.addMatch(S,e,S.index+u.from,L);else ZB(e.state.doc,this.regexp,O,h,(p,C)=>this.addMatch(C,e,p,L));o=o.update({filterFrom:O,filterTo:h,filter:(p,C)=>p<O||C>h,add:I})}}return o}}const lb=/x/.unicode!=null?"gu":"g",aj=new RegExp(`[\0-\b
- --\u2028\u2029\uFEFF-]`,lb),cj={0:"null",7:"bell",8:"backspace",10:"newline",11:"vertical tab",13:"carriage return",27:"escape",8203:"zero width space",8204:"zero width non-joiner",8205:"zero width joiner",8206:"left-to-right mark",8207:"right-to-left mark",8232:"line separator",8237:"left-to-right override",8238:"right-to-left override",8294:"left-to-right isolate",8295:"right-to-left isolate",8297:"pop directional isolate",8233:"paragraph separator",65279:"zero width no-break space",65532:"object replacement"};let dC=null;function Tj(){var t;if(dC==null&&typeof document<"u"&&document.body){let e=document.body.style;dC=((t=e.tabSize)!==null&&t!==void 0?t:e.MozTabSize)!=null}return dC||!1}const uR=Ft.define({combine(t){let e=O_(t,{render:null,specialChars:aj,addSpecialChars:null});return(e.replaceTabs=!Tj())&&(e.specialChars=new RegExp(" |"+e.specialChars.source,lb)),e.addSpecialChars&&(e.specialChars=new RegExp(e.specialChars.source+"|"+e.addSpecialChars.source,lb)),e}});function Ej(t={}){return[uR.of(t),uj()]}let jB=null;function uj(){return jB||(jB=Ps.fromClass(class{constructor(t){this.view=t,this.decorations=eo.none,this.decorationCache=Object.create(null),this.decorator=this.makeDecorator(t.state.facet(uR)),this.decorations=this.decorator.createDeco(t)}makeDecorator(t){return new lj({regexp:t.specialChars,decoration:(e,o,_)=>{let{doc:l}=o.state,c=ri(e[0],0);if(c==9){let T=l.lineAt(_),E=o.state.tabSize,u=Iu(T.text,E,_-T.from);return eo.replace({widget:new hj((E-u%E)*this.view.defaultCharacterWidth/this.view.scaleX)})}return this.decorationCache[c]||(this.decorationCache[c]=eo.replace({widget:new Oj(t,c)}))},boundary:t.replaceTabs?void 0:/[^]/})}update(t){let e=t.state.facet(uR);t.startState.facet(uR)!=e?(this.decorator=this.makeDecorator(e),this.decorations=this.decorator.createDeco(t.view)):this.decorations=this.decorator.updateDeco(t,this.decorations)}},{decorations:t=>t.decorations}))}const gj="•";function dj(t){return t>=32?gj:t==10?"":String.fromCharCode(9216+t)}class Oj extends h_{constructor(e,o){super(),this.options=e,this.code=o}eq(e){return e.code==this.code}toDOM(e){let o=dj(this.code),_=e.state.phrase("Control character")+" "+(cj[this.code]||"0x"+this.code.toString(16)),l=this.options.render&&this.options.render(this.code,_,o);if(l)return l;let c=document.createElement("span");return c.textContent=o,c.title=_,c.setAttribute("aria-label",_),c.className="cm-specialChar",c}ignoreEvent(){return!1}}class hj extends h_{constructor(e){super(),this.width=e}eq(e){return e.width==this.width}toDOM(){let e=document.createElement("span");return e.textContent=" ",e.className="cm-tab",e.style.width=this.width+"px",e}ignoreEvent(){return!1}}function Mj(){return Ij}const Rj=eo.line({class:"cm-activeLine"}),Ij=Ps.fromClass(class{constructor(t){this.decorations=this.getDeco(t)}update(t){(t.docChanged||t.selectionSet)&&(this.decorations=this.getDeco(t.view))}getDeco(t){let e=-1,o=[];for(let _ of t.state.selection.ranges){let l=t.lineBlockAt(_.head);l.from>e&&(o.push(Rj.range(l.from)),e=l.from)}return eo.set(o)}},{decorations:t=>t.decorations});class Sj extends h_{constructor(e){super(),this.content=e}toDOM(){let e=document.createElement("span");return e.className="cm-placeholder",e.style.pointerEvents="none",e.appendChild(typeof this.content=="string"?document.createTextNode(this.content):this.content),typeof this.content=="string"?e.setAttribute("aria-label","placeholder "+this.content):e.setAttribute("aria-hidden","true"),e}coordsAt(e){let o=e.firstChild?YE(e.firstChild):[];if(!o.length)return null;let _=window.getComputedStyle(e.parentNode),l=cS(o[0],_.direction!="rtl"),c=parseInt(_.lineHeight);return l.bottom-l.top>c*1.5?{left:l.left,right:l.right,top:l.top,bottom:l.top+c}:l}ignoreEvent(){return!1}}function pj(t){return Ps.fromClass(class{constructor(e){this.view=e,this.placeholder=t?eo.set([eo.widget({widget:new Sj(t),side:1}).range(0)]):eo.none}get decorations(){return this.view.state.doc.length?eo.none:this.placeholder}},{decorations:e=>e.decorations})}const ab=2e3;function Lj(t,e,o){let _=Math.min(e.line,o.line),l=Math.max(e.line,o.line),c=[];if(e.off>ab||o.off>ab||e.col<0||o.col<0){let T=Math.min(e.off,o.off),E=Math.max(e.off,o.off);for(let u=_;u<=l;u++){let d=t.doc.line(u);d.length<=E&&c.push(ct.range(d.from+T,d.to+E))}}else{let T=Math.min(e.col,o.col),E=Math.max(e.col,o.col);for(let u=_;u<=l;u++){let d=t.doc.line(u),O=xA(d.text,T,t.tabSize,!0);if(O<0)c.push(ct.cursor(d.to));else{let h=xA(d.text,E,t.tabSize);c.push(ct.range(d.from+O,d.from+h))}}}return c}function fj(t,e){let o=t.coordsAtPos(t.viewport.from);return o?Math.round(Math.abs((o.left-e)/t.defaultCharacterWidth)):-1}function qB(t,e){let o=t.posAtCoords({x:e.clientX,y:e.clientY},!1),_=t.state.doc.lineAt(o),l=o-_.from,c=l>ab?-1:l==_.length?fj(t,e.clientX):Iu(_.text,t.state.tabSize,o-_.from);return{line:_.number,col:c,off:l}}function mj(t,e){let o=qB(t,e),_=t.state.selection;return o?{update(l){if(l.docChanged){let c=l.changes.mapPos(l.startState.doc.line(o.line).from),T=l.state.doc.lineAt(c);o={line:T.number,col:o.col,off:Math.min(o.off,T.length)},_=_.map(l.changes)}},get(l,c,T){let E=qB(t,l);if(!E)return _;let u=Lj(t.state,o,E);return u.length?T?ct.create(u.concat(_.ranges)):ct.create(u):_}}:null}function Cj(t){let e=(t==null?void 0:t.eventFilter)||(o=>o.altKey&&o.button==0);return Gt.mouseSelectionStyle.of((o,_)=>e(_)?mj(o,_):null)}const Aj={Alt:[18,t=>!!t.altKey],Control:[17,t=>!!t.ctrlKey],Shift:[16,t=>!!t.shiftKey],Meta:[91,t=>!!t.metaKey]},bj={style:"cursor: crosshair"};function Nj(t={}){let[e,o]=Aj[t.key||"Alt"],_=Ps.fromClass(class{constructor(l){this.view=l,this.isDown=!1}set(l){this.isDown!=l&&(this.isDown=l,this.view.update([]))}},{eventObservers:{keydown(l){this.set(l.keyCode==e||o(l))},keyup(l){(l.keyCode==e||!o(l))&&this.set(!1)},mousemove(l){this.set(o(l))}}});return[_,Gt.contentAttributes.of(l=>{var c;return!((c=l.plugin(_))===null||c===void 0)&&c.isDown?bj:null})]}const pg="-10000px";class YF{constructor(e,o,_){this.facet=o,this.createTooltipView=_,this.input=e.state.facet(o),this.tooltips=this.input.filter(l=>l),this.tooltipViews=this.tooltips.map(_)}update(e,o){var _;let l=e.state.facet(this.facet),c=l.filter(u=>u);if(l===this.input){for(let u of this.tooltipViews)u.update&&u.update(e);return!1}let T=[],E=o?[]:null;for(let u=0;u<c.length;u++){let d=c[u],O=-1;if(d){for(let h=0;h<this.tooltips.length;h++){let I=this.tooltips[h];I&&I.create==d.create&&(O=h)}if(O<0)T[u]=this.createTooltipView(d),E&&(E[u]=!!d.above);else{let h=T[u]=this.tooltipViews[O];E&&(E[u]=o[O]),h.update&&h.update(e)}}}for(let u of this.tooltipViews)T.indexOf(u)<0&&(u.dom.remove(),(_=u.destroy)===null||_===void 0||_.call(u));return o&&(E.forEach((u,d)=>o[d]=u),o.length=E.length),this.input=l,this.tooltips=c,this.tooltipViews=T,!0}}function Pj(t){let{win:e}=t;return{top:0,left:0,bottom:e.innerHeight,right:e.innerWidth}}const OC=Ft.define({combine:t=>{var e,o,_;return{position:zt.ios?"absolute":((e=t.find(l=>l.position))===null||e===void 0?void 0:e.position)||"fixed",parent:((o=t.find(l=>l.parent))===null||o===void 0?void 0:o.parent)||null,tooltipSpace:((_=t.find(l=>l.tooltipSpace))===null||_===void 0?void 0:_.tooltipSpace)||Pj}}}),QB=new WeakMap,vP=Ps.fromClass(class{constructor(t){this.view=t,this.above=[],this.inView=!0,this.madeAbsolute=!1,this.lastTransaction=0,this.measureTimeout=-1;let e=t.state.facet(OC);this.position=e.position,this.parent=e.parent,this.classes=t.themeClasses,this.createContainer(),this.measureReq={read:this.readMeasure.bind(this),write:this.writeMeasure.bind(this),key:this},this.manager=new YF(t,DP,o=>this.createTooltip(o)),this.intersectionObserver=typeof IntersectionObserver=="function"?new IntersectionObserver(o=>{Date.now()>this.lastTransaction-50&&o.length>0&&o[o.length-1].intersectionRatio<1&&this.measureSoon()},{threshold:[1]}):null,this.observeIntersection(),t.win.addEventListener("resize",this.measureSoon=this.measureSoon.bind(this)),this.maybeMeasure()}createContainer(){this.parent?(this.container=document.createElement("div"),this.container.style.position="relative",this.container.className=this.view.themeClasses,this.parent.appendChild(this.container)):this.container=this.view.dom}observeIntersection(){if(this.intersectionObserver){this.intersectionObserver.disconnect();for(let t of this.manager.tooltipViews)this.intersectionObserver.observe(t.dom)}}measureSoon(){this.measureTimeout<0&&(this.measureTimeout=setTimeout(()=>{this.measureTimeout=-1,this.maybeMeasure()},50))}update(t){t.transactions.length&&(this.lastTransaction=Date.now());let e=this.manager.update(t,this.above);e&&this.observeIntersection();let o=e||t.geometryChanged,_=t.state.facet(OC);if(_.position!=this.position&&!this.madeAbsolute){this.position=_.position;for(let l of this.manager.tooltipViews)l.dom.style.position=this.position;o=!0}if(_.parent!=this.parent){this.parent&&this.container.remove(),this.parent=_.parent,this.createContainer();for(let l of this.manager.tooltipViews)this.container.appendChild(l.dom);o=!0}else this.parent&&this.view.themeClasses!=this.classes&&(this.classes=this.container.className=this.view.themeClasses);o&&this.maybeMeasure()}createTooltip(t){let e=t.create(this.view);if(e.dom.classList.add("cm-tooltip"),t.arrow&&!e.dom.querySelector(".cm-tooltip > .cm-tooltip-arrow")){let o=document.createElement("div");o.className="cm-tooltip-arrow",e.dom.appendChild(o)}return e.dom.style.position=this.position,e.dom.style.top=pg,e.dom.style.left="0px",this.container.appendChild(e.dom),e.mount&&e.mount(this.view),e}destroy(){var t,e;this.view.win.removeEventListener("resize",this.measureSoon);for(let o of this.manager.tooltipViews)o.dom.remove(),(t=o.destroy)===null||t===void 0||t.call(o);this.parent&&this.container.remove(),(e=this.intersectionObserver)===null||e===void 0||e.disconnect(),clearTimeout(this.measureTimeout)}readMeasure(){let t=this.view.dom.getBoundingClientRect(),e=1,o=1,_=!1;if(this.position=="fixed"&&this.manager.tooltipViews.length){let{dom:l}=this.manager.tooltipViews[0];if(zt.gecko)_=l.offsetParent!=this.container.ownerDocument.body;else if(l.style.top==pg&&l.style.left=="0px"){let c=l.getBoundingClientRect();_=Math.abs(c.top+1e4)>1||Math.abs(c.left)>1}}if(_||this.position=="absolute")if(this.parent){let l=this.parent.getBoundingClientRect();l.width&&l.height&&(e=l.width/this.parent.offsetWidth,o=l.height/this.parent.offsetHeight)}else({scaleX:e,scaleY:o}=this.view.viewState);return{editor:t,parent:this.parent?this.container.getBoundingClientRect():t,pos:this.manager.tooltips.map((l,c)=>{let T=this.manager.tooltipViews[c];return T.getCoords?T.getCoords(l.pos):this.view.coordsAtPos(l.pos)}),size:this.manager.tooltipViews.map(({dom:l})=>l.getBoundingClientRect()),space:this.view.state.facet(OC).tooltipSpace(this.view),scaleX:e,scaleY:o,makeAbsolute:_}}writeMeasure(t){var e;if(t.makeAbsolute){this.madeAbsolute=!0,this.position="absolute";for(let E of this.manager.tooltipViews)E.dom.style.position="absolute"}let{editor:o,space:_,scaleX:l,scaleY:c}=t,T=[];for(let E=0;E<this.manager.tooltips.length;E++){let u=this.manager.tooltips[E],d=this.manager.tooltipViews[E],{dom:O}=d,h=t.pos[E],I=t.size[E];if(!h||h.bottom<=Math.max(o.top,_.top)||h.top>=Math.min(o.bottom,_.bottom)||h.right<Math.max(o.left,_.left)-.1||h.left>Math.min(o.right,_.right)+.1){O.style.top=pg;continue}let S=u.arrow?d.dom.querySelector(".cm-tooltip-arrow"):null,L=S?7:0,p=I.right-I.left,C=(e=QB.get(d))!==null&&e!==void 0?e:I.bottom-I.top,m=d.offset||Dj,A=this.view.textDirection==us.LTR,b=I.width>_.right-_.left?A?_.left:_.right-I.width:A?Math.min(h.left-(S?14:0)+m.x,_.right-p):Math.max(_.left,h.left-p+(S?14:0)-m.x),N=this.above[E];!u.strictSide&&(N?h.top-(I.bottom-I.top)-m.y<_.top:h.bottom+(I.bottom-I.top)+m.y>_.bottom)&&N==_.bottom-h.bottom>h.top-_.top&&(N=this.above[E]=!N);let U=(N?h.top-_.top:_.bottom-h.bottom)-L;if(U<C&&d.resize!==!1){if(U<this.view.defaultLineHeight){O.style.top=pg;continue}QB.set(d,C),O.style.height=(C=U)/c+"px"}else O.style.height&&(O.style.height="");let P=N?h.top-C-L-m.y:h.bottom+L+m.y,G=b+p;if(d.overlap!==!0)for(let w of T)w.left<G&&w.right>b&&w.top<P+C&&w.bottom>P&&(P=N?w.top-C-2-L:w.bottom+L+2);if(this.position=="absolute"?(O.style.top=(P-t.parent.top)/c+"px",O.style.left=(b-t.parent.left)/l+"px"):(O.style.top=P/c+"px",O.style.left=b/l+"px"),S){let w=h.left+(A?m.x:-m.x)-(b+14-7);S.style.left=w/l+"px"}d.overlap!==!0&&T.push({left:b,top:P,right:G,bottom:P+C}),O.classList.toggle("cm-tooltip-above",N),O.classList.toggle("cm-tooltip-below",!N),d.positioned&&d.positioned(t.space)}}maybeMeasure(){if(this.manager.tooltips.length&&(this.view.inView&&this.view.requestMeasure(this.measureReq),this.inView!=this.view.inView&&(this.inView=this.view.inView,!this.inView)))for(let t of this.manager.tooltipViews)t.dom.style.top=pg}},{eventObservers:{scroll(){this.maybeMeasure()}}}),vj=Gt.baseTheme({".cm-tooltip":{zIndex:100,boxSizing:"border-box"},"&light .cm-tooltip":{border:"1px solid #bbb",backgroundColor:"#f5f5f5"},"&light .cm-tooltip-section:not(:first-child)":{borderTop:"1px solid #bbb"},"&dark .cm-tooltip":{backgroundColor:"#333338",color:"white"},".cm-tooltip-arrow":{height:"7px",width:`${7*2}px`,position:"absolute",zIndex:-1,overflow:"hidden","&:before, &:after":{content:"''",position:"absolute",width:0,height:0,borderLeft:"7px solid transparent",borderRight:"7px solid transparent"},".cm-tooltip-above &":{bottom:"-7px","&:before":{borderTop:"7px solid #bbb"},"&:after":{borderTop:"7px solid #f5f5f5",bottom:"1px"}},".cm-tooltip-below &":{top:"-7px","&:before":{borderBottom:"7px solid #bbb"},"&:after":{borderBottom:"7px solid #f5f5f5",top:"1px"}}},"&dark .cm-tooltip .cm-tooltip-arrow":{"&:before":{borderTopColor:"#333338",borderBottomColor:"#333338"},"&:after":{borderTopColor:"transparent",borderBottomColor:"transparent"}}}),Dj={x:0,y:0},DP=Ft.define({enables:[vP,vj]}),rI=Ft.define();class uS{static create(e){return new uS(e)}constructor(e){this.view=e,this.mounted=!1,this.dom=document.createElement("div"),this.dom.classList.add("cm-tooltip-hover"),this.manager=new YF(e,rI,o=>this.createHostedView(o))}createHostedView(e){let o=e.create(this.view);return o.dom.classList.add("cm-tooltip-section"),this.dom.appendChild(o.dom),this.mounted&&o.mount&&o.mount(this.view),o}mount(e){for(let o of this.manager.tooltipViews)o.mount&&o.mount(e);this.mounted=!0}positioned(e){for(let o of this.manager.tooltipViews)o.positioned&&o.positioned(e)}update(e){this.manager.update(e)}destroy(){var e;for(let o of this.manager.tooltipViews)(e=o.destroy)===null||e===void 0||e.call(o)}passProp(e){let o;for(let _ of this.manager.tooltipViews){let l=_[e];if(l!==void 0){if(o===void 0)o=l;else if(o!==l)return}}return o}get offset(){return this.passProp("offset")}get getCoords(){return this.passProp("getCoords")}get overlap(){return this.passProp("overlap")}get resize(){return this.passProp("resize")}}const Uj=DP.compute([rI],t=>{let e=t.facet(rI).filter(o=>o);return e.length===0?null:{pos:Math.min(...e.map(o=>o.pos)),end:Math.max(...e.map(o=>{var _;return(_=o.end)!==null&&_!==void 0?_:o.pos})),create:uS.create,above:e[0].above,arrow:e.some(o=>o.arrow)}});class yj{constructor(e,o,_,l,c){this.view=e,this.source=o,this.field=_,this.setHover=l,this.hoverTime=c,this.hoverTimeout=-1,this.restartTimeout=-1,this.pending=null,this.lastMove={x:0,y:0,target:e.dom,time:0},this.checkHover=this.checkHover.bind(this),e.dom.addEventListener("mouseleave",this.mouseleave=this.mouseleave.bind(this)),e.dom.addEventListener("mousemove",this.mousemove=this.mousemove.bind(this))}update(){this.pending&&(this.pending=null,clearTimeout(this.restartTimeout),this.restartTimeout=setTimeout(()=>this.startHover(),20))}get active(){return this.view.state.field(this.field)}checkHover(){if(this.hoverTimeout=-1,this.active)return;let e=Date.now()-this.lastMove.time;e<this.hoverTime?this.hoverTimeout=setTimeout(this.checkHover,this.hoverTime-e):this.startHover()}startHover(){clearTimeout(this.restartTimeout);let{view:e,lastMove:o}=this,_=e.docView.nearest(o.target);if(!_)return;let l,c=1;if(_ instanceof ta)l=_.posAtStart;else{if(l=e.posAtCoords(o),l==null)return;let E=e.coordsAtPos(l);if(!E||o.y<E.top||o.y>E.bottom||o.x<E.left-e.defaultCharacterWidth||o.x>E.right+e.defaultCharacterWidth)return;let u=e.bidiSpans(e.state.doc.lineAt(l)).find(O=>O.from<=l&&O.to>=l),d=u&&u.dir==us.RTL?-1:1;c=o.x<E.left?-d:d}let T=this.source(e,l,c);if(T!=null&&T.then){let E=this.pending={pos:l};T.then(u=>{this.pending==E&&(this.pending=null,u&&e.dispatch({effects:this.setHover.of(u)}))},u=>xn(e.state,u,"hover tooltip"))}else T&&e.dispatch({effects:this.setHover.of(T)})}get tooltip(){let e=this.view.plugin(vP),o=e?e.manager.tooltips.findIndex(_=>_.create==uS.create):-1;return o>-1?e.manager.tooltipViews[o]:null}mousemove(e){var o;this.lastMove={x:e.clientX,y:e.clientY,target:e.target,time:Date.now()},this.hoverTimeout<0&&(this.hoverTimeout=setTimeout(this.checkHover,this.hoverTime));let{active:_,tooltip:l}=this;if(_&&l&&!$j(l.dom,e)||this.pending){let{pos:c}=_||this.pending,T=(o=_==null?void 0:_.end)!==null&&o!==void 0?o:c;(c==T?this.view.posAtCoords(this.lastMove)!=c:!Bj(this.view,c,T,e.clientX,e.clientY))&&(this.view.dispatch({effects:this.setHover.of(null)}),this.pending=null)}}mouseleave(e){clearTimeout(this.hoverTimeout),this.hoverTimeout=-1;let{active:o}=this;if(o){let{tooltip:_}=this;_&&_.dom.contains(e.relatedTarget)?this.watchTooltipLeave(_.dom):this.view.dispatch({effects:this.setHover.of(null)})}}watchTooltipLeave(e){let o=_=>{e.removeEventListener("mouseleave",o),this.active&&!this.view.dom.contains(_.relatedTarget)&&this.view.dispatch({effects:this.setHover.of(null)})};e.addEventListener("mouseleave",o)}destroy(){clearTimeout(this.hoverTimeout),this.view.dom.removeEventListener("mouseleave",this.mouseleave),this.view.dom.removeEventListener("mousemove",this.mousemove)}}const fM=4;function $j(t,e){let o=t.getBoundingClientRect();return e.clientX>=o.left-fM&&e.clientX<=o.right+fM&&e.clientY>=o.top-fM&&e.clientY<=o.bottom+fM}function Bj(t,e,o,_,l,c){let T=t.scrollDOM.getBoundingClientRect(),E=t.documentTop+t.documentPadding.top+t.contentHeight;if(T.left>_||T.right<_||T.top>l||Math.min(T.bottom,E)<l)return!1;let u=t.posAtCoords({x:_,y:l},!1);return u>=e&&u<=o}function wj(t,e={}){let o=uo.define(),_=Js.define({create(){return null},update(l,c){if(l&&(e.hideOnChange&&(c.docChanged||c.selection)||e.hideOn&&e.hideOn(c,l)))return null;if(l&&c.docChanged){let T=c.changes.mapPos(l.pos,-1,li.TrackDel);if(T==null)return null;let E=Object.assign(Object.create(null),l);E.pos=T,l.end!=null&&(E.end=c.changes.mapPos(l.end)),l=E}for(let T of c.effects)T.is(o)&&(l=T.value),T.is(Gj)&&(l=null);return l},provide:l=>rI.from(l)});return[_,Ps.define(l=>new yj(l,t,_,o,e.hoverTime||300)),Uj]}function KF(t,e){let o=t.plugin(vP);if(!o)return null;let _=o.manager.tooltips.indexOf(e);return _<0?null:o.manager.tooltipViews[_]}const Gj=uo.define(),JB=Ft.define({combine(t){let e,o;for(let _ of t)e=e||_.topContainer,o=o||_.bottomContainer;return{topContainer:e,bottomContainer:o}}});function Ld(t,e){let o=t.plugin(zF),_=o?o.specs.indexOf(e):-1;return _>-1?o.panels[_]:null}const zF=Ps.fromClass(class{constructor(t){this.input=t.state.facet(fd),this.specs=this.input.filter(o=>o),this.panels=this.specs.map(o=>o(t));let e=t.state.facet(JB);this.top=new mM(t,!0,e.topContainer),this.bottom=new mM(t,!1,e.bottomContainer),this.top.sync(this.panels.filter(o=>o.top)),this.bottom.sync(this.panels.filter(o=>!o.top));for(let o of this.panels)o.dom.classList.add("cm-panel"),o.mount&&o.mount()}update(t){let e=t.state.facet(JB);this.top.container!=e.topContainer&&(this.top.sync([]),this.top=new mM(t.view,!0,e.topContainer)),this.bottom.container!=e.bottomContainer&&(this.bottom.sync([]),this.bottom=new mM(t.view,!1,e.bottomContainer)),this.top.syncClasses(),this.bottom.syncClasses();let o=t.state.facet(fd);if(o!=this.input){let _=o.filter(u=>u),l=[],c=[],T=[],E=[];for(let u of _){let d=this.specs.indexOf(u),O;d<0?(O=u(t.view),E.push(O)):(O=this.panels[d],O.update&&O.update(t)),l.push(O),(O.top?c:T).push(O)}this.specs=_,this.panels=l,this.top.sync(c),this.bottom.sync(T);for(let u of E)u.dom.classList.add("cm-panel"),u.mount&&u.mount()}else for(let _ of this.panels)_.update&&_.update(t)}destroy(){this.top.sync([]),this.bottom.sync([])}},{provide:t=>Gt.scrollMargins.of(e=>{let o=e.plugin(t);return o&&{top:o.top.scrollMargin(),bottom:o.bottom.scrollMargin()}})});class mM{constructor(e,o,_){this.view=e,this.top=o,this.container=_,this.dom=void 0,this.classes="",this.panels=[],this.syncClasses()}sync(e){for(let o of this.panels)o.destroy&&e.indexOf(o)<0&&o.destroy();this.panels=e,this.syncDOM()}syncDOM(){if(this.panels.length==0){this.dom&&(this.dom.remove(),this.dom=void 0);return}if(!this.dom){this.dom=document.createElement("div"),this.dom.className=this.top?"cm-panels cm-panels-top":"cm-panels cm-panels-bottom",this.dom.style[this.top?"top":"bottom"]="0";let o=this.container||this.view.dom;o.insertBefore(this.dom,this.top?o.firstChild:null)}let e=this.dom.firstChild;for(let o of this.panels)if(o.dom.parentNode==this.dom){for(;e!=o.dom;)e=ew(e);e=e.nextSibling}else this.dom.insertBefore(o.dom,e);for(;e;)e=ew(e)}scrollMargin(){return!this.dom||this.container?0:Math.max(0,this.top?this.dom.getBoundingClientRect().bottom-Math.max(0,this.view.scrollDOM.getBoundingClientRect().top):Math.min(innerHeight,this.view.scrollDOM.getBoundingClientRect().bottom)-this.dom.getBoundingClientRect().top)}syncClasses(){if(!(!this.container||this.classes==this.view.themeClasses)){for(let e of this.classes.split(" "))e&&this.container.classList.remove(e);for(let e of(this.classes=this.view.themeClasses).split(" "))e&&this.container.classList.add(e)}}}function ew(t){let e=t.nextSibling;return t.remove(),e}const fd=Ft.define({enables:zF});class ol extends kc{compare(e){return this==e||this.constructor==e.constructor&&this.eq(e)}eq(e){return!1}destroy(e){}}ol.prototype.elementClass="";ol.prototype.toDOM=void 0;ol.prototype.mapMode=li.TrackBefore;ol.prototype.startSide=ol.prototype.endSide=-1;ol.prototype.point=!0;const gR=Ft.define(),kj={class:"",renderEmptyElements:!1,elementStyle:"",markers:()=>Bo.empty,lineMarker:()=>null,widgetMarker:()=>null,lineMarkerChange:null,initialSpacer:null,updateSpacer:null,domEventHandlers:{}},jg=Ft.define();function Hj(t){return[ZF(),jg.of(Object.assign(Object.assign({},kj),t))]}const cb=Ft.define({combine:t=>t.some(e=>e)});function ZF(t){let e=[xj];return t&&t.fixed===!1&&e.push(cb.of(!0)),e}const xj=Ps.fromClass(class{constructor(t){this.view=t,this.prevViewport=t.viewport,this.dom=document.createElement("div"),this.dom.className="cm-gutters",this.dom.setAttribute("aria-hidden","true"),this.dom.style.minHeight=this.view.contentHeight/this.view.scaleY+"px",this.gutters=t.state.facet(jg).map(e=>new ow(t,e));for(let e of this.gutters)this.dom.appendChild(e.dom);this.fixed=!t.state.facet(cb),this.fixed&&(this.dom.style.position="sticky"),this.syncGutters(!1),t.scrollDOM.insertBefore(this.dom,t.contentDOM)}update(t){if(this.updateGutters(t)){let e=this.prevViewport,o=t.view.viewport,_=Math.min(e.to,o.to)-Math.max(e.from,o.from);this.syncGutters(_<(o.to-o.from)*.8)}t.geometryChanged&&(this.dom.style.minHeight=this.view.contentHeight+"px"),this.view.state.facet(cb)!=!this.fixed&&(this.fixed=!this.fixed,this.dom.style.position=this.fixed?"sticky":""),this.prevViewport=t.view.viewport}syncGutters(t){let e=this.dom.nextSibling;t&&this.dom.remove();let o=Bo.iter(this.view.state.facet(gR),this.view.viewport.from),_=[],l=this.gutters.map(c=>new Fj(c,this.view.viewport,-this.view.documentPadding.top));for(let c of this.view.viewportLineBlocks)if(_.length&&(_=[]),Array.isArray(c.type)){let T=!0;for(let E of c.type)if(E.type==vi.Text&&T){Tb(o,_,E.from);for(let u of l)u.line(this.view,E,_);T=!1}else if(E.widget)for(let u of l)u.widget(this.view,E)}else if(c.type==vi.Text){Tb(o,_,c.from);for(let T of l)T.line(this.view,c,_)}else if(c.widget)for(let T of l)T.widget(this.view,c);for(let c of l)c.finish();t&&this.view.scrollDOM.insertBefore(this.dom,e)}updateGutters(t){let e=t.startState.facet(jg),o=t.state.facet(jg),_=t.docChanged||t.heightChanged||t.viewportChanged||!Bo.eq(t.startState.facet(gR),t.state.facet(gR),t.view.viewport.from,t.view.viewport.to);if(e==o)for(let l of this.gutters)l.update(t)&&(_=!0);else{_=!0;let l=[];for(let c of o){let T=e.indexOf(c);T<0?l.push(new ow(this.view,c)):(this.gutters[T].update(t),l.push(this.gutters[T]))}for(let c of this.gutters)c.dom.remove(),l.indexOf(c)<0&&c.destroy();for(let c of l)this.dom.appendChild(c.dom);this.gutters=l}return _}destroy(){for(let t of this.gutters)t.destroy();this.dom.remove()}},{provide:t=>Gt.scrollMargins.of(e=>{let o=e.plugin(t);return!o||o.gutters.length==0||!o.fixed?null:e.textDirection==us.LTR?{left:o.dom.offsetWidth*e.scaleX}:{right:o.dom.offsetWidth*e.scaleX}})});function tw(t){return Array.isArray(t)?t:[t]}function Tb(t,e,o){for(;t.value&&t.from<=o;)t.from==o&&e.push(t.value),t.next()}class Fj{constructor(e,o,_){this.gutter=e,this.height=_,this.i=0,this.cursor=Bo.iter(e.markers,o.from)}addElement(e,o,_){let{gutter:l}=this,c=(o.top-this.height)/e.scaleY,T=o.height/e.scaleY;if(this.i==l.elements.length){let E=new jF(e,T,c,_);l.elements.push(E),l.dom.appendChild(E.dom)}else l.elements[this.i].update(e,T,c,_);this.height=o.bottom,this.i++}line(e,o,_){let l=[];Tb(this.cursor,l,o.from),_.length&&(l=l.concat(_));let c=this.gutter.config.lineMarker(e,o,l);c&&l.unshift(c);let T=this.gutter;l.length==0&&!T.config.renderEmptyElements||this.addElement(e,o,l)}widget(e,o){let _=this.gutter.config.widgetMarker(e,o.widget,o);_&&this.addElement(e,o,[_])}finish(){let e=this.gutter;for(;e.elements.length>this.i;){let o=e.elements.pop();e.dom.removeChild(o.dom),o.destroy()}}}class ow{constructor(e,o){this.view=e,this.config=o,this.elements=[],this.spacer=null,this.dom=document.createElement("div"),this.dom.className="cm-gutter"+(this.config.class?" "+this.config.class:"");for(let _ in o.domEventHandlers)this.dom.addEventListener(_,l=>{let c=l.target,T;if(c!=this.dom&&this.dom.contains(c)){for(;c.parentNode!=this.dom;)c=c.parentNode;let u=c.getBoundingClientRect();T=(u.top+u.bottom)/2}else T=l.clientY;let E=e.lineBlockAtHeight(T-e.documentTop);o.domEventHandlers[_](e,E,l)&&l.preventDefault()});this.markers=tw(o.markers(e)),o.initialSpacer&&(this.spacer=new jF(e,0,0,[o.initialSpacer(e)]),this.dom.appendChild(this.spacer.dom),this.spacer.dom.style.cssText+="visibility: hidden; pointer-events: none")}update(e){let o=this.markers;if(this.markers=tw(this.config.markers(e.view)),this.spacer&&this.config.updateSpacer){let l=this.config.updateSpacer(this.spacer.markers[0],e);l!=this.spacer.markers[0]&&this.spacer.update(e.view,0,0,[l])}let _=e.view.viewport;return!Bo.eq(this.markers,o,_.from,_.to)||(this.config.lineMarkerChange?this.config.lineMarkerChange(e):!1)}destroy(){for(let e of this.elements)e.destroy()}}class jF{constructor(e,o,_,l){this.height=-1,this.above=0,this.markers=[],this.dom=document.createElement("div"),this.dom.className="cm-gutterElement",this.update(e,o,_,l)}update(e,o,_,l){this.height!=o&&(this.height=o,this.dom.style.height=o+"px"),this.above!=_&&(this.dom.style.marginTop=(this.above=_)?_+"px":""),Vj(this.markers,l)||this.setMarkers(e,l)}setMarkers(e,o){let _="cm-gutterElement",l=this.dom.firstChild;for(let c=0,T=0;;){let E=T,u=c<o.length?o[c++]:null,d=!1;if(u){let O=u.elementClass;O&&(_+=" "+O);for(let h=T;h<this.markers.length;h++)if(this.markers[h].compare(u)){E=h,d=!0;break}}else E=this.markers.length;for(;T<E;){let O=this.markers[T++];if(O.toDOM){O.destroy(l);let h=l.nextSibling;l.remove(),l=h}}if(!u)break;u.toDOM&&(d?l=l.nextSibling:this.dom.insertBefore(u.toDOM(e),l)),d&&T++}this.dom.className=_,this.markers=o}destroy(){this.setMarkers(null,[])}}function Vj(t,e){if(t.length!=e.length)return!1;for(let o=0;o<t.length;o++)if(!t[o].compare(e[o]))return!1;return!0}const Wj=Ft.define(),ME=Ft.define({combine(t){return O_(t,{formatNumber:String,domEventHandlers:{}},{domEventHandlers(e,o){let _=Object.assign({},e);for(let l in o){let c=_[l],T=o[l];_[l]=c?(E,u,d)=>c(E,u,d)||T(E,u,d):T}return _}})}});class hC extends ol{constructor(e){super(),this.number=e}eq(e){return this.number==e.number}toDOM(){return document.createTextNode(this.number)}}function MC(t,e){return t.state.facet(ME).formatNumber(e,t.state)}const Xj=jg.compute([ME],t=>({class:"cm-lineNumbers",renderEmptyElements:!1,markers(e){return e.state.facet(Wj)},lineMarker(e,o,_){return _.some(l=>l.toDOM)?null:new hC(MC(e,e.state.doc.lineAt(o.from).number))},widgetMarker:()=>null,lineMarkerChange:e=>e.startState.facet(ME)!=e.state.facet(ME),initialSpacer(e){return new hC(MC(e,sw(e.state.doc.lines)))},updateSpacer(e,o){let _=MC(o.view,sw(o.view.state.doc.lines));return _==e.number?e:new hC(_)},domEventHandlers:t.facet(ME).domEventHandlers}));function Yj(t={}){return[ME.of(t),ZF(),Xj]}function sw(t){let e=9;for(;e<t;)e=e*10+9;return e}const Kj=new class extends ol{constructor(){super(...arguments),this.elementClass="cm-activeLineGutter"}},zj=gR.compute(["selection"],t=>{let e=[],o=-1;for(let _ of t.selection.ranges){let l=t.doc.lineAt(_.head).from;l>o&&(o=l,e.push(Kj.range(l)))}return Bo.of(e)});function Zj(){return zj}const qF=1024;let jj=0;class RC{constructor(e,o){this.from=e,this.to=o}}class po{constructor(e={}){this.id=jj++,this.perNode=!!e.perNode,this.deserialize=e.deserialize||(()=>{throw new Error("This node type doesn't define a deserialize function")})}add(e){if(this.perNode)throw new RangeError("Can't add per-node props to node types");return typeof e!="function"&&(e=sn.match(e)),o=>{let _=e(o);return _===void 0?null:[this,_]}}}po.closedBy=new po({deserialize:t=>t.split(" ")});po.openedBy=new po({deserialize:t=>t.split(" ")});po.group=new po({deserialize:t=>t.split(" ")});po.isolate=new po({deserialize:t=>{if(t&&t!="rtl"&&t!="ltr"&&t!="auto")throw new RangeError("Invalid value for isolate: "+t);return t||"auto"}});po.contextHash=new po({perNode:!0});po.lookAhead=new po({perNode:!0});po.mounted=new po({perNode:!0});class _I{constructor(e,o,_){this.tree=e,this.overlay=o,this.parser=_}static get(e){return e&&e.props&&e.props[po.mounted.id]}}const qj=Object.create(null);class sn{constructor(e,o,_,l=0){this.name=e,this.props=o,this.id=_,this.flags=l}static define(e){let o=e.props&&e.props.length?Object.create(null):qj,_=(e.top?1:0)|(e.skipped?2:0)|(e.error?4:0)|(e.name==null?8:0),l=new sn(e.name||"",o,e.id,_);if(e.props){for(let c of e.props)if(Array.isArray(c)||(c=c(l)),c){if(c[0].perNode)throw new RangeError("Can't store a per-node prop on a node type");o[c[0].id]=c[1]}}return l}prop(e){return this.props[e.id]}get isTop(){return(this.flags&1)>0}get isSkipped(){return(this.flags&2)>0}get isError(){return(this.flags&4)>0}get isAnonymous(){return(this.flags&8)>0}is(e){if(typeof e=="string"){if(this.name==e)return!0;let o=this.prop(po.group);return o?o.indexOf(e)>-1:!1}return this.id==e}static match(e){let o=Object.create(null);for(let _ in e)for(let l of _.split(" "))o[l]=e[_];return _=>{for(let l=_.prop(po.group),c=-1;c<(l?l.length:0);c++){let T=o[c<0?_.name:l[c]];if(T)return T}}}}sn.none=new sn("",Object.create(null),0,8);class UP{constructor(e){this.types=e;for(let o=0;o<e.length;o++)if(e[o].id!=o)throw new RangeError("Node type ids should correspond to array positions when creating a node set")}extend(...e){let o=[];for(let _ of this.types){let l=null;for(let c of e){let T=c(_);T&&(l||(l=Object.assign({},_.props)),l[T[0].id]=T[1])}o.push(l?new sn(_.name,l,_.id,_.flags):_)}return new UP(o)}}const CM=new WeakMap,iw=new WeakMap;var Vs;(function(t){t[t.ExcludeBuffers=1]="ExcludeBuffers",t[t.IncludeAnonymous=2]="IncludeAnonymous",t[t.IgnoreMounts=4]="IgnoreMounts",t[t.IgnoreOverlays=8]="IgnoreOverlays"})(Vs||(Vs={}));let Ei=class Eb{constructor(e,o,_,l,c){if(this.type=e,this.children=o,this.positions=_,this.length=l,this.props=null,c&&c.length){this.props=Object.create(null);for(let[T,E]of c)this.props[typeof T=="number"?T:T.id]=E}}toString(){let e=_I.get(this);if(e&&!e.overlay)return e.tree.toString();let o="";for(let _ of this.children){let l=_.toString();l&&(o&&(o+=","),o+=l)}return this.type.name?(/\W/.test(this.type.name)&&!this.type.isError?JSON.stringify(this.type.name):this.type.name)+(o.length?"("+o+")":""):o}cursor(e=0){return new gb(this.topNode,e)}cursorAt(e,o=0,_=0){let l=CM.get(this)||this.topNode,c=new gb(l);return c.moveTo(e,o),CM.set(this,c._tree),c}get topNode(){return new Qi(this,0,0,null)}resolve(e,o=0){let _=md(CM.get(this)||this.topNode,e,o,!1);return CM.set(this,_),_}resolveInner(e,o=0){let _=md(iw.get(this)||this.topNode,e,o,!0);return iw.set(this,_),_}resolveStack(e,o=0){return e7(this,e,o)}iterate(e){let{enter:o,leave:_,from:l=0,to:c=this.length}=e,T=e.mode||0,E=(T&Vs.IncludeAnonymous)>0;for(let u=this.cursor(T|Vs.IncludeAnonymous);;){let d=!1;if(u.from<=c&&u.to>=l&&(!E&&u.type.isAnonymous||o(u)!==!1)){if(u.firstChild())continue;d=!0}for(;d&&_&&(E||!u.type.isAnonymous)&&_(u),!u.nextSibling();){if(!u.parent())return;d=!0}}}prop(e){return e.perNode?this.props?this.props[e.id]:void 0:this.type.prop(e)}get propValues(){let e=[];if(this.props)for(let o in this.props)e.push([+o,this.props[o]]);return e}balance(e={}){return this.children.length<=8?this:BP(sn.none,this.children,this.positions,0,this.children.length,0,this.length,(o,_,l)=>new Eb(this.type,o,_,l,this.propValues),e.makeTree||((o,_,l)=>new Eb(sn.none,o,_,l)))}static build(e){return t7(e)}};Ei.empty=new Ei(sn.none,[],[],0);class yP{constructor(e,o){this.buffer=e,this.index=o}get id(){return this.buffer[this.index-4]}get start(){return this.buffer[this.index-3]}get end(){return this.buffer[this.index-2]}get size(){return this.buffer[this.index-1]}get pos(){return this.index}next(){this.index-=4}fork(){return new yP(this.buffer,this.index)}}class Ia{constructor(e,o,_){this.buffer=e,this.length=o,this.set=_}get type(){return sn.none}toString(){let e=[];for(let o=0;o<this.buffer.length;)e.push(this.childString(o)),o=this.buffer[o+3];return e.join(",")}childString(e){let o=this.buffer[e],_=this.buffer[e+3],l=this.set.types[o],c=l.name;if(/\W/.test(c)&&!l.isError&&(c=JSON.stringify(c)),e+=4,_==e)return c;let T=[];for(;e<_;)T.push(this.childString(e)),e=this.buffer[e+3];return c+"("+T.join(",")+")"}findChild(e,o,_,l,c){let{buffer:T}=this,E=-1;for(let u=e;u!=o&&!(QF(c,l,T[u+1],T[u+2])&&(E=u,_>0));u=T[u+3]);return E}slice(e,o,_){let l=this.buffer,c=new Uint16Array(o-e),T=0;for(let E=e,u=0;E<o;){c[u++]=l[E++],c[u++]=l[E++]-_;let d=c[u++]=l[E++]-_;c[u++]=l[E++]-e,T=Math.max(T,d)}return new Ia(c,T,this.set)}}function QF(t,e,o,_){switch(t){case-2:return o<e;case-1:return _>=e&&o<e;case 0:return o<e&&_>e;case 1:return o<=e&&_>e;case 2:return _>e;case 4:return!0}}function md(t,e,o,_){for(var l;t.from==t.to||(o<1?t.from>=e:t.from>e)||(o>-1?t.to<=e:t.to<e);){let T=!_&&t instanceof Qi&&t.index<0?null:t.parent;if(!T)return t;t=T}let c=_?0:Vs.IgnoreOverlays;if(_)for(let T=t,E=T.parent;E;T=E,E=T.parent)T instanceof Qi&&T.index<0&&((l=E.enter(e,o,c))===null||l===void 0?void 0:l.from)!=T.from&&(t=E);for(;;){let T=t.enter(e,o,c);if(!T)return t;t=T}}class JF{cursor(e=0){return new gb(this,e)}getChild(e,o=null,_=null){let l=nw(this,e,o,_);return l.length?l[0]:null}getChildren(e,o=null,_=null){return nw(this,e,o,_)}resolve(e,o=0){return md(this,e,o,!1)}resolveInner(e,o=0){return md(this,e,o,!0)}matchContext(e){return ub(this,e)}enterUnfinishedNodesBefore(e){let o=this.childBefore(e),_=this;for(;o;){let l=o.lastChild;if(!l||l.to!=o.to)break;l.type.isError&&l.from==l.to?(_=o,o=l.prevSibling):o=l}return _}get node(){return this}get next(){return this.parent}}class Qi extends JF{constructor(e,o,_,l){super(),this._tree=e,this.from=o,this.index=_,this._parent=l}get type(){return this._tree.type}get name(){return this._tree.type.name}get to(){return this.from+this._tree.length}nextChild(e,o,_,l,c=0){for(let T=this;;){for(let{children:E,positions:u}=T._tree,d=o>0?E.length:-1;e!=d;e+=o){let O=E[e],h=u[e]+T.from;if(QF(l,_,h,h+O.length)){if(O instanceof Ia){if(c&Vs.ExcludeBuffers)continue;let I=O.findChild(0,O.buffer.length,o,_-h,l);if(I>-1)return new s_(new Qj(T,O,e,h),null,I)}else if(c&Vs.IncludeAnonymous||!O.type.isAnonymous||$P(O)){let I;if(!(c&Vs.IgnoreMounts)&&(I=_I.get(O))&&!I.overlay)return new Qi(I.tree,h,e,T);let S=new Qi(O,h,e,T);return c&Vs.IncludeAnonymous||!S.type.isAnonymous?S:S.nextChild(o<0?O.children.length-1:0,o,_,l)}}}if(c&Vs.IncludeAnonymous||!T.type.isAnonymous||(T.index>=0?e=T.index+o:e=o<0?-1:T._parent._tree.children.length,T=T._parent,!T))return null}}get firstChild(){return this.nextChild(0,1,0,4)}get lastChild(){return this.nextChild(this._tree.children.length-1,-1,0,4)}childAfter(e){return this.nextChild(0,1,e,2)}childBefore(e){return this.nextChild(this._tree.children.length-1,-1,e,-2)}enter(e,o,_=0){let l;if(!(_&Vs.IgnoreOverlays)&&(l=_I.get(this._tree))&&l.overlay){let c=e-this.from;for(let{from:T,to:E}of l.overlay)if((o>0?T<=c:T<c)&&(o<0?E>=c:E>c))return new Qi(l.tree,l.overlay[0].from+this.from,-1,this)}return this.nextChild(0,1,e,o,_)}nextSignificantParent(){let e=this;for(;e.type.isAnonymous&&e._parent;)e=e._parent;return e}get parent(){return this._parent?this._parent.nextSignificantParent():null}get nextSibling(){return this._parent&&this.index>=0?this._parent.nextChild(this.index+1,1,0,4):null}get prevSibling(){return this._parent&&this.index>=0?this._parent.nextChild(this.index-1,-1,0,4):null}get tree(){return this._tree}toTree(){return this._tree}toString(){return this._tree.toString()}}function nw(t,e,o,_){let l=t.cursor(),c=[];if(!l.firstChild())return c;if(o!=null){for(let T=!1;!T;)if(T=l.type.is(o),!l.nextSibling())return c}for(;;){if(_!=null&&l.type.is(_))return c;if(l.type.is(e)&&c.push(l.node),!l.nextSibling())return _==null?c:[]}}function ub(t,e,o=e.length-1){for(let _=t.parent;o>=0;_=_.parent){if(!_)return!1;if(!_.type.isAnonymous){if(e[o]&&e[o]!=_.name)return!1;o--}}return!0}class Qj{constructor(e,o,_,l){this.parent=e,this.buffer=o,this.index=_,this.start=l}}class s_ extends JF{get name(){return this.type.name}get from(){return this.context.start+this.context.buffer.buffer[this.index+1]}get to(){return this.context.start+this.context.buffer.buffer[this.index+2]}constructor(e,o,_){super(),this.context=e,this._parent=o,this.index=_,this.type=e.buffer.set.types[e.buffer.buffer[_]]}child(e,o,_){let{buffer:l}=this.context,c=l.findChild(this.index+4,l.buffer[this.index+3],e,o-this.context.start,_);return c<0?null:new s_(this.context,this,c)}get firstChild(){return this.child(1,0,4)}get lastChild(){return this.child(-1,0,4)}childAfter(e){return this.child(1,e,2)}childBefore(e){return this.child(-1,e,-2)}enter(e,o,_=0){if(_&Vs.ExcludeBuffers)return null;let{buffer:l}=this.context,c=l.findChild(this.index+4,l.buffer[this.index+3],o>0?1:-1,e-this.context.start,o);return c<0?null:new s_(this.context,this,c)}get parent(){return this._parent||this.context.parent.nextSignificantParent()}externalSibling(e){return this._parent?null:this.context.parent.nextChild(this.context.index+e,e,0,4)}get nextSibling(){let{buffer:e}=this.context,o=e.buffer[this.index+3];return o<(this._parent?e.buffer[this._parent.index+3]:e.buffer.length)?new s_(this.context,this._parent,o):this.externalSibling(1)}get prevSibling(){let{buffer:e}=this.context,o=this._parent?this._parent.index+4:0;return this.index==o?this.externalSibling(-1):new s_(this.context,this._parent,e.findChild(o,this.index,-1,0,4))}get tree(){return null}toTree(){let e=[],o=[],{buffer:_}=this.context,l=this.index+4,c=_.buffer[this.index+3];if(c>l){let T=_.buffer[this.index+1];e.push(_.slice(l,c,T)),o.push(0)}return new Ei(this.type,e,o,this.to-this.from)}toString(){return this.context.buffer.childString(this.index)}}function eV(t){if(!t.length)return null;let e=0,o=t[0];for(let c=1;c<t.length;c++){let T=t[c];(T.from>o.from||T.to<o.to)&&(o=T,e=c)}let _=o instanceof Qi&&o.index<0?null:o.parent,l=t.slice();return _?l[e]=_:l.splice(e,1),new Jj(l,o)}class Jj{constructor(e,o){this.heads=e,this.node=o}get next(){return eV(this.heads)}}function e7(t,e,o){let _=t.resolveInner(e,o),l=null;for(let c=_ instanceof Qi?_:_.context.parent;c;c=c.parent)if(c.index<0){let T=c.parent;(l||(l=[_])).push(T.resolve(e,o)),c=T}else{let T=_I.get(c.tree);if(T&&T.overlay&&T.overlay[0].from<=e&&T.overlay[T.overlay.length-1].to>=e){let E=new Qi(T.tree,T.overlay[0].from+c.from,-1,c);(l||(l=[_])).push(md(E,e,o,!1))}}return l?eV(l):_}class gb{get name(){return this.type.name}constructor(e,o=0){if(this.mode=o,this.buffer=null,this.stack=[],this.index=0,this.bufferNode=null,e instanceof Qi)this.yieldNode(e);else{this._tree=e.context.parent,this.buffer=e.context;for(let _=e._parent;_;_=_._parent)this.stack.unshift(_.index);this.bufferNode=e,this.yieldBuf(e.index)}}yieldNode(e){return e?(this._tree=e,this.type=e.type,this.from=e.from,this.to=e.to,!0):!1}yieldBuf(e,o){this.index=e;let{start:_,buffer:l}=this.buffer;return this.type=o||l.set.types[l.buffer[e]],this.from=_+l.buffer[e+1],this.to=_+l.buffer[e+2],!0}yield(e){return e?e instanceof Qi?(this.buffer=null,this.yieldNode(e)):(this.buffer=e.context,this.yieldBuf(e.index,e.type)):!1}toString(){return this.buffer?this.buffer.buffer.childString(this.index):this._tree.toString()}enterChild(e,o,_){if(!this.buffer)return this.yield(this._tree.nextChild(e<0?this._tree._tree.children.length-1:0,e,o,_,this.mode));let{buffer:l}=this.buffer,c=l.findChild(this.index+4,l.buffer[this.index+3],e,o-this.buffer.start,_);return c<0?!1:(this.stack.push(this.index),this.yieldBuf(c))}firstChild(){return this.enterChild(1,0,4)}lastChild(){return this.enterChild(-1,0,4)}childAfter(e){return this.enterChild(1,e,2)}childBefore(e){return this.enterChild(-1,e,-2)}enter(e,o,_=this.mode){return this.buffer?_&Vs.ExcludeBuffers?!1:this.enterChild(1,e,o):this.yield(this._tree.enter(e,o,_))}parent(){if(!this.buffer)return this.yieldNode(this.mode&Vs.IncludeAnonymous?this._tree._parent:this._tree.parent);if(this.stack.length)return this.yieldBuf(this.stack.pop());let e=this.mode&Vs.IncludeAnonymous?this.buffer.parent:this.buffer.parent.nextSignificantParent();return this.buffer=null,this.yieldNode(e)}sibling(e){if(!this.buffer)return this._tree._parent?this.yield(this._tree.index<0?null:this._tree._parent.nextChild(this._tree.index+e,e,0,4,this.mode)):!1;let{buffer:o}=this.buffer,_=this.stack.length-1;if(e<0){let l=_<0?0:this.stack[_]+4;if(this.index!=l)return this.yieldBuf(o.findChild(l,this.index,-1,0,4))}else{let l=o.buffer[this.index+3];if(l<(_<0?o.buffer.length:o.buffer[this.stack[_]+3]))return this.yieldBuf(l)}return _<0?this.yield(this.buffer.parent.nextChild(this.buffer.index+e,e,0,4,this.mode)):!1}nextSibling(){return this.sibling(1)}prevSibling(){return this.sibling(-1)}atLastNode(e){let o,_,{buffer:l}=this;if(l){if(e>0){if(this.index<l.buffer.buffer.length)return!1}else for(let c=0;c<this.index;c++)if(l.buffer.buffer[c+3]<this.index)return!1;({index:o,parent:_}=l)}else({index:o,_parent:_}=this._tree);for(;_;{index:o,_parent:_}=_)if(o>-1)for(let c=o+e,T=e<0?-1:_._tree.children.length;c!=T;c+=e){let E=_._tree.children[c];if(this.mode&Vs.IncludeAnonymous||E instanceof Ia||!E.type.isAnonymous||$P(E))return!1}return!0}move(e,o){if(o&&this.enterChild(e,0,4))return!0;for(;;){if(this.sibling(e))return!0;if(this.atLastNode(e)||!this.parent())return!1}}next(e=!0){return this.move(1,e)}prev(e=!0){return this.move(-1,e)}moveTo(e,o=0){for(;(this.from==this.to||(o<1?this.from>=e:this.from>e)||(o>-1?this.to<=e:this.to<e))&&this.parent(););for(;this.enterChild(1,e,o););return this}get node(){if(!this.buffer)return this._tree;let e=this.bufferNode,o=null,_=0;if(e&&e.context==this.buffer)e:for(let l=this.index,c=this.stack.length;c>=0;){for(let T=e;T;T=T._parent)if(T.index==l){if(l==this.index)return T;o=T,_=c+1;break e}l=this.stack[--c]}for(let l=_;l<this.stack.length;l++)o=new s_(this.buffer,o,this.stack[l]);return this.bufferNode=new s_(this.buffer,o,this.index)}get tree(){return this.buffer?null:this._tree._tree}iterate(e,o){for(let _=0;;){let l=!1;if(this.type.isAnonymous||e(this)!==!1){if(this.firstChild()){_++;continue}this.type.isAnonymous||(l=!0)}for(;l&&o&&o(this),l=this.type.isAnonymous,!this.nextSibling();){if(!_)return;this.parent(),_--,l=!0}}}matchContext(e){if(!this.buffer)return ub(this.node,e);let{buffer:o}=this.buffer,{types:_}=o.set;for(let l=e.length-1,c=this.stack.length-1;l>=0;c--){if(c<0)return ub(this.node,e,l);let T=_[o.buffer[this.stack[c]]];if(!T.isAnonymous){if(e[l]&&e[l]!=T.name)return!1;l--}}return!0}}function $P(t){return t.children.some(e=>e instanceof Ia||!e.type.isAnonymous||$P(e))}function t7(t){var e;let{buffer:o,nodeSet:_,maxBufferLength:l=qF,reused:c=[],minRepeatType:T=_.types.length}=t,E=Array.isArray(o)?new yP(o,o.length):o,u=_.types,d=0,O=0;function h(U,P,G,w,F,V){let{id:W,start:K,end:ee,size:j}=E,J=O;for(;j<0;)if(E.next(),j==-1){let Q=c[W];G.push(Q),w.push(K-U);return}else if(j==-3){d=W;return}else if(j==-4){O=W;return}else throw new RangeError(`Unrecognized record size: ${j}`);let ie=u[W],Y,re,H=K-U;if(ee-K<=l&&(re=C(E.pos-P,F))){let Q=new Uint16Array(re.size-re.skip),ae=E.pos-re.size,ge=Q.length;for(;E.pos>ae;)ge=m(re.start,Q,ge);Y=new Ia(Q,ee-re.start,_),H=re.start-U}else{let Q=E.pos-j;E.next();let ae=[],ge=[],Se=W>=T?W:-1,pe=0,We=ee;for(;E.pos>Q;)Se>=0&&E.id==Se&&E.size>=0?(E.end<=We-l&&(L(ae,ge,K,pe,E.end,We,Se,J),pe=ae.length,We=E.end),E.next()):V>2500?I(K,Q,ae,ge):h(K,Q,ae,ge,Se,V+1);if(Se>=0&&pe>0&&pe<ae.length&&L(ae,ge,K,pe,K,We,Se,J),ae.reverse(),ge.reverse(),Se>-1&&pe>0){let be=S(ie);Y=BP(ie,ae,ge,0,ae.length,0,ee-K,be,be)}else Y=p(ie,ae,ge,ee-K,J-ee)}G.push(Y),w.push(H)}function I(U,P,G,w){let F=[],V=0,W=-1;for(;E.pos>P;){let{id:K,start:ee,end:j,size:J}=E;if(J>4)E.next();else{if(W>-1&&ee<W)break;W<0&&(W=j-l),F.push(K,ee,j),V++,E.next()}}if(V){let K=new Uint16Array(V*4),ee=F[F.length-2];for(let j=F.length-3,J=0;j>=0;j-=3)K[J++]=F[j],K[J++]=F[j+1]-ee,K[J++]=F[j+2]-ee,K[J++]=J;G.push(new Ia(K,F[2]-ee,_)),w.push(ee-U)}}function S(U){return(P,G,w)=>{let F=0,V=P.length-1,W,K;if(V>=0&&(W=P[V])instanceof Ei){if(!V&&W.type==U&&W.length==w)return W;(K=W.prop(po.lookAhead))&&(F=G[V]+W.length+K)}return p(U,P,G,w,F)}}function L(U,P,G,w,F,V,W,K){let ee=[],j=[];for(;U.length>w;)ee.push(U.pop()),j.push(P.pop()+G-F);U.push(p(_.types[W],ee,j,V-F,K-V)),P.push(F-G)}function p(U,P,G,w,F=0,V){if(d){let W=[po.contextHash,d];V=V?[W].concat(V):[W]}if(F>25){let W=[po.lookAhead,F];V=V?[W].concat(V):[W]}return new Ei(U,P,G,w,V)}function C(U,P){let G=E.fork(),w=0,F=0,V=0,W=G.end-l,K={size:0,start:0,skip:0};e:for(let ee=G.pos-U;G.pos>ee;){let j=G.size;if(G.id==P&&j>=0){K.size=w,K.start=F,K.skip=V,V+=4,w+=4,G.next();continue}let J=G.pos-j;if(j<0||J<ee||G.start<W)break;let ie=G.id>=T?4:0,Y=G.start;for(G.next();G.pos>J;){if(G.size<0)if(G.size==-3)ie+=4;else break e;else G.id>=T&&(ie+=4);G.next()}F=Y,w+=j,V+=ie}return(P<0||w==U)&&(K.size=w,K.start=F,K.skip=V),K.size>4?K:void 0}function m(U,P,G){let{id:w,start:F,end:V,size:W}=E;if(E.next(),W>=0&&w<T){let K=G;if(W>4){let ee=E.pos-(W-4);for(;E.pos>ee;)G=m(U,P,G)}P[--G]=K,P[--G]=V-U,P[--G]=F-U,P[--G]=w}else W==-3?d=w:W==-4&&(O=w);return G}let A=[],b=[];for(;E.pos>0;)h(t.start||0,t.bufferStart||0,A,b,-1,0);let N=(e=t.length)!==null&&e!==void 0?e:A.length?b[0]+A[0].length:0;return new Ei(u[t.topID],A.reverse(),b.reverse(),N)}const rw=new WeakMap;function dR(t,e){if(!t.isAnonymous||e instanceof Ia||e.type!=t)return 1;let o=rw.get(e);if(o==null){o=1;for(let _ of e.children){if(_.type!=t||!(_ instanceof Ei)){o=1;break}o+=dR(t,_)}rw.set(e,o)}return o}function BP(t,e,o,_,l,c,T,E,u){let d=0;for(let L=_;L<l;L++)d+=dR(t,e[L]);let O=Math.ceil(d*1.5/8),h=[],I=[];function S(L,p,C,m,A){for(let b=C;b<m;){let N=b,U=p[b],P=dR(t,L[b]);for(b++;b<m;b++){let G=dR(t,L[b]);if(P+G>=O)break;P+=G}if(b==N+1){if(P>O){let G=L[N];S(G.children,G.positions,0,G.children.length,p[N]+A);continue}h.push(L[N])}else{let G=p[b-1]+L[b-1].length-U;h.push(BP(t,L,p,N,b,U,G,null,u))}I.push(U+A-c)}}return S(e,o,_,l,0),(E||u)(h,I,T)}class o7{constructor(){this.map=new WeakMap}setBuffer(e,o,_){let l=this.map.get(e);l||this.map.set(e,l=new Map),l.set(o,_)}getBuffer(e,o){let _=this.map.get(e);return _&&_.get(o)}set(e,o){e instanceof s_?this.setBuffer(e.context.buffer,e.index,o):e instanceof Qi&&this.map.set(e.tree,o)}get(e){return e instanceof s_?this.getBuffer(e.context.buffer,e.index):e instanceof Qi?this.map.get(e.tree):void 0}cursorSet(e,o){e.buffer?this.setBuffer(e.buffer.buffer,e.index,o):this.map.set(e.tree,o)}cursorGet(e){return e.buffer?this.getBuffer(e.buffer.buffer,e.index):this.map.get(e.tree)}}class Uc{constructor(e,o,_,l,c=!1,T=!1){this.from=e,this.to=o,this.tree=_,this.offset=l,this.open=(c?1:0)|(T?2:0)}get openStart(){return(this.open&1)>0}get openEnd(){return(this.open&2)>0}static addTree(e,o=[],_=!1){let l=[new Uc(0,e.length,e,0,!1,_)];for(let c of o)c.to>e.length&&l.push(c);return l}static applyChanges(e,o,_=128){if(!o.length)return e;let l=[],c=1,T=e.length?e[0]:null;for(let E=0,u=0,d=0;;E++){let O=E<o.length?o[E]:null,h=O?O.fromA:1e9;if(h-u>=_)for(;T&&T.from<h;){let I=T;if(u>=I.from||h<=I.to||d){let S=Math.max(I.from,u)-d,L=Math.min(I.to,h)-d;I=S>=L?null:new Uc(S,L,I.tree,I.offset+d,E>0,!!O)}if(I&&l.push(I),T.to>h)break;T=c<e.length?e[c++]:null}if(!O)break;u=O.toA,d=O.toA-O.toB}return l}}class tV{startParse(e,o,_){return typeof e=="string"&&(e=new s7(e)),_=_?_.length?_.map(l=>new RC(l.from,l.to)):[new RC(0,0)]:[new RC(0,e.length)],this.createParse(e,o||[],_)}parse(e,o,_){let l=this.startParse(e,o,_);for(;;){let c=l.advance();if(c)return c}}}class s7{constructor(e){this.string=e}get length(){return this.string.length}chunk(e){return this.string.slice(e)}get lineChunks(){return!1}read(e,o){return this.string.slice(e,o)}}new po({perNode:!0});let i7=0,Kl=class oV{constructor(e,o,_){this.set=e,this.base=o,this.modified=_,this.id=i7++}static define(e){if(e!=null&&e.base)throw new Error("Can not derive from a modified tag");let o=new oV([],null,[]);if(o.set.push(o),e)for(let _ of e.set)o.set.push(_);return o}static defineModifier(){let e=new lI;return o=>o.modified.indexOf(e)>-1?o:lI.get(o.base||o,o.modified.concat(e).sort((_,l)=>_.id-l.id))}},n7=0;class lI{constructor(){this.instances=[],this.id=n7++}static get(e,o){if(!o.length)return e;let _=o[0].instances.find(E=>E.base==e&&r7(o,E.modified));if(_)return _;let l=[],c=new Kl(l,e,o);for(let E of o)E.instances.push(c);let T=_7(o);for(let E of e.set)if(!E.modified.length)for(let u of T)l.push(lI.get(E,u));return c}}function r7(t,e){return t.length==e.length&&t.every((o,_)=>o==e[_])}function _7(t){let e=[[]];for(let o=0;o<t.length;o++)for(let _=0,l=e.length;_<l;_++)e.push(e[_].concat(t[o]));return e.sort((o,_)=>_.length-o.length)}function sV(t){let e=Object.create(null);for(let o in t){let _=t[o];Array.isArray(_)||(_=[_]);for(let l of o.split(" "))if(l){let c=[],T=2,E=l;for(let h=0;;){if(E=="..."&&h>0&&h+3==l.length){T=1;break}let I=/^"(?:[^"\\]|\\.)*?"|[^\/!]+/.exec(E);if(!I)throw new RangeError("Invalid path: "+l);if(c.push(I[0]=="*"?"":I[0][0]=='"'?JSON.parse(I[0]):I[0]),h+=I[0].length,h==l.length)break;let S=l[h++];if(h==l.length&&S=="!"){T=0;break}if(S!="/")throw new RangeError("Invalid path: "+l);E=l.slice(h)}let u=c.length-1,d=c[u];if(!d)throw new RangeError("Invalid path: "+l);let O=new aI(_,T,u>0?c.slice(0,u):null);e[d]=O.sort(e[d])}}return iV.add(e)}const iV=new po;class aI{constructor(e,o,_,l){this.tags=e,this.mode=o,this.context=_,this.next=l}get opaque(){return this.mode==0}get inherit(){return this.mode==1}sort(e){return!e||e.depth<this.depth?(this.next=e,this):(e.next=this.sort(e.next),e)}get depth(){return this.context?this.context.length:0}}aI.empty=new aI([],2,null);function nV(t,e){let o=Object.create(null);for(let c of t)if(!Array.isArray(c.tag))o[c.tag.id]=c.class;else for(let T of c.tag)o[T.id]=c.class;let{scope:_,all:l=null}=e||{};return{style:c=>{let T=l;for(let E of c)for(let u of E.set){let d=o[u.id];if(d){T=T?T+" "+d:d;break}}return T},scope:_}}function l7(t,e){let o=null;for(let _ of t){let l=_.style(e);l&&(o=o?o+" "+l:l)}return o}function a7(t,e,o,_=0,l=t.length){let c=new c7(_,Array.isArray(e)?e:[e],o);c.highlightRange(t.cursor(),_,l,"",c.highlighters),c.flush(l)}class c7{constructor(e,o,_){this.at=e,this.highlighters=o,this.span=_,this.class=""}startSpan(e,o){o!=this.class&&(this.flush(e),e>this.at&&(this.at=e),this.class=o)}flush(e){e>this.at&&this.class&&this.span(this.at,e,this.class)}highlightRange(e,o,_,l,c){let{type:T,from:E,to:u}=e;if(E>=_||u<=o)return;T.isTop&&(c=this.highlighters.filter(S=>!S.scope||S.scope(T)));let d=l,O=T7(e)||aI.empty,h=l7(c,O.tags);if(h&&(d&&(d+=" "),d+=h,O.mode==1&&(l+=(l?" ":"")+h)),this.startSpan(Math.max(o,E),d),O.opaque)return;let I=e.tree&&e.tree.prop(po.mounted);if(I&&I.overlay){let S=e.node.enter(I.overlay[0].from+E,1),L=this.highlighters.filter(C=>!C.scope||C.scope(I.tree.type)),p=e.firstChild();for(let C=0,m=E;;C++){let A=C<I.overlay.length?I.overlay[C]:null,b=A?A.from+E:u,N=Math.max(o,m),U=Math.min(_,b);if(N<U&&p)for(;e.from<U&&(this.highlightRange(e,N,U,l,c),this.startSpan(Math.min(U,e.to),d),!(e.to>=b||!e.nextSibling())););if(!A||b>_)break;m=A.to+E,m>o&&(this.highlightRange(S.cursor(),Math.max(o,A.from+E),Math.min(_,m),"",L),this.startSpan(Math.min(_,m),d))}p&&e.parent()}else if(e.firstChild()){I&&(l="");do if(!(e.to<=o)){if(e.from>=_)break;this.highlightRange(e,o,_,l,c),this.startSpan(Math.min(_,e.to),d)}while(e.nextSibling());e.parent()}}}function T7(t){let e=t.type.prop(iV);for(;e&&e.context&&!t.matchContext(e.context);)e=e.next;return e||null}const Dt=Kl.define,AM=Dt(),zl=Dt(),_w=Dt(zl),lw=Dt(zl),Zl=Dt(),bM=Dt(Zl),IC=Dt(Zl),qr=Dt(),Tc=Dt(qr),Zr=Dt(),jr=Dt(),db=Dt(),Lg=Dt(db),NM=Dt(),ut={comment:AM,lineComment:Dt(AM),blockComment:Dt(AM),docComment:Dt(AM),name:zl,variableName:Dt(zl),typeName:_w,tagName:Dt(_w),propertyName:lw,attributeName:Dt(lw),className:Dt(zl),labelName:Dt(zl),namespace:Dt(zl),macroName:Dt(zl),literal:Zl,string:bM,docString:Dt(bM),character:Dt(bM),attributeValue:Dt(bM),number:IC,integer:Dt(IC),float:Dt(IC),bool:Dt(Zl),regexp:Dt(Zl),escape:Dt(Zl),color:Dt(Zl),url:Dt(Zl),keyword:Zr,self:Dt(Zr),null:Dt(Zr),atom:Dt(Zr),unit:Dt(Zr),modifier:Dt(Zr),operatorKeyword:Dt(Zr),controlKeyword:Dt(Zr),definitionKeyword:Dt(Zr),moduleKeyword:Dt(Zr),operator:jr,derefOperator:Dt(jr),arithmeticOperator:Dt(jr),logicOperator:Dt(jr),bitwiseOperator:Dt(jr),compareOperator:Dt(jr),updateOperator:Dt(jr),definitionOperator:Dt(jr),typeOperator:Dt(jr),controlOperator:Dt(jr),punctuation:db,separator:Dt(db),bracket:Lg,angleBracket:Dt(Lg),squareBracket:Dt(Lg),paren:Dt(Lg),brace:Dt(Lg),content:qr,heading:Tc,heading1:Dt(Tc),heading2:Dt(Tc),heading3:Dt(Tc),heading4:Dt(Tc),heading5:Dt(Tc),heading6:Dt(Tc),contentSeparator:Dt(qr),list:Dt(qr),quote:Dt(qr),emphasis:Dt(qr),strong:Dt(qr),link:Dt(qr),monospace:Dt(qr),strikethrough:Dt(qr),inserted:Dt(),deleted:Dt(),changed:Dt(),invalid:Dt(),meta:NM,documentMeta:Dt(NM),annotation:Dt(NM),processingInstruction:Dt(NM),definition:Kl.defineModifier(),constant:Kl.defineModifier(),function:Kl.defineModifier(),standard:Kl.defineModifier(),local:Kl.defineModifier(),special:Kl.defineModifier()};nV([{tag:ut.link,class:"tok-link"},{tag:ut.heading,class:"tok-heading"},{tag:ut.emphasis,class:"tok-emphasis"},{tag:ut.strong,class:"tok-strong"},{tag:ut.keyword,class:"tok-keyword"},{tag:ut.atom,class:"tok-atom"},{tag:ut.bool,class:"tok-bool"},{tag:ut.url,class:"tok-url"},{tag:ut.labelName,class:"tok-labelName"},{tag:ut.inserted,class:"tok-inserted"},{tag:ut.deleted,class:"tok-deleted"},{tag:ut.literal,class:"tok-literal"},{tag:ut.string,class:"tok-string"},{tag:ut.number,class:"tok-number"},{tag:[ut.regexp,ut.escape,ut.special(ut.string)],class:"tok-string2"},{tag:ut.variableName,class:"tok-variableName"},{tag:ut.local(ut.variableName),class:"tok-variableName tok-local"},{tag:ut.definition(ut.variableName),class:"tok-variableName tok-definition"},{tag:ut.special(ut.variableName),class:"tok-variableName2"},{tag:ut.definition(ut.propertyName),class:"tok-propertyName tok-definition"},{tag:ut.typeName,class:"tok-typeName"},{tag:ut.namespace,class:"tok-namespace"},{tag:ut.className,class:"tok-className"},{tag:ut.macroName,class:"tok-macroName"},{tag:ut.propertyName,class:"tok-propertyName"},{tag:ut.operator,class:"tok-operator"},{tag:ut.comment,class:"tok-comment"},{tag:ut.meta,class:"tok-meta"},{tag:ut.invalid,class:"tok-invalid"},{tag:ut.punctuation,class:"tok-punctuation"}]);var SC;const RE=new po;function E7(t){return Ft.define({combine:t?e=>e.concat(t):void 0})}const u7=new po;class ur{constructor(e,o,_=[],l=""){this.data=e,this.name=l,fo.prototype.hasOwnProperty("tree")||Object.defineProperty(fo.prototype,"tree",{get(){return Qs(this)}}),this.parser=o,this.extension=[Sa.of(this),fo.languageData.of((c,T,E)=>{let u=aw(c,T,E),d=u.type.prop(RE);if(!d)return[];let O=c.facet(d),h=u.type.prop(u7);if(h){let I=u.resolve(T-u.from,E);for(let S of h)if(S.test(I,c)){let L=c.facet(S.facet);return S.type=="replace"?L:L.concat(O)}}return O})].concat(_)}isActiveAt(e,o,_=-1){return aw(e,o,_).type.prop(RE)==this.data}findRegions(e){let o=e.facet(Sa);if((o==null?void 0:o.data)==this.data)return[{from:0,to:e.doc.length}];if(!o||!o.allowsNesting)return[];let _=[],l=(c,T)=>{if(c.prop(RE)==this.data){_.push({from:T,to:T+c.length});return}let E=c.prop(po.mounted);if(E){if(E.tree.prop(RE)==this.data){if(E.overlay)for(let u of E.overlay)_.push({from:u.from+T,to:u.to+T});else _.push({from:T,to:T+c.length});return}else if(E.overlay){let u=_.length;if(l(E.tree,E.overlay[0].from+T),_.length>u)return}}for(let u=0;u<c.children.length;u++){let d=c.children[u];d instanceof Ei&&l(d,c.positions[u]+T)}};return l(Qs(e),0),_}get allowsNesting(){return!0}}ur.setState=uo.define();function aw(t,e,o){let _=t.facet(Sa),l=Qs(t).topNode;if(!_||_.allowsNesting)for(let c=l;c;c=c.enter(e,o,Vs.ExcludeBuffers))c.type.isTop&&(l=c);return l}class cI extends ur{constructor(e,o,_){super(e,o,[],_),this.parser=o}static define(e){let o=E7(e.languageData);return new cI(o,e.parser.configure({props:[RE.add(_=>_.isTop?o:void 0)]}),e.name)}configure(e,o){return new cI(this.data,this.parser.configure(e),o||this.name)}get allowsNesting(){return this.parser.hasWrappers()}}function Qs(t){let e=t.field(ur.state,!1);return e?e.tree:Ei.empty}class g7{constructor(e){this.doc=e,this.cursorPos=0,this.string="",this.cursor=e.iter()}get length(){return this.doc.length}syncTo(e){return this.string=this.cursor.next(e-this.cursorPos).value,this.cursorPos=e+this.string.length,this.cursorPos-this.string.length}chunk(e){return this.syncTo(e),this.string}get lineChunks(){return!0}read(e,o){let _=this.cursorPos-this.string.length;return e<_||o>=this.cursorPos?this.doc.sliceString(e,o):this.string.slice(e-_,o-_)}}let fg=null;class TI{constructor(e,o,_=[],l,c,T,E,u){this.parser=e,this.state=o,this.fragments=_,this.tree=l,this.treeLen=c,this.viewport=T,this.skipped=E,this.scheduleOn=u,this.parse=null,this.tempSkipped=[]}static create(e,o,_){return new TI(e,o,[],Ei.empty,0,_,[],null)}startParse(){return this.parser.startParse(new g7(this.state.doc),this.fragments)}work(e,o){return o!=null&&o>=this.state.doc.length&&(o=void 0),this.tree!=Ei.empty&&this.isDone(o??this.state.doc.length)?(this.takeTree(),!0):this.withContext(()=>{var _;if(typeof e=="number"){let l=Date.now()+e;e=()=>Date.now()>l}for(this.parse||(this.parse=this.startParse()),o!=null&&(this.parse.stoppedAt==null||this.parse.stoppedAt>o)&&o<this.state.doc.length&&this.parse.stopAt(o);;){let l=this.parse.advance();if(l)if(this.fragments=this.withoutTempSkipped(Uc.addTree(l,this.fragments,this.parse.stoppedAt!=null)),this.treeLen=(_=this.parse.stoppedAt)!==null&&_!==void 0?_:this.state.doc.length,this.tree=l,this.parse=null,this.treeLen<(o??this.state.doc.length))this.parse=this.startParse();else return!0;if(e())return!1}})}takeTree(){let e,o;this.parse&&(e=this.parse.parsedPos)>=this.treeLen&&((this.parse.stoppedAt==null||this.parse.stoppedAt>e)&&this.parse.stopAt(e),this.withContext(()=>{for(;!(o=this.parse.advance()););}),this.treeLen=e,this.tree=o,this.fragments=this.withoutTempSkipped(Uc.addTree(this.tree,this.fragments,!0)),this.parse=null)}withContext(e){let o=fg;fg=this;try{return e()}finally{fg=o}}withoutTempSkipped(e){for(let o;o=this.tempSkipped.pop();)e=cw(e,o.from,o.to);return e}changes(e,o){let{fragments:_,tree:l,treeLen:c,viewport:T,skipped:E}=this;if(this.takeTree(),!e.empty){let u=[];if(e.iterChangedRanges((d,O,h,I)=>u.push({fromA:d,toA:O,fromB:h,toB:I})),_=Uc.applyChanges(_,u),l=Ei.empty,c=0,T={from:e.mapPos(T.from,-1),to:e.mapPos(T.to,1)},this.skipped.length){E=[];for(let d of this.skipped){let O=e.mapPos(d.from,1),h=e.mapPos(d.to,-1);O<h&&E.push({from:O,to:h})}}}return new TI(this.parser,o,_,l,c,T,E,this.scheduleOn)}updateViewport(e){if(this.viewport.from==e.from&&this.viewport.to==e.to)return!1;this.viewport=e;let o=this.skipped.length;for(let _=0;_<this.skipped.length;_++){let{from:l,to:c}=this.skipped[_];l<e.to&&c>e.from&&(this.fragments=cw(this.fragments,l,c),this.skipped.splice(_--,1))}return this.skipped.length>=o?!1:(this.reset(),!0)}reset(){this.parse&&(this.takeTree(),this.parse=null)}skipUntilInView(e,o){this.skipped.push({from:e,to:o})}static getSkippingParser(e){return new class extends tV{createParse(o,_,l){let c=l[0].from,T=l[l.length-1].to;return{parsedPos:c,advance(){let u=fg;if(u){for(let d of l)u.tempSkipped.push(d);e&&(u.scheduleOn=u.scheduleOn?Promise.all([u.scheduleOn,e]):e)}return this.parsedPos=T,new Ei(sn.none,[],[],T-c)},stoppedAt:null,stopAt(){}}}}}isDone(e){e=Math.min(e,this.state.doc.length);let o=this.fragments;return this.treeLen>=e&&o.length&&o[0].from==0&&o[0].to>=e}static get(){return fg}}function cw(t,e,o){return Uc.applyChanges(t,[{fromA:e,toA:o,fromB:e,toB:o}])}class zE{constructor(e){this.context=e,this.tree=e.tree}apply(e){if(!e.docChanged&&this.tree==this.context.tree)return this;let o=this.context.changes(e.changes,e.state),_=this.context.treeLen==e.startState.doc.length?void 0:Math.max(e.changes.mapPos(this.context.treeLen),o.viewport.to);return o.work(20,_)||o.takeTree(),new zE(o)}static init(e){let o=Math.min(3e3,e.doc.length),_=TI.create(e.facet(Sa).parser,e,{from:0,to:o});return _.work(20,o)||_.takeTree(),new zE(_)}}ur.state=Js.define({create:zE.init,update(t,e){for(let o of e.effects)if(o.is(ur.setState))return o.value;return e.startState.facet(Sa)!=e.state.facet(Sa)?zE.init(e.state):t.apply(e)}});let rV=t=>{let e=setTimeout(()=>t(),500);return()=>clearTimeout(e)};typeof requestIdleCallback<"u"&&(rV=t=>{let e=-1,o=setTimeout(()=>{e=requestIdleCallback(t,{timeout:400})},100);return()=>e<0?clearTimeout(o):cancelIdleCallback(e)});const pC=typeof navigator<"u"&&(!((SC=navigator.scheduling)===null||SC===void 0)&&SC.isInputPending)?()=>navigator.scheduling.isInputPending():null,d7=Ps.fromClass(class{constructor(e){this.view=e,this.working=null,this.workScheduled=0,this.chunkEnd=-1,this.chunkBudget=-1,this.work=this.work.bind(this),this.scheduleWork()}update(e){let o=this.view.state.field(ur.state).context;(o.updateViewport(e.view.viewport)||this.view.viewport.to>o.treeLen)&&this.scheduleWork(),(e.docChanged||e.selectionSet)&&(this.view.hasFocus&&(this.chunkBudget+=50),this.scheduleWork()),this.checkAsyncSchedule(o)}scheduleWork(){if(this.working)return;let{state:e}=this.view,o=e.field(ur.state);(o.tree!=o.context.tree||!o.context.isDone(e.doc.length))&&(this.working=rV(this.work))}work(e){this.working=null;let o=Date.now();if(this.chunkEnd<o&&(this.chunkEnd<0||this.view.hasFocus)&&(this.chunkEnd=o+3e4,this.chunkBudget=3e3),this.chunkBudget<=0)return;let{state:_,viewport:{to:l}}=this.view,c=_.field(ur.state);if(c.tree==c.context.tree&&c.context.isDone(l+1e5))return;let T=Date.now()+Math.min(this.chunkBudget,100,e&&!pC?Math.max(25,e.timeRemaining()-5):1e9),E=c.context.treeLen<l&&_.doc.length>l+1e3,u=c.context.work(()=>pC&&pC()||Date.now()>T,l+(E?0:1e5));this.chunkBudget-=Date.now()-o,(u||this.chunkBudget<=0)&&(c.context.takeTree(),this.view.dispatch({effects:ur.setState.of(new zE(c.context))})),this.chunkBudget>0&&!(u&&!E)&&this.scheduleWork(),this.checkAsyncSchedule(c.context)}checkAsyncSchedule(e){e.scheduleOn&&(this.workScheduled++,e.scheduleOn.then(()=>this.scheduleWork()).catch(o=>xn(this.view.state,o)).then(()=>this.workScheduled--),e.scheduleOn=null)}destroy(){this.working&&this.working()}isWorking(){return!!(this.working||this.workScheduled>0)}},{eventHandlers:{focus(){this.scheduleWork()}}}),Sa=Ft.define({combine(t){return t.length?t[0]:null},enables:t=>[ur.state,d7,Gt.contentAttributes.compute([t],e=>{let o=e.facet(t);return o&&o.name?{"data-language":o.name}:{}})]});class O7{constructor(e,o=[]){this.language=e,this.support=o,this.extension=[e,o]}}const h7=Ft.define(),TO=Ft.define({combine:t=>{if(!t.length)return" ";let e=t[0];if(!e||/\S/.test(e)||Array.from(e).some(o=>o!=e[0]))throw new Error("Invalid indent unit: "+JSON.stringify(t[0]));return e}});function EI(t){let e=t.facet(TO);return e.charCodeAt(0)==9?t.tabSize*e.length:e.length}function Cd(t,e){let o="",_=t.tabSize,l=t.facet(TO)[0];if(l==" "){for(;e>=_;)o+=" ",e-=_;l=" "}for(let c=0;c<e;c++)o+=l;return o}function wP(t,e){t instanceof fo&&(t=new gS(t));for(let _ of t.state.facet(h7)){let l=_(t,e);if(l!==void 0)return l}let o=Qs(t.state);return o.length>=e?M7(t,o,e):null}class gS{constructor(e,o={}){this.state=e,this.options=o,this.unit=EI(e)}lineAt(e,o=1){let _=this.state.doc.lineAt(e),{simulateBreak:l,simulateDoubleBreak:c}=this.options;return l!=null&&l>=_.from&&l<=_.to?c&&l==e?{text:"",from:e}:(o<0?l<e:l<=e)?{text:_.text.slice(l-_.from),from:l}:{text:_.text.slice(0,l-_.from),from:_.from}:_}textAfterPos(e,o=1){if(this.options.simulateDoubleBreak&&e==this.options.simulateBreak)return"";let{text:_,from:l}=this.lineAt(e,o);return _.slice(e-l,Math.min(_.length,e+100-l))}column(e,o=1){let{text:_,from:l}=this.lineAt(e,o),c=this.countColumn(_,e-l),T=this.options.overrideIndentation?this.options.overrideIndentation(l):-1;return T>-1&&(c+=T-this.countColumn(_,_.search(/\S|$/))),c}countColumn(e,o=e.length){return Iu(e,this.state.tabSize,o)}lineIndent(e,o=1){let{text:_,from:l}=this.lineAt(e,o),c=this.options.overrideIndentation;if(c){let T=c(l);if(T>-1)return T}return this.countColumn(_,_.search(/\S|$/))}get simulatedBreak(){return this.options.simulateBreak||null}}const _V=new po;function M7(t,e,o){let _=e.resolveStack(o),l=_.node.enterUnfinishedNodesBefore(o);if(l!=_.node){let c=[];for(let T=l;T!=_.node;T=T.parent)c.push(T);for(let T=c.length-1;T>=0;T--)_={node:c[T],next:_}}return lV(_,t,o)}function lV(t,e,o){for(let _=t;_;_=_.next){let l=I7(_.node);if(l)return l(GP.create(e,o,_))}return 0}function R7(t){return t.pos==t.options.simulateBreak&&t.options.simulateDoubleBreak}function I7(t){let e=t.type.prop(_V);if(e)return e;let o=t.firstChild,_;if(o&&(_=o.type.prop(po.closedBy))){let l=t.lastChild,c=l&&_.indexOf(l.name)>-1;return T=>aV(T,!0,1,void 0,c&&!R7(T)?l.from:void 0)}return t.parent==null?S7:null}function S7(){return 0}class GP extends gS{constructor(e,o,_){super(e.state,e.options),this.base=e,this.pos=o,this.context=_}get node(){return this.context.node}static create(e,o,_){return new GP(e,o,_)}get textAfter(){return this.textAfterPos(this.pos)}get baseIndent(){return this.baseIndentFor(this.node)}baseIndentFor(e){let o=this.state.doc.lineAt(e.from);for(;;){let _=e.resolve(o.from);for(;_.parent&&_.parent.from==_.from;)_=_.parent;if(p7(_,e))break;o=this.state.doc.lineAt(_.from)}return this.lineIndent(o.from)}continue(){return lV(this.context.next,this.base,this.pos)}}function p7(t,e){for(let o=e;o;o=o.parent)if(t==o)return!0;return!1}function L7(t){let e=t.node,o=e.childAfter(e.from),_=e.lastChild;if(!o)return null;let l=t.options.simulateBreak,c=t.state.doc.lineAt(o.from),T=l==null||l<=c.from?c.to:Math.min(c.to,l);for(let E=o.to;;){let u=e.childAfter(E);if(!u||u==_)return null;if(!u.type.isSkipped)return u.from<T?o:null;E=u.to}}function LC({closing:t,align:e=!0,units:o=1}){return _=>aV(_,e,o,t)}function aV(t,e,o,_,l){let c=t.textAfter,T=c.match(/^\s*/)[0].length,E=_&&c.slice(T,T+_.length)==_||l==t.pos+T,u=e?L7(t):null;return u?E?t.column(u.from):t.column(u.to):t.baseIndent+(E?0:t.unit*o)}const f7=200;function m7(){return fo.transactionFilter.of(t=>{if(!t.docChanged||!t.isUserEvent("input.type")&&!t.isUserEvent("input.complete"))return t;let e=t.startState.languageDataAt("indentOnInput",t.startState.selection.main.head);if(!e.length)return t;let o=t.newDoc,{head:_}=t.newSelection.main,l=o.lineAt(_);if(_>l.from+f7)return t;let c=o.sliceString(l.from,_);if(!e.some(d=>d.test(c)))return t;let{state:T}=t,E=-1,u=[];for(let{head:d}of T.selection.ranges){let O=T.doc.lineAt(d);if(O.from==E)continue;E=O.from;let h=wP(T,O.from);if(h==null)continue;let I=/^\s*/.exec(O.text)[0],S=Cd(T,h);I!=S&&u.push({from:O.from,to:O.from+I.length,insert:S})}return u.length?[t,{changes:u,sequential:!0}]:t})}const C7=Ft.define(),cV=new po;function A7(t){let e=t.firstChild,o=t.lastChild;return e&&e.to<o.from?{from:e.to,to:o.type.isError?t.to:o.from}:null}function b7(t,e,o){let _=Qs(t);if(_.length<o)return null;let l=_.resolveStack(o,1),c=null;for(let T=l;T;T=T.next){let E=T.node;if(E.to<=o||E.from>o)continue;if(c&&E.from<e)break;let u=E.type.prop(cV);if(u&&(E.to<_.length-50||_.length==t.doc.length||!N7(E))){let d=u(E,t);d&&d.from<=o&&d.from>=e&&d.to>o&&(c=d)}}return c}function N7(t){let e=t.lastChild;return e&&e.to==t.to&&e.type.isError}function uI(t,e,o){for(let _ of t.facet(C7)){let l=_(t,e,o);if(l)return l}return b7(t,e,o)}function TV(t,e){let o=e.mapPos(t.from,1),_=e.mapPos(t.to,-1);return o>=_?void 0:{from:o,to:_}}const dS=uo.define({map:TV}),EO=uo.define({map:TV});function EV(t){let e=[];for(let{head:o}of t.state.selection.ranges)e.some(_=>_.from<=o&&_.to>=o)||e.push(t.lineBlockAt(o));return e}const Fc=Js.define({create(){return eo.none},update(t,e){t=t.map(e.changes);for(let o of e.effects)if(o.is(dS)&&!P7(t,o.value.from,o.value.to)){let{preparePlaceholder:_}=e.state.facet(kP),l=_?eo.replace({widget:new w7(_(e.state,o.value))}):Tw;t=t.update({add:[l.range(o.value.from,o.value.to)]})}else o.is(EO)&&(t=t.update({filter:(_,l)=>o.value.from!=_||o.value.to!=l,filterFrom:o.value.from,filterTo:o.value.to}));if(e.selection){let o=!1,{head:_}=e.selection.main;t.between(_,_,(l,c)=>{l<_&&c>_&&(o=!0)}),o&&(t=t.update({filterFrom:_,filterTo:_,filter:(l,c)=>c<=_||l>=_}))}return t},provide:t=>Gt.decorations.from(t),toJSON(t,e){let o=[];return t.between(0,e.doc.length,(_,l)=>{o.push(_,l)}),o},fromJSON(t){if(!Array.isArray(t)||t.length%2)throw new RangeError("Invalid JSON for fold state");let e=[];for(let o=0;o<t.length;){let _=t[o++],l=t[o++];if(typeof _!="number"||typeof l!="number")throw new RangeError("Invalid JSON for fold state");e.push(Tw.range(_,l))}return eo.set(e,!0)}});function gI(t,e,o){var _;let l=null;return(_=t.field(Fc,!1))===null||_===void 0||_.between(e,o,(c,T)=>{(!l||l.from>c)&&(l={from:c,to:T})}),l}function P7(t,e,o){let _=!1;return t.between(e,e,(l,c)=>{l==e&&c==o&&(_=!0)}),_}function uV(t,e){return t.field(Fc,!1)?e:e.concat(uo.appendConfig.of(dV()))}const v7=t=>{for(let e of EV(t)){let o=uI(t.state,e.from,e.to);if(o)return t.dispatch({effects:uV(t.state,[dS.of(o),gV(t,o)])}),!0}return!1},D7=t=>{if(!t.state.field(Fc,!1))return!1;let e=[];for(let o of EV(t)){let _=gI(t.state,o.from,o.to);_&&e.push(EO.of(_),gV(t,_,!1))}return e.length&&t.dispatch({effects:e}),e.length>0};function gV(t,e,o=!0){let _=t.state.doc.lineAt(e.from).number,l=t.state.doc.lineAt(e.to).number;return Gt.announce.of(`${t.state.phrase(o?"Folded lines":"Unfolded lines")} ${_} ${t.state.phrase("to")} ${l}.`)}const U7=t=>{let{state:e}=t,o=[];for(let _=0;_<e.doc.length;){let l=t.lineBlockAt(_),c=uI(e,l.from,l.to);c&&o.push(dS.of(c)),_=(c?t.lineBlockAt(c.to):l).to+1}return o.length&&t.dispatch({effects:uV(t.state,o)}),!!o.length},y7=t=>{let e=t.state.field(Fc,!1);if(!e||!e.size)return!1;let o=[];return e.between(0,t.state.doc.length,(_,l)=>{o.push(EO.of({from:_,to:l}))}),t.dispatch({effects:o}),!0},$7=[{key:"Ctrl-Shift-[",mac:"Cmd-Alt-[",run:v7},{key:"Ctrl-Shift-]",mac:"Cmd-Alt-]",run:D7},{key:"Ctrl-Alt-[",run:U7},{key:"Ctrl-Alt-]",run:y7}],B7={placeholderDOM:null,preparePlaceholder:null,placeholderText:"…"},kP=Ft.define({combine(t){return O_(t,B7)}});function dV(t){let e=[Fc,H7];return t&&e.push(kP.of(t)),e}function OV(t,e){let{state:o}=t,_=o.facet(kP),l=T=>{let E=t.lineBlockAt(t.posAtDOM(T.target)),u=gI(t.state,E.from,E.to);u&&t.dispatch({effects:EO.of(u)}),T.preventDefault()};if(_.placeholderDOM)return _.placeholderDOM(t,l,e);let c=document.createElement("span");return c.textContent=_.placeholderText,c.setAttribute("aria-label",o.phrase("folded code")),c.title=o.phrase("unfold"),c.className="cm-foldPlaceholder",c.onclick=l,c}const Tw=eo.replace({widget:new class extends h_{toDOM(t){return OV(t,null)}}});class w7 extends h_{constructor(e){super(),this.value=e}eq(e){return this.value==e.value}toDOM(e){return OV(e,this.value)}}const G7={openText:"⌄",closedText:"›",markerDOM:null,domEventHandlers:{},foldingChanged:()=>!1};class fC extends ol{constructor(e,o){super(),this.config=e,this.open=o}eq(e){return this.config==e.config&&this.open==e.open}toDOM(e){if(this.config.markerDOM)return this.config.markerDOM(this.open);let o=document.createElement("span");return o.textContent=this.open?this.config.openText:this.config.closedText,o.title=e.state.phrase(this.open?"Fold line":"Unfold line"),o}}function k7(t={}){let e=Object.assign(Object.assign({},G7),t),o=new fC(e,!0),_=new fC(e,!1),l=Ps.fromClass(class{constructor(T){this.from=T.viewport.from,this.markers=this.buildMarkers(T)}update(T){(T.docChanged||T.viewportChanged||T.startState.facet(Sa)!=T.state.facet(Sa)||T.startState.field(Fc,!1)!=T.state.field(Fc,!1)||Qs(T.startState)!=Qs(T.state)||e.foldingChanged(T))&&(this.markers=this.buildMarkers(T.view))}buildMarkers(T){let E=new Oa;for(let u of T.viewportLineBlocks){let d=gI(T.state,u.from,u.to)?_:uI(T.state,u.from,u.to)?o:null;d&&E.add(u.from,u.from,d)}return E.finish()}}),{domEventHandlers:c}=e;return[l,Hj({class:"cm-foldGutter",markers(T){var E;return((E=T.plugin(l))===null||E===void 0?void 0:E.markers)||Bo.empty},initialSpacer(){return new fC(e,!1)},domEventHandlers:Object.assign(Object.assign({},c),{click:(T,E,u)=>{if(c.click&&c.click(T,E,u))return!0;let d=gI(T.state,E.from,E.to);if(d)return T.dispatch({effects:EO.of(d)}),!0;let O=uI(T.state,E.from,E.to);return O?(T.dispatch({effects:dS.of(O)}),!0):!1}})}),dV()]}const H7=Gt.baseTheme({".cm-foldPlaceholder":{backgroundColor:"#eee",border:"1px solid #ddd",color:"#888",borderRadius:".2em",margin:"0 1px",padding:"0 1px",cursor:"pointer"},".cm-foldGutter span":{padding:"0 1px",cursor:"pointer"}});class OS{constructor(e,o){this.specs=e;let _;function l(E){let u=ha.newName();return(_||(_=Object.create(null)))["."+u]=E,u}const c=typeof o.all=="string"?o.all:o.all?l(o.all):void 0,T=o.scope;this.scope=T instanceof ur?E=>E.prop(RE)==T.data:T?E=>E==T:void 0,this.style=nV(e.map(E=>({tag:E.tag,class:E.class||l(Object.assign({},E,{tag:null}))})),{all:c}).style,this.module=_?new ha(_):null,this.themeType=o.themeType}static define(e,o){return new OS(e,o||{})}}const Ob=Ft.define(),hV=Ft.define({combine(t){return t.length?[t[0]]:null}});function mC(t){let e=t.facet(Ob);return e.length?e:t.facet(hV)}function x7(t,e){let o=[V7],_;return t instanceof OS&&(t.module&&o.push(Gt.styleModule.of(t.module)),_=t.themeType),e!=null&&e.fallback?o.push(hV.of(t)):_?o.push(Ob.computeN([Gt.darkTheme],l=>l.facet(Gt.darkTheme)==(_=="dark")?[t]:[])):o.push(Ob.of(t)),o}class F7{constructor(e){this.markCache=Object.create(null),this.tree=Qs(e.state),this.decorations=this.buildDeco(e,mC(e.state))}update(e){let o=Qs(e.state),_=mC(e.state),l=_!=mC(e.startState);o.length<e.view.viewport.to&&!l&&o.type==this.tree.type?this.decorations=this.decorations.map(e.changes):(o!=this.tree||e.viewportChanged||l)&&(this.tree=o,this.decorations=this.buildDeco(e.view,_))}buildDeco(e,o){if(!o||!this.tree.length)return eo.none;let _=new Oa;for(let{from:l,to:c}of e.visibleRanges)a7(this.tree,o,(T,E,u)=>{_.add(T,E,this.markCache[u]||(this.markCache[u]=eo.mark({class:u})))},l,c);return _.finish()}}const V7=eT.high(Ps.fromClass(F7,{decorations:t=>t.decorations})),W7=OS.define([{tag:ut.meta,color:"#404740"},{tag:ut.link,textDecoration:"underline"},{tag:ut.heading,textDecoration:"underline",fontWeight:"bold"},{tag:ut.emphasis,fontStyle:"italic"},{tag:ut.strong,fontWeight:"bold"},{tag:ut.strikethrough,textDecoration:"line-through"},{tag:ut.keyword,color:"#708"},{tag:[ut.atom,ut.bool,ut.url,ut.contentSeparator,ut.labelName],color:"#219"},{tag:[ut.literal,ut.inserted],color:"#164"},{tag:[ut.string,ut.deleted],color:"#a11"},{tag:[ut.regexp,ut.escape,ut.special(ut.string)],color:"#e40"},{tag:ut.definition(ut.variableName),color:"#00f"},{tag:ut.local(ut.variableName),color:"#30a"},{tag:[ut.typeName,ut.namespace],color:"#085"},{tag:ut.className,color:"#167"},{tag:[ut.special(ut.variableName),ut.macroName],color:"#256"},{tag:ut.definition(ut.propertyName),color:"#00c"},{tag:ut.comment,color:"#940"},{tag:ut.invalid,color:"#f00"}]),X7=Gt.baseTheme({"&.cm-focused .cm-matchingBracket":{backgroundColor:"#328c8252"},"&.cm-focused .cm-nonmatchingBracket":{backgroundColor:"#bb555544"}}),MV=1e4,RV="()[]{}",IV=Ft.define({combine(t){return O_(t,{afterCursor:!0,brackets:RV,maxScanDistance:MV,renderMatch:z7})}}),Y7=eo.mark({class:"cm-matchingBracket"}),K7=eo.mark({class:"cm-nonmatchingBracket"});function z7(t){let e=[],o=t.matched?Y7:K7;return e.push(o.range(t.start.from,t.start.to)),t.end&&e.push(o.range(t.end.from,t.end.to)),e}const Z7=Js.define({create(){return eo.none},update(t,e){if(!e.docChanged&&!e.selection)return t;let o=[],_=e.state.facet(IV);for(let l of e.state.selection.ranges){if(!l.empty)continue;let c=i_(e.state,l.head,-1,_)||l.head>0&&i_(e.state,l.head-1,1,_)||_.afterCursor&&(i_(e.state,l.head,1,_)||l.head<e.state.doc.length&&i_(e.state,l.head+1,-1,_));c&&(o=o.concat(_.renderMatch(c,e.state)))}return eo.set(o,!0)},provide:t=>Gt.decorations.from(t)}),j7=[Z7,X7];function q7(t={}){return[IV.of(t),j7]}const Q7=new po;function hb(t,e,o){let _=t.prop(e<0?po.openedBy:po.closedBy);if(_)return _;if(t.name.length==1){let l=o.indexOf(t.name);if(l>-1&&l%2==(e<0?1:0))return[o[l+e]]}return null}function Mb(t){let e=t.type.prop(Q7);return e?e(t.node):t}function i_(t,e,o,_={}){let l=_.maxScanDistance||MV,c=_.brackets||RV,T=Qs(t),E=T.resolveInner(e,o);for(let u=E;u;u=u.parent){let d=hb(u.type,o,c);if(d&&u.from<u.to){let O=Mb(u);if(O&&(o>0?e>=O.from&&e<O.to:e>O.from&&e<=O.to))return J7(t,e,o,u,O,d,c)}}return eq(t,e,o,T,E.type,l,c)}function J7(t,e,o,_,l,c,T){let E=_.parent,u={from:l.from,to:l.to},d=0,O=E==null?void 0:E.cursor();if(O&&(o<0?O.childBefore(_.from):O.childAfter(_.to)))do if(o<0?O.to<=_.from:O.from>=_.to){if(d==0&&c.indexOf(O.type.name)>-1&&O.from<O.to){let h=Mb(O);return{start:u,end:h?{from:h.from,to:h.to}:void 0,matched:!0}}else if(hb(O.type,o,T))d++;else if(hb(O.type,-o,T)){if(d==0){let h=Mb(O);return{start:u,end:h&&h.from<h.to?{from:h.from,to:h.to}:void 0,matched:!1}}d--}}while(o<0?O.prevSibling():O.nextSibling());return{start:u,matched:!1}}function eq(t,e,o,_,l,c,T){let E=o<0?t.sliceDoc(e-1,e):t.sliceDoc(e,e+1),u=T.indexOf(E);if(u<0||u%2==0!=o>0)return null;let d={from:o<0?e-1:e,to:o>0?e+1:e},O=t.doc.iterRange(e,o>0?t.doc.length:0),h=0;for(let I=0;!O.next().done&&I<=c;){let S=O.value;o<0&&(I+=S.length);let L=e+I*o;for(let p=o>0?0:S.length-1,C=o>0?S.length:-1;p!=C;p+=o){let m=T.indexOf(S[p]);if(!(m<0||_.resolveInner(L+p,1).type!=l))if(m%2==0==o>0)h++;else{if(h==1)return{start:d,end:{from:L+p,to:L+p+1},matched:m>>1==u>>1};h--}}o>0&&(I+=S.length)}return O.done?{start:d,matched:!1}:null}const tq=Object.create(null),Ew=[sn.none],uw=[],gw=Object.create(null),oq=Object.create(null);for(let[t,e]of[["variable","variableName"],["variable-2","variableName.special"],["string-2","string.special"],["def","variableName.definition"],["tag","tagName"],["attribute","attributeName"],["type","typeName"],["builtin","variableName.standard"],["qualifier","modifier"],["error","invalid"],["header","heading"],["property","propertyName"]])oq[t]=sq(tq,e);function CC(t,e){uw.indexOf(t)>-1||(uw.push(t),console.warn(e))}function sq(t,e){let o=[];for(let E of e.split(" ")){let u=[];for(let d of E.split(".")){let O=t[d]||ut[d];O?typeof O=="function"?u.length?u=u.map(O):CC(d,`Modifier ${d} used at start of tag`):u.length?CC(d,`Tag ${d} used as modifier`):u=Array.isArray(O)?O:[O]:CC(d,`Unknown highlighting tag ${d}`)}for(let d of u)o.push(d)}if(!o.length)return 0;let _=e.replace(/ /g,"_"),l=_+" "+o.map(E=>E.id),c=gw[l];if(c)return c.id;let T=gw[l]=sn.define({id:Ew.length,name:_,props:[sV({[_]:o})]});return Ew.push(T),T.id}us.RTL,us.LTR;const iq=t=>{let{state:e}=t,o=e.doc.lineAt(e.selection.main.from),_=xP(t.state,o.from);return _.line?nq(t):_.block?_q(t):!1};function HP(t,e){return({state:o,dispatch:_})=>{if(o.readOnly)return!1;let l=t(e,o);return l?(_(o.update(l)),!0):!1}}const nq=HP(cq,0),rq=HP(SV,0),_q=HP((t,e)=>SV(t,e,aq(e)),0);function xP(t,e){let o=t.languageDataAt("commentTokens",e);return o.length?o[0]:{}}const mg=50;function lq(t,{open:e,close:o},_,l){let c=t.sliceDoc(_-mg,_),T=t.sliceDoc(l,l+mg),E=/\s*$/.exec(c)[0].length,u=/^\s*/.exec(T)[0].length,d=c.length-E;if(c.slice(d-e.length,d)==e&&T.slice(u,u+o.length)==o)return{open:{pos:_-E,margin:E&&1},close:{pos:l+u,margin:u&&1}};let O,h;l-_<=2*mg?O=h=t.sliceDoc(_,l):(O=t.sliceDoc(_,_+mg),h=t.sliceDoc(l-mg,l));let I=/^\s*/.exec(O)[0].length,S=/\s*$/.exec(h)[0].length,L=h.length-S-o.length;return O.slice(I,I+e.length)==e&&h.slice(L,L+o.length)==o?{open:{pos:_+I+e.length,margin:/\s/.test(O.charAt(I+e.length))?1:0},close:{pos:l-S-o.length,margin:/\s/.test(h.charAt(L-1))?1:0}}:null}function aq(t){let e=[];for(let o of t.selection.ranges){let _=t.doc.lineAt(o.from),l=o.to<=_.to?_:t.doc.lineAt(o.to),c=e.length-1;c>=0&&e[c].to>_.from?e[c].to=l.to:e.push({from:_.from+/^\s*/.exec(_.text)[0].length,to:l.to})}return e}function SV(t,e,o=e.selection.ranges){let _=o.map(c=>xP(e,c.from).block);if(!_.every(c=>c))return null;let l=o.map((c,T)=>lq(e,_[T],c.from,c.to));if(t!=2&&!l.every(c=>c))return{changes:e.changes(o.map((c,T)=>l[T]?[]:[{from:c.from,insert:_[T].open+" "},{from:c.to,insert:" "+_[T].close}]))};if(t!=1&&l.some(c=>c)){let c=[];for(let T=0,E;T<l.length;T++)if(E=l[T]){let u=_[T],{open:d,close:O}=E;c.push({from:d.pos-u.open.length,to:d.pos+d.margin},{from:O.pos-O.margin,to:O.pos+u.close.length})}return{changes:c}}return null}function cq(t,e,o=e.selection.ranges){let _=[],l=-1;for(let{from:c,to:T}of o){let E=_.length,u=1e9,d=xP(e,c).line;if(d){for(let O=c;O<=T;){let h=e.doc.lineAt(O);if(h.from>l&&(c==T||T>h.from)){l=h.from;let I=/^\s*/.exec(h.text)[0].length,S=I==h.length,L=h.text.slice(I,I+d.length)==d?I:-1;I<h.text.length&&I<u&&(u=I),_.push({line:h,comment:L,token:d,indent:I,empty:S,single:!1})}O=h.to+1}if(u<1e9)for(let O=E;O<_.length;O++)_[O].indent<_[O].line.text.length&&(_[O].indent=u);_.length==E+1&&(_[E].single=!0)}}if(t!=2&&_.some(c=>c.comment<0&&(!c.empty||c.single))){let c=[];for(let{line:E,token:u,indent:d,empty:O,single:h}of _)(h||!O)&&c.push({from:E.from+d,insert:u+" "});let T=e.changes(c);return{changes:T,selection:e.selection.map(T,1)}}else if(t!=1&&_.some(c=>c.comment>=0)){let c=[];for(let{line:T,comment:E,token:u}of _)if(E>=0){let d=T.from+E,O=d+u.length;T.text[O-T.from]==" "&&O++,c.push({from:d,to:O})}return{changes:c}}return null}const Rb=ll.define(),Tq=ll.define(),Eq=Ft.define(),pV=Ft.define({combine(t){return O_(t,{minDepth:100,newGroupDelay:500,joinToEvent:(e,o)=>o},{minDepth:Math.max,newGroupDelay:Math.min,joinToEvent:(e,o)=>(_,l)=>e(_,l)||o(_,l)})}}),LV=Js.define({create(){return n_.empty},update(t,e){let o=e.state.facet(pV),_=e.annotation(Rb);if(_){let u=ji.fromTransaction(e,_.selection),d=_.side,O=d==0?t.undone:t.done;return u?O=dI(O,O.length,o.minDepth,u):O=CV(O,e.startState.selection),new n_(d==0?_.rest:O,d==0?O:_.rest)}let l=e.annotation(Tq);if((l=="full"||l=="before")&&(t=t.isolate()),e.annotation(Bs.addToHistory)===!1)return e.changes.empty?t:t.addMapping(e.changes.desc);let c=ji.fromTransaction(e),T=e.annotation(Bs.time),E=e.annotation(Bs.userEvent);return c?t=t.addChanges(c,T,E,o,e):e.selection&&(t=t.addSelection(e.startState.selection,T,E,o.newGroupDelay)),(l=="full"||l=="after")&&(t=t.isolate()),t},toJSON(t){return{done:t.done.map(e=>e.toJSON()),undone:t.undone.map(e=>e.toJSON())}},fromJSON(t){return new n_(t.done.map(ji.fromJSON),t.undone.map(ji.fromJSON))}});function uq(t={}){return[LV,pV.of(t),Gt.domEventHandlers({beforeinput(e,o){let _=e.inputType=="historyUndo"?fV:e.inputType=="historyRedo"?Ib:null;return _?(e.preventDefault(),_(o)):!1}})]}function hS(t,e){return function({state:o,dispatch:_}){if(!e&&o.readOnly)return!1;let l=o.field(LV,!1);if(!l)return!1;let c=l.pop(t,o,e);return c?(_(c),!0):!1}}const fV=hS(0,!1),Ib=hS(1,!1),gq=hS(0,!0),dq=hS(1,!0);class ji{constructor(e,o,_,l,c){this.changes=e,this.effects=o,this.mapped=_,this.startSelection=l,this.selectionsAfter=c}setSelAfter(e){return new ji(this.changes,this.effects,this.mapped,this.startSelection,e)}toJSON(){var e,o,_;return{changes:(e=this.changes)===null||e===void 0?void 0:e.toJSON(),mapped:(o=this.mapped)===null||o===void 0?void 0:o.toJSON(),startSelection:(_=this.startSelection)===null||_===void 0?void 0:_.toJSON(),selectionsAfter:this.selectionsAfter.map(l=>l.toJSON())}}static fromJSON(e){return new ji(e.changes&&Fs.fromJSON(e.changes),[],e.mapped&&a_.fromJSON(e.mapped),e.startSelection&&ct.fromJSON(e.startSelection),e.selectionsAfter.map(ct.fromJSON))}static fromTransaction(e,o){let _=Gn;for(let l of e.startState.facet(Eq)){let c=l(e);c.length&&(_=_.concat(c))}return!_.length&&e.changes.empty?null:new ji(e.changes.invert(e.startState.doc),_,void 0,o||e.startState.selection,Gn)}static selection(e){return new ji(void 0,Gn,void 0,void 0,e)}}function dI(t,e,o,_){let l=e+1>o+20?e-o-1:0,c=t.slice(l,e);return c.push(_),c}function Oq(t,e){let o=[],_=!1;return t.iterChangedRanges((l,c)=>o.push(l,c)),e.iterChangedRanges((l,c,T,E)=>{for(let u=0;u<o.length;){let d=o[u++],O=o[u++];E>=d&&T<=O&&(_=!0)}}),_}function hq(t,e){return t.ranges.length==e.ranges.length&&t.ranges.filter((o,_)=>o.empty!=e.ranges[_].empty).length===0}function mV(t,e){return t.length?e.length?t.concat(e):t:e}const Gn=[],Mq=200;function CV(t,e){if(t.length){let o=t[t.length-1],_=o.selectionsAfter.slice(Math.max(0,o.selectionsAfter.length-Mq));return _.length&&_[_.length-1].eq(e)?t:(_.push(e),dI(t,t.length-1,1e9,o.setSelAfter(_)))}else return[ji.selection([e])]}function Rq(t){let e=t[t.length-1],o=t.slice();return o[t.length-1]=e.setSelAfter(e.selectionsAfter.slice(0,e.selectionsAfter.length-1)),o}function AC(t,e){if(!t.length)return t;let o=t.length,_=Gn;for(;o;){let l=Iq(t[o-1],e,_);if(l.changes&&!l.changes.empty||l.effects.length){let c=t.slice(0,o);return c[o-1]=l,c}else e=l.mapped,o--,_=l.selectionsAfter}return _.length?[ji.selection(_)]:Gn}function Iq(t,e,o){let _=mV(t.selectionsAfter.length?t.selectionsAfter.map(E=>E.map(e)):Gn,o);if(!t.changes)return ji.selection(_);let l=t.changes.map(e),c=e.mapDesc(t.changes,!0),T=t.mapped?t.mapped.composeDesc(c):c;return new ji(l,uo.mapEffects(t.effects,e),T,t.startSelection.map(c),_)}const Sq=/^(input\.type|delete)($|\.)/;class n_{constructor(e,o,_=0,l=void 0){this.done=e,this.undone=o,this.prevTime=_,this.prevUserEvent=l}isolate(){return this.prevTime?new n_(this.done,this.undone):this}addChanges(e,o,_,l,c){let T=this.done,E=T[T.length-1];return E&&E.changes&&!E.changes.empty&&e.changes&&(!_||Sq.test(_))&&(!E.selectionsAfter.length&&o-this.prevTime<l.newGroupDelay&&l.joinToEvent(c,Oq(E.changes,e.changes))||_=="input.type.compose")?T=dI(T,T.length-1,l.minDepth,new ji(e.changes.compose(E.changes),mV(e.effects,E.effects),E.mapped,E.startSelection,Gn)):T=dI(T,T.length,l.minDepth,e),new n_(T,Gn,o,_)}addSelection(e,o,_,l){let c=this.done.length?this.done[this.done.length-1].selectionsAfter:Gn;return c.length>0&&o-this.prevTime<l&&_==this.prevUserEvent&&_&&/^select($|\.)/.test(_)&&hq(c[c.length-1],e)?this:new n_(CV(this.done,e),this.undone,o,_)}addMapping(e){return new n_(AC(this.done,e),AC(this.undone,e),this.prevTime,this.prevUserEvent)}pop(e,o,_){let l=e==0?this.done:this.undone;if(l.length==0)return null;let c=l[l.length-1],T=c.selectionsAfter[0]||o.selection;if(_&&c.selectionsAfter.length)return o.update({selection:c.selectionsAfter[c.selectionsAfter.length-1],annotations:Rb.of({side:e,rest:Rq(l),selection:T}),userEvent:e==0?"select.undo":"select.redo",scrollIntoView:!0});if(c.changes){let E=l.length==1?Gn:l.slice(0,l.length-1);return c.mapped&&(E=AC(E,c.mapped)),o.update({changes:c.changes,selection:c.startSelection,effects:c.effects,annotations:Rb.of({side:e,rest:E,selection:T}),filter:!1,userEvent:e==0?"undo":"redo",scrollIntoView:!0})}else return null}}n_.empty=new n_(Gn,Gn);const pq=[{key:"Mod-z",run:fV,preventDefault:!0},{key:"Mod-y",mac:"Mod-Shift-z",run:Ib,preventDefault:!0},{linux:"Ctrl-Shift-z",run:Ib,preventDefault:!0},{key:"Mod-u",run:gq,preventDefault:!0},{key:"Alt-u",mac:"Mod-Shift-u",run:dq,preventDefault:!0}];function Su(t,e){return ct.create(t.ranges.map(e),t.mainIndex)}function M_(t,e){return t.update({selection:e,scrollIntoView:!0,userEvent:"select"})}function pr({state:t,dispatch:e},o){let _=Su(t.selection,o);return _.eq(t.selection,!0)?!1:(e(M_(t,_)),!0)}function MS(t,e){return ct.cursor(e?t.to:t.from)}function AV(t,e){return pr(t,o=>o.empty?t.moveByChar(o,e):MS(o,e))}function Ii(t){return t.textDirectionAt(t.state.selection.main.head)==us.LTR}const bV=t=>AV(t,!Ii(t)),NV=t=>AV(t,Ii(t));function PV(t,e){return pr(t,o=>o.empty?t.moveByGroup(o,e):MS(o,e))}const Lq=t=>PV(t,!Ii(t)),fq=t=>PV(t,Ii(t));function mq(t,e,o){if(e.type.prop(o))return!0;let _=e.to-e.from;return _&&(_>2||/[^\s,.;:]/.test(t.sliceDoc(e.from,e.to)))||e.firstChild}function RS(t,e,o){let _=Qs(t).resolveInner(e.head),l=o?po.closedBy:po.openedBy;for(let u=e.head;;){let d=o?_.childAfter(u):_.childBefore(u);if(!d)break;mq(t,d,l)?_=d:u=o?d.to:d.from}let c=_.type.prop(l),T,E;return c&&(T=o?i_(t,_.from,1):i_(t,_.to,-1))&&T.matched?E=o?T.end.to:T.end.from:E=o?_.to:_.from,ct.cursor(E,o?-1:1)}const Cq=t=>pr(t,e=>RS(t.state,e,!Ii(t))),Aq=t=>pr(t,e=>RS(t.state,e,Ii(t)));function vV(t,e){return pr(t,o=>{if(!o.empty)return MS(o,e);let _=t.moveVertically(o,e);return _.head!=o.head?_:t.moveToLineBoundary(o,e)})}const DV=t=>vV(t,!1),UV=t=>vV(t,!0);function yV(t){let e=t.scrollDOM.clientHeight<t.scrollDOM.scrollHeight-2,o=0,_=0,l;if(e){for(let c of t.state.facet(Gt.scrollMargins)){let T=c(t);T!=null&&T.top&&(o=Math.max(T==null?void 0:T.top,o)),T!=null&&T.bottom&&(_=Math.max(T==null?void 0:T.bottom,_))}l=t.scrollDOM.clientHeight-o-_}else l=(t.dom.ownerDocument.defaultView||window).innerHeight;return{marginTop:o,marginBottom:_,selfScroll:e,height:Math.max(t.defaultLineHeight,l-5)}}function $V(t,e){let o=yV(t),{state:_}=t,l=Su(_.selection,T=>T.empty?t.moveVertically(T,e,o.height):MS(T,e));if(l.eq(_.selection))return!1;let c;if(o.selfScroll){let T=t.coordsAtPos(_.selection.main.head),E=t.scrollDOM.getBoundingClientRect(),u=E.top+o.marginTop,d=E.bottom-o.marginBottom;T&&T.top>u&&T.bottom<d&&(c=Gt.scrollIntoView(l.main.head,{y:"start",yMargin:T.top-u}))}return t.dispatch(M_(_,l),{effects:c}),!0}const dw=t=>$V(t,!1),Sb=t=>$V(t,!0);function Na(t,e,o){let _=t.lineBlockAt(e.head),l=t.moveToLineBoundary(e,o);if(l.head==e.head&&l.head!=(o?_.to:_.from)&&(l=t.moveToLineBoundary(e,o,!1)),!o&&l.head==_.from&&_.length){let c=/^\s*/.exec(t.state.sliceDoc(_.from,Math.min(_.from+100,_.to)))[0].length;c&&e.head!=_.from+c&&(l=ct.cursor(_.from+c))}return l}const bq=t=>pr(t,e=>Na(t,e,!0)),Nq=t=>pr(t,e=>Na(t,e,!1)),Pq=t=>pr(t,e=>Na(t,e,!Ii(t))),vq=t=>pr(t,e=>Na(t,e,Ii(t))),Dq=t=>pr(t,e=>ct.cursor(t.lineBlockAt(e.head).from,1)),Uq=t=>pr(t,e=>ct.cursor(t.lineBlockAt(e.head).to,-1));function yq(t,e,o){let _=!1,l=Su(t.selection,c=>{let T=i_(t,c.head,-1)||i_(t,c.head,1)||c.head>0&&i_(t,c.head-1,1)||c.head<t.doc.length&&i_(t,c.head+1,-1);if(!T||!T.end)return c;_=!0;let E=T.start.from==c.head?T.end.to:T.end.from;return o?ct.range(c.anchor,E):ct.cursor(E)});return _?(e(M_(t,l)),!0):!1}const $q=({state:t,dispatch:e})=>yq(t,e,!1);function qn(t,e){let o=Su(t.state.selection,_=>{let l=e(_);return ct.range(_.anchor,l.head,l.goalColumn,l.bidiLevel||void 0)});return o.eq(t.state.selection)?!1:(t.dispatch(M_(t.state,o)),!0)}function BV(t,e){return qn(t,o=>t.moveByChar(o,e))}const wV=t=>BV(t,!Ii(t)),GV=t=>BV(t,Ii(t));function kV(t,e){return qn(t,o=>t.moveByGroup(o,e))}const Bq=t=>kV(t,!Ii(t)),wq=t=>kV(t,Ii(t)),Gq=t=>qn(t,e=>RS(t.state,e,!Ii(t))),kq=t=>qn(t,e=>RS(t.state,e,Ii(t)));function HV(t,e){return qn(t,o=>t.moveVertically(o,e))}const xV=t=>HV(t,!1),FV=t=>HV(t,!0);function VV(t,e){return qn(t,o=>t.moveVertically(o,e,yV(t).height))}const Ow=t=>VV(t,!1),hw=t=>VV(t,!0),Hq=t=>qn(t,e=>Na(t,e,!0)),xq=t=>qn(t,e=>Na(t,e,!1)),Fq=t=>qn(t,e=>Na(t,e,!Ii(t))),Vq=t=>qn(t,e=>Na(t,e,Ii(t))),Wq=t=>qn(t,e=>ct.cursor(t.lineBlockAt(e.head).from)),Xq=t=>qn(t,e=>ct.cursor(t.lineBlockAt(e.head).to)),Mw=({state:t,dispatch:e})=>(e(M_(t,{anchor:0})),!0),Rw=({state:t,dispatch:e})=>(e(M_(t,{anchor:t.doc.length})),!0),Iw=({state:t,dispatch:e})=>(e(M_(t,{anchor:t.selection.main.anchor,head:0})),!0),Sw=({state:t,dispatch:e})=>(e(M_(t,{anchor:t.selection.main.anchor,head:t.doc.length})),!0),Yq=({state:t,dispatch:e})=>(e(t.update({selection:{anchor:0,head:t.doc.length},userEvent:"select"})),!0),Kq=({state:t,dispatch:e})=>{let o=IS(t).map(({from:_,to:l})=>ct.range(_,Math.min(l+1,t.doc.length)));return e(t.update({selection:ct.create(o),userEvent:"select"})),!0},zq=({state:t,dispatch:e})=>{let o=Su(t.selection,_=>{var l;let c=Qs(t).resolveStack(_.from,1);for(let T=c;T;T=T.next){let{node:E}=T;if((E.from<_.from&&E.to>=_.to||E.to>_.to&&E.from<=_.from)&&(!((l=E.parent)===null||l===void 0)&&l.parent))return ct.range(E.to,E.from)}return _});return e(M_(t,o)),!0},Zq=({state:t,dispatch:e})=>{let o=t.selection,_=null;return o.ranges.length>1?_=ct.create([o.main]):o.main.empty||(_=ct.create([ct.cursor(o.main.head)])),_?(e(M_(t,_)),!0):!1};function uO(t,e){if(t.state.readOnly)return!1;let o="delete.selection",{state:_}=t,l=_.changeByRange(c=>{let{from:T,to:E}=c;if(T==E){let u=e(c);u<T?(o="delete.backward",u=PM(t,u,!1)):u>T&&(o="delete.forward",u=PM(t,u,!0)),T=Math.min(T,u),E=Math.max(E,u)}else T=PM(t,T,!1),E=PM(t,E,!0);return T==E?{range:c}:{changes:{from:T,to:E},range:ct.cursor(T,T<c.head?-1:1)}});return l.changes.empty?!1:(t.dispatch(_.update(l,{scrollIntoView:!0,userEvent:o,effects:o=="delete.selection"?Gt.announce.of(_.phrase("Selection deleted")):void 0})),!0)}function PM(t,e,o){if(t instanceof Gt)for(let _ of t.state.facet(Gt.atomicRanges).map(l=>l(t)))_.between(e,e,(l,c)=>{l<e&&c>e&&(e=o?c:l)});return e}const WV=(t,e)=>uO(t,o=>{let _=o.from,{state:l}=t,c=l.doc.lineAt(_),T,E;if(!e&&_>c.from&&_<c.from+200&&!/[^ \t]/.test(T=c.text.slice(0,_-c.from))){if(T[T.length-1]==" ")return _-1;let u=Iu(T,l.tabSize),d=u%EI(l)||EI(l);for(let O=0;O<d&&T[T.length-1-O]==" ";O++)_--;E=_}else E=Ti(c.text,_-c.from,e,e)+c.from,E==_&&c.number!=(e?l.doc.lines:1)?E+=e?1:-1:!e&&/[\ufe00-\ufe0f]/.test(c.text.slice(E-c.from,_-c.from))&&(E=Ti(c.text,E-c.from,!1,!1)+c.from);return E}),pb=t=>WV(t,!1),XV=t=>WV(t,!0),YV=(t,e)=>uO(t,o=>{let _=o.head,{state:l}=t,c=l.doc.lineAt(_),T=l.charCategorizer(_);for(let E=null;;){if(_==(e?c.to:c.from)){_==o.head&&c.number!=(e?l.doc.lines:1)&&(_+=e?1:-1);break}let u=Ti(c.text,_-c.from,e)+c.from,d=c.text.slice(Math.min(_,u)-c.from,Math.max(_,u)-c.from),O=T(d);if(E!=null&&O!=E)break;(d!=" "||_!=o.head)&&(E=O),_=u}return _}),KV=t=>YV(t,!1),jq=t=>YV(t,!0),qq=t=>uO(t,e=>{let o=t.lineBlockAt(e.head).to;return e.head<o?o:Math.min(t.state.doc.length,e.head+1)}),Qq=t=>uO(t,e=>{let o=t.moveToLineBoundary(e,!1).head;return e.head>o?o:Math.max(0,e.head-1)}),Jq=t=>uO(t,e=>{let o=t.moveToLineBoundary(e,!0).head;return e.head<o?o:Math.min(t.state.doc.length,e.head+1)}),eQ=({state:t,dispatch:e})=>{if(t.readOnly)return!1;let o=t.changeByRange(_=>({changes:{from:_.from,to:_.to,insert:xo.of(["",""])},range:ct.cursor(_.from)}));return e(t.update(o,{scrollIntoView:!0,userEvent:"input"})),!0},tQ=({state:t,dispatch:e})=>{if(t.readOnly)return!1;let o=t.changeByRange(_=>{if(!_.empty||_.from==0||_.from==t.doc.length)return{range:_};let l=_.from,c=t.doc.lineAt(l),T=l==c.from?l-1:Ti(c.text,l-c.from,!1)+c.from,E=l==c.to?l+1:Ti(c.text,l-c.from,!0)+c.from;return{changes:{from:T,to:E,insert:t.doc.slice(l,E).append(t.doc.slice(T,l))},range:ct.cursor(E)}});return o.changes.empty?!1:(e(t.update(o,{scrollIntoView:!0,userEvent:"move.character"})),!0)};function IS(t){let e=[],o=-1;for(let _ of t.selection.ranges){let l=t.doc.lineAt(_.from),c=t.doc.lineAt(_.to);if(!_.empty&&_.to==c.from&&(c=t.doc.lineAt(_.to-1)),o>=l.number){let T=e[e.length-1];T.to=c.to,T.ranges.push(_)}else e.push({from:l.from,to:c.to,ranges:[_]});o=c.number+1}return e}function zV(t,e,o){if(t.readOnly)return!1;let _=[],l=[];for(let c of IS(t)){if(o?c.to==t.doc.length:c.from==0)continue;let T=t.doc.lineAt(o?c.to+1:c.from-1),E=T.length+1;if(o){_.push({from:c.to,to:T.to},{from:c.from,insert:T.text+t.lineBreak});for(let u of c.ranges)l.push(ct.range(Math.min(t.doc.length,u.anchor+E),Math.min(t.doc.length,u.head+E)))}else{_.push({from:T.from,to:c.from},{from:c.to,insert:t.lineBreak+T.text});for(let u of c.ranges)l.push(ct.range(u.anchor-E,u.head-E))}}return _.length?(e(t.update({changes:_,scrollIntoView:!0,selection:ct.create(l,t.selection.mainIndex),userEvent:"move.line"})),!0):!1}const oQ=({state:t,dispatch:e})=>zV(t,e,!1),sQ=({state:t,dispatch:e})=>zV(t,e,!0);function ZV(t,e,o){if(t.readOnly)return!1;let _=[];for(let l of IS(t))o?_.push({from:l.from,insert:t.doc.slice(l.from,l.to)+t.lineBreak}):_.push({from:l.to,insert:t.lineBreak+t.doc.slice(l.from,l.to)});return e(t.update({changes:_,scrollIntoView:!0,userEvent:"input.copyline"})),!0}const iQ=({state:t,dispatch:e})=>ZV(t,e,!1),nQ=({state:t,dispatch:e})=>ZV(t,e,!0),rQ=t=>{if(t.state.readOnly)return!1;let{state:e}=t,o=e.changes(IS(e).map(({from:l,to:c})=>(l>0?l--:c<e.doc.length&&c++,{from:l,to:c}))),_=Su(e.selection,l=>t.moveVertically(l,!0)).map(o);return t.dispatch({changes:o,selection:_,scrollIntoView:!0,userEvent:"delete.line"}),!0};function _Q(t,e){if(/\(\)|\[\]|\{\}/.test(t.sliceDoc(e-1,e+1)))return{from:e,to:e};let o=Qs(t).resolveInner(e),_=o.childBefore(e),l=o.childAfter(e),c;return _&&l&&_.to<=e&&l.from>=e&&(c=_.type.prop(po.closedBy))&&c.indexOf(l.name)>-1&&t.doc.lineAt(_.to).from==t.doc.lineAt(l.from).from&&!/\S/.test(t.sliceDoc(_.to,l.from))?{from:_.to,to:l.from}:null}const lQ=jV(!1),aQ=jV(!0);function jV(t){return({state:e,dispatch:o})=>{if(e.readOnly)return!1;let _=e.changeByRange(l=>{let{from:c,to:T}=l,E=e.doc.lineAt(c),u=!t&&c==T&&_Q(e,c);t&&(c=T=(T<=E.to?E:e.doc.lineAt(T)).to);let d=new gS(e,{simulateBreak:c,simulateDoubleBreak:!!u}),O=wP(d,c);for(O==null&&(O=Iu(/^\s*/.exec(e.doc.lineAt(c).text)[0],e.tabSize));T<E.to&&/\s/.test(E.text[T-E.from]);)T++;u?{from:c,to:T}=u:c>E.from&&c<E.from+100&&!/\S/.test(E.text.slice(0,c))&&(c=E.from);let h=["",Cd(e,O)];return u&&h.push(Cd(e,d.lineIndent(E.from,-1))),{changes:{from:c,to:T,insert:xo.of(h)},range:ct.cursor(c+1+h[1].length)}});return o(e.update(_,{scrollIntoView:!0,userEvent:"input"})),!0}}function FP(t,e){let o=-1;return t.changeByRange(_=>{let l=[];for(let T=_.from;T<=_.to;){let E=t.doc.lineAt(T);E.number>o&&(_.empty||_.to>E.from)&&(e(E,l,_),o=E.number),T=E.to+1}let c=t.changes(l);return{changes:l,range:ct.range(c.mapPos(_.anchor,1),c.mapPos(_.head,1))}})}const cQ=({state:t,dispatch:e})=>{if(t.readOnly)return!1;let o=Object.create(null),_=new gS(t,{overrideIndentation:c=>{let T=o[c];return T??-1}}),l=FP(t,(c,T,E)=>{let u=wP(_,c.from);if(u==null)return;/\S/.test(c.text)||(u=0);let d=/^\s*/.exec(c.text)[0],O=Cd(t,u);(d!=O||E.from<c.from+d.length)&&(o[c.from]=u,T.push({from:c.from,to:c.from+d.length,insert:O}))});return l.changes.empty||e(t.update(l,{userEvent:"indent"})),!0},qV=({state:t,dispatch:e})=>t.readOnly?!1:(e(t.update(FP(t,(o,_)=>{_.push({from:o.from,insert:t.facet(TO)})}),{userEvent:"input.indent"})),!0),QV=({state:t,dispatch:e})=>t.readOnly?!1:(e(t.update(FP(t,(o,_)=>{let l=/^\s*/.exec(o.text)[0];if(!l)return;let c=Iu(l,t.tabSize),T=0,E=Cd(t,Math.max(0,c-EI(t)));for(;T<l.length&&T<E.length&&l.charCodeAt(T)==E.charCodeAt(T);)T++;_.push({from:o.from+T,to:o.from+l.length,insert:E.slice(T)})}),{userEvent:"delete.dedent"})),!0),TQ=[{key:"Ctrl-b",run:bV,shift:wV,preventDefault:!0},{key:"Ctrl-f",run:NV,shift:GV},{key:"Ctrl-p",run:DV,shift:xV},{key:"Ctrl-n",run:UV,shift:FV},{key:"Ctrl-a",run:Dq,shift:Wq},{key:"Ctrl-e",run:Uq,shift:Xq},{key:"Ctrl-d",run:XV},{key:"Ctrl-h",run:pb},{key:"Ctrl-k",run:qq},{key:"Ctrl-Alt-h",run:KV},{key:"Ctrl-o",run:eQ},{key:"Ctrl-t",run:tQ},{key:"Ctrl-v",run:Sb}],EQ=[{key:"ArrowLeft",run:bV,shift:wV,preventDefault:!0},{key:"Mod-ArrowLeft",mac:"Alt-ArrowLeft",run:Lq,shift:Bq,preventDefault:!0},{mac:"Cmd-ArrowLeft",run:Pq,shift:Fq,preventDefault:!0},{key:"ArrowRight",run:NV,shift:GV,preventDefault:!0},{key:"Mod-ArrowRight",mac:"Alt-ArrowRight",run:fq,shift:wq,preventDefault:!0},{mac:"Cmd-ArrowRight",run:vq,shift:Vq,preventDefault:!0},{key:"ArrowUp",run:DV,shift:xV,preventDefault:!0},{mac:"Cmd-ArrowUp",run:Mw,shift:Iw},{mac:"Ctrl-ArrowUp",run:dw,shift:Ow},{key:"ArrowDown",run:UV,shift:FV,preventDefault:!0},{mac:"Cmd-ArrowDown",run:Rw,shift:Sw},{mac:"Ctrl-ArrowDown",run:Sb,shift:hw},{key:"PageUp",run:dw,shift:Ow},{key:"PageDown",run:Sb,shift:hw},{key:"Home",run:Nq,shift:xq,preventDefault:!0},{key:"Mod-Home",run:Mw,shift:Iw},{key:"End",run:bq,shift:Hq,preventDefault:!0},{key:"Mod-End",run:Rw,shift:Sw},{key:"Enter",run:lQ},{key:"Mod-a",run:Yq},{key:"Backspace",run:pb,shift:pb},{key:"Delete",run:XV},{key:"Mod-Backspace",mac:"Alt-Backspace",run:KV},{key:"Mod-Delete",mac:"Alt-Delete",run:jq},{mac:"Mod-Backspace",run:Qq},{mac:"Mod-Delete",run:Jq}].concat(TQ.map(t=>({mac:t.key,run:t.run,shift:t.shift}))),uQ=[{key:"Alt-ArrowLeft",mac:"Ctrl-ArrowLeft",run:Cq,shift:Gq},{key:"Alt-ArrowRight",mac:"Ctrl-ArrowRight",run:Aq,shift:kq},{key:"Alt-ArrowUp",run:oQ},{key:"Shift-Alt-ArrowUp",run:iQ},{key:"Alt-ArrowDown",run:sQ},{key:"Shift-Alt-ArrowDown",run:nQ},{key:"Escape",run:Zq},{key:"Mod-Enter",run:aQ},{key:"Alt-l",mac:"Ctrl-l",run:Kq},{key:"Mod-i",run:zq,preventDefault:!0},{key:"Mod-[",run:QV},{key:"Mod-]",run:qV},{key:"Mod-Alt-\\",run:cQ},{key:"Shift-Mod-k",run:rQ},{key:"Shift-Mod-\\",run:$q},{key:"Mod-/",run:iq},{key:"Alt-A",run:rq}].concat(EQ),gQ={key:"Tab",run:qV,shift:QV};function _s(){var t=arguments[0];typeof t=="string"&&(t=document.createElement(t));var e=1,o=arguments[1];if(o&&typeof o=="object"&&o.nodeType==null&&!Array.isArray(o)){for(var _ in o)if(Object.prototype.hasOwnProperty.call(o,_)){var l=o[_];typeof l=="string"?t.setAttribute(_,l):l!=null&&(t[_]=l)}e++}for(;e<arguments.length;e++)JV(t,arguments[e]);return t}function JV(t,e){if(typeof e=="string")t.appendChild(document.createTextNode(e));else if(e!=null)if(e.nodeType!=null)t.appendChild(e);else if(Array.isArray(e))for(var o=0;o<e.length;o++)JV(t,e[o]);else throw new RangeError("Unsupported child node: "+e)}const pw=typeof String.prototype.normalize=="function"?t=>t.normalize("NFKD"):t=>t;class ZE{constructor(e,o,_=0,l=e.length,c,T){this.test=T,this.value={from:0,to:0},this.done=!1,this.matches=[],this.buffer="",this.bufferPos=0,this.iter=e.iterRange(_,l),this.bufferStart=_,this.normalize=c?E=>c(pw(E)):pw,this.query=this.normalize(o)}peek(){if(this.bufferPos==this.buffer.length){if(this.bufferStart+=this.buffer.length,this.iter.next(),this.iter.done)return-1;this.bufferPos=0,this.buffer=this.iter.value}return ri(this.buffer,this.bufferPos)}next(){for(;this.matches.length;)this.matches.pop();return this.nextOverlapping()}nextOverlapping(){for(;;){let e=this.peek();if(e<0)return this.done=!0,this;let o=SP(e),_=this.bufferStart+this.bufferPos;this.bufferPos+=$n(e);let l=this.normalize(o);for(let c=0,T=_;;c++){let E=l.charCodeAt(c),u=this.match(E,T);if(c==l.length-1){if(u)return this.value=u,this;break}T==_&&c<o.length&&o.charCodeAt(c)==E&&T++}}}match(e,o){let _=null;for(let l=0;l<this.matches.length;l+=2){let c=this.matches[l],T=!1;this.query.charCodeAt(c)==e&&(c==this.query.length-1?_={from:this.matches[l+1],to:o+1}:(this.matches[l]++,T=!0)),T||(this.matches.splice(l,2),l-=2)}return this.query.charCodeAt(0)==e&&(this.query.length==1?_={from:o,to:o+1}:this.matches.push(1,o)),_&&this.test&&!this.test(_.from,_.to,this.buffer,this.bufferStart)&&(_=null),_}}typeof Symbol<"u"&&(ZE.prototype[Symbol.iterator]=function(){return this});const eW={from:-1,to:-1,match:/.*/.exec("")},VP="gm"+(/x/.unicode==null?"":"u");class tW{constructor(e,o,_,l=0,c=e.length){if(this.text=e,this.to=c,this.curLine="",this.done=!1,this.value=eW,/\\[sWDnr]|\n|\r|\[\^/.test(o))return new oW(e,o,_,l,c);this.re=new RegExp(o,VP+(_!=null&&_.ignoreCase?"i":"")),this.test=_==null?void 0:_.test,this.iter=e.iter();let T=e.lineAt(l);this.curLineStart=T.from,this.matchPos=OI(e,l),this.getLine(this.curLineStart)}getLine(e){this.iter.next(e),this.iter.lineBreak?this.curLine="":(this.curLine=this.iter.value,this.curLineStart+this.curLine.length>this.to&&(this.curLine=this.curLine.slice(0,this.to-this.curLineStart)),this.iter.next())}nextLine(){this.curLineStart=this.curLineStart+this.curLine.length+1,this.curLineStart>this.to?this.curLine="":this.getLine(0)}next(){for(let e=this.matchPos-this.curLineStart;;){this.re.lastIndex=e;let o=this.matchPos<=this.to&&this.re.exec(this.curLine);if(o){let _=this.curLineStart+o.index,l=_+o[0].length;if(this.matchPos=OI(this.text,l+(_==l?1:0)),_==this.curLineStart+this.curLine.length&&this.nextLine(),(_<l||_>this.value.to)&&(!this.test||this.test(_,l,o)))return this.value={from:_,to:l,match:o},this;e=this.matchPos-this.curLineStart}else if(this.curLineStart+this.curLine.length<this.to)this.nextLine(),e=0;else return this.done=!0,this}}}const bC=new WeakMap;class DE{constructor(e,o){this.from=e,this.text=o}get to(){return this.from+this.text.length}static get(e,o,_){let l=bC.get(e);if(!l||l.from>=_||l.to<=o){let E=new DE(o,e.sliceString(o,_));return bC.set(e,E),E}if(l.from==o&&l.to==_)return l;let{text:c,from:T}=l;return T>o&&(c=e.sliceString(o,T)+c,T=o),l.to<_&&(c+=e.sliceString(l.to,_)),bC.set(e,new DE(T,c)),new DE(o,c.slice(o-T,_-T))}}class oW{constructor(e,o,_,l,c){this.text=e,this.to=c,this.done=!1,this.value=eW,this.matchPos=OI(e,l),this.re=new RegExp(o,VP+(_!=null&&_.ignoreCase?"i":"")),this.test=_==null?void 0:_.test,this.flat=DE.get(e,l,this.chunkEnd(l+5e3))}chunkEnd(e){return e>=this.to?this.to:this.text.lineAt(e).to}next(){for(;;){let e=this.re.lastIndex=this.matchPos-this.flat.from,o=this.re.exec(this.flat.text);if(o&&!o[0]&&o.index==e&&(this.re.lastIndex=e+1,o=this.re.exec(this.flat.text)),o){let _=this.flat.from+o.index,l=_+o[0].length;if((this.flat.to>=this.to||o.index+o[0].length<=this.flat.text.length-10)&&(!this.test||this.test(_,l,o)))return this.value={from:_,to:l,match:o},this.matchPos=OI(this.text,l+(_==l?1:0)),this}if(this.flat.to==this.to)return this.done=!0,this;this.flat=DE.get(this.text,this.flat.from,this.chunkEnd(this.flat.from+this.flat.text.length*2))}}}typeof Symbol<"u"&&(tW.prototype[Symbol.iterator]=oW.prototype[Symbol.iterator]=function(){return this});function dQ(t){try{return new RegExp(t,VP),!0}catch{return!1}}function OI(t,e){if(e>=t.length)return e;let o=t.lineAt(e),_;for(;e<o.to&&(_=o.text.charCodeAt(e-o.from))>=56320&&_<57344;)e++;return e}function Lb(t){let e=String(t.state.doc.lineAt(t.state.selection.main.head).number),o=_s("input",{class:"cm-textfield",name:"line",value:e}),_=_s("form",{class:"cm-gotoLine",onkeydown:c=>{c.keyCode==27?(c.preventDefault(),t.dispatch({effects:hI.of(!1)}),t.focus()):c.keyCode==13&&(c.preventDefault(),l())},onsubmit:c=>{c.preventDefault(),l()}},_s("label",t.state.phrase("Go to line"),": ",o)," ",_s("button",{class:"cm-button",type:"submit"},t.state.phrase("go")));function l(){let c=/^([+-])?(\d+)?(:\d+)?(%)?$/.exec(o.value);if(!c)return;let{state:T}=t,E=T.doc.lineAt(T.selection.main.head),[,u,d,O,h]=c,I=O?+O.slice(1):0,S=d?+d:E.number;if(d&&h){let C=S/100;u&&(C=C*(u=="-"?-1:1)+E.number/T.doc.lines),S=Math.round(T.doc.lines*C)}else d&&u&&(S=S*(u=="-"?-1:1)+E.number);let L=T.doc.line(Math.max(1,Math.min(T.doc.lines,S))),p=ct.cursor(L.from+Math.max(0,Math.min(I,L.length)));t.dispatch({effects:[hI.of(!1),Gt.scrollIntoView(p.from,{y:"center"})],selection:p}),t.focus()}return{dom:_}}const hI=uo.define(),Lw=Js.define({create(){return!0},update(t,e){for(let o of e.effects)o.is(hI)&&(t=o.value);return t},provide:t=>fd.from(t,e=>e?Lb:null)}),OQ=t=>{let e=Ld(t,Lb);if(!e){let o=[hI.of(!0)];t.state.field(Lw,!1)==null&&o.push(uo.appendConfig.of([Lw,hQ])),t.dispatch({effects:o}),e=Ld(t,Lb)}return e&&e.dom.querySelector("input").select(),!0},hQ=Gt.baseTheme({".cm-panel.cm-gotoLine":{padding:"2px 6px 4px","& label":{fontSize:"80%"}}}),MQ={highlightWordAroundCursor:!1,minSelectionLength:1,maxMatches:100,wholeWords:!1},sW=Ft.define({combine(t){return O_(t,MQ,{highlightWordAroundCursor:(e,o)=>e||o,minSelectionLength:Math.min,maxMatches:Math.min})}});function RQ(t){let e=[fQ,LQ];return t&&e.push(sW.of(t)),e}const IQ=eo.mark({class:"cm-selectionMatch"}),SQ=eo.mark({class:"cm-selectionMatch cm-selectionMatch-main"});function fw(t,e,o,_){return(o==0||t(e.sliceDoc(o-1,o))!=Os.Word)&&(_==e.doc.length||t(e.sliceDoc(_,_+1))!=Os.Word)}function pQ(t,e,o,_){return t(e.sliceDoc(o,o+1))==Os.Word&&t(e.sliceDoc(_-1,_))==Os.Word}const LQ=Ps.fromClass(class{constructor(t){this.decorations=this.getDeco(t)}update(t){(t.selectionSet||t.docChanged||t.viewportChanged)&&(this.decorations=this.getDeco(t.view))}getDeco(t){let e=t.state.facet(sW),{state:o}=t,_=o.selection;if(_.ranges.length>1)return eo.none;let l=_.main,c,T=null;if(l.empty){if(!e.highlightWordAroundCursor)return eo.none;let u=o.wordAt(l.head);if(!u)return eo.none;T=o.charCategorizer(l.head),c=o.sliceDoc(u.from,u.to)}else{let u=l.to-l.from;if(u<e.minSelectionLength||u>200)return eo.none;if(e.wholeWords){if(c=o.sliceDoc(l.from,l.to),T=o.charCategorizer(l.head),!(fw(T,o,l.from,l.to)&&pQ(T,o,l.from,l.to)))return eo.none}else if(c=o.sliceDoc(l.from,l.to).trim(),!c)return eo.none}let E=[];for(let u of t.visibleRanges){let d=new ZE(o.doc,c,u.from,u.to);for(;!d.next().done;){let{from:O,to:h}=d.value;if((!T||fw(T,o,O,h))&&(l.empty&&O<=l.from&&h>=l.to?E.push(SQ.range(O,h)):(O>=l.to||h<=l.from)&&E.push(IQ.range(O,h)),E.length>e.maxMatches))return eo.none}}return eo.set(E)}},{decorations:t=>t.decorations}),fQ=Gt.baseTheme({".cm-selectionMatch":{backgroundColor:"#99ff7780"},".cm-searchMatch .cm-selectionMatch":{backgroundColor:"transparent"}}),mQ=({state:t,dispatch:e})=>{let{selection:o}=t,_=ct.create(o.ranges.map(l=>t.wordAt(l.head)||ct.cursor(l.head)),o.mainIndex);return _.eq(o)?!1:(e(t.update({selection:_})),!0)};function CQ(t,e){let{main:o,ranges:_}=t.selection,l=t.wordAt(o.head),c=l&&l.from==o.from&&l.to==o.to;for(let T=!1,E=new ZE(t.doc,e,_[_.length-1].to);;)if(E.next(),E.done){if(T)return null;E=new ZE(t.doc,e,0,Math.max(0,_[_.length-1].from-1)),T=!0}else{if(T&&_.some(u=>u.from==E.value.from))continue;if(c){let u=t.wordAt(E.value.from);if(!u||u.from!=E.value.from||u.to!=E.value.to)continue}return E.value}}const AQ=({state:t,dispatch:e})=>{let{ranges:o}=t.selection;if(o.some(c=>c.from===c.to))return mQ({state:t,dispatch:e});let _=t.sliceDoc(o[0].from,o[0].to);if(t.selection.ranges.some(c=>t.sliceDoc(c.from,c.to)!=_))return!1;let l=CQ(t,_);return l?(e(t.update({selection:t.selection.addRange(ct.range(l.from,l.to),!1),effects:Gt.scrollIntoView(l.to)})),!0):!1},pu=Ft.define({combine(t){return O_(t,{top:!1,caseSensitive:!1,literal:!1,regexp:!1,wholeWord:!1,createPanel:e=>new kQ(e),scrollToMatch:e=>Gt.scrollIntoView(e)})}});class iW{constructor(e){this.search=e.search,this.caseSensitive=!!e.caseSensitive,this.literal=!!e.literal,this.regexp=!!e.regexp,this.replace=e.replace||"",this.valid=!!this.search&&(!this.regexp||dQ(this.search)),this.unquoted=this.unquote(this.search),this.wholeWord=!!e.wholeWord}unquote(e){return this.literal?e:e.replace(/\\([nrt\\])/g,(o,_)=>_=="n"?`
- `:_=="r"?"\r":_=="t"?" ":"\\")}eq(e){return this.search==e.search&&this.replace==e.replace&&this.caseSensitive==e.caseSensitive&&this.regexp==e.regexp&&this.wholeWord==e.wholeWord}create(){return this.regexp?new vQ(this):new NQ(this)}getCursor(e,o=0,_){let l=e.doc?e:fo.create({doc:e});return _==null&&(_=l.doc.length),this.regexp?TE(this,l,o,_):cE(this,l,o,_)}}class nW{constructor(e){this.spec=e}}function cE(t,e,o,_){return new ZE(e.doc,t.unquoted,o,_,t.caseSensitive?void 0:l=>l.toLowerCase(),t.wholeWord?bQ(e.doc,e.charCategorizer(e.selection.main.head)):void 0)}function bQ(t,e){return(o,_,l,c)=>((c>o||c+l.length<_)&&(c=Math.max(0,o-2),l=t.sliceString(c,Math.min(t.length,_+2))),(e(MI(l,o-c))!=Os.Word||e(RI(l,o-c))!=Os.Word)&&(e(RI(l,_-c))!=Os.Word||e(MI(l,_-c))!=Os.Word))}class NQ extends nW{constructor(e){super(e)}nextMatch(e,o,_){let l=cE(this.spec,e,_,e.doc.length).nextOverlapping();return l.done&&(l=cE(this.spec,e,0,o).nextOverlapping()),l.done?null:l.value}prevMatchInRange(e,o,_){for(let l=_;;){let c=Math.max(o,l-1e4-this.spec.unquoted.length),T=cE(this.spec,e,c,l),E=null;for(;!T.nextOverlapping().done;)E=T.value;if(E)return E;if(c==o)return null;l-=1e4}}prevMatch(e,o,_){return this.prevMatchInRange(e,0,o)||this.prevMatchInRange(e,_,e.doc.length)}getReplacement(e){return this.spec.unquote(this.spec.replace)}matchAll(e,o){let _=cE(this.spec,e,0,e.doc.length),l=[];for(;!_.next().done;){if(l.length>=o)return null;l.push(_.value)}return l}highlight(e,o,_,l){let c=cE(this.spec,e,Math.max(0,o-this.spec.unquoted.length),Math.min(_+this.spec.unquoted.length,e.doc.length));for(;!c.next().done;)l(c.value.from,c.value.to)}}function TE(t,e,o,_){return new tW(e.doc,t.search,{ignoreCase:!t.caseSensitive,test:t.wholeWord?PQ(e.charCategorizer(e.selection.main.head)):void 0},o,_)}function MI(t,e){return t.slice(Ti(t,e,!1),e)}function RI(t,e){return t.slice(e,Ti(t,e))}function PQ(t){return(e,o,_)=>!_[0].length||(t(MI(_.input,_.index))!=Os.Word||t(RI(_.input,_.index))!=Os.Word)&&(t(RI(_.input,_.index+_[0].length))!=Os.Word||t(MI(_.input,_.index+_[0].length))!=Os.Word)}class vQ extends nW{nextMatch(e,o,_){let l=TE(this.spec,e,_,e.doc.length).next();return l.done&&(l=TE(this.spec,e,0,o).next()),l.done?null:l.value}prevMatchInRange(e,o,_){for(let l=1;;l++){let c=Math.max(o,_-l*1e4),T=TE(this.spec,e,c,_),E=null;for(;!T.next().done;)E=T.value;if(E&&(c==o||E.from>c+10))return E;if(c==o)return null}}prevMatch(e,o,_){return this.prevMatchInRange(e,0,o)||this.prevMatchInRange(e,_,e.doc.length)}getReplacement(e){return this.spec.unquote(this.spec.replace).replace(/\$([$&\d+])/g,(o,_)=>_=="$"?"$":_=="&"?e.match[0]:_!="0"&&+_<e.match.length?e.match[_]:o)}matchAll(e,o){let _=TE(this.spec,e,0,e.doc.length),l=[];for(;!_.next().done;){if(l.length>=o)return null;l.push(_.value)}return l}highlight(e,o,_,l){let c=TE(this.spec,e,Math.max(0,o-250),Math.min(_+250,e.doc.length));for(;!c.next().done;)l(c.value.from,c.value.to)}}const Ad=uo.define(),WP=uo.define(),aa=Js.define({create(t){return new NC(fb(t).create(),null)},update(t,e){for(let o of e.effects)o.is(Ad)?t=new NC(o.value.create(),t.panel):o.is(WP)&&(t=new NC(t.query,o.value?XP:null));return t},provide:t=>fd.from(t,e=>e.panel)});class NC{constructor(e,o){this.query=e,this.panel=o}}const DQ=eo.mark({class:"cm-searchMatch"}),UQ=eo.mark({class:"cm-searchMatch cm-searchMatch-selected"}),yQ=Ps.fromClass(class{constructor(t){this.view=t,this.decorations=this.highlight(t.state.field(aa))}update(t){let e=t.state.field(aa);(e!=t.startState.field(aa)||t.docChanged||t.selectionSet||t.viewportChanged)&&(this.decorations=this.highlight(e))}highlight({query:t,panel:e}){if(!e||!t.spec.valid)return eo.none;let{view:o}=this,_=new Oa;for(let l=0,c=o.visibleRanges,T=c.length;l<T;l++){let{from:E,to:u}=c[l];for(;l<T-1&&u>c[l+1].from-2*250;)u=c[++l].to;t.highlight(o.state,E,u,(d,O)=>{let h=o.state.selection.ranges.some(I=>I.from==d&&I.to==O);_.add(d,O,h?UQ:DQ)})}return _.finish()}},{decorations:t=>t.decorations});function gO(t){return e=>{let o=e.state.field(aa,!1);return o&&o.query.spec.valid?t(e,o):lW(e)}}const II=gO((t,{query:e})=>{let{to:o}=t.state.selection.main,_=e.nextMatch(t.state,o,o);if(!_)return!1;let l=ct.single(_.from,_.to),c=t.state.facet(pu);return t.dispatch({selection:l,effects:[YP(t,_),c.scrollToMatch(l.main,t)],userEvent:"select.search"}),_W(t),!0}),SI=gO((t,{query:e})=>{let{state:o}=t,{from:_}=o.selection.main,l=e.prevMatch(o,_,_);if(!l)return!1;let c=ct.single(l.from,l.to),T=t.state.facet(pu);return t.dispatch({selection:c,effects:[YP(t,l),T.scrollToMatch(c.main,t)],userEvent:"select.search"}),_W(t),!0}),$Q=gO((t,{query:e})=>{let o=e.matchAll(t.state,1e3);return!o||!o.length?!1:(t.dispatch({selection:ct.create(o.map(_=>ct.range(_.from,_.to))),userEvent:"select.search.matches"}),!0)}),BQ=({state:t,dispatch:e})=>{let o=t.selection;if(o.ranges.length>1||o.main.empty)return!1;let{from:_,to:l}=o.main,c=[],T=0;for(let E=new ZE(t.doc,t.sliceDoc(_,l));!E.next().done;){if(c.length>1e3)return!1;E.value.from==_&&(T=c.length),c.push(ct.range(E.value.from,E.value.to))}return e(t.update({selection:ct.create(c,T),userEvent:"select.search.matches"})),!0},mw=gO((t,{query:e})=>{let{state:o}=t,{from:_,to:l}=o.selection.main;if(o.readOnly)return!1;let c=e.nextMatch(o,_,_);if(!c)return!1;let T=[],E,u,d=[];if(c.from==_&&c.to==l&&(u=o.toText(e.getReplacement(c)),T.push({from:c.from,to:c.to,insert:u}),c=e.nextMatch(o,c.from,c.to),d.push(Gt.announce.of(o.phrase("replaced match on line $",o.doc.lineAt(_).number)+"."))),c){let O=T.length==0||T[0].from>=c.to?0:c.to-c.from-u.length;E=ct.single(c.from-O,c.to-O),d.push(YP(t,c)),d.push(o.facet(pu).scrollToMatch(E.main,t))}return t.dispatch({changes:T,selection:E,effects:d,userEvent:"input.replace"}),!0}),wQ=gO((t,{query:e})=>{if(t.state.readOnly)return!1;let o=e.matchAll(t.state,1e9).map(l=>{let{from:c,to:T}=l;return{from:c,to:T,insert:e.getReplacement(l)}});if(!o.length)return!1;let _=t.state.phrase("replaced $ matches",o.length)+".";return t.dispatch({changes:o,effects:Gt.announce.of(_),userEvent:"input.replace.all"}),!0});function XP(t){return t.state.facet(pu).createPanel(t)}function fb(t,e){var o,_,l,c,T;let E=t.selection.main,u=E.empty||E.to>E.from+100?"":t.sliceDoc(E.from,E.to);if(e&&!u)return e;let d=t.facet(pu);return new iW({search:((o=e==null?void 0:e.literal)!==null&&o!==void 0?o:d.literal)?u:u.replace(/\n/g,"\\n"),caseSensitive:(_=e==null?void 0:e.caseSensitive)!==null&&_!==void 0?_:d.caseSensitive,literal:(l=e==null?void 0:e.literal)!==null&&l!==void 0?l:d.literal,regexp:(c=e==null?void 0:e.regexp)!==null&&c!==void 0?c:d.regexp,wholeWord:(T=e==null?void 0:e.wholeWord)!==null&&T!==void 0?T:d.wholeWord})}function rW(t){let e=Ld(t,XP);return e&&e.dom.querySelector("[main-field]")}function _W(t){let e=rW(t);e&&e==t.root.activeElement&&e.select()}const lW=t=>{let e=t.state.field(aa,!1);if(e&&e.panel){let o=rW(t);if(o&&o!=t.root.activeElement){let _=fb(t.state,e.query.spec);_.valid&&t.dispatch({effects:Ad.of(_)}),o.focus(),o.select()}}else t.dispatch({effects:[WP.of(!0),e?Ad.of(fb(t.state,e.query.spec)):uo.appendConfig.of(xQ)]});return!0},aW=t=>{let e=t.state.field(aa,!1);if(!e||!e.panel)return!1;let o=Ld(t,XP);return o&&o.dom.contains(t.root.activeElement)&&t.focus(),t.dispatch({effects:WP.of(!1)}),!0},GQ=[{key:"Mod-f",run:lW,scope:"editor search-panel"},{key:"F3",run:II,shift:SI,scope:"editor search-panel",preventDefault:!0},{key:"Mod-g",run:II,shift:SI,scope:"editor search-panel",preventDefault:!0},{key:"Escape",run:aW,scope:"editor search-panel"},{key:"Mod-Shift-l",run:BQ},{key:"Mod-Alt-g",run:OQ},{key:"Mod-d",run:AQ,preventDefault:!0}];class kQ{constructor(e){this.view=e;let o=this.query=e.state.field(aa).query.spec;this.commit=this.commit.bind(this),this.searchField=_s("input",{value:o.search,placeholder:On(e,"Find"),"aria-label":On(e,"Find"),class:"cm-textfield",name:"search",form:"","main-field":"true",onchange:this.commit,onkeyup:this.commit}),this.replaceField=_s("input",{value:o.replace,placeholder:On(e,"Replace"),"aria-label":On(e,"Replace"),class:"cm-textfield",name:"replace",form:"",onchange:this.commit,onkeyup:this.commit}),this.caseField=_s("input",{type:"checkbox",name:"case",form:"",checked:o.caseSensitive,onchange:this.commit}),this.reField=_s("input",{type:"checkbox",name:"re",form:"",checked:o.regexp,onchange:this.commit}),this.wordField=_s("input",{type:"checkbox",name:"word",form:"",checked:o.wholeWord,onchange:this.commit});function _(l,c,T){return _s("button",{class:"cm-button",name:l,onclick:c,type:"button"},T)}this.dom=_s("div",{onkeydown:l=>this.keydown(l),class:"cm-search"},[this.searchField,_("next",()=>II(e),[On(e,"next")]),_("prev",()=>SI(e),[On(e,"previous")]),_("select",()=>$Q(e),[On(e,"all")]),_s("label",null,[this.caseField,On(e,"match case")]),_s("label",null,[this.reField,On(e,"regexp")]),_s("label",null,[this.wordField,On(e,"by word")]),...e.state.readOnly?[]:[_s("br"),this.replaceField,_("replace",()=>mw(e),[On(e,"replace")]),_("replaceAll",()=>wQ(e),[On(e,"replace all")])],_s("button",{name:"close",onclick:()=>aW(e),"aria-label":On(e,"close"),type:"button"},["×"])])}commit(){let e=new iW({search:this.searchField.value,caseSensitive:this.caseField.checked,regexp:this.reField.checked,wholeWord:this.wordField.checked,replace:this.replaceField.value});e.eq(this.query)||(this.query=e,this.view.dispatch({effects:Ad.of(e)}))}keydown(e){ZZ(this.view,e,"search-panel")?e.preventDefault():e.keyCode==13&&e.target==this.searchField?(e.preventDefault(),(e.shiftKey?SI:II)(this.view)):e.keyCode==13&&e.target==this.replaceField&&(e.preventDefault(),mw(this.view))}update(e){for(let o of e.transactions)for(let _ of o.effects)_.is(Ad)&&!_.value.eq(this.query)&&this.setQuery(_.value)}setQuery(e){this.query=e,this.searchField.value=e.search,this.replaceField.value=e.replace,this.caseField.checked=e.caseSensitive,this.reField.checked=e.regexp,this.wordField.checked=e.wholeWord}mount(){this.searchField.select()}get pos(){return 80}get top(){return this.view.state.facet(pu).top}}function On(t,e){return t.state.phrase(e)}const vM=30,DM=/[\s\.,:;?!]/;function YP(t,{from:e,to:o}){let _=t.state.doc.lineAt(e),l=t.state.doc.lineAt(o).to,c=Math.max(_.from,e-vM),T=Math.min(l,o+vM),E=t.state.sliceDoc(c,T);if(c!=_.from){for(let u=0;u<vM;u++)if(!DM.test(E[u+1])&&DM.test(E[u])){E=E.slice(u);break}}if(T!=l){for(let u=E.length-1;u>E.length-vM;u--)if(!DM.test(E[u-1])&&DM.test(E[u])){E=E.slice(0,u);break}}return Gt.announce.of(`${t.state.phrase("current match")}. ${E} ${t.state.phrase("on line")} ${_.number}.`)}const HQ=Gt.baseTheme({".cm-panel.cm-search":{padding:"2px 6px 4px",position:"relative","& [name=close]":{position:"absolute",top:"0",right:"4px",backgroundColor:"inherit",border:"none",font:"inherit",padding:0,margin:0},"& input, & button, & label":{margin:".2em .6em .2em 0"},"& input[type=checkbox]":{marginRight:".2em"},"& label":{fontSize:"80%",whiteSpace:"pre"}},"&light .cm-searchMatch":{backgroundColor:"#ffff0054"},"&dark .cm-searchMatch":{backgroundColor:"#00ffff8a"},"&light .cm-searchMatch-selected":{backgroundColor:"#ff6a0054"},"&dark .cm-searchMatch-selected":{backgroundColor:"#ff00ff8a"}}),xQ=[aa,eT.low(yQ),HQ];class cW{constructor(e,o,_){this.state=e,this.pos=o,this.explicit=_,this.abortListeners=[]}tokenBefore(e){let o=Qs(this.state).resolveInner(this.pos,-1);for(;o&&e.indexOf(o.name)<0;)o=o.parent;return o?{from:o.from,to:this.pos,text:this.state.sliceDoc(o.from,this.pos),type:o.type}:null}matchBefore(e){let o=this.state.doc.lineAt(this.pos),_=Math.max(o.from,this.pos-250),l=o.text.slice(_-o.from,this.pos-o.from),c=l.search(EW(e,!1));return c<0?null:{from:_+c,to:this.pos,text:l.slice(c)}}get aborted(){return this.abortListeners==null}addEventListener(e,o){e=="abort"&&this.abortListeners&&this.abortListeners.push(o)}}function Cw(t){let e=Object.keys(t).join(""),o=/\w/.test(e);return o&&(e=e.replace(/\w/g,"")),`[${o?"\\w":""}${e.replace(/[^\w\s]/g,"\\$&")}]`}function FQ(t){let e=Object.create(null),o=Object.create(null);for(let{label:l}of t){e[l[0]]=!0;for(let c=1;c<l.length;c++)o[l[c]]=!0}let _=Cw(e)+Cw(o)+"*$";return[new RegExp("^"+_),new RegExp(_)]}function TW(t){let e=t.map(l=>typeof l=="string"?{label:l}:l),[o,_]=e.every(l=>/^\w+$/.test(l.label))?[/\w*$/,/\w+$/]:FQ(e);return l=>{let c=l.matchBefore(_);return c||l.explicit?{from:c?c.from:l.pos,options:e,validFor:o}:null}}function VQ(t,e){return o=>{for(let _=Qs(o.state).resolveInner(o.pos,-1);_;_=_.parent){if(t.indexOf(_.name)>-1)return null;if(_.type.isTop)break}return e(o)}}let Aw=class{constructor(e,o,_,l){this.completion=e,this.source=o,this.match=_,this.score=l}};function ca(t){return t.selection.main.from}function EW(t,e){var o;let{source:_}=t,l=e&&_[0]!="^",c=_[_.length-1]!="$";return!l&&!c?t:new RegExp(`${l?"^":""}(?:${_})${c?"$":""}`,(o=t.flags)!==null&&o!==void 0?o:t.ignoreCase?"i":"")}const uW=ll.define();function WQ(t,e,o,_){let{main:l}=t.selection,c=o-l.from,T=_-l.from;return Object.assign(Object.assign({},t.changeByRange(E=>E!=l&&o!=_&&t.sliceDoc(E.from+c,E.from+T)!=t.sliceDoc(o,_)?{range:E}:{changes:{from:E.from+c,to:_==l.from?E.to:E.from+T,insert:e},range:ct.cursor(E.from+c+e.length)})),{scrollIntoView:!0,userEvent:"input.complete"})}const bw=new WeakMap;function XQ(t){if(!Array.isArray(t))return t;let e=bw.get(t);return e||bw.set(t,e=TW(t)),e}const pI=uo.define(),bd=uo.define();class YQ{constructor(e){this.pattern=e,this.chars=[],this.folded=[],this.any=[],this.precise=[],this.byWord=[],this.score=0,this.matched=[];for(let o=0;o<e.length;){let _=ri(e,o),l=$n(_);this.chars.push(_);let c=e.slice(o,o+l),T=c.toUpperCase();this.folded.push(ri(T==c?c.toLowerCase():T,0)),o+=l}this.astral=e.length!=this.chars.length}ret(e,o){return this.score=e,this.matched=o,!0}match(e){if(this.pattern.length==0)return this.ret(-100,[]);if(e.length<this.pattern.length)return!1;let{chars:o,folded:_,any:l,precise:c,byWord:T}=this;if(o.length==1){let A=ri(e,0),b=$n(A),N=b==e.length?0:-100;if(A!=o[0])if(A==_[0])N+=-200;else return!1;return this.ret(N,[0,b])}let E=e.indexOf(this.pattern);if(E==0)return this.ret(e.length==this.pattern.length?0:-100,[0,this.pattern.length]);let u=o.length,d=0;if(E<0){for(let A=0,b=Math.min(e.length,200);A<b&&d<u;){let N=ri(e,A);(N==o[d]||N==_[d])&&(l[d++]=A),A+=$n(N)}if(d<u)return!1}let O=0,h=0,I=!1,S=0,L=-1,p=-1,C=/[a-z]/.test(e),m=!0;for(let A=0,b=Math.min(e.length,200),N=0;A<b&&h<u;){let U=ri(e,A);E<0&&(O<u&&U==o[O]&&(c[O++]=A),S<u&&(U==o[S]||U==_[S]?(S==0&&(L=A),p=A+1,S++):S=0));let P,G=U<255?U>=48&&U<=57||U>=97&&U<=122?2:U>=65&&U<=90?1:0:(P=SP(U))!=P.toLowerCase()?1:P!=P.toUpperCase()?2:0;(!A||G==1&&C||N==0&&G!=0)&&(o[h]==U||_[h]==U&&(I=!0)?T[h++]=A:T.length&&(m=!1)),N=G,A+=$n(U)}return h==u&&T[0]==0&&m?this.result(-100+(I?-200:0),T,e):S==u&&L==0?this.ret(-200-e.length+(p==e.length?0:-100),[0,p]):E>-1?this.ret(-700-e.length,[E,E+this.pattern.length]):S==u?this.ret(-900-e.length,[L,p]):h==u?this.result(-100+(I?-200:0)+-700+(m?0:-1100),T,e):o.length==2?!1:this.result((l[0]?-700:0)+-200+-1100,l,e)}result(e,o,_){let l=[],c=0;for(let T of o){let E=T+(this.astral?$n(ri(_,T)):1);c&&l[c-1]==T?l[c-1]=E:(l[c++]=T,l[c++]=E)}return this.ret(e-_.length,l)}}const ai=Ft.define({combine(t){return O_(t,{activateOnTyping:!0,activateOnTypingDelay:100,selectOnOpen:!0,override:null,closeOnBlur:!0,maxRenderedOptions:100,defaultKeymap:!0,tooltipClass:()=>"",optionClass:()=>"",aboveCursor:!1,icons:!0,addToOptions:[],positionInfo:KQ,compareCompletions:(e,o)=>e.label.localeCompare(o.label),interactionDelay:75,updateSyncTime:100},{defaultKeymap:(e,o)=>e&&o,closeOnBlur:(e,o)=>e&&o,icons:(e,o)=>e&&o,tooltipClass:(e,o)=>_=>Nw(e(_),o(_)),optionClass:(e,o)=>_=>Nw(e(_),o(_)),addToOptions:(e,o)=>e.concat(o)})}});function Nw(t,e){return t?e?t+" "+e:t:e}function KQ(t,e,o,_,l,c){let T=t.textDirection==us.RTL,E=T,u=!1,d="top",O,h,I=e.left-l.left,S=l.right-e.right,L=_.right-_.left,p=_.bottom-_.top;if(E&&I<Math.min(L,S)?E=!1:!E&&S<Math.min(L,I)&&(E=!0),L<=(E?I:S))O=Math.max(l.top,Math.min(o.top,l.bottom-p))-e.top,h=Math.min(400,E?I:S);else{u=!0,h=Math.min(400,(T?e.right:l.right-e.left)-30);let A=l.bottom-e.bottom;A>=p||A>e.top?O=o.bottom-e.top:(d="bottom",O=e.bottom-o.top)}let C=(e.bottom-e.top)/c.offsetHeight,m=(e.right-e.left)/c.offsetWidth;return{style:`${d}: ${O/C}px; max-width: ${h/m}px`,class:"cm-completionInfo-"+(u?T?"left-narrow":"right-narrow":E?"left":"right")}}function zQ(t){let e=t.addToOptions.slice();return t.icons&&e.push({render(o){let _=document.createElement("div");return _.classList.add("cm-completionIcon"),o.type&&_.classList.add(...o.type.split(/\s+/g).map(l=>"cm-completionIcon-"+l)),_.setAttribute("aria-hidden","true"),_},position:20}),e.push({render(o,_,l,c){let T=document.createElement("span");T.className="cm-completionLabel";let E=o.displayLabel||o.label,u=0;for(let d=0;d<c.length;){let O=c[d++],h=c[d++];O>u&&T.appendChild(document.createTextNode(E.slice(u,O)));let I=T.appendChild(document.createElement("span"));I.appendChild(document.createTextNode(E.slice(O,h))),I.className="cm-completionMatchedText",u=h}return u<E.length&&T.appendChild(document.createTextNode(E.slice(u))),T},position:50},{render(o){if(!o.detail)return null;let _=document.createElement("span");return _.className="cm-completionDetail",_.textContent=o.detail,_},position:80}),e.sort((o,_)=>o.position-_.position).map(o=>o.render)}function PC(t,e,o){if(t<=o)return{from:0,to:t};if(e<0&&(e=0),e<=t>>1){let l=Math.floor(e/o);return{from:l*o,to:(l+1)*o}}let _=Math.floor((t-e)/o);return{from:t-(_+1)*o,to:t-_*o}}class ZQ{constructor(e,o,_){this.view=e,this.stateField=o,this.applyCompletion=_,this.info=null,this.infoDestroy=null,this.placeInfoReq={read:()=>this.measureInfo(),write:u=>this.placeInfo(u),key:this},this.space=null,this.currentClass="";let l=e.state.field(o),{options:c,selected:T}=l.open,E=e.state.facet(ai);this.optionContent=zQ(E),this.optionClass=E.optionClass,this.tooltipClass=E.tooltipClass,this.range=PC(c.length,T,E.maxRenderedOptions),this.dom=document.createElement("div"),this.dom.className="cm-tooltip-autocomplete",this.updateTooltipClass(e.state),this.dom.addEventListener("mousedown",u=>{let{options:d}=e.state.field(o).open;for(let O=u.target,h;O&&O!=this.dom;O=O.parentNode)if(O.nodeName=="LI"&&(h=/-(\d+)$/.exec(O.id))&&+h[1]<d.length){this.applyCompletion(e,d[+h[1]]),u.preventDefault();return}}),this.dom.addEventListener("focusout",u=>{let d=e.state.field(this.stateField,!1);d&&d.tooltip&&e.state.facet(ai).closeOnBlur&&u.relatedTarget!=e.contentDOM&&e.dispatch({effects:bd.of(null)})}),this.showOptions(c,l.id)}mount(){this.updateSel()}showOptions(e,o){this.list&&this.list.remove(),this.list=this.dom.appendChild(this.createListBox(e,o,this.range)),this.list.addEventListener("scroll",()=>{this.info&&this.view.requestMeasure(this.placeInfoReq)})}update(e){var o;let _=e.state.field(this.stateField),l=e.startState.field(this.stateField);if(this.updateTooltipClass(e.state),_!=l){let{options:c,selected:T,disabled:E}=_.open;(!l.open||l.open.options!=c)&&(this.range=PC(c.length,T,e.state.facet(ai).maxRenderedOptions),this.showOptions(c,_.id)),this.updateSel(),E!=((o=l.open)===null||o===void 0?void 0:o.disabled)&&this.dom.classList.toggle("cm-tooltip-autocomplete-disabled",!!E)}}updateTooltipClass(e){let o=this.tooltipClass(e);if(o!=this.currentClass){for(let _ of this.currentClass.split(" "))_&&this.dom.classList.remove(_);for(let _ of o.split(" "))_&&this.dom.classList.add(_);this.currentClass=o}}positioned(e){this.space=e,this.info&&this.view.requestMeasure(this.placeInfoReq)}updateSel(){let e=this.view.state.field(this.stateField),o=e.open;if((o.selected>-1&&o.selected<this.range.from||o.selected>=this.range.to)&&(this.range=PC(o.options.length,o.selected,this.view.state.facet(ai).maxRenderedOptions),this.showOptions(o.options,e.id)),this.updateSelectedOption(o.selected)){this.destroyInfo();let{completion:_}=o.options[o.selected],{info:l}=_;if(!l)return;let c=typeof l=="string"?document.createTextNode(l):l(_);if(!c)return;"then"in c?c.then(T=>{T&&this.view.state.field(this.stateField,!1)==e&&this.addInfoPane(T,_)}).catch(T=>xn(this.view.state,T,"completion info")):this.addInfoPane(c,_)}}addInfoPane(e,o){this.destroyInfo();let _=this.info=document.createElement("div");if(_.className="cm-tooltip cm-completionInfo",e.nodeType!=null)_.appendChild(e),this.infoDestroy=null;else{let{dom:l,destroy:c}=e;_.appendChild(l),this.infoDestroy=c||null}this.dom.appendChild(_),this.view.requestMeasure(this.placeInfoReq)}updateSelectedOption(e){let o=null;for(let _=this.list.firstChild,l=this.range.from;_;_=_.nextSibling,l++)_.nodeName!="LI"||!_.id?l--:l==e?_.hasAttribute("aria-selected")||(_.setAttribute("aria-selected","true"),o=_):_.hasAttribute("aria-selected")&&_.removeAttribute("aria-selected");return o&&qQ(this.list,o),o}measureInfo(){let e=this.dom.querySelector("[aria-selected]");if(!e||!this.info)return null;let o=this.dom.getBoundingClientRect(),_=this.info.getBoundingClientRect(),l=e.getBoundingClientRect(),c=this.space;if(!c){let T=this.dom.ownerDocument.defaultView||window;c={left:0,top:0,right:T.innerWidth,bottom:T.innerHeight}}return l.top>Math.min(c.bottom,o.bottom)-10||l.bottom<Math.max(c.top,o.top)+10?null:this.view.state.facet(ai).positionInfo(this.view,o,l,_,c,this.dom)}placeInfo(e){this.info&&(e?(e.style&&(this.info.style.cssText=e.style),this.info.className="cm-tooltip cm-completionInfo "+(e.class||"")):this.info.style.cssText="top: -1e6px")}createListBox(e,o,_){const l=document.createElement("ul");l.id=o,l.setAttribute("role","listbox"),l.setAttribute("aria-expanded","true"),l.setAttribute("aria-label",this.view.state.phrase("Completions"));let c=null;for(let T=_.from;T<_.to;T++){let{completion:E,match:u}=e[T],{section:d}=E;if(d){let I=typeof d=="string"?d:d.name;if(I!=c&&(T>_.from||_.from==0))if(c=I,typeof d!="string"&&d.header)l.appendChild(d.header(d));else{let S=l.appendChild(document.createElement("completion-section"));S.textContent=I}}const O=l.appendChild(document.createElement("li"));O.id=o+"-"+T,O.setAttribute("role","option");let h=this.optionClass(E);h&&(O.className=h);for(let I of this.optionContent){let S=I(E,this.view.state,this.view,u);S&&O.appendChild(S)}}return _.from&&l.classList.add("cm-completionListIncompleteTop"),_.to<e.length&&l.classList.add("cm-completionListIncompleteBottom"),l}destroyInfo(){this.info&&(this.infoDestroy&&this.infoDestroy(),this.info.remove(),this.info=null)}destroy(){this.destroyInfo()}}function jQ(t,e){return o=>new ZQ(o,t,e)}function qQ(t,e){let o=t.getBoundingClientRect(),_=e.getBoundingClientRect(),l=o.height/t.offsetHeight;_.top<o.top?t.scrollTop-=(o.top-_.top)/l:_.bottom>o.bottom&&(t.scrollTop+=(_.bottom-o.bottom)/l)}function Pw(t){return(t.boost||0)*100+(t.apply?10:0)+(t.info?5:0)+(t.type?1:0)}function QQ(t,e){let o=[],_=null,l=u=>{o.push(u);let{section:d}=u.completion;if(d){_||(_=[]);let O=typeof d=="string"?d:d.name;_.some(h=>h.name==O)||_.push(typeof d=="string"?{name:O}:d)}};for(let u of t)if(u.hasResult()){let d=u.result.getMatch;if(u.result.filter===!1)for(let O of u.result.options)l(new Aw(O,u.source,d?d(O):[],1e9-o.length));else{let O=new YQ(e.sliceDoc(u.from,u.to));for(let h of u.result.options)if(O.match(h.label)){let I=h.displayLabel?d?d(h,O.matched):[]:O.matched;l(new Aw(h,u.source,I,O.score+(h.boost||0)))}}}if(_){let u=Object.create(null),d=0,O=(h,I)=>{var S,L;return((S=h.rank)!==null&&S!==void 0?S:1e9)-((L=I.rank)!==null&&L!==void 0?L:1e9)||(h.name<I.name?-1:1)};for(let h of _.sort(O))d-=1e5,u[h.name]=d;for(let h of o){let{section:I}=h.completion;I&&(h.score+=u[typeof I=="string"?I:I.name])}}let c=[],T=null,E=e.facet(ai).compareCompletions;for(let u of o.sort((d,O)=>O.score-d.score||E(d.completion,O.completion))){let d=u.completion;!T||T.label!=d.label||T.detail!=d.detail||T.type!=null&&d.type!=null&&T.type!=d.type||T.apply!=d.apply||T.boost!=d.boost?c.push(u):Pw(u.completion)>Pw(T)&&(c[c.length-1]=u),T=u.completion}return c}class IE{constructor(e,o,_,l,c,T){this.options=e,this.attrs=o,this.tooltip=_,this.timestamp=l,this.selected=c,this.disabled=T}setSelected(e,o){return e==this.selected||e>=this.options.length?this:new IE(this.options,vw(o,e),this.tooltip,this.timestamp,e,this.disabled)}static build(e,o,_,l,c){let T=QQ(e,o);if(!T.length)return l&&e.some(u=>u.state==1)?new IE(l.options,l.attrs,l.tooltip,l.timestamp,l.selected,!0):null;let E=o.facet(ai).selectOnOpen?0:-1;if(l&&l.selected!=E&&l.selected!=-1){let u=l.options[l.selected].completion;for(let d=0;d<T.length;d++)if(T[d].completion==u){E=d;break}}return new IE(T,vw(_,E),{pos:e.reduce((u,d)=>d.hasResult()?Math.min(u,d.from):u,1e8),create:sJ,above:c.aboveCursor},l?l.timestamp:Date.now(),E,!1)}map(e){return new IE(this.options,this.attrs,Object.assign(Object.assign({},this.tooltip),{pos:e.mapPos(this.tooltip.pos)}),this.timestamp,this.selected,this.disabled)}}class LI{constructor(e,o,_){this.active=e,this.id=o,this.open=_}static start(){return new LI(tJ,"cm-ac-"+Math.floor(Math.random()*2e6).toString(36),null)}update(e){let{state:o}=e,_=o.facet(ai),c=(_.override||o.languageDataAt("autocomplete",ca(o)).map(XQ)).map(E=>(this.active.find(d=>d.source==E)||new Zi(E,this.active.some(d=>d.state!=0)?1:0)).update(e,_));c.length==this.active.length&&c.every((E,u)=>E==this.active[u])&&(c=this.active);let T=this.open;T&&e.docChanged&&(T=T.map(e.changes)),e.selection||c.some(E=>E.hasResult()&&e.changes.touchesRange(E.from,E.to))||!JQ(c,this.active)?T=IE.build(c,o,this.id,T,_):T&&T.disabled&&!c.some(E=>E.state==1)&&(T=null),!T&&c.every(E=>E.state!=1)&&c.some(E=>E.hasResult())&&(c=c.map(E=>E.hasResult()?new Zi(E.source,0):E));for(let E of e.effects)E.is(dW)&&(T=T&&T.setSelected(E.value,this.id));return c==this.active&&T==this.open?this:new LI(c,this.id,T)}get tooltip(){return this.open?this.open.tooltip:null}get attrs(){return this.open?this.open.attrs:eJ}}function JQ(t,e){if(t==e)return!0;for(let o=0,_=0;;){for(;o<t.length&&!t[o].hasResult;)o++;for(;_<e.length&&!e[_].hasResult;)_++;let l=o==t.length,c=_==e.length;if(l||c)return l==c;if(t[o++].result!=e[_++].result)return!1}}const eJ={"aria-autocomplete":"list"};function vw(t,e){let o={"aria-autocomplete":"list","aria-haspopup":"listbox","aria-controls":t};return e>-1&&(o["aria-activedescendant"]=t+"-"+e),o}const tJ=[];function mb(t){return t.isUserEvent("input.type")?"input":t.isUserEvent("delete.backward")?"delete":null}class Zi{constructor(e,o,_=-1){this.source=e,this.state=o,this.explicitPos=_}hasResult(){return!1}update(e,o){let _=mb(e),l=this;_?l=l.handleUserEvent(e,_,o):e.docChanged?l=l.handleChange(e):e.selection&&l.state!=0&&(l=new Zi(l.source,0));for(let c of e.effects)if(c.is(pI))l=new Zi(l.source,1,c.value?ca(e.state):-1);else if(c.is(bd))l=new Zi(l.source,0);else if(c.is(gW))for(let T of c.value)T.source==l.source&&(l=T);return l}handleUserEvent(e,o,_){return o=="delete"||!_.activateOnTyping?this.map(e.changes):new Zi(this.source,1)}handleChange(e){return e.changes.touchesRange(ca(e.startState))?new Zi(this.source,0):this.map(e.changes)}map(e){return e.empty||this.explicitPos<0?this:new Zi(this.source,this.state,e.mapPos(this.explicitPos))}}class UE extends Zi{constructor(e,o,_,l,c){super(e,2,o),this.result=_,this.from=l,this.to=c}hasResult(){return!0}handleUserEvent(e,o,_){var l;let c=e.changes.mapPos(this.from),T=e.changes.mapPos(this.to,1),E=ca(e.state);if((this.explicitPos<0?E<=c:E<this.from)||E>T||o=="delete"&&ca(e.startState)==this.from)return new Zi(this.source,o=="input"&&_.activateOnTyping?1:0);let u=this.explicitPos<0?-1:e.changes.mapPos(this.explicitPos),d;return oJ(this.result.validFor,e.state,c,T)?new UE(this.source,u,this.result,c,T):this.result.update&&(d=this.result.update(this.result,c,T,new cW(e.state,E,u>=0)))?new UE(this.source,u,d,d.from,(l=d.to)!==null&&l!==void 0?l:ca(e.state)):new Zi(this.source,1,u)}handleChange(e){return e.changes.touchesRange(this.from,this.to)?new Zi(this.source,0):this.map(e.changes)}map(e){return e.empty?this:new UE(this.source,this.explicitPos<0?-1:e.mapPos(this.explicitPos),this.result,e.mapPos(this.from),e.mapPos(this.to,1))}}function oJ(t,e,o,_){if(!t)return!1;let l=e.sliceDoc(o,_);return typeof t=="function"?t(l,o,_,e):EW(t,!0).test(l)}const gW=uo.define({map(t,e){return t.map(o=>o.map(e))}}),dW=uo.define(),Sn=Js.define({create(){return LI.start()},update(t,e){return t.update(e)},provide:t=>[DP.from(t,e=>e.tooltip),Gt.contentAttributes.from(t,e=>e.attrs)]});function OW(t,e){const o=e.completion.apply||e.completion.label;let _=t.state.field(Sn).active.find(l=>l.source==e.source);return _ instanceof UE?(typeof o=="string"?t.dispatch(Object.assign(Object.assign({},WQ(t.state,o,_.from,_.to)),{annotations:uW.of(e.completion)})):o(t,e.completion,_.from,_.to),!0):!1}const sJ=jQ(Sn,OW);function UM(t,e="option"){return o=>{let _=o.state.field(Sn,!1);if(!_||!_.open||_.open.disabled||Date.now()-_.open.timestamp<o.state.facet(ai).interactionDelay)return!1;let l=1,c;e=="page"&&(c=KF(o,_.open.tooltip))&&(l=Math.max(2,Math.floor(c.dom.offsetHeight/c.dom.querySelector("li").offsetHeight)-1));let{length:T}=_.open.options,E=_.open.selected>-1?_.open.selected+l*(t?1:-1):t?0:T-1;return E<0?E=e=="page"?0:T-1:E>=T&&(E=e=="page"?T-1:0),o.dispatch({effects:dW.of(E)}),!0}}const iJ=t=>{let e=t.state.field(Sn,!1);return t.state.readOnly||!e||!e.open||e.open.selected<0||e.open.disabled||Date.now()-e.open.timestamp<t.state.facet(ai).interactionDelay?!1:OW(t,e.open.options[e.open.selected])},nJ=t=>t.state.field(Sn,!1)?(t.dispatch({effects:pI.of(!0)}),!0):!1,rJ=t=>{let e=t.state.field(Sn,!1);return!e||!e.active.some(o=>o.state!=0)?!1:(t.dispatch({effects:bd.of(null)}),!0)};class _J{constructor(e,o){this.active=e,this.context=o,this.time=Date.now(),this.updates=[],this.done=void 0}}const lJ=50,aJ=1e3,cJ=Ps.fromClass(class{constructor(t){this.view=t,this.debounceUpdate=-1,this.running=[],this.debounceAccept=-1,this.pendingStart=!1,this.composing=0;for(let e of t.state.field(Sn).active)e.state==1&&this.startQuery(e)}update(t){let e=t.state.field(Sn);if(!t.selectionSet&&!t.docChanged&&t.startState.field(Sn)==e)return;let o=t.transactions.some(l=>(l.selection||l.docChanged)&&!mb(l));for(let l=0;l<this.running.length;l++){let c=this.running[l];if(o||c.updates.length+t.transactions.length>lJ&&Date.now()-c.time>aJ){for(let T of c.context.abortListeners)try{T()}catch(E){xn(this.view.state,E)}c.context.abortListeners=null,this.running.splice(l--,1)}else c.updates.push(...t.transactions)}this.debounceUpdate>-1&&clearTimeout(this.debounceUpdate),t.transactions.some(l=>l.effects.some(c=>c.is(pI)))&&(this.pendingStart=!0);let _=this.pendingStart?50:t.state.facet(ai).activateOnTypingDelay;if(this.debounceUpdate=e.active.some(l=>l.state==1&&!this.running.some(c=>c.active.source==l.source))?setTimeout(()=>this.startUpdate(),_):-1,this.composing!=0)for(let l of t.transactions)mb(l)=="input"?this.composing=2:this.composing==2&&l.selection&&(this.composing=3)}startUpdate(){this.debounceUpdate=-1,this.pendingStart=!1;let{state:t}=this.view,e=t.field(Sn);for(let o of e.active)o.state==1&&!this.running.some(_=>_.active.source==o.source)&&this.startQuery(o)}startQuery(t){let{state:e}=this.view,o=ca(e),_=new cW(e,o,t.explicitPos==o),l=new _J(t,_);this.running.push(l),Promise.resolve(t.source(_)).then(c=>{l.context.aborted||(l.done=c||null,this.scheduleAccept())},c=>{this.view.dispatch({effects:bd.of(null)}),xn(this.view.state,c)})}scheduleAccept(){this.running.every(t=>t.done!==void 0)?this.accept():this.debounceAccept<0&&(this.debounceAccept=setTimeout(()=>this.accept(),this.view.state.facet(ai).updateSyncTime))}accept(){var t;this.debounceAccept>-1&&clearTimeout(this.debounceAccept),this.debounceAccept=-1;let e=[],o=this.view.state.facet(ai);for(let _=0;_<this.running.length;_++){let l=this.running[_];if(l.done===void 0)continue;if(this.running.splice(_--,1),l.done){let T=new UE(l.active.source,l.active.explicitPos,l.done,l.done.from,(t=l.done.to)!==null&&t!==void 0?t:ca(l.updates.length?l.updates[0].startState:this.view.state));for(let E of l.updates)T=T.update(E,o);if(T.hasResult()){e.push(T);continue}}let c=this.view.state.field(Sn).active.find(T=>T.source==l.active.source);if(c&&c.state==1)if(l.done==null){let T=new Zi(l.active.source,0);for(let E of l.updates)T=T.update(E,o);T.state!=1&&e.push(T)}else this.startQuery(c)}e.length&&this.view.dispatch({effects:gW.of(e)})}},{eventHandlers:{blur(t){let e=this.view.state.field(Sn,!1);if(e&&e.tooltip&&this.view.state.facet(ai).closeOnBlur){let o=e.open&&KF(this.view,e.open.tooltip);(!o||!o.dom.contains(t.relatedTarget))&&setTimeout(()=>this.view.dispatch({effects:bd.of(null)}),10)}},compositionstart(){this.composing=1},compositionend(){this.composing==3&&setTimeout(()=>this.view.dispatch({effects:pI.of(!1)}),20),this.composing=0}}}),hW=Gt.baseTheme({".cm-tooltip.cm-tooltip-autocomplete":{"& > ul":{fontFamily:"monospace",whiteSpace:"nowrap",overflow:"hidden auto",maxWidth_fallback:"700px",maxWidth:"min(700px, 95vw)",minWidth:"250px",maxHeight:"10em",height:"100%",listStyle:"none",margin:0,padding:0,"& > li, & > completion-section":{padding:"1px 3px",lineHeight:1.2},"& > li":{overflowX:"hidden",textOverflow:"ellipsis",cursor:"pointer"},"& > completion-section":{display:"list-item",borderBottom:"1px solid silver",paddingLeft:"0.5em",opacity:.7}}},"&light .cm-tooltip-autocomplete ul li[aria-selected]":{background:"#17c",color:"white"},"&light .cm-tooltip-autocomplete-disabled ul li[aria-selected]":{background:"#777"},"&dark .cm-tooltip-autocomplete ul li[aria-selected]":{background:"#347",color:"white"},"&dark .cm-tooltip-autocomplete-disabled ul li[aria-selected]":{background:"#444"},".cm-completionListIncompleteTop:before, .cm-completionListIncompleteBottom:after":{content:'"···"',opacity:.5,display:"block",textAlign:"center"},".cm-tooltip.cm-completionInfo":{position:"absolute",padding:"3px 9px",width:"max-content",maxWidth:"400px",boxSizing:"border-box"},".cm-completionInfo.cm-completionInfo-left":{right:"100%"},".cm-completionInfo.cm-completionInfo-right":{left:"100%"},".cm-completionInfo.cm-completionInfo-left-narrow":{right:"30px"},".cm-completionInfo.cm-completionInfo-right-narrow":{left:"30px"},"&light .cm-snippetField":{backgroundColor:"#00000022"},"&dark .cm-snippetField":{backgroundColor:"#ffffff22"},".cm-snippetFieldPosition":{verticalAlign:"text-top",width:0,height:"1.15em",display:"inline-block",margin:"0 -0.7px -.7em",borderLeft:"1.4px dotted #888"},".cm-completionMatchedText":{textDecoration:"underline"},".cm-completionDetail":{marginLeft:"0.5em",fontStyle:"italic"},".cm-completionIcon":{fontSize:"90%",width:".8em",display:"inline-block",textAlign:"center",paddingRight:".6em",opacity:"0.6",boxSizing:"content-box"},".cm-completionIcon-function, .cm-completionIcon-method":{"&:after":{content:"'ƒ'"}},".cm-completionIcon-class":{"&:after":{content:"'○'"}},".cm-completionIcon-interface":{"&:after":{content:"'◌'"}},".cm-completionIcon-variable":{"&:after":{content:"'𝑥'"}},".cm-completionIcon-constant":{"&:after":{content:"'𝐶'"}},".cm-completionIcon-type":{"&:after":{content:"'𝑡'"}},".cm-completionIcon-enum":{"&:after":{content:"'∪'"}},".cm-completionIcon-property":{"&:after":{content:"'□'"}},".cm-completionIcon-keyword":{"&:after":{content:"'🔑︎'"}},".cm-completionIcon-namespace":{"&:after":{content:"'▢'"}},".cm-completionIcon-text":{"&:after":{content:"'abc'",fontSize:"50%",verticalAlign:"middle"}}});class TJ{constructor(e,o,_,l){this.field=e,this.line=o,this.from=_,this.to=l}}class KP{constructor(e,o,_){this.field=e,this.from=o,this.to=_}map(e){let o=e.mapPos(this.from,-1,li.TrackDel),_=e.mapPos(this.to,1,li.TrackDel);return o==null||_==null?null:new KP(this.field,o,_)}}class zP{constructor(e,o){this.lines=e,this.fieldPositions=o}instantiate(e,o){let _=[],l=[o],c=e.doc.lineAt(o),T=/^\s*/.exec(c.text)[0];for(let u of this.lines){if(_.length){let d=T,O=/^\t*/.exec(u)[0].length;for(let h=0;h<O;h++)d+=e.facet(TO);l.push(o+d.length-O),u=d+u.slice(O)}_.push(u),o+=u.length+1}let E=this.fieldPositions.map(u=>new KP(u.field,l[u.line]+u.from,l[u.line]+u.to));return{text:_,ranges:E}}static parse(e){let o=[],_=[],l=[],c;for(let T of e.split(/\r\n?|\n/)){for(;c=/[#$]\{(?:(\d+)(?::([^}]*))?|([^}]*))\}/.exec(T);){let E=c[1]?+c[1]:null,u=c[2]||c[3]||"",d=-1;for(let O=0;O<o.length;O++)(E!=null?o[O].seq==E:u&&o[O].name==u)&&(d=O);if(d<0){let O=0;for(;O<o.length&&(E==null||o[O].seq!=null&&o[O].seq<E);)O++;o.splice(O,0,{seq:E,name:u}),d=O;for(let h of l)h.field>=d&&h.field++}l.push(new TJ(d,_.length,c.index,c.index+u.length)),T=T.slice(0,c.index)+u+T.slice(c.index+c[0].length)}for(let E;E=/\\([{}])/.exec(T);){T=T.slice(0,E.index)+E[1]+T.slice(E.index+E[0].length);for(let u of l)u.line==_.length&&u.from>E.index&&(u.from--,u.to--)}_.push(T)}return new zP(_,l)}}let EJ=eo.widget({widget:new class extends h_{toDOM(){let t=document.createElement("span");return t.className="cm-snippetFieldPosition",t}ignoreEvent(){return!1}}}),uJ=eo.mark({class:"cm-snippetField"});class Lu{constructor(e,o){this.ranges=e,this.active=o,this.deco=eo.set(e.map(_=>(_.from==_.to?EJ:uJ).range(_.from,_.to)))}map(e){let o=[];for(let _ of this.ranges){let l=_.map(e);if(!l)return null;o.push(l)}return new Lu(o,this.active)}selectionInsideField(e){return e.ranges.every(o=>this.ranges.some(_=>_.field==this.active&&_.from<=o.from&&_.to>=o.to))}}const dO=uo.define({map(t,e){return t&&t.map(e)}}),gJ=uo.define(),Nd=Js.define({create(){return null},update(t,e){for(let o of e.effects){if(o.is(dO))return o.value;if(o.is(gJ)&&t)return new Lu(t.ranges,o.value)}return t&&e.docChanged&&(t=t.map(e.changes)),t&&e.selection&&!t.selectionInsideField(e.selection)&&(t=null),t},provide:t=>Gt.decorations.from(t,e=>e?e.deco:eo.none)});function ZP(t,e){return ct.create(t.filter(o=>o.field==e).map(o=>ct.range(o.from,o.to)))}function dJ(t){let e=zP.parse(t);return(o,_,l,c)=>{let{text:T,ranges:E}=e.instantiate(o.state,l),u={changes:{from:l,to:c,insert:xo.of(T)},scrollIntoView:!0,annotations:_?[uW.of(_),Bs.userEvent.of("input.complete")]:void 0};if(E.length&&(u.selection=ZP(E,0)),E.some(d=>d.field>0)){let d=new Lu(E,0),O=u.effects=[dO.of(d)];o.state.field(Nd,!1)===void 0&&O.push(uo.appendConfig.of([Nd,IJ,SJ,hW]))}o.dispatch(o.state.update(u))}}function MW(t){return({state:e,dispatch:o})=>{let _=e.field(Nd,!1);if(!_||t<0&&_.active==0)return!1;let l=_.active+t,c=t>0&&!_.ranges.some(T=>T.field==l+t);return o(e.update({selection:ZP(_.ranges,l),effects:dO.of(c?null:new Lu(_.ranges,l)),scrollIntoView:!0})),!0}}const OJ=({state:t,dispatch:e})=>t.field(Nd,!1)?(e(t.update({effects:dO.of(null)})),!0):!1,hJ=MW(1),MJ=MW(-1),RJ=[{key:"Tab",run:hJ,shift:MJ},{key:"Escape",run:OJ}],Dw=Ft.define({combine(t){return t.length?t[0]:RJ}}),IJ=eT.highest(aO.compute([Dw],t=>t.facet(Dw)));function k_(t,e){return Object.assign(Object.assign({},e),{apply:dJ(t)})}const SJ=Gt.domEventHandlers({mousedown(t,e){let o=e.state.field(Nd,!1),_;if(!o||(_=e.posAtCoords({x:t.clientX,y:t.clientY}))==null)return!1;let l=o.ranges.find(c=>c.from<=_&&c.to>=_);return!l||l.field==o.active?!1:(e.dispatch({selection:ZP(o.ranges,l.field),effects:dO.of(o.ranges.some(c=>c.field>l.field)?new Lu(o.ranges,l.field):null),scrollIntoView:!0}),!0)}}),Pd={brackets:["(","[","{","'",'"'],before:")]}:;>",stringPrefixes:[]},fc=uo.define({map(t,e){let o=e.mapPos(t,-1,li.TrackAfter);return o??void 0}}),jP=new class extends kc{};jP.startSide=1;jP.endSide=-1;const RW=Js.define({create(){return Bo.empty},update(t,e){if(t=t.map(e.changes),e.selection){let o=e.state.doc.lineAt(e.selection.main.head);t=t.update({filter:_=>_>=o.from&&_<=o.to})}for(let o of e.effects)o.is(fc)&&(t=t.update({add:[jP.range(o.value,o.value+1)]}));return t}});function pJ(){return[fJ,RW]}const vC="()[]{}<>";function IW(t){for(let e=0;e<vC.length;e+=2)if(vC.charCodeAt(e)==t)return vC.charAt(e+1);return SP(t<128?t:t+1)}function SW(t,e){return t.languageDataAt("closeBrackets",e)[0]||Pd}const LJ=typeof navigator=="object"&&/Android\b/.test(navigator.userAgent),fJ=Gt.inputHandler.of((t,e,o,_)=>{if((LJ?t.composing:t.compositionStarted)||t.state.readOnly)return!1;let l=t.state.selection.main;if(_.length>2||_.length==2&&$n(ri(_,0))==1||e!=l.from||o!=l.to)return!1;let c=AJ(t.state,_);return c?(t.dispatch(c),!0):!1}),mJ=({state:t,dispatch:e})=>{if(t.readOnly)return!1;let _=SW(t,t.selection.main.head).brackets||Pd.brackets,l=null,c=t.changeByRange(T=>{if(T.empty){let E=bJ(t.doc,T.head);for(let u of _)if(u==E&&SS(t.doc,T.head)==IW(ri(u,0)))return{changes:{from:T.head-u.length,to:T.head+u.length},range:ct.cursor(T.head-u.length)}}return{range:l=T}});return l||e(t.update(c,{scrollIntoView:!0,userEvent:"delete.backward"})),!l},CJ=[{key:"Backspace",run:mJ}];function AJ(t,e){let o=SW(t,t.selection.main.head),_=o.brackets||Pd.brackets;for(let l of _){let c=IW(ri(l,0));if(e==l)return c==l?vJ(t,l,_.indexOf(l+l+l)>-1,o):NJ(t,l,c,o.before||Pd.before);if(e==c&&pW(t,t.selection.main.from))return PJ(t,l,c)}return null}function pW(t,e){let o=!1;return t.field(RW).between(0,t.doc.length,_=>{_==e&&(o=!0)}),o}function SS(t,e){let o=t.sliceString(e,e+2);return o.slice(0,$n(ri(o,0)))}function bJ(t,e){let o=t.sliceString(e-2,e);return $n(ri(o,0))==o.length?o:o.slice(1)}function NJ(t,e,o,_){let l=null,c=t.changeByRange(T=>{if(!T.empty)return{changes:[{insert:e,from:T.from},{insert:o,from:T.to}],effects:fc.of(T.to+e.length),range:ct.range(T.anchor+e.length,T.head+e.length)};let E=SS(t.doc,T.head);return!E||/\s/.test(E)||_.indexOf(E)>-1?{changes:{insert:e+o,from:T.head},effects:fc.of(T.head+e.length),range:ct.cursor(T.head+e.length)}:{range:l=T}});return l?null:t.update(c,{scrollIntoView:!0,userEvent:"input.type"})}function PJ(t,e,o){let _=null,l=t.changeByRange(c=>c.empty&&SS(t.doc,c.head)==o?{changes:{from:c.head,to:c.head+o.length,insert:o},range:ct.cursor(c.head+o.length)}:_={range:c});return _?null:t.update(l,{scrollIntoView:!0,userEvent:"input.type"})}function vJ(t,e,o,_){let l=_.stringPrefixes||Pd.stringPrefixes,c=null,T=t.changeByRange(E=>{if(!E.empty)return{changes:[{insert:e,from:E.from},{insert:e,from:E.to}],effects:fc.of(E.to+e.length),range:ct.range(E.anchor+e.length,E.head+e.length)};let u=E.head,d=SS(t.doc,u),O;if(d==e){if(Uw(t,u))return{changes:{insert:e+e,from:u},effects:fc.of(u+e.length),range:ct.cursor(u+e.length)};if(pW(t,u)){let I=o&&t.sliceDoc(u,u+e.length*3)==e+e+e?e+e+e:e;return{changes:{from:u,to:u+I.length,insert:I},range:ct.cursor(u+I.length)}}}else{if(o&&t.sliceDoc(u-2*e.length,u)==e+e&&(O=yw(t,u-2*e.length,l))>-1&&Uw(t,O))return{changes:{insert:e+e+e+e,from:u},effects:fc.of(u+e.length),range:ct.cursor(u+e.length)};if(t.charCategorizer(u)(d)!=Os.Word&&yw(t,u,l)>-1&&!DJ(t,u,e,l))return{changes:{insert:e+e,from:u},effects:fc.of(u+e.length),range:ct.cursor(u+e.length)}}return{range:c=E}});return c?null:t.update(T,{scrollIntoView:!0,userEvent:"input.type"})}function Uw(t,e){let o=Qs(t).resolveInner(e+1);return o.parent&&o.from==e}function DJ(t,e,o,_){let l=Qs(t).resolveInner(e,-1),c=_.reduce((T,E)=>Math.max(T,E.length),0);for(let T=0;T<5;T++){let E=t.sliceDoc(l.from,Math.min(l.to,l.from+o.length+c)),u=E.indexOf(o);if(!u||u>-1&&_.indexOf(E.slice(0,u))>-1){let O=l.firstChild;for(;O&&O.from==l.from&&O.to-O.from>o.length+u;){if(t.sliceDoc(O.to-o.length,O.to)==o)return!1;O=O.firstChild}return!0}let d=l.to==e&&l.parent;if(!d)break;l=d}return!1}function yw(t,e,o){let _=t.charCategorizer(e);if(_(t.sliceDoc(e-1,e))!=Os.Word)return e;for(let l of o){let c=e-l.length;if(t.sliceDoc(c,e)==l&&_(t.sliceDoc(c-1,c))!=Os.Word)return c}return-1}function UJ(t={}){return[Sn,ai.of(t),cJ,yJ,hW]}const LW=[{key:"Ctrl-Space",run:nJ},{key:"Escape",run:rJ},{key:"ArrowDown",run:UM(!0)},{key:"ArrowUp",run:UM(!1)},{key:"PageDown",run:UM(!0,"page")},{key:"PageUp",run:UM(!1,"page")},{key:"Enter",run:iJ}],yJ=eT.highest(aO.computeN([ai],t=>t.facet(ai).defaultKeymap?[LW]:[]));class $J{constructor(e,o,_){this.from=e,this.to=o,this.diagnostic=_}}class Mc{constructor(e,o,_){this.diagnostics=e,this.panel=o,this.selected=_}static init(e,o,_){let l=e,c=_.facet(CW).markerFilter;c&&(l=c(l));let T=eo.set(l.map(E=>E.from==E.to||E.from==E.to-1&&_.doc.lineAt(E.from).to==E.from?eo.widget({widget:new WJ(E),diagnostic:E}).range(E.from):eo.mark({attributes:{class:"cm-lintRange cm-lintRange-"+E.severity+(E.markClass?" "+E.markClass:"")},diagnostic:E}).range(E.from,E.to)),!0);return new Mc(T,o,jE(T))}}function jE(t,e=null,o=0){let _=null;return t.between(o,1e9,(l,c,{spec:T})=>{if(!(e&&T.diagnostic!=e))return _=new $J(l,c,T.diagnostic),!1}),_}function BJ(t,e){let o=t.startState.doc.lineAt(e.pos);return!!(t.effects.some(_=>_.is(fW))||t.changes.touchesRange(o.from,o.to))}function wJ(t,e){return t.field(Ln,!1)?e:e.concat(uo.appendConfig.of(KJ))}const fW=uo.define(),qP=uo.define(),mW=uo.define(),Ln=Js.define({create(){return new Mc(eo.none,null,null)},update(t,e){if(e.docChanged){let o=t.diagnostics.map(e.changes),_=null;if(t.selected){let l=e.changes.mapPos(t.selected.from,1);_=jE(o,t.selected.diagnostic,l)||jE(o,null,l)}t=new Mc(o,t.panel,_)}for(let o of e.effects)o.is(fW)?t=Mc.init(o.value,t.panel,e.state):o.is(qP)?t=new Mc(t.diagnostics,o.value?pS.open:null,t.selected):o.is(mW)&&(t=new Mc(t.diagnostics,t.panel,o.value));return t},provide:t=>[fd.from(t,e=>e.panel),Gt.decorations.from(t,e=>e.diagnostics)]}),GJ=eo.mark({class:"cm-lintRange cm-lintRange-active"});function kJ(t,e,o){let{diagnostics:_}=t.state.field(Ln),l=[],c=2e8,T=0;_.between(e-(o<0?1:0),e+(o>0?1:0),(u,d,{spec:O})=>{e>=u&&e<=d&&(u==d||(e>u||o>0)&&(e<d||o<0))&&(l.push(O.diagnostic),c=Math.min(u,c),T=Math.max(d,T))});let E=t.state.facet(CW).tooltipFilter;return E&&(l=E(l)),l.length?{pos:c,end:T,above:t.state.doc.lineAt(c).to<T,create(){return{dom:HJ(t,l)}}}:null}function HJ(t,e){return _s("ul",{class:"cm-tooltip-lint"},e.map(o=>bW(t,o,!1)))}const xJ=t=>{let e=t.state.field(Ln,!1);(!e||!e.panel)&&t.dispatch({effects:wJ(t.state,[qP.of(!0)])});let o=Ld(t,pS.open);return o&&o.dom.querySelector(".cm-panel-lint ul").focus(),!0},$w=t=>{let e=t.state.field(Ln,!1);return!e||!e.panel?!1:(t.dispatch({effects:qP.of(!1)}),!0)},FJ=t=>{let e=t.state.field(Ln,!1);if(!e)return!1;let o=t.state.selection.main,_=e.diagnostics.iter(o.to+1);return!_.value&&(_=e.diagnostics.iter(0),!_.value||_.from==o.from&&_.to==o.to)?!1:(t.dispatch({selection:{anchor:_.from,head:_.to},scrollIntoView:!0}),!0)},VJ=[{key:"Mod-Shift-m",run:xJ,preventDefault:!0},{key:"F8",run:FJ}],CW=Ft.define({combine(t){return Object.assign({sources:t.map(e=>e.source)},O_(t.map(e=>e.config),{delay:750,markerFilter:null,tooltipFilter:null,needsRefresh:null},{needsRefresh:(e,o)=>e?o?_=>e(_)||o(_):e:o}))}});function AW(t){let e=[];if(t)e:for(let{name:o}of t){for(let _=0;_<o.length;_++){let l=o[_];if(/[a-zA-Z]/.test(l)&&!e.some(c=>c.toLowerCase()==l.toLowerCase())){e.push(l);continue e}}e.push("")}return e}function bW(t,e,o){var _;let l=o?AW(e.actions):[];return _s("li",{class:"cm-diagnostic cm-diagnostic-"+e.severity},_s("span",{class:"cm-diagnosticText"},e.renderMessage?e.renderMessage():e.message),(_=e.actions)===null||_===void 0?void 0:_.map((c,T)=>{let E=!1,u=I=>{if(I.preventDefault(),E)return;E=!0;let S=jE(t.state.field(Ln).diagnostics,e);S&&c.apply(t,S.from,S.to)},{name:d}=c,O=l[T]?d.indexOf(l[T]):-1,h=O<0?d:[d.slice(0,O),_s("u",d.slice(O,O+1)),d.slice(O+1)];return _s("button",{type:"button",class:"cm-diagnosticAction",onclick:u,onmousedown:u,"aria-label":` Action: ${d}${O<0?"":` (access key "${l[T]})"`}.`},h)}),e.source&&_s("div",{class:"cm-diagnosticSource"},e.source))}class WJ extends h_{constructor(e){super(),this.diagnostic=e}eq(e){return e.diagnostic==this.diagnostic}toDOM(){return _s("span",{class:"cm-lintPoint cm-lintPoint-"+this.diagnostic.severity})}}class Bw{constructor(e,o){this.diagnostic=o,this.id="item_"+Math.floor(Math.random()*4294967295).toString(16),this.dom=bW(e,o,!0),this.dom.id=this.id,this.dom.setAttribute("role","option")}}class pS{constructor(e){this.view=e,this.items=[];let o=l=>{if(l.keyCode==27)$w(this.view),this.view.focus();else if(l.keyCode==38||l.keyCode==33)this.moveSelection((this.selectedIndex-1+this.items.length)%this.items.length);else if(l.keyCode==40||l.keyCode==34)this.moveSelection((this.selectedIndex+1)%this.items.length);else if(l.keyCode==36)this.moveSelection(0);else if(l.keyCode==35)this.moveSelection(this.items.length-1);else if(l.keyCode==13)this.view.focus();else if(l.keyCode>=65&&l.keyCode<=90&&this.selectedIndex>=0){let{diagnostic:c}=this.items[this.selectedIndex],T=AW(c.actions);for(let E=0;E<T.length;E++)if(T[E].toUpperCase().charCodeAt(0)==l.keyCode){let u=jE(this.view.state.field(Ln).diagnostics,c);u&&c.actions[E].apply(e,u.from,u.to)}}else return;l.preventDefault()},_=l=>{for(let c=0;c<this.items.length;c++)this.items[c].dom.contains(l.target)&&this.moveSelection(c)};this.list=_s("ul",{tabIndex:0,role:"listbox","aria-label":this.view.state.phrase("Diagnostics"),onkeydown:o,onclick:_}),this.dom=_s("div",{class:"cm-panel-lint"},this.list,_s("button",{type:"button",name:"close","aria-label":this.view.state.phrase("close"),onclick:()=>$w(this.view)},"×")),this.update()}get selectedIndex(){let e=this.view.state.field(Ln).selected;if(!e)return-1;for(let o=0;o<this.items.length;o++)if(this.items[o].diagnostic==e.diagnostic)return o;return-1}update(){let{diagnostics:e,selected:o}=this.view.state.field(Ln),_=0,l=!1,c=null;for(e.between(0,this.view.state.doc.length,(T,E,{spec:u})=>{let d=-1,O;for(let h=_;h<this.items.length;h++)if(this.items[h].diagnostic==u.diagnostic){d=h;break}d<0?(O=new Bw(this.view,u.diagnostic),this.items.splice(_,0,O),l=!0):(O=this.items[d],d>_&&(this.items.splice(_,d-_),l=!0)),o&&O.diagnostic==o.diagnostic?O.dom.hasAttribute("aria-selected")||(O.dom.setAttribute("aria-selected","true"),c=O):O.dom.hasAttribute("aria-selected")&&O.dom.removeAttribute("aria-selected"),_++});_<this.items.length&&!(this.items.length==1&&this.items[0].diagnostic.from<0);)l=!0,this.items.pop();this.items.length==0&&(this.items.push(new Bw(this.view,{from:-1,to:-1,severity:"info",message:this.view.state.phrase("No diagnostics")})),l=!0),c?(this.list.setAttribute("aria-activedescendant",c.id),this.view.requestMeasure({key:this,read:()=>({sel:c.dom.getBoundingClientRect(),panel:this.list.getBoundingClientRect()}),write:({sel:T,panel:E})=>{let u=E.height/this.list.offsetHeight;T.top<E.top?this.list.scrollTop-=(E.top-T.top)/u:T.bottom>E.bottom&&(this.list.scrollTop+=(T.bottom-E.bottom)/u)}})):this.selectedIndex<0&&this.list.removeAttribute("aria-activedescendant"),l&&this.sync()}sync(){let e=this.list.firstChild;function o(){let _=e;e=_.nextSibling,_.remove()}for(let _ of this.items)if(_.dom.parentNode==this.list){for(;e!=_.dom;)o();e=_.dom.nextSibling}else this.list.insertBefore(_.dom,e);for(;e;)o()}moveSelection(e){if(this.selectedIndex<0)return;let o=this.view.state.field(Ln),_=jE(o.diagnostics,this.items[e].diagnostic);_&&this.view.dispatch({selection:{anchor:_.from,head:_.to},scrollIntoView:!0,effects:mW.of(_)})}static open(e){return new pS(e)}}function XJ(t,e='viewBox="0 0 40 40"'){return`url('data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg" ${e}>${encodeURIComponent(t)}</svg>')`}function yM(t){return XJ(`<path d="m0 2.5 l2 -1.5 l1 0 l2 1.5 l1 0" stroke="${t}" fill="none" stroke-width=".7"/>`,'width="6" height="3"')}const YJ=Gt.baseTheme({".cm-diagnostic":{padding:"3px 6px 3px 8px",marginLeft:"-1px",display:"block",whiteSpace:"pre-wrap"},".cm-diagnostic-error":{borderLeft:"5px solid #d11"},".cm-diagnostic-warning":{borderLeft:"5px solid orange"},".cm-diagnostic-info":{borderLeft:"5px solid #999"},".cm-diagnostic-hint":{borderLeft:"5px solid #66d"},".cm-diagnosticAction":{font:"inherit",border:"none",padding:"2px 4px",backgroundColor:"#444",color:"white",borderRadius:"3px",marginLeft:"8px",cursor:"pointer"},".cm-diagnosticSource":{fontSize:"70%",opacity:.7},".cm-lintRange":{backgroundPosition:"left bottom",backgroundRepeat:"repeat-x",paddingBottom:"0.7px"},".cm-lintRange-error":{backgroundImage:yM("#d11")},".cm-lintRange-warning":{backgroundImage:yM("orange")},".cm-lintRange-info":{backgroundImage:yM("#999")},".cm-lintRange-hint":{backgroundImage:yM("#66d")},".cm-lintRange-active":{backgroundColor:"#ffdd9980"},".cm-tooltip-lint":{padding:0,margin:0},".cm-lintPoint":{position:"relative","&:after":{content:'""',position:"absolute",bottom:0,left:"-2px",borderLeft:"3px solid transparent",borderRight:"3px solid transparent",borderBottom:"4px solid #d11"}},".cm-lintPoint-warning":{"&:after":{borderBottomColor:"orange"}},".cm-lintPoint-info":{"&:after":{borderBottomColor:"#999"}},".cm-lintPoint-hint":{"&:after":{borderBottomColor:"#66d"}},".cm-panel.cm-panel-lint":{position:"relative","& ul":{maxHeight:"100px",overflowY:"auto","& [aria-selected]":{backgroundColor:"#ddd","& u":{textDecoration:"underline"}},"&:focus [aria-selected]":{background_fallback:"#bdf",backgroundColor:"Highlight",color_fallback:"white",color:"HighlightText"},"& u":{textDecoration:"none"},padding:0,margin:0},"& [name=close]":{position:"absolute",top:"0",right:"2px",background:"inherit",border:"none",font:"inherit",padding:0,margin:0}}}),KJ=[Ln,Gt.decorations.compute([Ln],t=>{let{selected:e,panel:o}=t.field(Ln);return!e||!o||e.from==e.to?eo.none:eo.set([GJ.range(e.from,e.to)])}),wj(kJ,{hideOn:BJ}),YJ],zJ=[Yj(),Zj(),Ej(),uq(),k7(),tj(),rj(),fo.allowMultipleSelections.of(!0),m7(),x7(W7,{fallback:!0}),q7(),pJ(),UJ(),Cj(),Nj(),Mj(),RQ(),aO.of([...CJ,...uQ,...GQ,...pq,...$7,...LW,...VJ])];/*!
- * VueCodemirror v6.1.1
- * Copyright (c) Surmon. All rights reserved.
- * Released under the MIT License.
- * Surmon
- */var ZJ=Object.freeze({autofocus:!1,disabled:!1,indentWithTab:!0,tabSize:2,placeholder:"",autoDestroy:!0,extensions:[zJ]}),jJ=Symbol("vue-codemirror-global-config"),Ni,qJ=function(t){var e=t.onUpdate,o=t.onChange,_=t.onFocus,l=t.onBlur,c=function(T,E){var u={};for(var d in T)Object.prototype.hasOwnProperty.call(T,d)&&E.indexOf(d)<0&&(u[d]=T[d]);if(T!=null&&typeof Object.getOwnPropertySymbols=="function"){var O=0;for(d=Object.getOwnPropertySymbols(T);O<d.length;O++)E.indexOf(d[O])<0&&Object.prototype.propertyIsEnumerable.call(T,d[O])&&(u[d[O]]=T[d[O]])}return u}(t,["onUpdate","onChange","onFocus","onBlur"]);return fo.create({doc:c.doc,selection:c.selection,extensions:(Array.isArray(c.extensions)?c.extensions:[c.extensions]).concat([Gt.updateListener.of(function(T){e(T),T.docChanged&&o(T.state.doc.toString(),T),T.focusChanged&&(T.view.hasFocus?_(T):l(T))})])})},EE=function(t){var e=new rO;return{compartment:e,run:function(o){e.get(t.state)?t.dispatch({effects:e.reconfigure(o)}):t.dispatch({effects:uo.appendConfig.of(e.of(o))})}}},ww=function(t,e){var o=EE(t),_=o.compartment,l=o.run;return function(c){var T=_.get(t.state);l(c??T!==e?e:[])}},$M={type:Boolean,default:void 0},QJ={autofocus:$M,disabled:$M,indentWithTab:$M,tabSize:Number,placeholder:String,style:Object,autoDestroy:$M,phrases:Object,root:Object,extensions:Array,selection:Object},JJ={modelValue:{type:String,default:""}},eee=Object.assign(Object.assign({},QJ),JJ);(function(t){t.Change="change",t.Update="update",t.Focus="focus",t.Blur="blur",t.Ready="ready",t.ModelUpdate="update:modelValue"})(Ni||(Ni={}));var Rc={};Rc[Ni.Change]=function(t,e){return!0},Rc[Ni.Update]=function(t){return!0},Rc[Ni.Focus]=function(t){return!0},Rc[Ni.Blur]=function(t){return!0},Rc[Ni.Ready]=function(t){return!0};var NW={};NW[Ni.ModelUpdate]=Rc[Ni.Change];var tee=Object.assign(Object.assign({},Rc),NW),oee=Oe({name:"VueCodemirror",props:Object.assign({},eee),emits:Object.assign({},tee),setup:function(t,e){var o=mo(),_=mo(),l=mo(),c=Object.assign(Object.assign({},ZJ),lt(jJ,{})),T=v(function(){var E={};return Object.keys(Mo(t)).forEach(function(u){var d;u!=="modelValue"&&(E[u]=(d=t[u])!==null&&d!==void 0?d:c[u])}),E});return Bt(function(){var E;_.value=qJ({doc:t.modelValue,selection:T.value.selection,extensions:(E=c.extensions)!==null&&E!==void 0?E:[],onFocus:function(d){return e.emit(Ni.Focus,d)},onBlur:function(d){return e.emit(Ni.Blur,d)},onUpdate:function(d){return e.emit(Ni.Update,d)},onChange:function(d,O){d!==t.modelValue&&(e.emit(Ni.Change,d,O),e.emit(Ni.ModelUpdate,d,O))}}),l.value=function(d){return new Gt(Object.assign({},d))}({state:_.value,parent:o.value,root:T.value.root});var u=function(d){var O=function(){return d.state.doc.toString()},h=EE(d).run,I=ww(d,[Gt.editable.of(!1),fo.readOnly.of(!0)]),S=ww(d,aO.of([gQ])),L=EE(d).run,p=EE(d).run,C=EE(d).run,m=EE(d).run;return{focus:function(){return d.focus()},getDoc:O,setDoc:function(A){A!==O()&&d.dispatch({changes:{from:0,to:d.state.doc.length,insert:A}})},reExtensions:h,toggleDisabled:I,toggleIndentWithTab:S,setTabSize:function(A){L([fo.tabSize.of(A),TO.of(" ".repeat(A))])},setPhrases:function(A){p([fo.phrases.of(A)])},setPlaceholder:function(A){C(pj(A))},setStyle:function(A){A===void 0&&(A={}),m(Gt.theme({"&":Object.assign({},A)}))}}}(l.value);Fe(function(){return t.modelValue},function(d){d!==u.getDoc()&&u.setDoc(d)}),Fe(function(){return t.extensions},function(d){return u.reExtensions(d||[])},{immediate:!0}),Fe(function(){return T.value.disabled},function(d){return u.toggleDisabled(d)},{immediate:!0}),Fe(function(){return T.value.indentWithTab},function(d){return u.toggleIndentWithTab(d)},{immediate:!0}),Fe(function(){return T.value.tabSize},function(d){return u.setTabSize(d)},{immediate:!0}),Fe(function(){return T.value.phrases},function(d){return u.setPhrases(d||{})},{immediate:!0}),Fe(function(){return T.value.placeholder},function(d){return u.setPlaceholder(d)},{immediate:!0}),Fe(function(){return T.value.style},function(d){return u.setStyle(d)},{immediate:!0}),T.value.autofocus&&u.focus(),e.emit(Ni.Ready,{state:_.value,view:l.value,container:o.value})}),Do(function(){T.value.autoDestroy&&l.value&&function(E){E.destroy()}(l.value)}),function(){return pt("div",{class:"v-codemirror",style:{display:"contents"},ref:o})}}}),see=oee,Gw={};let iee=class Cb{constructor(e,o,_,l,c,T,E,u,d,O=0,h){this.p=e,this.stack=o,this.state=_,this.reducePos=l,this.pos=c,this.score=T,this.buffer=E,this.bufferBase=u,this.curContext=d,this.lookAhead=O,this.parent=h}toString(){return`[${this.stack.filter((e,o)=>o%3==0).concat(this.state)}]@${this.pos}${this.score?"!"+this.score:""}`}static start(e,o,_=0){let l=e.parser.context;return new Cb(e,[],o,_,_,0,[],0,l?new kw(l,l.start):null,0,null)}get context(){return this.curContext?this.curContext.context:null}pushState(e,o){this.stack.push(this.state,o,this.bufferBase+this.buffer.length),this.state=e}reduce(e){var o;let _=e>>19,l=e&65535,{parser:c}=this.p,T=c.dynamicPrecedence(l);if(T&&(this.score+=T),_==0){this.pushState(c.getGoto(this.state,l,!0),this.reducePos),l<c.minRepeatTerm&&this.storeNode(l,this.reducePos,this.reducePos,4,!0),this.reduceContext(l,this.reducePos);return}let E=this.stack.length-(_-1)*3-(e&262144?6:0),u=E?this.stack[E-2]:this.p.ranges[0].from,d=this.reducePos-u;d>=2e3&&!(!((o=this.p.parser.nodeSet.types[l])===null||o===void 0)&&o.isAnonymous)&&(u==this.p.lastBigReductionStart?(this.p.bigReductionCount++,this.p.lastBigReductionSize=d):this.p.lastBigReductionSize<d&&(this.p.bigReductionCount=1,this.p.lastBigReductionStart=u,this.p.lastBigReductionSize=d));let O=E?this.stack[E-1]:0,h=this.bufferBase+this.buffer.length-O;if(l<c.minRepeatTerm||e&131072){let I=c.stateFlag(this.state,1)?this.pos:this.reducePos;this.storeNode(l,u,I,h+4,!0)}if(e&262144)this.state=this.stack[E];else{let I=this.stack[E-3];this.state=c.getGoto(I,l,!0)}for(;this.stack.length>E;)this.stack.pop();this.reduceContext(l,u)}storeNode(e,o,_,l=4,c=!1){if(e==0&&(!this.stack.length||this.stack[this.stack.length-1]<this.buffer.length+this.bufferBase)){let T=this,E=this.buffer.length;if(E==0&&T.parent&&(E=T.bufferBase-T.parent.bufferBase,T=T.parent),E>0&&T.buffer[E-4]==0&&T.buffer[E-1]>-1){if(o==_)return;if(T.buffer[E-2]>=o){T.buffer[E-2]=_;return}}}if(!c||this.pos==_)this.buffer.push(e,o,_,l);else{let T=this.buffer.length;if(T>0&&this.buffer[T-4]!=0)for(;T>0&&this.buffer[T-2]>_;)this.buffer[T]=this.buffer[T-4],this.buffer[T+1]=this.buffer[T-3],this.buffer[T+2]=this.buffer[T-2],this.buffer[T+3]=this.buffer[T-1],T-=4,l>4&&(l-=4);this.buffer[T]=e,this.buffer[T+1]=o,this.buffer[T+2]=_,this.buffer[T+3]=l}}shift(e,o,_,l){if(e&131072)this.pushState(e&65535,this.pos);else if(e&262144)this.pos=l,this.shiftContext(o,_),o<=this.p.parser.maxNode&&this.buffer.push(o,_,l,4);else{let c=e,{parser:T}=this.p;(l>this.pos||o<=T.maxNode)&&(this.pos=l,T.stateFlag(c,1)||(this.reducePos=l)),this.pushState(c,_),this.shiftContext(o,_),o<=T.maxNode&&this.buffer.push(o,_,l,4)}}apply(e,o,_,l){e&65536?this.reduce(e):this.shift(e,o,_,l)}useNode(e,o){let _=this.p.reused.length-1;(_<0||this.p.reused[_]!=e)&&(this.p.reused.push(e),_++);let l=this.pos;this.reducePos=this.pos=l+e.length,this.pushState(o,l),this.buffer.push(_,l,this.reducePos,-1),this.curContext&&this.updateContext(this.curContext.tracker.reuse(this.curContext.context,e,this,this.p.stream.reset(this.pos-e.length)))}split(){let e=this,o=e.buffer.length;for(;o>0&&e.buffer[o-2]>e.reducePos;)o-=4;let _=e.buffer.slice(o),l=e.bufferBase+o;for(;e&&l==e.bufferBase;)e=e.parent;return new Cb(this.p,this.stack.slice(),this.state,this.reducePos,this.pos,this.score,_,l,this.curContext,this.lookAhead,e)}recoverByDelete(e,o){let _=e<=this.p.parser.maxNode;_&&this.storeNode(e,this.pos,o,4),this.storeNode(0,this.pos,o,_?8:4),this.pos=this.reducePos=o,this.score-=190}canShift(e){for(let o=new nee(this);;){let _=this.p.parser.stateSlot(o.state,4)||this.p.parser.hasAction(o.state,e);if(_==0)return!1;if(!(_&65536))return!0;o.reduce(_)}}recoverByInsert(e){if(this.stack.length>=300)return[];let o=this.p.parser.nextStates(this.state);if(o.length>8||this.stack.length>=120){let l=[];for(let c=0,T;c<o.length;c+=2)(T=o[c+1])!=this.state&&this.p.parser.hasAction(T,e)&&l.push(o[c],T);if(this.stack.length<120)for(let c=0;l.length<8&&c<o.length;c+=2){let T=o[c+1];l.some((E,u)=>u&1&&E==T)||l.push(o[c],T)}o=l}let _=[];for(let l=0;l<o.length&&_.length<4;l+=2){let c=o[l+1];if(c==this.state)continue;let T=this.split();T.pushState(c,this.pos),T.storeNode(0,T.pos,T.pos,4,!0),T.shiftContext(o[l],this.pos),T.reducePos=this.pos,T.score-=200,_.push(T)}return _}forceReduce(){let{parser:e}=this.p,o=e.stateSlot(this.state,5);if(!(o&65536))return!1;if(!e.validAction(this.state,o)){let _=o>>19,l=o&65535,c=this.stack.length-_*3;if(c<0||e.getGoto(this.stack[c],l,!1)<0){let T=this.findForcedReduction();if(T==null)return!1;o=T}this.storeNode(0,this.pos,this.pos,4,!0),this.score-=100}return this.reducePos=this.pos,this.reduce(o),!0}findForcedReduction(){let{parser:e}=this.p,o=[],_=(l,c)=>{if(!o.includes(l))return o.push(l),e.allActions(l,T=>{if(!(T&393216))if(T&65536){let E=(T>>19)-c;if(E>1){let u=T&65535,d=this.stack.length-E*3;if(d>=0&&e.getGoto(this.stack[d],u,!1)>=0)return E<<19|65536|u}}else{let E=_(T,c+1);if(E!=null)return E}})};return _(this.state,0)}forceAll(){for(;!this.p.parser.stateFlag(this.state,2);)if(!this.forceReduce()){this.storeNode(0,this.pos,this.pos,4,!0);break}return this}get deadEnd(){if(this.stack.length!=3)return!1;let{parser:e}=this.p;return e.data[e.stateSlot(this.state,1)]==65535&&!e.stateSlot(this.state,4)}restart(){this.storeNode(0,this.pos,this.pos,4,!0),this.state=this.stack[0],this.stack.length=0}sameState(e){if(this.state!=e.state||this.stack.length!=e.stack.length)return!1;for(let o=0;o<this.stack.length;o+=3)if(this.stack[o]!=e.stack[o])return!1;return!0}get parser(){return this.p.parser}dialectEnabled(e){return this.p.parser.dialect.flags[e]}shiftContext(e,o){this.curContext&&this.updateContext(this.curContext.tracker.shift(this.curContext.context,e,this,this.p.stream.reset(o)))}reduceContext(e,o){this.curContext&&this.updateContext(this.curContext.tracker.reduce(this.curContext.context,e,this,this.p.stream.reset(o)))}emitContext(){let e=this.buffer.length-1;(e<0||this.buffer[e]!=-3)&&this.buffer.push(this.curContext.hash,this.pos,this.pos,-3)}emitLookAhead(){let e=this.buffer.length-1;(e<0||this.buffer[e]!=-4)&&this.buffer.push(this.lookAhead,this.pos,this.pos,-4)}updateContext(e){if(e!=this.curContext.context){let o=new kw(this.curContext.tracker,e);o.hash!=this.curContext.hash&&this.emitContext(),this.curContext=o}}setLookAhead(e){e>this.lookAhead&&(this.emitLookAhead(),this.lookAhead=e)}close(){this.curContext&&this.curContext.tracker.strict&&this.emitContext(),this.lookAhead>0&&this.emitLookAhead()}};class kw{constructor(e,o){this.tracker=e,this.context=o,this.hash=e.strict?e.hash(o):0}}class nee{constructor(e){this.start=e,this.state=e.state,this.stack=e.stack,this.base=this.stack.length}reduce(e){let o=e&65535,_=e>>19;_==0?(this.stack==this.start.stack&&(this.stack=this.stack.slice()),this.stack.push(this.state,0,0),this.base+=3):this.base-=(_-1)*3;let l=this.start.p.parser.getGoto(this.stack[this.base-3],o,!0);this.state=l}}class fI{constructor(e,o,_){this.stack=e,this.pos=o,this.index=_,this.buffer=e.buffer,this.index==0&&this.maybeNext()}static create(e,o=e.bufferBase+e.buffer.length){return new fI(e,o,o-e.bufferBase)}maybeNext(){let e=this.stack.parent;e!=null&&(this.index=this.stack.bufferBase-e.bufferBase,this.stack=e,this.buffer=e.buffer)}get id(){return this.buffer[this.index-4]}get start(){return this.buffer[this.index-3]}get end(){return this.buffer[this.index-2]}get size(){return this.buffer[this.index-1]}next(){this.index-=4,this.pos-=4,this.index==0&&this.maybeNext()}fork(){return new fI(this.stack,this.pos,this.index)}}function BM(t,e=Uint16Array){if(typeof t!="string")return t;let o=null;for(let _=0,l=0;_<t.length;){let c=0;for(;;){let T=t.charCodeAt(_++),E=!1;if(T==126){c=65535;break}T>=92&&T--,T>=34&&T--;let u=T-32;if(u>=46&&(u-=46,E=!0),c+=u,E)break;c*=46}o?o[l++]=c:o=new e(c)}return o}class OR{constructor(){this.start=-1,this.value=-1,this.end=-1,this.extended=-1,this.lookAhead=0,this.mask=0,this.context=0}}const Hw=new OR;class ree{constructor(e,o){this.input=e,this.ranges=o,this.chunk="",this.chunkOff=0,this.chunk2="",this.chunk2Pos=0,this.next=-1,this.token=Hw,this.rangeIndex=0,this.pos=this.chunkPos=o[0].from,this.range=o[0],this.end=o[o.length-1].to,this.readNext()}resolveOffset(e,o){let _=this.range,l=this.rangeIndex,c=this.pos+e;for(;c<_.from;){if(!l)return null;let T=this.ranges[--l];c-=_.from-T.to,_=T}for(;o<0?c>_.to:c>=_.to;){if(l==this.ranges.length-1)return null;let T=this.ranges[++l];c+=T.from-_.to,_=T}return c}clipPos(e){if(e>=this.range.from&&e<this.range.to)return e;for(let o of this.ranges)if(o.to>e)return Math.max(e,o.from);return this.end}peek(e){let o=this.chunkOff+e,_,l;if(o>=0&&o<this.chunk.length)_=this.pos+e,l=this.chunk.charCodeAt(o);else{let c=this.resolveOffset(e,1);if(c==null)return-1;if(_=c,_>=this.chunk2Pos&&_<this.chunk2Pos+this.chunk2.length)l=this.chunk2.charCodeAt(_-this.chunk2Pos);else{let T=this.rangeIndex,E=this.range;for(;E.to<=_;)E=this.ranges[++T];this.chunk2=this.input.chunk(this.chunk2Pos=_),_+this.chunk2.length>E.to&&(this.chunk2=this.chunk2.slice(0,E.to-_)),l=this.chunk2.charCodeAt(0)}}return _>=this.token.lookAhead&&(this.token.lookAhead=_+1),l}acceptToken(e,o=0){let _=o?this.resolveOffset(o,-1):this.pos;if(_==null||_<this.token.start)throw new RangeError("Token end out of bounds");this.token.value=e,this.token.end=_}getChunk(){if(this.pos>=this.chunk2Pos&&this.pos<this.chunk2Pos+this.chunk2.length){let{chunk:e,chunkPos:o}=this;this.chunk=this.chunk2,this.chunkPos=this.chunk2Pos,this.chunk2=e,this.chunk2Pos=o,this.chunkOff=this.pos-this.chunkPos}else{this.chunk2=this.chunk,this.chunk2Pos=this.chunkPos;let e=this.input.chunk(this.pos),o=this.pos+e.length;this.chunk=o>this.range.to?e.slice(0,this.range.to-this.pos):e,this.chunkPos=this.pos,this.chunkOff=0}}readNext(){return this.chunkOff>=this.chunk.length&&(this.getChunk(),this.chunkOff==this.chunk.length)?this.next=-1:this.next=this.chunk.charCodeAt(this.chunkOff)}advance(e=1){for(this.chunkOff+=e;this.pos+e>=this.range.to;){if(this.rangeIndex==this.ranges.length-1)return this.setDone();e-=this.range.to-this.pos,this.range=this.ranges[++this.rangeIndex],this.pos=this.range.from}return this.pos+=e,this.pos>=this.token.lookAhead&&(this.token.lookAhead=this.pos+1),this.readNext()}setDone(){return this.pos=this.chunkPos=this.end,this.range=this.ranges[this.rangeIndex=this.ranges.length-1],this.chunk="",this.next=-1}reset(e,o){if(o?(this.token=o,o.start=e,o.lookAhead=e+1,o.value=o.extended=-1):this.token=Hw,this.pos!=e){if(this.pos=e,e==this.end)return this.setDone(),this;for(;e<this.range.from;)this.range=this.ranges[--this.rangeIndex];for(;e>=this.range.to;)this.range=this.ranges[++this.rangeIndex];e>=this.chunkPos&&e<this.chunkPos+this.chunk.length?this.chunkOff=e-this.chunkPos:(this.chunk="",this.chunkOff=0),this.readNext()}return this}read(e,o){if(e>=this.chunkPos&&o<=this.chunkPos+this.chunk.length)return this.chunk.slice(e-this.chunkPos,o-this.chunkPos);if(e>=this.chunk2Pos&&o<=this.chunk2Pos+this.chunk2.length)return this.chunk2.slice(e-this.chunk2Pos,o-this.chunk2Pos);if(e>=this.range.from&&o<=this.range.to)return this.input.read(e,o);let _="";for(let l of this.ranges){if(l.from>=o)break;l.to>e&&(_+=this.input.read(Math.max(l.from,e),Math.min(l.to,o)))}return _}}class yE{constructor(e,o){this.data=e,this.id=o}token(e,o){let{parser:_}=o.p;_ee(this.data,e,o,this.id,_.data,_.tokenPrecTable)}}yE.prototype.contextual=yE.prototype.fallback=yE.prototype.extend=!1;yE.prototype.fallback=yE.prototype.extend=!1;class LS{constructor(e,o={}){this.token=e,this.contextual=!!o.contextual,this.fallback=!!o.fallback,this.extend=!!o.extend}}function _ee(t,e,o,_,l,c){let T=0,E=1<<_,{dialect:u}=o.p.parser;e:for(;E&t[T];){let d=t[T+1];for(let S=T+3;S<d;S+=2)if((t[S+1]&E)>0){let L=t[S];if(u.allows(L)&&(e.token.value==-1||e.token.value==L||lee(L,e.token.value,l,c))){e.acceptToken(L);break}}let O=e.next,h=0,I=t[T+2];if(e.next<0&&I>h&&t[d+I*3-3]==65535){T=t[d+I*3-1];continue e}for(;h<I;){let S=h+I>>1,L=d+S+(S<<1),p=t[L],C=t[L+1]||65536;if(O<p)I=S;else if(O>=C)h=S+1;else{T=t[L+2],e.advance();continue e}}break}}function xw(t,e,o){for(let _=e,l;(l=t[_])!=65535;_++)if(l==o)return _-e;return-1}function lee(t,e,o,_){let l=xw(o,_,e);return l<0||xw(o,_,t)<l}const hn=typeof process<"u"&&Gw&&/\bparse\b/.test(Gw.LOG);let DC=null;function Fw(t,e,o){let _=t.cursor(Vs.IncludeAnonymous);for(_.moveTo(e);;)if(!(o<0?_.childBefore(e):_.childAfter(e)))for(;;){if((o<0?_.to<e:_.from>e)&&!_.type.isError)return o<0?Math.max(0,Math.min(_.to-1,e-25)):Math.min(t.length,Math.max(_.from+1,e+25));if(o<0?_.prevSibling():_.nextSibling())break;if(!_.parent())return o<0?0:t.length}}class aee{constructor(e,o){this.fragments=e,this.nodeSet=o,this.i=0,this.fragment=null,this.safeFrom=-1,this.safeTo=-1,this.trees=[],this.start=[],this.index=[],this.nextFragment()}nextFragment(){let e=this.fragment=this.i==this.fragments.length?null:this.fragments[this.i++];if(e){for(this.safeFrom=e.openStart?Fw(e.tree,e.from+e.offset,1)-e.offset:e.from,this.safeTo=e.openEnd?Fw(e.tree,e.to+e.offset,-1)-e.offset:e.to;this.trees.length;)this.trees.pop(),this.start.pop(),this.index.pop();this.trees.push(e.tree),this.start.push(-e.offset),this.index.push(0),this.nextStart=this.safeFrom}else this.nextStart=1e9}nodeAt(e){if(e<this.nextStart)return null;for(;this.fragment&&this.safeTo<=e;)this.nextFragment();if(!this.fragment)return null;for(;;){let o=this.trees.length-1;if(o<0)return this.nextFragment(),null;let _=this.trees[o],l=this.index[o];if(l==_.children.length){this.trees.pop(),this.start.pop(),this.index.pop();continue}let c=_.children[l],T=this.start[o]+_.positions[l];if(T>e)return this.nextStart=T,null;if(c instanceof Ei){if(T==e){if(T<this.safeFrom)return null;let E=T+c.length;if(E<=this.safeTo){let u=c.prop(po.lookAhead);if(!u||E+u<this.fragment.to)return c}}this.index[o]++,T+c.length>=Math.max(this.safeFrom,e)&&(this.trees.push(c),this.start.push(T),this.index.push(0))}else this.index[o]++,this.nextStart=T+c.length}}}class cee{constructor(e,o){this.stream=o,this.tokens=[],this.mainToken=null,this.actions=[],this.tokens=e.tokenizers.map(_=>new OR)}getActions(e){let o=0,_=null,{parser:l}=e.p,{tokenizers:c}=l,T=l.stateSlot(e.state,3),E=e.curContext?e.curContext.hash:0,u=0;for(let d=0;d<c.length;d++){if(!(1<<d&T))continue;let O=c[d],h=this.tokens[d];if(!(_&&!O.fallback)&&((O.contextual||h.start!=e.pos||h.mask!=T||h.context!=E)&&(this.updateCachedToken(h,O,e),h.mask=T,h.context=E),h.lookAhead>h.end+25&&(u=Math.max(h.lookAhead,u)),h.value!=0)){let I=o;if(h.extended>-1&&(o=this.addActions(e,h.extended,h.end,o)),o=this.addActions(e,h.value,h.end,o),!O.extend&&(_=h,o>I))break}}for(;this.actions.length>o;)this.actions.pop();return u&&e.setLookAhead(u),!_&&e.pos==this.stream.end&&(_=new OR,_.value=e.p.parser.eofTerm,_.start=_.end=e.pos,o=this.addActions(e,_.value,_.end,o)),this.mainToken=_,this.actions}getMainToken(e){if(this.mainToken)return this.mainToken;let o=new OR,{pos:_,p:l}=e;return o.start=_,o.end=Math.min(_+1,l.stream.end),o.value=_==l.stream.end?l.parser.eofTerm:0,o}updateCachedToken(e,o,_){let l=this.stream.clipPos(_.pos);if(o.token(this.stream.reset(l,e),_),e.value>-1){let{parser:c}=_.p;for(let T=0;T<c.specialized.length;T++)if(c.specialized[T]==e.value){let E=c.specializers[T](this.stream.read(e.start,e.end),_);if(E>=0&&_.p.parser.dialect.allows(E>>1)){E&1?e.extended=E>>1:e.value=E>>1;break}}}else e.value=0,e.end=this.stream.clipPos(l+1)}putAction(e,o,_,l){for(let c=0;c<l;c+=3)if(this.actions[c]==e)return l;return this.actions[l++]=e,this.actions[l++]=o,this.actions[l++]=_,l}addActions(e,o,_,l){let{state:c}=e,{parser:T}=e.p,{data:E}=T;for(let u=0;u<2;u++)for(let d=T.stateSlot(c,u?2:1);;d+=3){if(E[d]==65535)if(E[d+1]==1)d=V_(E,d+2);else{l==0&&E[d+1]==2&&(l=this.putAction(V_(E,d+2),o,_,l));break}E[d]==o&&(l=this.putAction(V_(E,d+1),o,_,l))}return l}}class Tee{constructor(e,o,_,l){this.parser=e,this.input=o,this.ranges=l,this.recovering=0,this.nextStackID=9812,this.minStackPos=0,this.reused=[],this.stoppedAt=null,this.lastBigReductionStart=-1,this.lastBigReductionSize=0,this.bigReductionCount=0,this.stream=new ree(o,l),this.tokens=new cee(e,this.stream),this.topTerm=e.top[1];let{from:c}=l[0];this.stacks=[iee.start(this,e.top[0],c)],this.fragments=_.length&&this.stream.end-c>e.bufferLength*4?new aee(_,e.nodeSet):null}get parsedPos(){return this.minStackPos}advance(){let e=this.stacks,o=this.minStackPos,_=this.stacks=[],l,c;if(this.bigReductionCount>300&&e.length==1){let[T]=e;for(;T.forceReduce()&&T.stack.length&&T.stack[T.stack.length-2]>=this.lastBigReductionStart;);this.bigReductionCount=this.lastBigReductionSize=0}for(let T=0;T<e.length;T++){let E=e[T];for(;;){if(this.tokens.mainToken=null,E.pos>o)_.push(E);else{if(this.advanceStack(E,_,e))continue;{l||(l=[],c=[]),l.push(E);let u=this.tokens.getMainToken(E);c.push(u.value,u.end)}}break}}if(!_.length){let T=l&&gee(l);if(T)return hn&&console.log("Finish with "+this.stackID(T)),this.stackToTree(T);if(this.parser.strict)throw hn&&l&&console.log("Stuck with token "+(this.tokens.mainToken?this.parser.getName(this.tokens.mainToken.value):"none")),new SyntaxError("No parse at "+o);this.recovering||(this.recovering=5)}if(this.recovering&&l){let T=this.stoppedAt!=null&&l[0].pos>this.stoppedAt?l[0]:this.runRecovery(l,c,_);if(T)return hn&&console.log("Force-finish "+this.stackID(T)),this.stackToTree(T.forceAll())}if(this.recovering){let T=this.recovering==1?1:this.recovering*3;if(_.length>T)for(_.sort((E,u)=>u.score-E.score);_.length>T;)_.pop();_.some(E=>E.reducePos>o)&&this.recovering--}else if(_.length>1){e:for(let T=0;T<_.length-1;T++){let E=_[T];for(let u=T+1;u<_.length;u++){let d=_[u];if(E.sameState(d)||E.buffer.length>500&&d.buffer.length>500)if((E.score-d.score||E.buffer.length-d.buffer.length)>0)_.splice(u--,1);else{_.splice(T--,1);continue e}}}_.length>12&&_.splice(12,_.length-12)}this.minStackPos=_[0].pos;for(let T=1;T<_.length;T++)_[T].pos<this.minStackPos&&(this.minStackPos=_[T].pos);return null}stopAt(e){if(this.stoppedAt!=null&&this.stoppedAt<e)throw new RangeError("Can't move stoppedAt forward");this.stoppedAt=e}advanceStack(e,o,_){let l=e.pos,{parser:c}=this,T=hn?this.stackID(e)+" -> ":"";if(this.stoppedAt!=null&&l>this.stoppedAt)return e.forceReduce()?e:null;if(this.fragments){let d=e.curContext&&e.curContext.tracker.strict,O=d?e.curContext.hash:0;for(let h=this.fragments.nodeAt(l);h;){let I=this.parser.nodeSet.types[h.type.id]==h.type?c.getGoto(e.state,h.type.id):-1;if(I>-1&&h.length&&(!d||(h.prop(po.contextHash)||0)==O))return e.useNode(h,I),hn&&console.log(T+this.stackID(e)+` (via reuse of ${c.getName(h.type.id)})`),!0;if(!(h instanceof Ei)||h.children.length==0||h.positions[0]>0)break;let S=h.children[0];if(S instanceof Ei&&h.positions[0]==0)h=S;else break}}let E=c.stateSlot(e.state,4);if(E>0)return e.reduce(E),hn&&console.log(T+this.stackID(e)+` (via always-reduce ${c.getName(E&65535)})`),!0;if(e.stack.length>=8400)for(;e.stack.length>6e3&&e.forceReduce(););let u=this.tokens.getActions(e);for(let d=0;d<u.length;){let O=u[d++],h=u[d++],I=u[d++],S=d==u.length||!_,L=S?e:e.split(),p=this.tokens.mainToken;if(L.apply(O,h,p?p.start:L.pos,I),hn&&console.log(T+this.stackID(L)+` (via ${O&65536?`reduce of ${c.getName(O&65535)}`:"shift"} for ${c.getName(h)} @ ${l}${L==e?"":", split"})`),S)return!0;L.pos>l?o.push(L):_.push(L)}return!1}advanceFully(e,o){let _=e.pos;for(;;){if(!this.advanceStack(e,null,null))return!1;if(e.pos>_)return Vw(e,o),!0}}runRecovery(e,o,_){let l=null,c=!1;for(let T=0;T<e.length;T++){let E=e[T],u=o[T<<1],d=o[(T<<1)+1],O=hn?this.stackID(E)+" -> ":"";if(E.deadEnd&&(c||(c=!0,E.restart(),hn&&console.log(O+this.stackID(E)+" (restarted)"),this.advanceFully(E,_))))continue;let h=E.split(),I=O;for(let S=0;h.forceReduce()&&S<10&&(hn&&console.log(I+this.stackID(h)+" (via force-reduce)"),!this.advanceFully(h,_));S++)hn&&(I=this.stackID(h)+" -> ");for(let S of E.recoverByInsert(u))hn&&console.log(O+this.stackID(S)+" (via recover-insert)"),this.advanceFully(S,_);this.stream.end>E.pos?(d==E.pos&&(d++,u=0),E.recoverByDelete(u,d),hn&&console.log(O+this.stackID(E)+` (via recover-delete ${this.parser.getName(u)})`),Vw(E,_)):(!l||l.score<E.score)&&(l=E)}return l}stackToTree(e){return e.close(),Ei.build({buffer:fI.create(e),nodeSet:this.parser.nodeSet,topID:this.topTerm,maxBufferLength:this.parser.bufferLength,reused:this.reused,start:this.ranges[0].from,length:e.pos-this.ranges[0].from,minRepeatType:this.parser.minRepeatTerm})}stackID(e){let o=(DC||(DC=new WeakMap)).get(e);return o||DC.set(e,o=String.fromCodePoint(this.nextStackID++)),o+e}}function Vw(t,e){for(let o=0;o<e.length;o++){let _=e[o];if(_.pos==t.pos&&_.sameState(t)){e[o].score<t.score&&(e[o]=t);return}}e.push(t)}class Eee{constructor(e,o,_){this.source=e,this.flags=o,this.disabled=_}allows(e){return!this.disabled||this.disabled[e]==0}}const UC=t=>t;class uee{constructor(e){this.start=e.start,this.shift=e.shift||UC,this.reduce=e.reduce||UC,this.reuse=e.reuse||UC,this.hash=e.hash||(()=>0),this.strict=e.strict!==!1}}class mI extends tV{constructor(e){if(super(),this.wrappers=[],e.version!=14)throw new RangeError(`Parser version (${e.version}) doesn't match runtime version (14)`);let o=e.nodeNames.split(" ");this.minRepeatTerm=o.length;for(let E=0;E<e.repeatNodeCount;E++)o.push("");let _=Object.keys(e.topRules).map(E=>e.topRules[E][1]),l=[];for(let E=0;E<o.length;E++)l.push([]);function c(E,u,d){l[E].push([u,u.deserialize(String(d))])}if(e.nodeProps)for(let E of e.nodeProps){let u=E[0];typeof u=="string"&&(u=po[u]);for(let d=1;d<E.length;){let O=E[d++];if(O>=0)c(O,u,E[d++]);else{let h=E[d+-O];for(let I=-O;I>0;I--)c(E[d++],u,h);d++}}}this.nodeSet=new UP(o.map((E,u)=>sn.define({name:u>=this.minRepeatTerm?void 0:E,id:u,props:l[u],top:_.indexOf(u)>-1,error:u==0,skipped:e.skippedNodes&&e.skippedNodes.indexOf(u)>-1}))),e.propSources&&(this.nodeSet=this.nodeSet.extend(...e.propSources)),this.strict=!1,this.bufferLength=qF;let T=BM(e.tokenData);this.context=e.context,this.specializerSpecs=e.specialized||[],this.specialized=new Uint16Array(this.specializerSpecs.length);for(let E=0;E<this.specializerSpecs.length;E++)this.specialized[E]=this.specializerSpecs[E].term;this.specializers=this.specializerSpecs.map(Ww),this.states=BM(e.states,Uint32Array),this.data=BM(e.stateData),this.goto=BM(e.goto),this.maxTerm=e.maxTerm,this.tokenizers=e.tokenizers.map(E=>typeof E=="number"?new yE(T,E):E),this.topRules=e.topRules,this.dialects=e.dialects||{},this.dynamicPrecedences=e.dynamicPrecedences||null,this.tokenPrecTable=e.tokenPrec,this.termNames=e.termNames||null,this.maxNode=this.nodeSet.types.length-1,this.dialect=this.parseDialect(),this.top=this.topRules[Object.keys(this.topRules)[0]]}createParse(e,o,_){let l=new Tee(this,e,o,_);for(let c of this.wrappers)l=c(l,e,o,_);return l}getGoto(e,o,_=!1){let l=this.goto;if(o>=l[0])return-1;for(let c=l[o+1];;){let T=l[c++],E=T&1,u=l[c++];if(E&&_)return u;for(let d=c+(T>>1);c<d;c++)if(l[c]==e)return u;if(E)return-1}}hasAction(e,o){let _=this.data;for(let l=0;l<2;l++)for(let c=this.stateSlot(e,l?2:1),T;;c+=3){if((T=_[c])==65535)if(_[c+1]==1)T=_[c=V_(_,c+2)];else{if(_[c+1]==2)return V_(_,c+2);break}if(T==o||T==0)return V_(_,c+1)}return 0}stateSlot(e,o){return this.states[e*6+o]}stateFlag(e,o){return(this.stateSlot(e,0)&o)>0}validAction(e,o){return!!this.allActions(e,_=>_==o?!0:null)}allActions(e,o){let _=this.stateSlot(e,4),l=_?o(_):void 0;for(let c=this.stateSlot(e,1);l==null;c+=3){if(this.data[c]==65535)if(this.data[c+1]==1)c=V_(this.data,c+2);else break;l=o(V_(this.data,c+1))}return l}nextStates(e){let o=[];for(let _=this.stateSlot(e,1);;_+=3){if(this.data[_]==65535)if(this.data[_+1]==1)_=V_(this.data,_+2);else break;if(!(this.data[_+2]&1)){let l=this.data[_+1];o.some((c,T)=>T&1&&c==l)||o.push(this.data[_],l)}}return o}configure(e){let o=Object.assign(Object.create(mI.prototype),this);if(e.props&&(o.nodeSet=this.nodeSet.extend(...e.props)),e.top){let _=this.topRules[e.top];if(!_)throw new RangeError(`Invalid top rule name ${e.top}`);o.top=_}return e.tokenizers&&(o.tokenizers=this.tokenizers.map(_=>{let l=e.tokenizers.find(c=>c.from==_);return l?l.to:_})),e.specializers&&(o.specializers=this.specializers.slice(),o.specializerSpecs=this.specializerSpecs.map((_,l)=>{let c=e.specializers.find(E=>E.from==_.external);if(!c)return _;let T=Object.assign(Object.assign({},_),{external:c.to});return o.specializers[l]=Ww(T),T})),e.contextTracker&&(o.context=e.contextTracker),e.dialect&&(o.dialect=this.parseDialect(e.dialect)),e.strict!=null&&(o.strict=e.strict),e.wrap&&(o.wrappers=o.wrappers.concat(e.wrap)),e.bufferLength!=null&&(o.bufferLength=e.bufferLength),o}hasWrappers(){return this.wrappers.length>0}getName(e){return this.termNames?this.termNames[e]:String(e<=this.maxNode&&this.nodeSet.types[e].name||e)}get eofTerm(){return this.maxNode+1}get topNode(){return this.nodeSet.types[this.top[1]]}dynamicPrecedence(e){let o=this.dynamicPrecedences;return o==null?0:o[e]||0}parseDialect(e){let o=Object.keys(this.dialects),_=o.map(()=>!1);if(e)for(let c of e.split(" ")){let T=o.indexOf(c);T>=0&&(_[T]=!0)}let l=null;for(let c=0;c<o.length;c++)if(!_[c])for(let T=this.dialects[o[c]],E;(E=this.data[T++])!=65535;)(l||(l=new Uint8Array(this.maxTerm+1)))[E]=1;return new Eee(e,_,l)}static deserialize(e){return new mI(e)}}function V_(t,e){return t[e]|t[e+1]<<16}function gee(t){let e=null;for(let o of t){let _=o.p.stoppedAt;(o.pos==o.p.stream.end||_!=null&&o.pos>_)&&o.p.parser.stateFlag(o.state,2)&&(!e||e.score<o.score)&&(e=o)}return e}function Ww(t){if(t.external){let e=t.extend?1:0;return(o,_)=>t.external(o,_)<<1|e}return t.get}const dee=1,PW=206,vW=207,Oee=208,Xw=209,hee=210,Mee=211,Ree=212,Iee=2,See=213,pee=214,Lee=3,fee=215,mee=216,Cee=4,Aee=217,bee=218,Nee=5,Pee=219,vee=26,Dee=27,Uee=51,yee=52,$ee=57,Bee=58,wee=59,Gee=61,kee=62,Hee=63,xee=64,Fee=65,Vee=67,Wee=256,Xee=74,Yee=275,Kee=120,zee=138,Zee=159,jee=160,qee=163,vd=10,Dd=13,QP=32,fS=9,JP=35,Qee=40,Jee=46,Yw=123,DW=39,UW=34,ete=92,tte=new Set([Dee,Uee,yee,Yee,Vee,zee,Bee,wee,Wee,xee,Fee,Xee,kee,Hee,Zee,jee,qee,Kee]);function yC(t){return t==vd||t==Dd}const ote=new LS((t,e)=>{let o;if(t.next<0)t.acceptToken(Mee);else if(e.context.depth<0)yC(t.next)&&t.acceptToken(hee,1);else if(((o=t.peek(-1))<0||yC(o))&&e.canShift(Xw)){let _=0;for(;t.next==QP||t.next==fS;)t.advance(),_++;(t.next==vd||t.next==Dd||t.next==JP)&&t.acceptToken(Xw,-_)}else yC(t.next)&&t.acceptToken(Oee,1)},{contextual:!0}),ste=new LS((t,e)=>{let o=e.context.depth;if(o<0)return;let _=t.peek(-1);if(_==vd||_==Dd){let l=0,c=0;for(;;){if(t.next==QP)l++;else if(t.next==fS)l+=8-l%8;else break;t.advance(),c++}l!=o&&t.next!=vd&&t.next!=Dd&&t.next!=JP&&(l<o?t.acceptToken(vW,-c):t.acceptToken(PW))}});function Ab(t,e){this.parent=t,this.depth=e,this.hash=(t?t.hash+t.hash<<8:0)+e+(e<<4)}const ite=new Ab(null,0);function nte(t){let e=0;for(let o=0;o<t.length;o++)e+=t.charCodeAt(o)==fS?8-e%8:1;return e}const rte=new uee({start:ite,reduce(t,e){return t.depth<0&&tte.has(e)?t.parent:t},shift(t,e,o,_){return e==PW?new Ab(t,nte(_.read(_.pos,o.pos))):e==vW?t.parent:e==vee||e==$ee||e==Gee?new Ab(t,-1):t},hash(t){return t.hash}}),_te=new LS(t=>{for(let e=0;e<5;e++){if(t.next!="print".charCodeAt(e))return;t.advance()}if(!/\w/.test(String.fromCharCode(t.next)))for(let e=0;;e++){let o=t.peek(e);if(!(o==QP||o==fS)){o!=Qee&&o!=Jee&&o!=vd&&o!=Dd&&o!=JP&&t.acceptToken(dee);return}}});function mS(t,e,o,_,l){return new LS(c=>{let T=c.pos;for(;!(c.next<0);)if(c.next==Yw)if(c.peek(1)==Yw)c.advance(2);else{if(c.pos==T){c.acceptToken(_,1);return}break}else if(c.next==ete)c.advance(),c.next>=0&&c.advance();else if(c.next==t&&(e==1||c.peek(1)==t&&c.peek(2)==t)){if(c.pos==T){c.acceptToken(l,e);return}break}else c.advance();c.pos>T&&c.acceptToken(o)})}const lte=mS(DW,1,Ree,Iee,See),ate=mS(UW,1,pee,Lee,fee),cte=mS(DW,3,mee,Cee,Aee),Tte=mS(UW,3,bee,Nee,Pee),Ete=sV({'async "*" "**" FormatConversion FormatSpec':ut.modifier,"for while if elif else try except finally return raise break continue with pass assert await yield match case":ut.controlKeyword,"in not and or is del":ut.operatorKeyword,"from def class global nonlocal lambda":ut.definitionKeyword,import:ut.moduleKeyword,"with as print":ut.keyword,Boolean:ut.bool,None:ut.null,VariableName:ut.variableName,"CallExpression/VariableName":ut.function(ut.variableName),"FunctionDefinition/VariableName":ut.function(ut.definition(ut.variableName)),"ClassDefinition/VariableName":ut.definition(ut.className),PropertyName:ut.propertyName,"CallExpression/MemberExpression/PropertyName":ut.function(ut.propertyName),Comment:ut.lineComment,Number:ut.number,String:ut.string,FormatString:ut.special(ut.string),UpdateOp:ut.updateOperator,"ArithOp!":ut.arithmeticOperator,BitOp:ut.bitwiseOperator,CompareOp:ut.compareOperator,AssignOp:ut.definitionOperator,Ellipsis:ut.punctuation,At:ut.meta,"( )":ut.paren,"[ ]":ut.squareBracket,"{ }":ut.brace,".":ut.derefOperator,", ;":ut.separator}),ute={__proto__:null,await:48,or:58,and:60,in:64,not:66,is:68,if:74,else:76,lambda:80,yield:98,from:100,async:106,for:108,None:178,True:180,False:180,del:194,pass:198,break:202,continue:206,return:210,raise:218,import:222,as:224,global:228,nonlocal:230,assert:234,type:239,elif:252,while:256,try:262,except:264,finally:266,with:270,def:274,class:284,match:295,case:301},gte=mI.deserialize({version:14,states:"#)WO`Q#yOOP$bOSOOO%kQ&nO'#HhOOQS'#Cq'#CqOOQS'#Cr'#CrO'ZQ#xO'#CpO(|Q&nO'#HgOOQS'#Hh'#HhOOQS'#DW'#DWOOQS'#Hg'#HgO)jQ#xO'#DaO)}Q#xO'#DhO*_Q#xO'#DlOOQS'#Dw'#DwO*rO,UO'#DwO*zO7[O'#DwO+SOWO'#DxO+_O`O'#DxO+jOpO'#DxO+uO!bO'#DxO-wQ&nO'#HXOOQS'#HX'#HXO'ZQ#xO'#HWO/ZQ&nO'#HWOOQS'#Ej'#EjO/rQ#xO'#EkOOQS'#HV'#HVO/|Q#xO'#HUOOQV'#HU'#HUO0XQ#xO'#FbOOQS'#Gj'#GjO0^Q#xO'#FaOOQV'#I_'#I_OOQV'#HT'#HTOOQV'#Fy'#FyQ`Q#yOOO'ZQ#xO'#CsO0lQ#xO'#DPO0sQ#xO'#DTO1RQ#xO'#HlO1cQ&nO'#E_O'ZQ#xO'#E`OOQS'#Eb'#EbOOQS'#Ed'#EdOOQS'#Ef'#EfO1wQ#xO'#EhO2_Q#xO'#ElO0XQ#xO'#EnO2rQ&nO'#EnO0XQ#xO'#EqO/rQ#xO'#EtO0XQ#xO'#EvO/rQ#xO'#E|O/rQ#xO'#FPO2}Q#xO'#FRO3UQ#xO'#FWO3aQ#xO'#FSO/rQ#xO'#FWO0XQ#xO'#FYO0XQ#xO'#F_O3fQ#xO'#FdP3mO#xO'#HSPOOO)CBv)CBvOOQS'#Cg'#CgOOQS'#Ch'#ChOOQS'#Ci'#CiOOQS'#Cj'#CjOOQS'#Ck'#CkOOQS'#Cl'#ClOOQS'#Cn'#CnO'ZQ#xO,59QO'ZQ#xO,59QO'ZQ#xO,59QO'ZQ#xO,59QO'ZQ#xO,59QO'ZQ#xO,59QO3xQ#xO'#DqOOQS,5:[,5:[O4]Q#xO'#HvOOQS,5:_,5:_O4jQMlO,5:_O4oQ&nO,59[O0lQ#xO,59dO0lQ#xO,59dO0lQ#xO,59dO7_Q#xO,59dO7dQ#xO,59dO7kQ#xO,59lO7rQ#xO'#HgO8xQ#xO'#HfOOQS'#Hf'#HfOOQS'#D^'#D^O9aQ#xO,59cO'ZQ#xO,59cO9oQ#xO,59cOOQS,59{,59{O9tQ#xO,5:TO'ZQ#xO,5:TOOQS,5:S,5:SO:SQ#xO,5:SO:XQ#xO,5:ZO'ZQ#xO,5:ZO'ZQ#xO,5:XOOQS,5:W,5:WO:jQ#xO,5:WO:oQ#xO,5:YOOOO'#GR'#GRO:tO,UO,5:cOOQS,5:c,5:cOOOO'#GS'#GSO:|O7[O,5:cO;UQ#xO'#DyOOOW'#GT'#GTO;fOWO,5:dOOQS,5:d,5:dO;UQ#xO'#EPOOO`'#GW'#GWO;qO`O,5:dO;UQ#xO'#EROOOp'#GX'#GXO;|OpO,5:dO;UQ#xO'#ETOOO!b'#GY'#GYO<XO!bO,5:dOOQS'#GZ'#GZO<dQ&nO,5:qO?UQ&nO,5=rO?oQ!LUO,5=rO@`Q&nO,5=rOOQS,5;V,5;VO@wQ#yO'#GdOBZQ#xO,5;fOOQV,5=p,5=pOBfQ&nO'#IYOB}Q#xO,5;|OOQS-E:h-E:hOOQV,5;{,5;{O3[Q#xO'#FYOOQV-E9w-E9wOCVQ&nO,59_OE^Q&nO,59kOEwQ#xO'#HiOFSQ#xO'#HiO0XQ#xO'#HiOF_Q#xO'#DVOFgQ#xO,59oOFlQ#xO'#HmO'ZQ#xO'#HmO/rQ#xO,5>WOOQS,5>W,5>WO/rQ#xO'#EZOOQS'#E['#E[OGZQ#xO'#G]OGkQ#xO,59OOGkQ#xO,59OO)pQ#xO,5:wOGyQ&nO'#HoOOQS,5:z,5:zOOQS,5;S,5;SOH^Q#xO,5;WOHoQ#xO,5;YOOQS'#G`'#G`OH}Q&nO,5;YOI]Q#xO,5;YOIbQ#xO'#I]OOQS,5;],5;]OIpQ#xO'#IXOOQS,5;`,5;`OJRQ#xO,5;bO3aQ#xO,5;hO3aQ#xO,5;kOJZQ&nO'#I`O'ZQ#xO'#I`OJeQ#xO,5;mO2}Q#xO,5;mO/rQ#xO,5;rO0XQ#xO,5;tOJjQ#yO'#E}OKvQ#{O,5;nO! [Q#xO'#IaO3aQ#xO,5;rO! gQ#xO,5;tO! oQ#xO,5;yO! zQ&nO,5<OO'ZQ#xO,5<OPOOO,5=n,5=nP!!ROSO,5=nP!!WO#xO,5=nO!${Q&nO1G.lO!%SQ&nO1G.lO!'sQ&nO1G.lO!'}Q&nO1G.lO!*hQ&nO1G.lO!*{Q&nO1G.lO!+`Q#xO'#HuO!+nQ&nO'#HXO/rQ#xO'#HuO!+xQ#xO'#HtOOQS,5:],5:]O!,QQ#xO,5:]O!,VQ#xO'#HwO!,bQ#xO'#HwO!,uQ#xO,5>bOOQS'#Du'#DuOOQS1G/y1G/yOOQS1G/O1G/OO!-uQ&nO1G/OO!-|Q&nO1G/OO0lQ#xO1G/OO!.iQ#xO1G/WOOQS'#D]'#D]O/rQ#xO,59vOOQS1G.}1G.}O!.pQ#xO1G/gO!/QQ#xO1G/gO!/YQ#xO1G/hO'ZQ#xO'#HnO!/_Q#xO'#HnO!/dQ&nO1G.}O!/tQ#xO,59kO!0zQ#xO,5>^O!1[Q#xO,5>^O!1dQ#xO1G/oO!1iQ&nO1G/oOOQS1G/n1G/nO!1yQ#xO,5>XO!2pQ#xO,5>XO/rQ#xO1G/sO!3_Q#xO1G/uO!3dQ&nO1G/uO!3tQ&nO1G/sOOQS1G/r1G/rOOQS1G/t1G/tOOOO-E:P-E:POOQS1G/}1G/}OOOO-E:Q-E:QO!4UQ#xO'#IRO/rQ#xO'#IRO!4gQ#xO,5:eOOOW-E:R-E:ROOQS1G0O1G0OO!4uQ#xO,5:kOOO`-E:U-E:UO!5TQ#xO,5:mOOOp-E:V-E:VO!5cQ#xO,5:oOOO!b-E:W-E:WOOQS-E:X-E:XO!5qQ!LUO1G3^O!6bQ&nO1G3^O'ZQ#xO,5<vOOQS,5<v,5<vOOQS-E:Y-E:YOOQS,5=O,5=OOOQS-E:b-E:bOOQV1G1Q1G1QO0XQ#xO'#G_O!6yQ&nO,5>tOOQS1G1h1G1hO!7bQ#xO1G1hOOQS'#DX'#DXO/rQ#xO,5>TOOQS,5>T,5>TO!7gQ#xO'#FzO!7rQ#xO,59qO!7zQ#xO1G/ZO!8UQ&nO,5>XOOQS1G3r1G3rOOQS,5:u,5:uO!8uQ#xO'#HWOOQS,5<w,5<wOOQS-E:Z-E:ZO!9WQ#xO1G.jOOQS1G0c1G0cO!9fQ#xO,5>ZO!9vQ#xO,5>ZO/rQ#xO1G0rO/rQ#xO1G0rO0XQ#xO1G0tOOQS-E:^-E:^O!:XQ#xO1G0tO!:dQ#xO1G0tO!:iQ#xO,5>wO!:wQ#xO,5>wO!;VQ#xO,5>sO!;mQ#xO,5>sO!<OQ#xO'#ExO/rQ#xO1G0|O!<ZQ#xO1G0|O!<`Q#{O1G1SO!?qQ#{O1G1VO!CPQ#xO,5>zO!CZQ#xO,5>zO!CcQ&nO,5>zO/rQ#xO1G1XO!CmQ#xO1G1XO3aQ#xO1G1^O! gQ#xO1G1`OOQV,5;i,5;iO!CrQ#zO,5;iO!CwQ#{O1G1YO!G]Q#xO'#GgO3aQ#xO1G1YO3aQ#xO1G1YO!GmQ#xO,5>{O!GzQ#xO,5>{O0XQ#xO,5>{OOQV1G1^1G1^O!HSQ#xO'#F[O!HeQMlO1G1`O!HmQ#xO1G1`OOQV1G1e1G1eO3aQ#xO1G1eO!HrQ#xO1G1eO!HzQ#xO'#FfOOQV1G1j1G1jO! zQ&nO1G1jPOOO1G3Y1G3YP!IPOSO1G3YOOQS,5>a,5>aOOQS'#Dr'#DrO/rQ#xO,5>aO!IUQ#xO,5>`O!IiQ#xO,5>`OOQS1G/w1G/wO!IqQ#xO,5>cO!JRQ#xO,5>cO!JZQ#xO,5>cO!JnQ#xO,5>cO!KOQ#xO,5>cOOQS1G3|1G3|OOQS7+$j7+$jO!7zQ#xO7+$rO!LqQ#xO1G/OO!LxQ#xO1G/OOOQS1G/b1G/bOOQS,5<h,5<hO'ZQ#xO,5<hOOQS7+%R7+%RO!MPQ#xO7+%ROOQS-E9z-E9zOOQS7+%S7+%SO!MaQ#xO,5>YO'ZQ#xO,5>YOOQS7+$i7+$iO!MfQ#xO7+%RO!MnQ#xO7+%SO!MsQ#xO1G3xOOQS7+%Z7+%ZO!NTQ#xO1G3xO!N]Q#xO7+%ZOOQS,5<g,5<gO'ZQ#xO,5<gO!NbQ#xO1G3sOOQS-E9y-E9yO# XQ#xO7+%_OOQS7+%a7+%aO# gQ#xO1G3sO#!UQ#xO7+%aO#!ZQ#xO1G3yO#!kQ#xO1G3yO#!sQ#xO7+%_O#!xQ#xO,5>mO##cQ#xO,5>mO##cQ#xO,5>mOOQS'#Dz'#DzO##tO$ISO'#D|O#$PO#tO'#ISOOOW1G0P1G0PO#$UQ#xO1G0PO#$^Q#xO1G0POOQS'#EQ'#EQOOO`1G0V1G0VO#$iQ#xO1G0VO#$qQ#xO1G0VOOQS'#ES'#ESOOOp1G0X1G0XO#$|Q#xO1G0XO#%UQ#xO1G0XOOQS'#EU'#EUOOO!b1G0Z1G0ZO#%aQ#xO1G0ZO#%iQ#xO1G0ZO#%tQ!LUO7+(xO#&eQ&nO1G2bP#'OQ#xO'#G[OOQS,5<y,5<yOOQS-E:]-E:]OOQS7+'S7+'SOOQS1G3o1G3oOOQS,5<f,5<fOOQS-E9x-E9xOOQS7+$u7+$uO#']Q#xO,5=rO#'vQ#xO,5=rO#(XQ&nO,5<iO#(lQ#xO1G3uOOQS-E9{-E9{OOQS7+&^7+&^O#(|Q#xO7+&^OOQS7+&`7+&`O#)[Q#xO'#I[O0XQ#xO'#IZO#)pQ#xO7+&`OOQS,5<|,5<|O#){Q#xO1G4cOOQS-E:`-E:`OOQS,5<x,5<xO#*ZQ#xO1G4_OOQS-E:[-E:[O0XQ#xO'#EyO#*qQ#xO'#EyO#*|Q#xO'#I^O#+UQ#xO,5;dOOQS7+&h7+&hO/rQ#xO7+&hO#+ZQ#{O7+&nO!G`Q#xO'#GeO3aQ#xO7+&nO3aQ#xO7+&qO#.lQ&nO,5=QO'ZQ#xO,5=QO#.vQ#xO1G4fOOQS-E:d-E:dO#/QQ#xO1G4fO3aQ#xO7+&sO/rQ#xO7+&sOOQV7+&x7+&xO!HeQMlO7+&zO!HmQ#xO7+&zO`Q#yO1G1TOOQV-E:e-E:eO3aQ#xO7+&tO3aQ#xO7+&tOOQV,5=R,5=RO#/YQ#xO,5=RO!G`Q#xO,5=ROOQV7+&t7+&tO#/eQ#{O7+&tO#2sQ#xO,5=SO#3OQ#xO1G4gOOQS-E:f-E:fO#3]Q#xO1G4gO#3eQ#xO'#IcO#3sQ#xO'#IcO0XQ#xO'#IcOOQS'#Ic'#IcO#4OQ#xO'#IbOOQS,5;v,5;vO#4WQ#xO,5;vO/rQ#xO'#F^OOQV7+&z7+&zO3aQ#xO7+&zOOQV7+'P7+'PO3aQ#xO7+'PO#4]Q#zO,5<QOOQV7+'U7+'UPOOO7+(t7+(tO#4bQ#xO1G3{OOQS,5<k,5<kO#4pQ#xO1G3zOOQS-E9}-E9}O#5TQ#xO,5<lO#5`Q#xO,5<lO#5sQ#xO1G3}OOQS-E:O-E:OO#6TQ#xO1G3}O#6]Q#xO1G3}O#6mQ#xO1G3}O#6TQ#xO1G3}OOQS<<H^<<H^O#6xQ&nO1G2SOOQS<<Hm<<HmP#7VQ#xO'#F|O7kQ#xO1G3tO#7dQ#xO1G3tO#7iQ#xO<<HmOOQS<<Hn<<HnO#7yQ#xO7+)dOOQS<<Hu<<HuO#8ZQ&nO1G2RP#8zQ#xO'#F{O#9XQ#xO7+)eO#9iQ#xO7+)eO#9qQ#xO<<HyO#9vQ#xO7+)_OOQS<<H{<<H{O#:mQ#xO,5<jO'ZQ#xO,5<jOOQS-E9|-E9|OOQS<<Hy<<HyOOQS,5<p,5<pO/rQ#xO,5<pO#:rQ#xO1G4XOOQS-E:S-E:SO#;]Q#xO1G4XO;UQ#xO'#D}OOOO'#GV'#GVO#;nO$ISO,5:hOOO#l,5>n,5>nOOOW7+%k7+%kO#;yQ#xO7+%kOOO`7+%q7+%qO#<RQ#xO7+%qOOOp7+%s7+%sO#<ZQ#xO7+%sOOO!b7+%u7+%uO#<cQ#xO7+%uO#<kQ#xO1G3^O#=UQ#xO1G3^P'ZQ#xO'#F}O/rQ#xO<<IxO#=gQ#xO,5>vO#=xQ#xO,5>vO0XQ#xO,5>vO#>ZQ#xO,5>uOOQS<<Iz<<IzP0XQ#xO'#GbP/rQ#xO'#G^OOQS,5;e,5;eO#>`Q#xO,5>xO#>nQ#xO,5>xOOQS1G1O1G1OOOQS<<JS<<JSOOQV-E:c-E:cO3aQ#xO<<JYOOQV,5=P,5=PO3aQ#xO,5=POOQV<<JY<<JYOOQV<<J]<<J]O#>vQ&nO1G2lP#?QQ#xO'#GfO#?XQ#xO7+*QO#?cQ#{O<<J_O3aQ#xO<<J_OOQV<<Jf<<JfO3aQ#xO<<JfO!HeQMlO<<JfO#BqQ#{O7+&oOOQV<<J`<<J`O#B{Q#{O<<J`OOQV1G2m1G2mO0XQ#xO1G2mO#FZQ#xO1G2mO3aQ#xO<<J`O0XQ#xO1G2nP/rQ#xO'#GhO#FfQ#xO7+*RO#FsQ#xO7+*ROOQS'#F]'#F]O/rQ#xO,5>}O#F{Q#xO,5>}OOQS,5>},5>}O#GWQ#xO,5>|O#GiQ#xO,5>|OOQS1G1b1G1bOOQS,5;x,5;xOOQV<<Jk<<JkO#GqQ#xO1G1lOOQS7+)g7+)gP#GvQ#xO'#GPO#HWQ#xO1G2WO#HkQ#xO1G2WO#H{Q#xO1G2WP#IWQ#xO'#GQO#IeQ#xO7+)iO#IuQ#xO7+)iO#IuQ#xO7+)iO#I}Q#xO7+)iO#J_Q#xO7+)`O7kQ#xO7+)`OOQSAN>XAN>XO#JxQ#xO<<MPOOQSAN>eAN>eO/rQ#xO1G2UO#KYQ&nO1G2UP#KdQ#xO'#GOOOQS1G2[1G2[P#KqQ#xO'#GUO#LOQ#xO7+)sO#LiQ#xO,5:iOOOO-E:T-E:TOOOW<<IV<<IVOOO`<<I]<<I]OOOp<<I_<<I_OOO!b<<Ia<<IaO#LwQ#xO7+(xOOQSAN?dAN?dO#MbQ#xO,5<{O#MvQ#xO1G4bOOQS-E:_-E:_O#NXQ#xO1G4bOOQS1G4a1G4aOOQS,5<},5<}O#NjQ#xO1G4dOOQS-E:a-E:aOOQVAN?tAN?tOOQV1G2k1G2kO3aQ#xOAN?yO#NxQ#{OAN?yOOQVAN@QAN@QO3aQ#xOAN@QOOQV<<JZ<<JZO3aQ#xOAN?zO3aQ#xO7+(XOOQV7+(X7+(XO0XQ#xO7+(XOOQVAN?zAN?zOOQS7+(Y7+(YO$$WQ#xO<<MmOOQS1G4i1G4iO/rQ#xO1G4iOOQS,5=T,5=TO$$eQ#xO1G4hOOQS-E:g-E:gOOQU'#Gk'#GkO$$vQ#zO7+'WO$%RQ#xO'#FgO$%yQ#xO7+'rO$&ZQ#xO7+'rOOQS7+'r7+'rO$&fQ#xO<<MTO$&vQ#xO<<MTO$&vQ#xO<<MTO$'OQ#xO'#HpOOQS<<Lz<<LzO$'YQ#xO<<LzOOQS7+'p7+'pOOQS'#EO'#EOOOOO1G0T1G0TO$'sQ#xO1G0TO$'{Q#xO1G0TO0XQ#xO1G2gP0XQ#xO'#GaO$(WQ#xO7+)|O$(iQ#xO7+)|P!<OQ#xO'#GcOOQVG25eG25eO3aQ#xOG25eOOQVG25lG25lOOQVG25fG25fOOQV<<Ks<<KsO3aQ#xO<<KsOOQS7+*T7+*TP$(zQ#xO'#GiOOQU-E:i-E:iOOQV<<Jr<<JrO$)nQ&nO'#FiOOQS'#Fk'#FkO$*OQ#xO'#FjO$*pQ#xO'#FjOOQS'#Fj'#FjO$*uQ#xO'#IeO$%RQ#xO'#FqO$%RQ#xO'#FqO$+^Q#xO'#FrO$%RQ#xO'#FsO$+eQ#xO'#IfOOQS'#If'#IfO$,SQ#xO,5<ROOQS<<K^<<K^O$,[Q#xO<<K^O$,lQ#xOANBoO$,|Q#xOANBoO$-UQ#xO'#HqOOQS'#Hq'#HqO0sQ#xO'#DeO$-oQ#xO,5>[OOQSANBfANBfOOOO7+%o7+%oO$.WQ#xO7+%oOOQS7+(R7+(RO$.`Q#xO<<MhOOQVLD+PLD+POOQVANA_ANA_O4jQMlO'#GmO$.qQ&nO,5<[O$%RQ#xO'#FuOOQS,5<`,5<`OOQS'#Fl'#FlO$/cQ#xO,5<UO$/hQ#xO,5<UOOQS'#Fo'#FoO$%RQ#xO'#GlO$0YQ#xO,5<YO$0tQ#xO,5?PO$1UQ#xO,5?PO0XQ#xO,5<XO$1gQ#xO,5<]O$1lQ#xO,5<]O$%RQ#xO'#IgO$1qQ#xO'#IgO$1vQ#xO,5<^OOQS,5<_,5<_O'ZQ#xO'#FxOOQU1G1m1G1mO3aQ#xO1G1mOOQSAN@xAN@xO$1{Q#xOG28ZO$2]Q#xO,5:POOQS1G3v1G3vOOOO<<IZ<<IZOOQS,5=X,5=XOOQS-E:k-E:kO$2bQ&nO'#FiO$2iQ#xO'#IhO$2wQ#xO'#IhO$3PQ#xO,5<aOOQS1G1p1G1pO$3UQ#xO1G1pO$3ZQ#xO,5=WOOQS-E:j-E:jO$3uQ#xO,5=[O$4^Q#xO1G4kOOQS-E:n-E:nOOQS1G1s1G1sOOQS1G1w1G1wO$4nQ#xO,5?RO$%RQ#xO,5?ROOQS1G1x1G1xO$4|Q&nO,5<dOOQU7+'X7+'XO$'OQ#xO1G/kO$%RQ#xO,5<bO$5TQ#xO,5?SO$5[Q#xO,5?SOOQS1G1{1G1{OOQS7+'[7+'[P$%RQ#xO'#GpO$5dQ#xO1G4mO$5nQ#xO1G4mO$5vQ#xO1G4mOOQS7+%V7+%VO$6UQ#xO1G1|O$6dQ&nO'#FiO$6kQ#xO,5=ZOOQS,5=Z,5=ZO$6yQ#xO1G4nOOQS-E:m-E:mO$%RQ#xO,5=YO$7QQ#xO,5=YO$7VQ#xO7+*XOOQS-E:l-E:lO$7aQ#xO7+*XO$%RQ#xO,5<cP$%RQ#xO'#GoO$7iQ#xO1G2tO$%RQ#xO1G2tP$7wQ#xO'#GnO$8OQ#xO<<MsO$8YQ#xO1G1}O$8hQ#xO7+(`O7kQ#xO'#DPO7kQ#xO,59dO7kQ#xO,59dO7kQ#xO,59dO$8vQ&nO,5=rO7kQ#xO1G/OO/rQ#xO1G/ZO/rQ#xO7+$rP$9ZQ#xO'#G[O'ZQ#xO'#HWO$9hQ#xO,59dO$9mQ#xO,59dO$9tQ#xO,59oO$9yQ#xO1G/WO0sQ#xO'#DTO7kQ#xO,59l",stateData:"$:[~O%uOS%jOSUOS%iPQ~OPiOXfOhtOjYOquOu!UOxvO!RwO!S!QO!V!XO!W!WO!ZZO!_[O!jeO!zeO!{eO!|eO#TyO#VzO#X{O#Z|O#]}O#a!OO#c!PO#f!RO#g!RO#i!SO#k!TO#t!VO#w!YO#{!ZO#}![O$S!]O$VmO$X!^O&RRO&SRO&WSO&XWO&m]O&n^O&q_O&t`O&xaO&ybO&zcO~O%i!_O~OX!fOa!fOc!gOj!nO!Z!pO!h!rO%|!aO%}!bO&O!cO&P!dO&Q!dO&R!eO&S!eO&T!fO&U!fO&V!fO~Om&[Xn&[Xo&[Xp&[Xq&[Xr&[Xu&[X|&[X}&[X#Q&[X#o&[X%h&[X%k&[X&^&[Xi&[X!V&[X!W&[X&_&[X!Y&[X!^&[X!S&[X#d&[Xv&[X!o&[X~P$gOhtOjYO!ZZO!_[O!jeO!zeO!{eO!|eO&RRO&SRO&WSO&XWO&m]O&n^O&q_O&t`O&xaO&ybO&zcO~O|&ZX}&ZX#o&ZX%h&ZX%k&ZX&^&ZX~Om!uOn!vOo!tOp!tOq!wOr!xOu!yO#Q&ZX~P(hOX#POi#ROq1`Ox1nO!RwO~P'ZOX#TOq1`Ox1nO!Y#UO~P'ZOX#XOc#YOq1`Ox1nO!^#ZO~P'ZO&o#^O&p#`O~O&r#aO&s#`O~OQ#cO%l#dO%m#fO~OR#gO%n#hO%o#fO~OS#jO%p#kO%q#fO~OT#mO%r#nO%s#fO~OX%{Xa%{Xc%{Xj%{Xm%{Xn%{Xo%{Xp%{Xq%{Xr%{Xu%{X|%{X!Z%{X!h%{X%|%{X%}%{X&O%{X&P%{X&Q%{X&R%{X&S%{X&T%{X&U%{X&V%{Xi%{X!V%{X!W%{X~O&m]O&n^O&q_O&t`O&xaO&ybO&zcO}%{X#Q%{X#o%{X%h%{X%k%{X&^%{X&_%{X!Y%{X!^%{X!S%{X#d%{Xv%{X!o%{X~P,QO|#sO}%zX#Q%zX#o%zX%h%zX%k%zX&^%zX~Oq1`Ox1nO~P'ZO#o#vO%h#xO%k#xO~O&XWO~O!V#}O#}![O$S!]O$VmO~OquO~P'ZOX$SOc$TO&XWO}yP~OX$XOq1`Ox1nO!S$YO~P'ZO}$[O#Q$aO&^$]O#o#RX%h#RX%k#RX~OX$XOq1`Ox1nO#o#[X%h#[X%k#[X~P'ZOq1`Ox1nO#o#`X%h#`X%k#`X~P'ZO!h$gO!z$gO&XWO~OX$rO~P'ZO!W$tO#{$uO#}$vO~O}$wO~OX%OO~P'ZOU%QO%h%PO%u%RO~OX%[Oc%[Oi%^Oq1`Ox1nO~P'ZOq1`Ox1nO}%aO~P'ZO&l%cO~Oc!gOj!nO!Z!pO!h!rOXdaadamdandaodapdaqdardauda|da}da#Qda#oda%hda%kda%|da%}da&Oda&Pda&Qda&Rda&Sda&Tda&Uda&Vda&^daida!Vda!Wda&_da!Yda!^da!Sda#ddavda!oda~Op%hO~Oq%hO~P'ZOq1`O~P'ZOm1bOn1cOo1aOp1aOq1jOr1kOu1oOi&ZX!V&ZX!W&ZX&_&ZX!Y&ZX!^&ZX!S&ZX#d&ZX!o&ZX~P(hO&_%jOi&YX|&YX!V&YX!W&YX!Y&YX}&YX~Oi%lO|%mO!V%qO!W%pO~Oi%lO~O|%tO!V%qO!W%pO!Y&fX~O!Y%xO~O|%yO}%{O!V%qO!W%pO!^&aX~O!^&PO~O!^&QO~O&o#^O&p&SO~O&r#aO&s&SO~OX&VOq1`Ox1nO!RwO~P'ZOQ#cO%l#dO%m&YO~OR#gO%n#hO%o&YO~OS#jO%p#kO%q&YO~OT#mO%r#nO%s&YO~OX!yaa!yac!yaj!yam!yan!yao!yap!yaq!yar!yau!ya|!ya}!ya!Z!ya!h!ya#Q!ya#o!ya%h!ya%k!ya%|!ya%}!ya&O!ya&P!ya&Q!ya&R!ya&S!ya&T!ya&U!ya&V!ya&^!yai!ya!V!ya!W!ya&_!ya!Y!ya!^!ya!S!ya#d!yav!ya!o!ya~P#yO|&bO}%za#Q%za#o%za%h%za%k%za&^%za~P$gOX&dOquOxvO}%za#Q%za#o%za%h%za%k%za&^%za~P'ZO|&bO}%za#Q%za#o%za%h%za%k%za&^%za~OPiOXfOquOxvO!RwO!S!QO#TyO#VzO#X{O#Z|O#]}O#a!OO#c!PO#f!RO#g!RO#i!SO#k!TO#o%WX%h%WX%k%WX~P'ZO#o#vO%h&iO%k&iO~O!h&jOj&|X%h&|X#d&|X#o&|X%k&|X#c&|X~Oj!nO%h&lO~Omgangaogapgaqgargauga|ga}ga#Qga#oga%hga%kga&^gaiga!Vga!Wga&_ga!Yga!^ga!Sga#dgavga!oga~P$gOusa|sa}sa#osa%hsa%ksa&^sa~Om!uOn!vOo!tOp!tOq!wOr!xO#Qsa~PDuO&^&nO|&]X}&]X~O&XWO|&]X}&]X~O|&qO}yX~O}&sO~O|%yO#o&aX%h&aX%k&aXi&aX}&aX!^&aX!o&aX&^&aX~OX1iOq1`Ox1nO!RwO~P'ZO&^$]O#oWa%hWa%kWa~O|&|O#o&cX%h&cX%k&cXp&cX~P$gO|'PO!S'OO#o#`a%h#`a%k#`a~O#d'QO#o#ba%h#ba%k#ba~O!h$gO!z$gO#c'SO&XWO~O#c'SO~O|'UO#o'PX%h'PX%k'PX~O|'WO#o&{X%h&{X%k&{X}&{X~O!Z'YO&^'ZO~O|'_Op'SX~P$gOp'bO~OPiOXfOquOxvO!RwO!S!QO#TyO#VzO#X{O#Z|O#]}O#a!OO#c!PO#f!RO#g!RO#i!SO#k!TO%h'gO~P'ZOv'kO#x'iO#y'jOP#vaX#vah#vaj#vaq#vau#vax#va!R#va!S#va!V#va!W#va!Z#va!_#va!j#va!z#va!{#va!|#va#T#va#V#va#X#va#Z#va#]#va#a#va#c#va#f#va#g#va#i#va#k#va#t#va#w#va#{#va#}#va$S#va$V#va$X#va%e#va&R#va&S#va&W#va&X#va&m#va&n#va&q#va&t#va&x#va&y#va&z#va%g#va%k#va~O|'lO#d'nO}'TX~Oj'pO!Z'YO~Oj!nO}$wO!Z'YO~O}'vO~P$gO%h'yO~OU'zO%h'yO~OX!fOa!fOc!gOj!nO!Z!pO!h!rO&O!cO&P!dO&Q!dO&R!eO&S!eO&T!fO&U!fO&V!fOmYinYioYipYiqYirYiuYi|Yi}Yi#QYi#oYi%hYi%kYi%|Yi&^YiiYi!VYi!WYi&_Yi!YYi!^Yi!SYi#dYivYi!oYi~O%}!bO~P!!`O%}Yi~P!!`OX!fOa!fOc!gOj!nO!Z!pO!h!rO&R!eO&S!eO&T!fO&U!fO&V!fOmYinYioYipYiqYirYiuYi|Yi}Yi#QYi#oYi%hYi%kYi%|Yi%}Yi&OYi&^YiiYi!VYi!WYi&_Yi!YYi!^Yi!SYi#dYivYi!oYi~O&P!dO&Q!dO~P!%ZO&PYi&QYi~P!%ZOc!gOj!nO!Z!pO!h!rOmYinYioYipYiqYirYiuYi|Yi}Yi#QYi#oYi%hYi%kYi%|Yi%}Yi&OYi&PYi&QYi&RYi&SYi&^YiiYi!VYi!WYi&_Yi!YYi!^Yi!SYi#dYivYi!oYi~OX!fOa!fO&T!fO&U!fO&V!fO~P!(XOXYiaYi&TYi&UYi&VYi~P!(XO!V%qO!W%pOi&iX|&iX~O&^'|O&_'|O~P,QO|(OOi&hX~Oi(QO~O|(RO}(TO!Y&kX~Oq1`Ox1nO|(RO}(UO!Y&kX~P'ZO!Y(WO~Oo!tOp!tOq!wOr!xOmliuli|li}li#Qli#oli%hli%kli&^li~On!vO~P!,zOnli~P!,zOm1bOn1cOo1aOp1aOq1jOr1kO~Ov(YO~P!.TOX(_Oi(`Oq1`Ox1nO~P'ZOi(`O|(aO~Oi(cO~O!W(eO~Oi(fO|(aO!V%qO!W%pO~P$gOm1bOn1cOo1aOp1aOq1jOr1kOisa!Vsa!Wsa&_sa!Ysa!^sa!Ssa#dsavsa!osa~PDuOX(_Oq1`Ox1nO!Y&fa~P'ZO|(iO!Y&fa~O!Y(jO~O|(iO!V%qO!W%pO!Y&fa~P$gOX(nOq1`Ox1nO!^&aa#o&aa%h&aa%k&aai&aa}&aa!o&aa&^&aa~P'ZO|(oO!^&aa#o&aa%h&aa%k&aai&aa}&aa!o&aa&^&aa~O!^(rO~O|(oO!V%qO!W%pO!^&aa~P$gO|(uO!V%qO!W%pO!^&ga~P$gO|(xO}&uX!^&uX!o&uX&^&uX~O}(|O!^)OO!o)PO&^({O~O}(|O!^)SO!o)TO&^)RO~O}(|O!^)WO!o)XO&^)VO~O}(|O!^)[O!o)]O&^)ZO~OX&dOquOxvO}%zi#Q%zi#o%zi%h%zi%k%zi&^%zi~P'ZO|)_O}%zi#Q%zi#o%zi%h%zi%k%zi&^%zi~O!h&jOj&|a%h&|a#d&|a#o&|a%k&|a#c&|a~O%h)dO~OX$SOc$TO&XWO~O|&qO}ya~OquOxvO~P'ZO|(oO#o&aa%h&aa%k&aai&aa}&aa!^&aa!o&aa&^&aa~P$gO|)iO#o%zX%h%zX%k%zX&^%zX~O&^$]O#oWi%hWi%kWi~O#o&ca%h&ca%k&cap&ca~P'ZO|)lO#o&ca%h&ca%k&cap&ca~OX)pOj)rO&XWO~O#c)sO~O&XWO#o'Pa%h'Pa%k'Pa~O|)uO#o'Pa%h'Pa%k'Pa~Oq1`Ox1nO#o&{a%h&{a%k&{a}&{a~P'ZO|)xO#o&{a%h&{a%k&{a}&{a~OX)zOc)zO&XWO~O&^*PO~Ov*SO#r*ROP#piX#pih#pij#piq#piu#pix#pi!R#pi!S#pi!V#pi!W#pi!Z#pi!_#pi!j#pi!z#pi!{#pi!|#pi#T#pi#V#pi#X#pi#Z#pi#]#pi#a#pi#c#pi#f#pi#g#pi#i#pi#k#pi#t#pi#w#pi#{#pi#}#pi$S#pi$V#pi$X#pi%e#pi&R#pi&S#pi&W#pi&X#pi&m#pi&n#pi&q#pi&t#pi&x#pi&y#pi&z#pi%g#pi%k#pi~Ov*TOP#siX#sih#sij#siq#siu#six#si!R#si!S#si!V#si!W#si!Z#si!_#si!j#si!z#si!{#si!|#si#T#si#V#si#X#si#Z#si#]#si#a#si#c#si#f#si#g#si#i#si#k#si#t#si#w#si#{#si#}#si$S#si$V#si$X#si%e#si&R#si&S#si&W#si&X#si&m#si&n#si&q#si&t#si&x#si&y#si&z#si%g#si%k#si~OX*VOp'Sa~P'ZO|*WOp'Sa~O|*WOp'Sa~P$gOp*[O~O%f*`O~Ov*cO#x'iO#y*bOP#viX#vih#vij#viq#viu#vix#vi!R#vi!S#vi!V#vi!W#vi!Z#vi!_#vi!j#vi!z#vi!{#vi!|#vi#T#vi#V#vi#X#vi#Z#vi#]#vi#a#vi#c#vi#f#vi#g#vi#i#vi#k#vi#t#vi#w#vi#{#vi#}#vi$S#vi$V#vi$X#vi%e#vi&R#vi&S#vi&W#vi&X#vi&m#vi&n#vi&q#vi&t#vi&x#vi&y#vi&z#vi%g#vi%k#vi~OX*fOq1`Ox1nO}$wO~P'ZOq1`Ox1nO}'Ta~P'ZO|*jO}'Ta~OX*nOc*oOi*rO&T*pO&XWO~O}$wO'W*tO~Oj'pO~Oj!nO}$wO~O%h*yO~O%h*{O~OX%[Oc%[Oq1`Ox1nOi&ha~P'ZO|+OOi&ha~Oq1`Ox1nO}+RO!Y&ka~P'ZO|+SO!Y&ka~Oq1`Ox1nO|+SO}+VO!Y&ka~P'ZOq1`Ox1nO|+SO!Y&ka~P'ZO|+SO}+VO!Y&ka~Oo1aOp1aOq1jOr1kOilimliuli|li!Vli!Wli&_li!Yli}li!^li#oli%hli%kli!Sli#dlivli!oli&^li~On1cO~P!KZOnli~P!KZOX(_Oi+[Oq1`Ox1nO~P'ZOp+^O~Oi+[O|+`O~Oi+aO~OX(_Oq1`Ox1nO!Y&fi~P'ZO|+bO!Y&fi~O!Y+cO~OX(nOq1`Ox1nO!^&ai#o&ai%h&ai%k&aii&ai}&ai!o&ai&^&ai~P'ZO|+fO!V%qO!W%pO!^&gi~O|+iO!^&ai#o&ai%h&ai%k&aii&ai}&ai!o&ai&^&ai~O!^+jO~Oc+lOq1`Ox1nO!^&gi~P'ZO|+fO!^&gi~O!^+nO~OX+pOq1`Ox1nO}&ua!^&ua!o&ua&^&ua~P'ZO|+qO}&ua!^&ua!o&ua&^&ua~O!_+tO&w+uO!^!pX~O!^+wO~O}(|O!^+xO~O}(|O!^+xO!o+yO~O}(|O!^+zO~O}(|O!^+zO!o+{O~O}(|O!^+|O~O}(|O!^+|O!o+}O~O}(|O!^,OO~O}(|O!^,OO!o,PO~OX&dOquOxvO}%zq#Q%zq#o%zq%h%zq%k%zq&^%zq~P'ZO|%Oi}%Oi#Q%Oi#o%Oi%h%Oi%k%Oi&^%Oi~P$gOX&dOquOxvO~P'ZOX&dOq1`Ox1nO#o%za%h%za%k%za&^%za~P'ZO|,QO#o%za%h%za%k%za&^%za~O|$qa#o$qa%h$qa%k$qap$qa~P$gO#o&ci%h&ci%k&cip&ci~P'ZO|,TO#o#`q%h#`q%k#`q~O|,UO#d,WO#o'OX%h'OX%k'OXi'OX~OX,YOj)rO&XWO~O&XWO#o'Pi%h'Pi%k'Pi~Oq1`Ox1nO#o&{i%h&{i%k&{i}&{i~P'ZO}$[O|#mX!Y#mX~O|,^O!Y'QX~O!Y,`O~Ov,cO#r*ROP#pqX#pqh#pqj#pqq#pqu#pqx#pq!R#pq!S#pq!V#pq!W#pq!Z#pq!_#pq!j#pq!z#pq!{#pq!|#pq#T#pq#V#pq#X#pq#Z#pq#]#pq#a#pq#c#pq#f#pq#g#pq#i#pq#k#pq#t#pq#w#pq#{#pq#}#pq$S#pq$V#pq$X#pq%e#pq&R#pq&S#pq&W#pq&X#pq&m#pq&n#pq&q#pq&t#pq&x#pq&y#pq&z#pq%g#pq%k#pq~Op%Ya|%Ya~P$gOX*VOp'Si~P'ZO|,jOp'Si~O|,tO}$wO#d,tO~O#y,vOP#vqX#vqh#vqj#vqq#vqu#vqx#vq!R#vq!S#vq!V#vq!W#vq!Z#vq!_#vq!j#vq!z#vq!{#vq!|#vq#T#vq#V#vq#X#vq#Z#vq#]#vq#a#vq#c#vq#f#vq#g#vq#i#vq#k#vq#t#vq#w#vq#{#vq#}#vq$S#vq$V#vq$X#vq%e#vq&R#vq&S#vq&W#vq&X#vq&m#vq&n#vq&q#vq&t#vq&x#vq&y#vq&z#vq%g#vq%k#vq~O#d,wO|%[a}%[a~Oq1`Ox1nO}'Ti~P'ZO|,yO}'Ti~O}$[O&^,{Oi'VX|'VX~O&XWOi'VX|'VX~O|-POi'UX~Oi-RO~O%f-UO~O!V%qO!W%pOi&ii|&ii~OX%[Oc%[Oq1`Ox1nOi&hi~P'ZO}-XO|$ta!Y$ta~Oq1`Ox1nO}-YO|$ta!Y$ta~P'ZOq1`Ox1nO}+RO!Y&ki~P'ZO|-]O!Y&ki~Oq1`Ox1nO|-]O!Y&ki~P'ZO|-]O}-`O!Y&ki~Oi$pi|$pi!Y$pi~P$gOX(_Oq1`Ox1nO~P'ZOp-bO~OX(_Oi-cOq1`Ox1nO~P'ZOX(_Oq1`Ox1nO!Y&fq~P'ZO|$oi!^$oi#o$oi%h$oi%k$oii$oi}$oi!o$oi&^$oi~P$gOX(nOq1`Ox1nO~P'ZOc+lOq1`Ox1nO!^&gq~P'ZO|-dO!^&gq~O!^-eO~OX(nOq1`Ox1nO!^&aq#o&aq%h&aq%k&aqi&aq}&aq!o&aq&^&aq~P'ZO}-fO~OX+pOq1`Ox1nO}&ui!^&ui!o&ui&^&ui~P'ZO|-kO}&ui!^&ui!o&ui&^&ui~O!_+tO&w+uO!^!pa~O}(|O!^-nO~O}(|O!^-oO~O}(|O!^-pO~O}(|O!^-qO~OX&dOq1`Ox1nO#o%zi%h%zi%k%zi&^%zi~P'ZO|-rO#o%zi%h%zi%k%zi&^%zi~O&XWO#o'Oa%h'Oa%k'Oai'Oa~O|-uO#o'Oa%h'Oa%k'Oai'Oa~Oi-xO~OX)zOc)zO&XWO!Y'Qa~O|-zO!Y'Qa~Op%Yi|%Yi~P$gOX*VO~P'ZOX*VOp'Sq~P'ZOv.OOP#uyX#uyh#uyj#uyq#uyu#uyx#uy!R#uy!S#uy!V#uy!W#uy!Z#uy!_#uy!j#uy!z#uy!{#uy!|#uy#T#uy#V#uy#X#uy#Z#uy#]#uy#a#uy#c#uy#f#uy#g#uy#i#uy#k#uy#t#uy#w#uy#{#uy#}#uy$S#uy$V#uy$X#uy%e#uy&R#uy&S#uy&W#uy&X#uy&m#uy&n#uy&q#uy&t#uy&x#uy&y#uy&z#uy%g#uy%k#uy~O%g.SO%k.SO~P`O#y.TOP#vyX#vyh#vyj#vyq#vyu#vyx#vy!R#vy!S#vy!V#vy!W#vy!Z#vy!_#vy!j#vy!z#vy!{#vy!|#vy#T#vy#V#vy#X#vy#Z#vy#]#vy#a#vy#c#vy#f#vy#g#vy#i#vy#k#vy#t#vy#w#vy#{#vy#}#vy$S#vy$V#vy$X#vy%e#vy&R#vy&S#vy&W#vy&X#vy&m#vy&n#vy&q#vy&t#vy&x#vy&y#vy&z#vy%g#vy%k#vy~O|.WO}$wO#d.WO~Oq1`Ox1nO}'Tq~P'ZO|.ZO}'Tq~O&^,{Oi'Va|'Va~OX*nOc*oO&T*pO&XWOi'Ua~O|._Oi'Ua~O$[.cO~OX%[Oc%[Oq1`Ox1nO~P'ZOq1`Ox1nO}.dO|$ti!Y$ti~P'ZOq1`Ox1nO|$ti!Y$ti~P'ZO}.dO|$ti!Y$ti~Oq1`Ox1nO}+RO~P'ZOq1`Ox1nO}+RO!Y&kq~P'ZO|.gO!Y&kq~Oq1`Ox1nO|.gO!Y&kq~P'ZOu.jO!V%qO!W%pOi&bq!Y&bq!^&bq|&bq~P!.TOc+lOq1`Ox1nO!^&gy~P'ZO|$ri!^$ri~P$gOc+lOq1`Ox1nO~P'ZOX+pOq1`Ox1nO~P'ZOX+pOq1`Ox1nO}&uq!^&uq!o&uq&^&uq~P'ZO}(|O!^.oO!o.pO&^.nO~OX&dOq1`Ox1nO#o%zq%h%zq%k%zq&^%zq~P'ZO#d.rO|%Ta#o%Ta%h%Ta%k%Tai%Ta~O&XWO#o'Oi%h'Oi%k'Oii'Oi~O|.tO#o'Oi%h'Oi%k'Oii'Oi~OX)zOc)zO&XWO!Y'Qi~Ov.xOP#u!RX#u!Rh#u!Rj#u!Rq#u!Ru#u!Rx#u!R!R#u!R!S#u!R!V#u!R!W#u!R!Z#u!R!_#u!R!j#u!R!z#u!R!{#u!R!|#u!R#T#u!R#V#u!R#X#u!R#Z#u!R#]#u!R#a#u!R#c#u!R#f#u!R#g#u!R#i#u!R#k#u!R#t#u!R#w#u!R#{#u!R#}#u!R$S#u!R$V#u!R$X#u!R%e#u!R&R#u!R&S#u!R&W#u!R&X#u!R&m#u!R&n#u!R&q#u!R&t#u!R&x#u!R&y#u!R&z#u!R%g#u!R%k#u!R~Oq1`Ox1nO}'Ty~P'ZOX*nOc*oO&T*pO&XWOi'Ui~O$[.cO%g/QO%k/QO~OX/[Oj/YO!Z/XO!_/ZO!j/TO!{/VO!|/VO&S/SO&XWO&m]O&n^O&q_O~Oq1`Ox1nO|$tq!Y$tq~P'ZO}/aO|$tq!Y$tq~Oq1`Ox1nO}+RO!Y&ky~P'ZO|/bO!Y&ky~Oq1`Ox/fO~P'ZOu.jO!V%qO!W%pOi&by!Y&by!^&by|&by~P!.TO}(|O!^/iO~O}(|O!^/iO!o/jO~O&XWO#o'Oq%h'Oq%k'Oqi'Oq~O|/lO#o'Oq%h'Oq%k'Oqi'Oq~OX*nOc*oO&T*pO&XWO~Oj/qO!h/oO|$]X#d$]X%|$]Xi$]X~Ou$]X}$]X!Y$]X!^$]X~P$)YO&R/sO&S/sOu$^X|$^X}$^X#d$^X%|$^X!Y$^Xi$^X!^$^X~O!j/uO~O|/yO#d/{O%|/vOu'XX}'XX!Y'XXi'XX~Oc0OO~P$%_Oj/qOu'YX|'YX}'YX#d'YX%|'YX!Y'YXi'YX!^'YX~Ou0SO}$wO~Oq1`Ox1nO|$ty!Y$ty~P'ZOq1`Ox1nO}+RO!Y&k!R~P'ZO|0WO!Y&k!R~Oi&eXu&eX!V&eX!W&eX!Y&eX!^&eX|&eX~P!.TOu.jO!V%qO!W%pOi&da!Y&da!^&da|&da~O}(|O!^0ZO~O&XWO#o'Oy%h'Oy%k'Oyi'Oy~O!h/oOj$dau$da|$da}$da#d$da%|$da!Y$dai$da!^$da~O!j0bO~O&R/sO&S/sOu$^a|$^a}$^a#d$^a%|$^a!Y$^ai$^a!^$^a~O%|/vOu$ba|$ba}$ba#d$ba!Y$bai$ba!^$ba~Ou'Xa}'Xa!Y'Xai'Xa~P$%RO|0gOu'Xa}'Xa!Y'Xai'Xa~O!Y0jO~Oi0jO~O}0lO~O!^0mO~Oq1`Ox1nO}+RO!Y&k!Z~P'ZO}0pO~O&^0qO~P$)YO|0rO#d/{O%|/vOi'[X~O|0rOi'[X~Oi0tO~O!j0uO~O#d/{Ou%`a|%`a}%`a%|%`a!Y%`ai%`a!^%`a~O#d/{O%|/vOu%da|%da}%da!Y%dai%da~Ou'Xi}'Xi!Y'Xii'Xi~P$%RO|0wO#d/{O%|/vO!^'Za~O}$la~P$gOi'[a~P$%RO|1POi'[a~Oc1RO!^'Zi~P$%_O|1TO!^'Zi~O|1TO#d/{O%|/vO!^'Zi~O#d/{O%|/vOi$ji|$ji~O&^1WO~P$)YO#d/{O%|/vOi%ca|%ca~Oi'[i~P$%RO}1ZO~Oc1RO!^'Zq~P$%_O|1]O!^'Zq~O#d/{O%|/vO|%bi!^%bi~Oc1RO~P$%_Oc1RO!^'Zy~P$%_O#d/{O%|/vOi$ki|$ki~O#d/{O%|/vO|%bq!^%bq~O|,QO#o%za%h%za%k%za&^%za~P$gOX&dOq1`Ox1nO~P'ZOp1eO~Oq1eO~P'ZO}1fO~Ov1gO~P!.TO&n&q&y&z&m&t&x&X&m~",goto:"!@f']PPPPPPPP'^P'f+R+k,U,p-]-yP.hP'f/X/X'fPPP'f2tPPPPPP2t5kPP5kP8O8X>kPP>n?`?cPP'f'fPP?{PP'f'fPP'f'f'f'f'f@P@y'fP@|PASE^H}IRPIUIlIpIsIwIzJOJRJV'fPPPJYJc'^P'^'^P'^P'^P'^P'^P'^'^'^P'^PP'^PP'^P'^PJiJuJ}PKUK[PKUPKUKUPPPKUPMjPMsM}NTMjPKUN^PKUPNeNkPNo! T! r!!]NoNo!!c!!pNoNoNoNo!#U!#[!#_!#d!#g!#q!#w!$T!$g!$m!$w!$}!%k!%q!%w!%}!&X!&_!&e!&k!&q!&w!'Z!'e!'k!'q!'w!(R!(X!(_!(e!(k!(u!({!)V!)]!)f!)l!){!*T!*_!*fPPPPPPPPPPPPPPPPP!*l!*o!*u!+O!+Y!+ePPPPPPPPPPPP!0[!1p!5s!9WPP!9`!9r!9{!:t!:k!:}!;T!;W!;Z!;^!;f!<VPPPPPPPPP!<Y!<iPPPP!=m!=y!>V!>]!>f!>i!>l!>r!>x!?O!?RP!?Z!?d!@`!@c]jOs#v$w*`,p(TeOTYZ[fistuwy}!O!S!U!V!W!Z!^!h!i!j!k!l!m!n!p!t!u!v!x!y#P#T#X#Y#c#g#j#m#s#v$X$Y$[$^$a$r$t$u$w%O%[%a%h%k%m%p%t%y%{&V&b&d&o&s&|'O'P'W'Z'_'b'i'l'}(O(R(T(U(Y(_(a(e(i(n(o(u(x)_)a)i)l)x*P*R*V*W*[*`*f*j*t+O+R+S+V+]+^+`+b+e+f+i+l+p+q+t,Q,S,T,[,i,j,p,x,y,|-W-X-Y-[-]-`-b-d-f-h-j-k-r.Z.].d.g.j/a/b0S0W0p1`1a1b1c1e1f1g1h1i1k1o}!hQ#r$P$b$q$}%r%w%}&O&t'a'x)`)k*U+Z+d,h-g0n1d!P!iQ#r$P$b$q$}%S%r%w%}&O&t'a'x)`)k*U+Z+d,h-g0n1d!R!jQ#r$P$b$q$}%S%T%r%w%}&O&t'a'x)`)k*U+Z+d,h-g0n1d!T!kQ#r$P$b$q$}%S%T%U%r%w%}&O&t'a'x)`)k*U+Z+d,h-g0n1d!V!lQ#r$P$b$q$}%S%T%U%V%r%w%}&O&t'a'x)`)k*U+Z+d,h-g0n1d!X!mQ#r$P$b$q$}%S%T%U%V%W%r%w%}&O&t'a'x)`)k*U+Z+d,h-g0n1d!]!mQ!s#r$P$b$q$}%S%T%U%V%W%X%r%w%}&O&t'a'x)`)k*U+Z+d,h-g0n1d(TTOTYZ[fistuwy}!O!S!U!V!W!Z!^!h!i!j!k!l!m!n!p!t!u!v!x!y#P#T#X#Y#c#g#j#m#s#v$X$Y$[$^$a$r$t$u$w%O%[%a%h%k%m%p%t%y%{&V&b&d&o&s&|'O'P'W'Z'_'b'i'l'}(O(R(T(U(Y(_(a(e(i(n(o(u(x)_)a)i)l)x*P*R*V*W*[*`*f*j*t+O+R+S+V+]+^+`+b+e+f+i+l+p+q+t,Q,S,T,[,i,j,p,x,y,|-W-X-Y-[-]-`-b-d-f-h-j-k-r.Z.].d.g.j/a/b0S0W0p1`1a1b1c1e1f1g1h1i1k1o&iVOYZ[isuw}!O!S!U!V!Z!n!p!t!u!v!x!y#c#g#j#m#s#v$Y$[$^$a$u$w%[%a%h%k%m%t%y%{&V&b&o&s'O'P'W'Z'b'i'l'}(O(R(T(U(Y(a(i(o(u(x)_)a)i)x*P*R*[*`*f*j*t+O+R+S+V+]+^+`+b+e+f+i+p+q+t,Q,T,[,p,x,y,|-W-X-Y-[-]-`-b-d-f-h-j-k-r.Z.].d.g.j/a/b0W0p1`1a1b1c1e1f1g1h1k1o%sXOYZ[isw}!O!S!U!V!Z!n!p#c#g#j#m#s#v$Y$[$^$a$u$w%[%a%k%m%t%y%{&V&b&o&s'O'P'W'Z'b'i'l'}(O(R(T(U(Y(a(i(o(u(x)_)a)i)x*P*R*[*`*f*j*t+O+R+S+V+]+`+b+e+f+i+p+q+t,Q,T,[,p,x,y,|-W-X-Y-[-]-`-d-f-h-j-k-r.Z.].d.g/a/b0W1f1g1hQ$VvQ0X/fR1l1n'zeOTYZ[fistuwy}!O!S!U!V!W!Z!^!h!i!j!k!l!m!p!t!u!v!x!y#P#T#X#Y#c#g#j#m#s#v$X$Y$[$^$a$r$t$u$w%O%[%a%h%k%m%p%t%y%{&V&b&d&o&s&|'O'P'W'Z'_'b'i'l'}(R(T(U(Y(_(a(e(i(n(o(u(x)_)a)i)l)x*P*R*V*W*[*`*f*j*t+R+S+V+]+^+`+b+e+f+i+l+p+q+t,Q,S,T,[,i,j,p,x,y,|-X-Y-[-]-`-b-d-f-h-j-k-r.Z.].d.g.j/a/b0S0W0p1`1a1b1c1e1f1g1h1i1k1oW#ym!P!Q$hW$Rv&q/f1nQ$j!RQ$n!TQ${![Q$|!]W%Z!n(O+O-WS&p$S$TQ'e$vQ)b&jQ)p'QU)q'S)r)sU)t'U)u,ZW){'Y,^-z.vQ*l'nW*m'p-P._/OQ,])zS-O*n*oY-t,U-u.s.t/lQ-w,WQ.U,tQ.Y,wQ.|.Wl/R.c/X/Y/[/w/y0O0g0l0q0v1R1W1ZQ/k.rQ0P/ZQ0^/qQ0i/{U0|0r1P1XX1S0w1T1[1]R&o$R!_!|YZ!U!V!p%a%m%t(R(T(U(a(i*R+R+S+V+]+`+b-X-Y-[-]-`.d.g/a/b0WR%k!{Q#QYQ&W#cQ&Z#gQ&]#jQ&_#mQ&x$^Q&{$aR-l+tT/e.j0p![!oQ!s#r$P$b$q$}%S%T%U%V%W%X%r%w%}&O&t'a'x)`)k*U+Z+d,h-g0n1dQ&m#zQ't$|R*x'uR'}%ZQ%d!rR0[/o(SdOTYZ[fistuwy}!O!S!U!V!W!Z!^!h!i!j!k!l!m!n!p!t!u!v!x!y#P#T#X#Y#c#g#j#m#s#v$X$Y$[$^$a$r$t$u$w%O%[%a%h%k%m%p%t%y%{&V&b&d&o&s&|'O'P'W'Z'_'b'i'l'}(O(R(T(U(Y(_(a(e(i(n(o(u(x)_)a)i)l)x*P*R*V*W*[*`*f*j*t+O+R+S+V+]+^+`+b+e+f+i+l+p+q+t,Q,S,T,[,i,j,p,x,y,|-W-X-Y-[-]-`-b-d-f-h-j-k-r.Z.].d.g.j/a/b0S0W0p1`1a1b1c1e1f1g1h1i1k1oS#pd#q!P/V.c/X/Y/Z/[/q/w/y0O0g0l0q0r0v0w1P1R1T1W1X1Z1[1](SdOTYZ[fistuwy}!O!S!U!V!W!Z!^!h!i!j!k!l!m!n!p!t!u!v!x!y#P#T#X#Y#c#g#j#m#s#v$X$Y$[$^$a$r$t$u$w%O%[%a%h%k%m%p%t%y%{&V&b&d&o&s&|'O'P'W'Z'_'b'i'l'}(O(R(T(U(Y(_(a(e(i(n(o(u(x)_)a)i)l)x*P*R*V*W*[*`*f*j*t+O+R+S+V+]+^+`+b+e+f+i+l+p+q+t,Q,S,T,[,i,j,p,x,y,|-W-X-Y-[-]-`-b-d-f-h-j-k-r.Z.].d.g.j/a/b0S0W0p1`1a1b1c1e1f1g1h1i1k1oT#pd#qT#d`#eR)Q&Wy(}&W&Z&]&_)P)Q)T)U)X)Y)])^+y+{+},P-l.p.q/jT+u(|+vR.q-lT#ha#iR)U&ZT#kb#lR)Y&]T#nc#oR)^&_Q$`xQ,]){R,}*mX$^x$_$`&zQ'[$nQ'r${Q'u$|R*_'eQ)|'YV-y,^-z.vZlOs$w*`,pXpOs*`,pQ$x!YQ']$oQ'^$pQ'o$zQ's$|Q*]'dQ*d'iQ*g'jQ*h'kQ*u'qS*w't'uQ,d*RQ,f*SQ,g*TQ,k*ZS,m*^*vQ,q*bQ,r*cS,s*e*fQ-T*xQ-|,cQ-},eQ.P,lS.Q,n,oQ.V,uQ.X,vQ.w.OQ.y.RQ.z.TQ.{.UQ/m.xQ/n.|Q0T/_R0o0UWpOs*`,pR#|oQ'q${S*^'e'rR,o*_Q,|*mR.],}Q*v'qQ,n*^R.R,oZnOos*`,pQ'w$}R*z'xT.a-U.bu/^.c/X/Y/[/q/w/y0O0g0l0q0r0v1P1R1W1X1Zt/^.c/X/Y/[/q/w/y0O0g0l0q0r0v1P1R1W1X1ZQ0P/ZX1S0w1T1[1]!P/U.c/X/Y/Z/[/q/w/y0O0g0l0q0r0v0w1P1R1T1W1X1Z1[1]Q/t/TR0c/ug/w/W/x0_0f0k0y0{0}1Y1^1_u/].c/X/Y/[/q/w/y0O0g0l0q0r0v1P1R1W1X1ZX/r/R/]0^0|R0`/qV1O0r1P1XR0U/_QsOS$Os,pR,p*`Q&r$UR)g&rS%z#W$WS(p%z(sT(s%}&tQ%n#OQ%u#SW(b%n%u(g(kQ(g%rR(k%wQ&}$bR)m&}Q(v&OQ+g(qT+m(v+gQ(P%]R+P(PS(S%`%aY+T(S+U-^.h/cU+U(T(U(VU-^+V+W+XS.h-_-`R/c.iQ#_^R&R#_Q#b_R&T#bQ#e`R&X#eQ(y&US+r(y+sR+s(zQ+v(|R-m+vQ#iaR&[#iQ#lbR&^#lQ#ocR&`#oQ#qdR&a#qQ#tgQ&c#rW&f#t&c)j,RQ)j&wR,R1dQ$_xS&y$_&zR&z$`Q'X$lR)y'XQ&k#yR)c&kQ$h!QR'R$hQ,V)qS-v,V.uR.u-wQ'V$jR)v'VQ,_)|R-{,_Q#wkR&h#wQ*Q']R,b*QQ'`$qS*X'`*YR*Y'aQ'h$xR*a'hQ'm$yS*k'm,zR,z*lQ-Q*qR.`-QWoOs*`,pR#{oQ.b-UR/P.bd/x/W0_0f0k0y0{0}1Y1^1_R0e/xU/p/R0^0|R0]/pQ0x0kS1U0x1VR1V0yS0s0_0`R1Q0sQ/z/WR0h/zR!`PXrOs*`,pWqOs*`,pR'f$wYkOs$w*`,pR&g#v[xOs#v$w*`,pR&x$^&hQOYZ[isuw}!O!S!U!V!Z!n!p!t!u!v!x!y#c#g#j#m#s#v$Y$[$^$a$u$w%[%a%h%k%m%t%y%{&V&b&o&s'O'P'W'Z'b'i'l'}(O(R(T(U(Y(a(i(o(u(x)_)a)i)x*P*R*[*`*f*j*t+O+R+S+V+]+^+`+b+e+f+i+p+q+t,Q,T,[,p,x,y,|-W-X-Y-[-]-`-b-d-f-h-j-k-r.Z.].d.g.j/a/b0W0p1`1a1b1c1e1f1g1h1k1oQ!sTQ#rfQ$PtU$by%p(eS$q!W$tQ$}!^Q%S!hQ%T!iQ%U!jQ%V!kQ%W!lQ%X!mQ%r#PQ%w#TQ%}#XQ&O#YQ&t$XQ'a$rQ'x%OQ)`&dU)k&|)l,SW*U'_*W,i,jQ+Z(_Q+d(nQ,h*VQ-g+lQ0n0SR1d1iQ#OYQ#SZQ$o!UQ$p!VQ%`!pQ(V%a^(^%m%t(a(i+]+`+b^+Q(R+S-[-].g/b0WQ+W(TQ+X(UQ,e*RQ-Z+RQ-_+VQ.e-XQ.f-YQ.i-`Q/`.dR0V/a[gOs#v$w*`,p!^!{YZ!U!V!p%a%m%t(R(T(U(a(i*R+R+S+V+]+`+b-X-Y-[-]-`.d.g/a/b0WQ#W[Q#uiS$Ww}Q$e!OW$l!S$a'b*[S$y!Z$uW%Y!n(O+O-WY&U#c#g#j#m+t`&e#s&b)_)a)i,Q-r1hQ&u$YQ&v$[Q&w$^Q'{%[Q(]%kW(m%y(o+e+iQ(q%{Q(z&VQ)e&oS)h&s1fQ)n'OQ)o'PU)w'W)x,[Q*O'ZQ*e'iY*i'l*j,x,y.ZQ*|'}S+Y(Y1gW+k(u+f-d-hW+o(x+q-j-kQ,a*PQ,u*fQ-S*tQ-i+pQ-s,TQ.[,|Q.m-fR.}.]hUOs#s#v$w&b&s(Y)_)a*`,p%Y!zYZ[iw}!O!S!U!V!Z!n!p#c#g#j#m$Y$[$^$a$u%[%a%k%m%t%y%{&V&o'O'P'W'Z'b'i'l'}(O(R(T(U(a(i(o(u(x)i)x*P*R*[*f*j*t+O+R+S+V+]+`+b+e+f+i+p+q+t,Q,T,[,x,y,|-W-X-Y-[-]-`-d-f-h-j-k-r.Z.].d.g/a/b0W1f1g1hQ$QuW%e!t!x1a1kQ%f!uQ%g!vQ%i!yQ%s1`S(X%h1eQ(Z1bQ([1cQ-a+^Q.l-bS/d.j0pR1m1oU$Uv/f1nR)f&q[hOs#v$w*`,pa!}Y#c#g#j#m$^$a+tQ#][Q$ZwR$d}Q%o#OQ%v#SQ%|#WQ'{%YQ(h%rQ(l%wQ(t%}Q(w&OQ+h(qQ-V*|Q.k-aQ/h.lR0Y/gQ$cyQ(d%pR+_(eQ/g.jR0z0pR#VZR#[[R%_!nQ%]!nV*}(O+O-W!]!qQ!s#r$P$b$q$}%S%T%U%V%W%X%r%w%}&O&t'a'x)`)k*U+Z+d,h-g0n1dR%b!pQ&W#cQ&Z#gQ&]#jQ&_#mR-l+tQ)O&WQ)S&ZQ)W&]Q)[&_S+x)P)QS+z)T)US+|)X)YS,O)])^Q-n+yQ-o+{Q-p+}Q-q,PQ.o-lS/i.p.qR0Z/jQ$m!SQ&{$aQ*Z'bR,l*[Q#zmQ$f!PQ$i!QR'T$hQ)p'SR,Y)sQ)p'SQ,X)rR,Y)sR$k!RR)}'YXqOs*`,pQ$s!WR'c$tQ$z!ZR'd$uR*s'pQ*q'pV.^-P._/OQ/_.cQ/|/XR/}/YU/W.c/X/YQ0R/[Q0_/qQ0d/wU0f/y0g0vQ0k0OQ0y0lQ0{0qU0}0r1P1XQ1Y1RQ1^1WR1_1ZR0Q/ZR0a/q",nodeNames:"⚠ print { { { { Comment Script AssignStatement * BinaryExpression BitOp BitOp BitOp BitOp ArithOp ArithOp @ ArithOp ** UnaryExpression ArithOp BitOp AwaitExpression await ) ( ParenthesizedExpression BinaryExpression or and CompareOp in not is UnaryExpression ConditionalExpression if else LambdaExpression lambda ParamList VariableName AssignOp , : NamedExpression AssignOp YieldExpression yield from TupleExpression ComprehensionExpression async for LambdaExpression ] [ ArrayExpression ArrayComprehensionExpression } { DictionaryExpression DictionaryComprehensionExpression SetExpression SetComprehensionExpression CallExpression ArgList AssignOp MemberExpression . PropertyName Number String FormatString FormatReplacement FormatSelfDoc FormatConversion FormatSpec FormatReplacement FormatSelfDoc FormatReplacement FormatSelfDoc FormatReplacement FormatSelfDoc FormatReplacement FormatSelfDoc ContinuedString Ellipsis None Boolean TypeDef AssignOp UpdateStatement UpdateOp ExpressionStatement DeleteStatement del PassStatement pass BreakStatement break ContinueStatement continue ReturnStatement return YieldStatement PrintStatement RaiseStatement raise ImportStatement import as ScopeStatement global nonlocal AssertStatement assert TypeDefinition type TypeParamList TypeParam StatementGroup ; IfStatement Body elif WhileStatement while ForStatement TryStatement try except finally WithStatement with FunctionDefinition def ParamList AssignOp TypeDef ClassDefinition class DecoratedStatement Decorator At MatchStatement match MatchBody MatchClause case CapturePattern LiteralPattern ArithOp ArithOp AsPattern OrPattern LogicOp AttributePattern SequencePattern MappingPattern StarPattern ClassPattern PatternArgList KeywordPattern KeywordPattern Guard",maxTerm:288,context:rte,nodeProps:[["isolate",-8,6,73,74,75,79,81,83,85,""],["group",-15,8,93,95,96,98,100,102,104,106,107,108,110,113,116,118,"Statement Statement",-22,10,20,23,27,42,51,52,58,59,62,63,64,65,66,69,72,73,74,87,88,89,90,"Expression",-10,122,124,127,129,130,134,136,141,143,146,"Statement",-9,151,152,155,156,158,159,160,161,162,"Pattern"],["openedBy",25,"(",56,"[",60,"{"],["closedBy",26,")",57,"]",61,"}"]],propSources:[Ete],skippedNodes:[0,6],repeatNodeCount:38,tokenData:"%-W#sR!`OX%TXY=|Y[%T[]=|]p%Tpq=|qr@_rsDOst!+|tu%Tuv!Nnvw#!|wx#$Wxy#:Uyz#;Yz{#<^{|#>x|}#@S}!O#AW!O!P#Ci!P!Q#N_!Q!R$!y!R![$&w![!]$1e!]!^$3s!^!_$4w!_!`$7c!`!a$8m!a!b%T!b!c$;U!c!d$<b!d!e$>W!e!h$<b!h!i$H[!i!t$<b!t!u%#r!u!w$<b!w!x$Fl!x!}$<b!}#O%%z#O#P?d#P#Q%'O#Q#R%(S#R#S$<b#S#T%T#T#U$<b#U#V$>W#V#Y$<b#Y#Z$H[#Z#f$<b#f#g%#r#g#i$<b#i#j$Fl#j#o$<b#o#p%)^#p#q%*S#q#r%+^#r#s%,S#s$g%T$g;'S$<b;'S;=`$>Q<%lO$<b!n%^]&w!b&oS&rWOr%Trs&Vsw%Twx/Xx#O%T#O#P7o#P#o%T#o#p8^#p#q%T#q#r8^#r;'S%T;'S;=`=v<%lO%T!n&^]&w!b&oSOr%Trs'Vsw%Twx/Xx#O%T#O#P7o#P#o%T#o#p8^#p#q%T#q#r8^#r;'S%T;'S;=`=v<%lO%T!n'^]&w!b&oSOr%Trs(Vsw%Twx/Xx#O%T#O#P7o#P#o%T#o#p8^#p#q%T#q#r8^#r;'S%T;'S;=`=v<%lO%T!f(^Z&w!b&oSOw(Vwx)Px#O(V#O#P+Z#P#o(V#o#p+x#p#q(V#q#r+x#r;'S(V;'S;=`/R<%lO(V!f)UZ&w!bOw(Vwx)wx#O(V#O#P+Z#P#o(V#o#p+x#p#q(V#q#r+x#r;'S(V;'S;=`/R<%lO(V!f)|Z&w!bOw(Vwx*ox#O(V#O#P+Z#P#o(V#o#p+x#p#q(V#q#r+x#r;'S(V;'S;=`/R<%lO(V!b*tT&w!bO#o*o#p#q*o#r;'S*o;'S;=`+T<%lO*o!b+WP;=`<%l*o!f+`W&w!bO#o(V#o#p+x#p#q(V#q#r+x#r;'S(V;'S;=`.d;=`<%l+x<%lO(VS+}V&oSOw+xwx,dx#O+x#O#P-c#P;'S+x;'S;=`.^<%lO+xS,gVOw+xwx,|x#O+x#O#P-c#P;'S+x;'S;=`.^<%lO+xS-PUOw+xx#O+x#O#P-c#P;'S+x;'S;=`.^<%lO+xS-fRO;'S+x;'S;=`-o;=`O+xS-tW&oSOw+xwx,dx#O+x#O#P-c#P;'S+x;'S;=`.^;=`<%l+x<%lO+xS.aP;=`<%l+x!f.iW&oSOw+xwx,dx#O+x#O#P-c#P;'S+x;'S;=`.^;=`<%l(V<%lO+x!f/UP;=`<%l(V!n/`]&w!b&rWOr%Trs&Vsw%Twx0Xx#O%T#O#P7o#P#o%T#o#p8^#p#q%T#q#r8^#r;'S%T;'S;=`=v<%lO%T!n0`]&w!b&rWOr%Trs&Vsw%Twx1Xx#O%T#O#P7o#P#o%T#o#p8^#p#q%T#q#r8^#r;'S%T;'S;=`=v<%lO%T!j1`Z&w!b&rWOr1Xrs2Rs#O1X#O#P3q#P#o1X#o#p4`#p#q1X#q#r4`#r;'S1X;'S;=`7i<%lO1X!j2WZ&w!bOr1Xrs2ys#O1X#O#P3q#P#o1X#o#p4`#p#q1X#q#r4`#r;'S1X;'S;=`7i<%lO1X!j3OZ&w!bOr1Xrs*os#O1X#O#P3q#P#o1X#o#p4`#p#q1X#q#r4`#r;'S1X;'S;=`7i<%lO1X!j3vW&w!bO#o1X#o#p4`#p#q1X#q#r4`#r;'S1X;'S;=`6z;=`<%l4`<%lO1XW4eV&rWOr4`rs4zs#O4`#O#P5y#P;'S4`;'S;=`6t<%lO4`W4}VOr4`rs5ds#O4`#O#P5y#P;'S4`;'S;=`6t<%lO4`W5gUOr4`s#O4`#O#P5y#P;'S4`;'S;=`6t<%lO4`W5|RO;'S4`;'S;=`6V;=`O4`W6[W&rWOr4`rs4zs#O4`#O#P5y#P;'S4`;'S;=`6t;=`<%l4`<%lO4`W6wP;=`<%l4`!j7PW&rWOr4`rs4zs#O4`#O#P5y#P;'S4`;'S;=`6t;=`<%l1X<%lO4`!j7lP;=`<%l1X!n7tW&w!bO#o%T#o#p8^#p#q%T#q#r8^#r;'S%T;'S;=`=P;=`<%l8^<%lO%T[8eX&oS&rWOr8^rs9Qsw8^wx:dx#O8^#O#P;v#P;'S8^;'S;=`<y<%lO8^[9VX&oSOr8^rs9rsw8^wx:dx#O8^#O#P;v#P;'S8^;'S;=`<y<%lO8^[9wX&oSOr8^rs+xsw8^wx:dx#O8^#O#P;v#P;'S8^;'S;=`<y<%lO8^[:iX&rWOr8^rs9Qsw8^wx;Ux#O8^#O#P;v#P;'S8^;'S;=`<y<%lO8^[;ZX&rWOr8^rs9Qsw8^wx4`x#O8^#O#P;v#P;'S8^;'S;=`<y<%lO8^[;yRO;'S8^;'S;=`<S;=`O8^[<ZY&oS&rWOr8^rs9Qsw8^wx:dx#O8^#O#P;v#P;'S8^;'S;=`<y;=`<%l8^<%lO8^[<|P;=`<%l8^!n=WY&oS&rWOr8^rs9Qsw8^wx:dx#O8^#O#P;v#P;'S8^;'S;=`<y;=`<%l%T<%lO8^!n=yP;=`<%l%T#s>Xc&w!b&oS&rW%u!TOX%TXY=|Y[%T[]=|]p%Tpq=|qr%Trs&Vsw%Twx/Xx#O%T#O#P?d#P#o%T#o#p8^#p#q%T#q#r8^#r;'S%T;'S;=`=v<%lO%T#s?i[&w!bOY%TYZ=|Z]%T]^=|^#o%T#o#p8^#p#q%T#q#r8^#r;'S%T;'S;=`=P;=`<%l8^<%lO%T!q@hd&w!b&oS&rWOr%Trs&Vsw%Twx/Xx!_%T!_!`Av!`#O%T#O#P7o#P#T%T#T#UBz#U#f%T#f#gBz#g#hBz#h#o%T#o#p8^#p#q%T#q#r8^#r;'S%T;'S;=`=v<%lO%T!qBR]oR&w!b&oS&rWOr%Trs&Vsw%Twx/Xx#O%T#O#P7o#P#o%T#o#p8^#p#q%T#q#r8^#r;'S%T;'S;=`=v<%lO%T!qCV]!oR&w!b&oS&rWOr%Trs&Vsw%Twx/Xx#O%T#O#P7o#P#o%T#o#p8^#p#q%T#q#r8^#r;'S%T;'S;=`=v<%lO%T#cDXa&w!b&oS&msOYE^YZ%TZ]E^]^%T^rE^rs!)|swE^wxGpx#OE^#O#P!!u#P#oE^#o#p!#d#p#qE^#q#r!#d#r;'SE^;'S;=`!)v<%lOE^#cEia&w!b&oS&rW&msOYE^YZ%TZ]E^]^%T^rE^rsFnswE^wxGpx#OE^#O#P!!u#P#oE^#o#p!#d#p#qE^#q#r!#d#r;'SE^;'S;=`!)v<%lOE^#cFw]&w!b&oS&msOr%Trs'Vsw%Twx/Xx#O%T#O#P7o#P#o%T#o#p8^#p#q%T#q#r8^#r;'S%T;'S;=`=v<%lO%T#cGya&w!b&rW&msOYE^YZ%TZ]E^]^%T^rE^rsFnswE^wxIOx#OE^#O#P!!u#P#oE^#o#p!#d#p#qE^#q#r!#d#r;'SE^;'S;=`!)v<%lOE^#cIXa&w!b&rW&msOYE^YZ%TZ]E^]^%T^rE^rsFnswE^wxJ^x#OE^#O#P!!u#P#oE^#o#p!#d#p#qE^#q#r!#d#r;'SE^;'S;=`!)v<%lOE^#_Jg_&w!b&rW&msOYJ^YZ1XZ]J^]^1X^rJ^rsKfs#OJ^#O#PL`#P#oJ^#o#pL}#p#qJ^#q#rL}#r;'SJ^;'S;=`!!o<%lOJ^#_KmZ&w!b&msOr1Xrs2ys#O1X#O#P3q#P#o1X#o#p4`#p#q1X#q#r4`#r;'S1X;'S;=`7i<%lO1X#_LeW&w!bO#oJ^#o#pL}#p#qJ^#q#rL}#r;'SJ^;'S;=`! r;=`<%lL}<%lOJ^{MUZ&rW&msOYL}YZ4`Z]L}]^4`^rL}rsMws#OL}#O#PNc#P;'SL};'S;=`! l<%lOL}{M|V&msOr4`rs5ds#O4`#O#P5y#P;'S4`;'S;=`6t<%lO4`{NfRO;'SL};'S;=`No;=`OL}{Nv[&rW&msOYL}YZ4`Z]L}]^4`^rL}rsMws#OL}#O#PNc#P;'SL};'S;=`! l;=`<%lL}<%lOL}{! oP;=`<%lL}#_! y[&rW&msOYL}YZ4`Z]L}]^4`^rL}rsMws#OL}#O#PNc#P;'SL};'S;=`! l;=`<%lJ^<%lOL}#_!!rP;=`<%lJ^#c!!zW&w!bO#oE^#o#p!#d#p#qE^#q#r!#d#r;'SE^;'S;=`!(q;=`<%l!#d<%lOE^!P!#m]&oS&rW&msOY!#dYZ8^Z]!#d]^8^^r!#drs!$fsw!#dwx!%Yx#O!#d#O#P!'Y#P;'S!#d;'S;=`!(k<%lO!#d!P!$mX&oS&msOr8^rs9rsw8^wx:dx#O8^#O#P;v#P;'S8^;'S;=`<y<%lO8^!P!%a]&rW&msOY!#dYZ8^Z]!#d]^8^^r!#drs!$fsw!#dwx!&Yx#O!#d#O#P!'Y#P;'S!#d;'S;=`!(k<%lO!#d!P!&a]&rW&msOY!#dYZ8^Z]!#d]^8^^r!#drs!$fsw!#dwxL}x#O!#d#O#P!'Y#P;'S!#d;'S;=`!(k<%lO!#d!P!']RO;'S!#d;'S;=`!'f;=`O!#d!P!'o^&oS&rW&msOY!#dYZ8^Z]!#d]^8^^r!#drs!$fsw!#dwx!%Yx#O!#d#O#P!'Y#P;'S!#d;'S;=`!(k;=`<%l!#d<%lO!#d!P!(nP;=`<%l!#d#c!(z^&oS&rW&msOY!#dYZ8^Z]!#d]^8^^r!#drs!$fsw!#dwx!%Yx#O!#d#O#P!'Y#P;'S!#d;'S;=`!(k;=`<%lE^<%lO!#d#c!)yP;=`<%lE^#c!*V]&w!b&oS&msOr%Trs!+Osw%Twx/Xx#O%T#O#P7o#P#o%T#o#p8^#p#q%T#q#r8^#r;'S%T;'S;=`=v<%lO%T#c!+ZZ&sW&w!b&oS&qsOw(Vwx)Px#O(V#O#P+Z#P#o(V#o#p+x#p#q(V#q#r+x#r;'S(V;'S;=`/R<%lO(V#s!,XaU!T&w!b&oS&rWOY!+|YZ%TZ]!+|]^%T^r!+|rs!-^sw!+|wx!:hx#O!+|#O#P!FW#P#o!+|#o#p!GT#p#q!+|#q#r!GT#r;'S!+|;'S;=`!Nh<%lO!+|#s!-gaU!T&w!b&oSOY!+|YZ%TZ]!+|]^%T^r!+|rs!.lsw!+|wx!:hx#O!+|#O#P!FW#P#o!+|#o#p!GT#p#q!+|#q#r!GT#r;'S!+|;'S;=`!Nh<%lO!+|#s!.uaU!T&w!b&oSOY!+|YZ%TZ]!+|]^%T^r!+|rs!/zsw!+|wx!:hx#O!+|#O#P!FW#P#o!+|#o#p!GT#p#q!+|#q#r!GT#r;'S!+|;'S;=`!Nh<%lO!+|#k!0T_U!T&w!b&oSOY!/zYZ(VZ]!/z]^(V^w!/zwx!1Sx#O!/z#O#P!4z#P#o!/z#o#p!5w#p#q!/z#q#r!5w#r;'S!/z;'S;=`!:b<%lO!/z#k!1Z_U!T&w!bOY!/zYZ(VZ]!/z]^(V^w!/zwx!2Yx#O!/z#O#P!4z#P#o!/z#o#p!5w#p#q!/z#q#r!5w#r;'S!/z;'S;=`!:b<%lO!/z#k!2a_U!T&w!bOY!/zYZ(VZ]!/z]^(V^w!/zwx!3`x#O!/z#O#P!4z#P#o!/z#o#p!5w#p#q!/z#q#r!5w#r;'S!/z;'S;=`!:b<%lO!/z#g!3gZU!T&w!bOY!3`YZ*oZ]!3`]^*o^#o!3`#o#p!4Y#p#q!3`#q#r!4Y#r;'S!3`;'S;=`!4t<%lO!3`!T!4_TU!TOY!4YZ]!4Y^;'S!4Y;'S;=`!4n<%lO!4Y!T!4qP;=`<%l!4Y#g!4wP;=`<%l!3`#k!5R[U!T&w!bOY!/zYZ(VZ]!/z]^(V^#o!/z#o#p!5w#p#q!/z#q#r!5w#r;'S!/z;'S;=`!9s;=`<%l+x<%lO!/z!X!6OZU!T&oSOY!5wYZ+xZ]!5w]^+x^w!5wwx!6qx#O!5w#O#P!8a#P;'S!5w;'S;=`!9m<%lO!5w!X!6vZU!TOY!5wYZ+xZ]!5w]^+x^w!5wwx!7ix#O!5w#O#P!8a#P;'S!5w;'S;=`!9m<%lO!5w!X!7nZU!TOY!5wYZ+xZ]!5w]^+x^w!5wwx!4Yx#O!5w#O#P!8a#P;'S!5w;'S;=`!9m<%lO!5w!X!8fWU!TOY!5wYZ+xZ]!5w]^+x^;'S!5w;'S;=`!9O;=`<%l+x<%lO!5w!X!9TW&oSOw+xwx,dx#O+x#O#P-c#P;'S+x;'S;=`.^;=`<%l!5w<%lO+x!X!9pP;=`<%l!5w#k!9xW&oSOw+xwx,dx#O+x#O#P-c#P;'S+x;'S;=`.^;=`<%l!/z<%lO+x#k!:eP;=`<%l!/z#s!:qaU!T&w!b&rWOY!+|YZ%TZ]!+|]^%T^r!+|rs!-^sw!+|wx!;vx#O!+|#O#P!FW#P#o!+|#o#p!GT#p#q!+|#q#r!GT#r;'S!+|;'S;=`!Nh<%lO!+|#s!<PaU!T&w!b&rWOY!+|YZ%TZ]!+|]^%T^r!+|rs!-^sw!+|wx!=Ux#O!+|#O#P!FW#P#o!+|#o#p!GT#p#q!+|#q#r!GT#r;'S!+|;'S;=`!Nh<%lO!+|#o!=__U!T&w!b&rWOY!=UYZ1XZ]!=U]^1X^r!=Urs!>^s#O!=U#O#P!@j#P#o!=U#o#p!Ag#p#q!=U#q#r!Ag#r;'S!=U;'S;=`!FQ<%lO!=U#o!>e_U!T&w!bOY!=UYZ1XZ]!=U]^1X^r!=Urs!?ds#O!=U#O#P!@j#P#o!=U#o#p!Ag#p#q!=U#q#r!Ag#r;'S!=U;'S;=`!FQ<%lO!=U#o!?k_U!T&w!bOY!=UYZ1XZ]!=U]^1X^r!=Urs!3`s#O!=U#O#P!@j#P#o!=U#o#p!Ag#p#q!=U#q#r!Ag#r;'S!=U;'S;=`!FQ<%lO!=U#o!@q[U!T&w!bOY!=UYZ1XZ]!=U]^1X^#o!=U#o#p!Ag#p#q!=U#q#r!Ag#r;'S!=U;'S;=`!Ec;=`<%l4`<%lO!=U!]!AnZU!T&rWOY!AgYZ4`Z]!Ag]^4`^r!Agrs!Bas#O!Ag#O#P!DP#P;'S!Ag;'S;=`!E]<%lO!Ag!]!BfZU!TOY!AgYZ4`Z]!Ag]^4`^r!Agrs!CXs#O!Ag#O#P!DP#P;'S!Ag;'S;=`!E]<%lO!Ag!]!C^ZU!TOY!AgYZ4`Z]!Ag]^4`^r!Agrs!4Ys#O!Ag#O#P!DP#P;'S!Ag;'S;=`!E]<%lO!Ag!]!DUWU!TOY!AgYZ4`Z]!Ag]^4`^;'S!Ag;'S;=`!Dn;=`<%l4`<%lO!Ag!]!DsW&rWOr4`rs4zs#O4`#O#P5y#P;'S4`;'S;=`6t;=`<%l!Ag<%lO4`!]!E`P;=`<%l!Ag#o!EhW&rWOr4`rs4zs#O4`#O#P5y#P;'S4`;'S;=`6t;=`<%l!=U<%lO4`#o!FTP;=`<%l!=U#s!F_[U!T&w!bOY!+|YZ%TZ]!+|]^%T^#o!+|#o#p!GT#p#q!+|#q#r!GT#r;'S!+|;'S;=`!Mq;=`<%l8^<%lO!+|!a!G^]U!T&oS&rWOY!GTYZ8^Z]!GT]^8^^r!GTrs!HVsw!GTwx!JVx#O!GT#O#P!LV#P;'S!GT;'S;=`!Mk<%lO!GT!a!H^]U!T&oSOY!GTYZ8^Z]!GT]^8^^r!GTrs!IVsw!GTwx!JVx#O!GT#O#P!LV#P;'S!GT;'S;=`!Mk<%lO!GT!a!I^]U!T&oSOY!GTYZ8^Z]!GT]^8^^r!GTrs!5wsw!GTwx!JVx#O!GT#O#P!LV#P;'S!GT;'S;=`!Mk<%lO!GT!a!J^]U!T&rWOY!GTYZ8^Z]!GT]^8^^r!GTrs!HVsw!GTwx!KVx#O!GT#O#P!LV#P;'S!GT;'S;=`!Mk<%lO!GT!a!K^]U!T&rWOY!GTYZ8^Z]!GT]^8^^r!GTrs!HVsw!GTwx!Agx#O!GT#O#P!LV#P;'S!GT;'S;=`!Mk<%lO!GT!a!L[WU!TOY!GTYZ8^Z]!GT]^8^^;'S!GT;'S;=`!Lt;=`<%l8^<%lO!GT!a!L{Y&oS&rWOr8^rs9Qsw8^wx:dx#O8^#O#P;v#P;'S8^;'S;=`<y;=`<%l!GT<%lO8^!a!MnP;=`<%l!GT#s!MxY&oS&rWOr8^rs9Qsw8^wx:dx#O8^#O#P;v#P;'S8^;'S;=`<y;=`<%l!+|<%lO8^#s!NkP;=`<%l!+|#b!Ny_&UQ&w!b&oS&rWOr%Trs&Vsw%Twx/Xx!_%T!_!`# x!`#O%T#O#P7o#P#o%T#o#p8^#p#q%T#q#r8^#r;'S%T;'S;=`=v<%lO%T#b#!T]#Qr&w!b&oS&rWOr%Trs&Vsw%Twx/Xx#O%T#O#P7o#P#o%T#o#p8^#p#q%T#q#r8^#r;'S%T;'S;=`=v<%lO%T#b##X_&OQ&w!b&oS&rWOr%Trs&Vsw%Twx/Xx!_%T!_!`# x!`#O%T#O#P7o#P#o%T#o#p8^#p#q%T#q#r8^#r;'S%T;'S;=`=v<%lO%T#c#$aa&w!b&rW&msOY#%fYZ%TZ]#%f]^%T^r#%frs#&vsw#%fwx#8Ux#O#%f#O#P#0}#P#o#%f#o#p#1l#p#q#%f#q#r#1l#r;'S#%f;'S;=`#8O<%lO#%f#c#%qa&w!b&oS&rW&msOY#%fYZ%TZ]#%f]^%T^r#%frs#&vsw#%fwx#/{x#O#%f#O#P#0}#P#o#%f#o#p#1l#p#q#%f#q#r#1l#r;'S#%f;'S;=`#8O<%lO#%f#c#'Pa&w!b&oS&msOY#%fYZ%TZ]#%f]^%T^r#%frs#(Usw#%fwx#/{x#O#%f#O#P#0}#P#o#%f#o#p#1l#p#q#%f#q#r#1l#r;'S#%f;'S;=`#8O<%lO#%f#c#(_a&w!b&oS&msOY#%fYZ%TZ]#%f]^%T^r#%frs#)dsw#%fwx#/{x#O#%f#O#P#0}#P#o#%f#o#p#1l#p#q#%f#q#r#1l#r;'S#%f;'S;=`#8O<%lO#%f#Z#)m_&w!b&oS&msOY#)dYZ(VZ]#)d]^(V^w#)dwx#*lx#O#)d#O#P#+f#P#o#)d#o#p#,T#p#q#)d#q#r#,T#r;'S#)d;'S;=`#/u<%lO#)d#Z#*sZ&w!b&msOw(Vwx)wx#O(V#O#P+Z#P#o(V#o#p+x#p#q(V#q#r+x#r;'S(V;'S;=`/R<%lO(V#Z#+kW&w!bO#o#)d#o#p#,T#p#q#)d#q#r#,T#r;'S#)d;'S;=`#.x;=`<%l#,T<%lO#)dw#,[Z&oS&msOY#,TYZ+xZ]#,T]^+x^w#,Twx#,}x#O#,T#O#P#-i#P;'S#,T;'S;=`#.r<%lO#,Tw#-SV&msOw+xwx,|x#O+x#O#P-c#P;'S+x;'S;=`.^<%lO+xw#-lRO;'S#,T;'S;=`#-u;=`O#,Tw#-|[&oS&msOY#,TYZ+xZ]#,T]^+x^w#,Twx#,}x#O#,T#O#P#-i#P;'S#,T;'S;=`#.r;=`<%l#,T<%lO#,Tw#.uP;=`<%l#,T#Z#/P[&oS&msOY#,TYZ+xZ]#,T]^+x^w#,Twx#,}x#O#,T#O#P#-i#P;'S#,T;'S;=`#.r;=`<%l#)d<%lO#,T#Z#/xP;=`<%l#)d#c#0U]&w!b&rW&msOr%Trs&Vsw%Twx0Xx#O%T#O#P7o#P#o%T#o#p8^#p#q%T#q#r8^#r;'S%T;'S;=`=v<%lO%T#c#1SW&w!bO#o#%f#o#p#1l#p#q#%f#q#r#1l#r;'S#%f;'S;=`#6y;=`<%l#1l<%lO#%f!P#1u]&oS&rW&msOY#1lYZ8^Z]#1l]^8^^r#1lrs#2nsw#1lwx#4nx#O#1l#O#P#5b#P;'S#1l;'S;=`#6s<%lO#1l!P#2u]&oS&msOY#1lYZ8^Z]#1l]^8^^r#1lrs#3nsw#1lwx#4nx#O#1l#O#P#5b#P;'S#1l;'S;=`#6s<%lO#1l!P#3u]&oS&msOY#1lYZ8^Z]#1l]^8^^r#1lrs#,Tsw#1lwx#4nx#O#1l#O#P#5b#P;'S#1l;'S;=`#6s<%lO#1l!P#4uX&rW&msOr8^rs9Qsw8^wx;Ux#O8^#O#P;v#P;'S8^;'S;=`<y<%lO8^!P#5eRO;'S#1l;'S;=`#5n;=`O#1l!P#5w^&oS&rW&msOY#1lYZ8^Z]#1l]^8^^r#1lrs#2nsw#1lwx#4nx#O#1l#O#P#5b#P;'S#1l;'S;=`#6s;=`<%l#1l<%lO#1l!P#6vP;=`<%l#1l#c#7S^&oS&rW&msOY#1lYZ8^Z]#1l]^8^^r#1lrs#2nsw#1lwx#4nx#O#1l#O#P#5b#P;'S#1l;'S;=`#6s;=`<%l#%f<%lO#1l#c#8RP;=`<%l#%f#c#8_]&w!b&rW&msOr%Trs&Vsw%Twx#9Wx#O%T#O#P7o#P#o%T#o#p8^#p#q%T#q#r8^#r;'S%T;'S;=`=v<%lO%T#c#9cZ&pS&w!b&rW&nsOr1Xrs2Rs#O1X#O#P3q#P#o1X#o#p4`#p#q1X#q#r4`#r;'S1X;'S;=`7i<%lO1X#c#:a]js&w!b&oS&rWOr%Trs&Vsw%Twx/Xx#O%T#O#P7o#P#o%T#o#p8^#p#q%T#q#r8^#r;'S%T;'S;=`=v<%lO%T!q#;e]iR&w!b&oS&rWOr%Trs&Vsw%Twx/Xx#O%T#O#P7o#P#o%T#o#p8^#p#q%T#q#r8^#r;'S%T;'S;=`=v<%lO%T#c#<iaXs&w!b&oS&rWOr%Trs&Vsw%Twx/Xxz%Tz{#=n{!_%T!_!`# x!`#O%T#O#P7o#P#o%T#o#p8^#p#q%T#q#r8^#r;'S%T;'S;=`=v<%lO%T#c#=y_cR&w!b&oS&rWOr%Trs&Vsw%Twx/Xx!_%T!_!`# x!`#O%T#O#P7o#P#o%T#o#p8^#p#q%T#q#r8^#r;'S%T;'S;=`=v<%lO%T#c#?T_&Rs&w!b&oS&rWOr%Trs&Vsw%Twx/Xx!_%T!_!`# x!`#O%T#O#P7o#P#o%T#o#p8^#p#q%T#q#r8^#r;'S%T;'S;=`=v<%lO%T!q#@_]|R&w!b&oS&rWOr%Trs&Vsw%Twx/Xx#O%T#O#P7o#P#o%T#o#p8^#p#q%T#q#r8^#r;'S%T;'S;=`=v<%lO%T#s#Ac`&Ss&w!b&oS&rWOr%Trs&Vsw%Twx/Xx!_%T!_!`# x!`!a#Be!a#O%T#O#P7o#P#o%T#o#p8^#p#q%T#q#r8^#r;'S%T;'S;=`=v<%lO%T#O#Bp]'W`&w!b&oS&rWOr%Trs&Vsw%Twx/Xx#O%T#O#P7o#P#o%T#o#p8^#p#q%T#q#r8^#r;'S%T;'S;=`=v<%lO%T#c#Cta!hQ&w!b&oS&rWOr%Trs&Vsw%Twx/Xx!O%T!O!P#Dy!P!Q%T!Q![#GV![#O%T#O#P7o#P#o%T#o#p8^#p#q%T#q#r8^#r;'S%T;'S;=`=v<%lO%T#c#ES_&w!b&oS&rWOr%Trs&Vsw%Twx/Xx!O%T!O!P#FR!P#O%T#O#P7o#P#o%T#o#p8^#p#q%T#q#r8^#r;'S%T;'S;=`=v<%lO%T#c#F^]!zs&w!b&oS&rWOr%Trs&Vsw%Twx/Xx#O%T#O#P7o#P#o%T#o#p8^#p#q%T#q#r8^#r;'S%T;'S;=`=v<%lO%T#a#Gbi!jq&w!b&oS&rWOr%Trs&Vsw%Twx/Xx!Q%T!Q![#GV![!g%T!g!h#IP!h!l%T!l!m#MZ!m#O%T#O#P7o#P#R%T#R#S#GV#S#X%T#X#Y#IP#Y#^%T#^#_#MZ#_#o%T#o#p8^#p#q%T#q#r8^#r;'S%T;'S;=`=v<%lO%T#a#IYc&w!b&oS&rWOr%Trs&Vsw%Twx/Xx{%T{|#Je|}%T}!O#Je!O!Q%T!Q![#Km![#O%T#O#P7o#P#o%T#o#p8^#p#q%T#q#r8^#r;'S%T;'S;=`=v<%lO%T#a#Jn_&w!b&oS&rWOr%Trs&Vsw%Twx/Xx!Q%T!Q![#Km![#O%T#O#P7o#P#o%T#o#p8^#p#q%T#q#r8^#r;'S%T;'S;=`=v<%lO%T#a#Kxe!jq&w!b&oS&rWOr%Trs&Vsw%Twx/Xx!Q%T!Q![#Km![!l%T!l!m#MZ!m#O%T#O#P7o#P#R%T#R#S#Km#S#^%T#^#_#MZ#_#o%T#o#p8^#p#q%T#q#r8^#r;'S%T;'S;=`=v<%lO%T#a#Mf]!jq&w!b&oS&rWOr%Trs&Vsw%Twx/Xx#O%T#O#P7o#P#o%T#o#p8^#p#q%T#q#r8^#r;'S%T;'S;=`=v<%lO%T#c#Nja&TR&w!b&oS&rWOr%Trs&Vsw%Twx/Xx!P%T!P!Q$ o!Q!_%T!_!`# x!`#O%T#O#P7o#P#o%T#o#p8^#p#q%T#q#r8^#r;'S%T;'S;=`=v<%lO%T#b$ z_&VQ&w!b&oS&rWOr%Trs&Vsw%Twx/Xx!_%T!_!`# x!`#O%T#O#P7o#P#o%T#o#p8^#p#q%T#q#r8^#r;'S%T;'S;=`=v<%lO%T#a$#Uw!jq&w!b&oS&rWOr%Trs&Vsw%Twx/Xx!O%T!O!P$%o!P!Q%T!Q![$&w![!d%T!d!e$(w!e!g%T!g!h#IP!h!l%T!l!m#MZ!m!q%T!q!r$+m!r!z%T!z!{$.]!{#O%T#O#P7o#P#R%T#R#S$&w#S#U%T#U#V$(w#V#X%T#X#Y#IP#Y#^%T#^#_#MZ#_#c%T#c#d$+m#d#l%T#l#m$.]#m#o%T#o#p8^#p#q%T#q#r8^#r;'S%T;'S;=`=v<%lO%T#a$%x_&w!b&oS&rWOr%Trs&Vsw%Twx/Xx!Q%T!Q![#GV![#O%T#O#P7o#P#o%T#o#p8^#p#q%T#q#r8^#r;'S%T;'S;=`=v<%lO%T#a$'Sk!jq&w!b&oS&rWOr%Trs&Vsw%Twx/Xx!O%T!O!P$%o!P!Q%T!Q![$&w![!g%T!g!h#IP!h!l%T!l!m#MZ!m#O%T#O#P7o#P#R%T#R#S$&w#S#X%T#X#Y#IP#Y#^%T#^#_#MZ#_#o%T#o#p8^#p#q%T#q#r8^#r;'S%T;'S;=`=v<%lO%T#a$)Qb&w!b&oS&rWOr%Trs&Vsw%Twx/Xx!Q%T!Q!R$*Y!R!S$*Y!S#O%T#O#P7o#P#R%T#R#S$*Y#S#o%T#o#p8^#p#q%T#q#r8^#r;'S%T;'S;=`=v<%lO%T#a$*eb!jq&w!b&oS&rWOr%Trs&Vsw%Twx/Xx!Q%T!Q!R$*Y!R!S$*Y!S#O%T#O#P7o#P#R%T#R#S$*Y#S#o%T#o#p8^#p#q%T#q#r8^#r;'S%T;'S;=`=v<%lO%T#a$+va&w!b&oS&rWOr%Trs&Vsw%Twx/Xx!Q%T!Q!Y$,{!Y#O%T#O#P7o#P#R%T#R#S$,{#S#o%T#o#p8^#p#q%T#q#r8^#r;'S%T;'S;=`=v<%lO%T#a$-Wa!jq&w!b&oS&rWOr%Trs&Vsw%Twx/Xx!Q%T!Q!Y$,{!Y#O%T#O#P7o#P#R%T#R#S$,{#S#o%T#o#p8^#p#q%T#q#r8^#r;'S%T;'S;=`=v<%lO%T#a$.fe&w!b&oS&rWOr%Trs&Vsw%Twx/Xx!Q%T!Q![$/w![!c%T!c!i$/w!i#O%T#O#P7o#P#R%T#R#S$/w#S#T%T#T#Z$/w#Z#o%T#o#p8^#p#q%T#q#r8^#r;'S%T;'S;=`=v<%lO%T#a$0Se!jq&w!b&oS&rWOr%Trs&Vsw%Twx/Xx!Q%T!Q![$/w![!c%T!c!i$/w!i#O%T#O#P7o#P#R%T#R#S$/w#S#T%T#T#Z$/w#Z#o%T#o#p8^#p#q%T#q#r8^#r;'S%T;'S;=`=v<%lO%T#s$1p_}!T&w!b&oS&rWOr%Trs&Vsw%Twx/Xx!_%T!_!`$2o!`#O%T#O#P7o#P#o%T#o#p8^#p#q%T#q#r8^#r;'S%T;'S;=`=v<%lO%T!q$2z]&_R&w!b&oS&rWOr%Trs&Vsw%Twx/Xx#O%T#O#P7o#P#o%T#o#p8^#p#q%T#q#r8^#r;'S%T;'S;=`=v<%lO%T#c$4O]#os&w!b&oS&rWOr%Trs&Vsw%Twx/Xx#O%T#O#P7o#P#o%T#o#p8^#p#q%T#q#r8^#r;'S%T;'S;=`=v<%lO%T#c$5SaoR&w!b&oS&rWOr%Trs&Vsw%Twx/Xx!^%T!^!_$6X!_!`Av!`!aAv!a#O%T#O#P7o#P#o%T#o#p8^#p#q%T#q#r8^#r;'S%T;'S;=`=v<%lO%T#b$6d_&PQ&w!b&oS&rWOr%Trs&Vsw%Twx/Xx!_%T!_!`# x!`#O%T#O#P7o#P#o%T#o#p8^#p#q%T#q#r8^#r;'S%T;'S;=`=v<%lO%T#c$7n_&^s&w!b&oS&rWOr%Trs&Vsw%Twx/Xx!_%T!_!`Av!`#O%T#O#P7o#P#o%T#o#p8^#p#q%T#q#r8^#r;'S%T;'S;=`=v<%lO%T#c$8x`oR&w!b&oS&rWOr%Trs&Vsw%Twx/Xx!_%T!_!`Av!`!a$9z!a#O%T#O#P7o#P#o%T#o#p8^#p#q%T#q#r8^#r;'S%T;'S;=`=v<%lO%T#b$:V_&QQ&w!b&oS&rWOr%Trs&Vsw%Twx/Xx!_%T!_!`# x!`#O%T#O#P7o#P#o%T#o#p8^#p#q%T#q#r8^#r;'S%T;'S;=`=v<%lO%T#c$;c_aQ$VP&w!b&oS&rWOr%Trs&Vsw%Twx/Xx!_%T!_!`# x!`#O%T#O#P7o#P#o%T#o#p8^#p#q%T#q#r8^#r;'S%T;'S;=`=v<%lO%T#s$<oe&w!b&oS&rW&l`&XsOr%Trs&Vsw%Twx/Xx!Q%T!Q![$<b![!c%T!c!}$<b!}#O%T#O#P7o#P#R%T#R#S$<b#S#T%T#T#o$<b#o#p8^#p#q%T#q#r8^#r$g%T$g;'S$<b;'S;=`$>Q<%lO$<b#s$>TP;=`<%l$<b#s$>ei&w!b&oS&rW&l`&XsOr%Trs$@Ssw%Twx$C`x!Q%T!Q![$<b![!c%T!c!t$<b!t!u$Fl!u!}$<b!}#O%T#O#P7o#P#R%T#R#S$<b#S#T%T#T#f$<b#f#g$Fl#g#o$<b#o#p8^#p#q%T#q#r8^#r$g%T$g;'S$<b;'S;=`$>Q<%lO$<b#c$@]a&w!b&oS&msOYE^YZ%TZ]E^]^%T^rE^rs$AbswE^wxGpx#OE^#O#P!!u#P#oE^#o#p!#d#p#qE^#q#r!#d#r;'SE^;'S;=`!)v<%lOE^#c$Ak]&w!b&oS&msOr%Trs$Bdsw%Twx/Xx#O%T#O#P7o#P#o%T#o#p8^#p#q%T#q#r8^#r;'S%T;'S;=`=v<%lO%T#Z$BmZ&w!b&oS&qsOw(Vwx)Px#O(V#O#P+Z#P#o(V#o#p+x#p#q(V#q#r+x#r;'S(V;'S;=`/R<%lO(V#c$Cia&w!b&rW&msOY#%fYZ%TZ]#%f]^%T^r#%frs#&vsw#%fwx$Dnx#O#%f#O#P#0}#P#o#%f#o#p#1l#p#q#%f#q#r#1l#r;'S#%f;'S;=`#8O<%lO#%f#c$Dw]&w!b&rW&msOr%Trs&Vsw%Twx$Epx#O%T#O#P7o#P#o%T#o#p8^#p#q%T#q#r8^#r;'S%T;'S;=`=v<%lO%T#_$EyZ&w!b&rW&nsOr1Xrs2Rs#O1X#O#P3q#P#o1X#o#p4`#p#q1X#q#r4`#r;'S1X;'S;=`7i<%lO1X#s$Fye&w!b&oS&rW&l`&XsOr%Trs$@Ssw%Twx$C`x!Q%T!Q![$<b![!c%T!c!}$<b!}#O%T#O#P7o#P#R%T#R#S$<b#S#T%T#T#o$<b#o#p8^#p#q%T#q#r8^#r$g%T$g;'S$<b;'S;=`$>Q<%lO$<b#s$Hii&w!b&oS&rW&l`&XsOr%Trs$JWsw%Twx$MUx!Q%T!Q![$<b![!c%T!c!t$<b!t!u%!S!u!}$<b!}#O%T#O#P7o#P#R%T#R#S$<b#S#T%T#T#f$<b#f#g%!S#g#o$<b#o#p8^#p#q%T#q#r8^#r$g%T$g;'S$<b;'S;=`$>Q<%lO$<b#c$Ja]&w!b&oS&xsOr%Trs$KYsw%Twx/Xx#O%T#O#P7o#P#o%T#o#p8^#p#q%T#q#r8^#r;'S%T;'S;=`=v<%lO%T#c$Ka]&w!b&oSOr%Trs$LYsw%Twx/Xx#O%T#O#P7o#P#o%T#o#p8^#p#q%T#q#r8^#r;'S%T;'S;=`=v<%lO%T#Z$LcZ&w!b&oS&zsOw(Vwx)Px#O(V#O#P+Z#P#o(V#o#p+x#p#q(V#q#r+x#r;'S(V;'S;=`/R<%lO(V#c$M_]&w!b&rW&tsOr%Trs&Vsw%Twx$NWx#O%T#O#P7o#P#o%T#o#p8^#p#q%T#q#r8^#r;'S%T;'S;=`=v<%lO%T#c$N_]&w!b&rWOr%Trs&Vsw%Twx% Wx#O%T#O#P7o#P#o%T#o#p8^#p#q%T#q#r8^#r;'S%T;'S;=`=v<%lO%T#_% aZ&w!b&rW&ysOr1Xrs2Rs#O1X#O#P3q#P#o1X#o#p4`#p#q1X#q#r4`#r;'S1X;'S;=`7i<%lO1X#s%!ae&w!b&oS&rW&l`&XsOr%Trs$JWsw%Twx$MUx!Q%T!Q![$<b![!c%T!c!}$<b!}#O%T#O#P7o#P#R%T#R#S$<b#S#T%T#T#o$<b#o#p8^#p#q%T#q#r8^#r$g%T$g;'S$<b;'S;=`$>Q<%lO$<b#s%$Pm&w!b&oS&rW&l`&XsOr%Trs$@Ssw%Twx$C`x!Q%T!Q![$<b![!c%T!c!h$<b!h!i%!S!i!t$<b!t!u$Fl!u!}$<b!}#O%T#O#P7o#P#R%T#R#S$<b#S#T%T#T#U$<b#U#V$Fl#V#Y$<b#Y#Z%!S#Z#o$<b#o#p8^#p#q%T#q#r8^#r$g%T$g;'S$<b;'S;=`$>Q<%lO$<b#c%&V]!Zs&w!b&oS&rWOr%Trs&Vsw%Twx/Xx#O%T#O#P7o#P#o%T#o#p8^#p#q%T#q#r8^#r;'S%T;'S;=`=v<%lO%T!q%'Z]!YR&w!b&oS&rWOr%Trs&Vsw%Twx/Xx#O%T#O#P7o#P#o%T#o#p8^#p#q%T#q#r8^#r;'S%T;'S;=`=v<%lO%T#b%(__%}Q&w!b&oS&rWOr%Trs&Vsw%Twx/Xx!_%T!_!`# x!`#O%T#O#P7o#P#o%T#o#p8^#p#q%T#q#r8^#r;'S%T;'S;=`=v<%lO%T#a%)gX!_#T&oS&rWOr8^rs9Qsw8^wx:dx#O8^#O#P;v#P;'S8^;'S;=`<y<%lO8^#c%*__%|R&w!b&oS&rWOr%Trs&Vsw%Twx/Xx!_%T!_!`# x!`#O%T#O#P7o#P#o%T#o#p8^#p#q%T#q#r8^#r;'S%T;'S;=`=v<%lO%T!q%+gX!^!e&oS&rWOr8^rs9Qsw8^wx:dx#O8^#O#P;v#P;'S8^;'S;=`<y<%lO8^#a%,_]&Wq&w!b&oS&rWOr%Trs&Vsw%Twx/Xx#O%T#O#P7o#P#o%T#o#p8^#p#q%T#q#r8^#r;'S%T;'S;=`=v<%lO%T",tokenizers:[_te,ste,ote,lte,ate,cte,Tte,0,1,2,3,4,5,6],topRules:{Script:[0,7]},specialized:[{term:239,get:t=>ute[t]||-1}],tokenPrec:7500}),Kw=new o7,yW=new Set(["Script","Body","FunctionDefinition","ClassDefinition","LambdaExpression","ForStatement","MatchClause"]);function wM(t){return(e,o,_)=>{if(_)return!1;let l=e.node.getChild("VariableName");return l&&o(l,t),!0}}const dte={FunctionDefinition:wM("function"),ClassDefinition:wM("class"),ForStatement(t,e,o){if(o){for(let _=t.node.firstChild;_;_=_.nextSibling)if(_.name=="VariableName")e(_,"variable");else if(_.name=="in")break}},ImportStatement(t,e){var o,_;let{node:l}=t,c=((o=l.firstChild)===null||o===void 0?void 0:o.name)=="from";for(let T=l.getChild("import");T;T=T.nextSibling)T.name=="VariableName"&&((_=T.nextSibling)===null||_===void 0?void 0:_.name)!="as"&&e(T,c?"variable":"namespace")},AssignStatement(t,e){for(let o=t.node.firstChild;o;o=o.nextSibling)if(o.name=="VariableName")e(o,"variable");else if(o.name==":"||o.name=="AssignOp")break},ParamList(t,e){for(let o=null,_=t.node.firstChild;_;_=_.nextSibling)_.name=="VariableName"&&(!o||!/\*|AssignOp/.test(o.name))&&e(_,"variable"),o=_},CapturePattern:wM("variable"),AsPattern:wM("variable"),__proto__:null};function $W(t,e){let o=Kw.get(e);if(o)return o;let _=[],l=!0;function c(T,E){let u=t.sliceString(T.from,T.to);_.push({label:u,type:E})}return e.cursor(Vs.IncludeAnonymous).iterate(T=>{if(T.name){let E=dte[T.name];if(E&&E(T,c,l)||!l&&yW.has(T.name))return!1;l=!1}else if(T.to-T.from>8192){for(let E of $W(t,T.node))_.push(E);return!1}}),Kw.set(e,_),_}const zw=/^[\w\xa1-\uffff][\w\d\xa1-\uffff]*$/,BW=["String","FormatString","Comment","PropertyName"];function Ote(t){let e=Qs(t.state).resolveInner(t.pos,-1);if(BW.indexOf(e.name)>-1)return null;let o=e.name=="VariableName"||e.to-e.from<20&&zw.test(t.state.sliceDoc(e.from,e.to));if(!o&&!t.explicit)return null;let _=[];for(let l=e;l;l=l.parent)yW.has(l.name)&&(_=_.concat($W(t.state.doc,l)));return{options:_,from:o?e.from:t.pos,validFor:zw}}const hte=["__annotations__","__builtins__","__debug__","__doc__","__import__","__name__","__loader__","__package__","__spec__","False","None","True"].map(t=>({label:t,type:"constant"})).concat(["ArithmeticError","AssertionError","AttributeError","BaseException","BlockingIOError","BrokenPipeError","BufferError","BytesWarning","ChildProcessError","ConnectionAbortedError","ConnectionError","ConnectionRefusedError","ConnectionResetError","DeprecationWarning","EOFError","Ellipsis","EncodingWarning","EnvironmentError","Exception","FileExistsError","FileNotFoundError","FloatingPointError","FutureWarning","GeneratorExit","IOError","ImportError","ImportWarning","IndentationError","IndexError","InterruptedError","IsADirectoryError","KeyError","KeyboardInterrupt","LookupError","MemoryError","ModuleNotFoundError","NameError","NotADirectoryError","NotImplemented","NotImplementedError","OSError","OverflowError","PendingDeprecationWarning","PermissionError","ProcessLookupError","RecursionError","ReferenceError","ResourceWarning","RuntimeError","RuntimeWarning","StopAsyncIteration","StopIteration","SyntaxError","SyntaxWarning","SystemError","SystemExit","TabError","TimeoutError","TypeError","UnboundLocalError","UnicodeDecodeError","UnicodeEncodeError","UnicodeError","UnicodeTranslateError","UnicodeWarning","UserWarning","ValueError","Warning","ZeroDivisionError"].map(t=>({label:t,type:"type"}))).concat(["bool","bytearray","bytes","classmethod","complex","float","frozenset","int","list","map","memoryview","object","range","set","staticmethod","str","super","tuple","type"].map(t=>({label:t,type:"class"}))).concat(["abs","aiter","all","anext","any","ascii","bin","breakpoint","callable","chr","compile","delattr","dict","dir","divmod","enumerate","eval","exec","exit","filter","format","getattr","globals","hasattr","hash","help","hex","id","input","isinstance","issubclass","iter","len","license","locals","max","min","next","oct","open","ord","pow","print","property","quit","repr","reversed","round","setattr","slice","sorted","sum","vars","zip"].map(t=>({label:t,type:"function"}))),Mte=[k_("def ${name}(${params}):\n ${}",{label:"def",detail:"function",type:"keyword"}),k_("for ${name} in ${collection}:\n ${}",{label:"for",detail:"loop",type:"keyword"}),k_("while ${}:\n ${}",{label:"while",detail:"loop",type:"keyword"}),k_("try:\n ${}\nexcept ${error}:\n ${}",{label:"try",detail:"/ except block",type:"keyword"}),k_(`if \${}:
-
- `,{label:"if",detail:"block",type:"keyword"}),k_("if ${}:\n ${}\nelse:\n ${}",{label:"if",detail:"/ else block",type:"keyword"}),k_("class ${name}:\n def __init__(self, ${params}):\n ${}",{label:"class",detail:"definition",type:"keyword"}),k_("import ${module}",{label:"import",detail:"statement",type:"keyword"}),k_("from ${module} import ${names}",{label:"from",detail:"import",type:"keyword"})],Rte=VQ(BW,TW(hte.concat(Mte)));function Zw(t,e){let o=t.baseIndentFor(e),_=t.lineAt(t.pos,-1),l=_.from+_.text.length;return/^\s*($|#)/.test(_.text)&&t.node.to<l+100&&!/\S/.test(t.state.sliceDoc(l,t.node.to))&&t.lineIndent(t.pos,-1)<=o||/^\s*(else:|elif |except |finally:)/.test(t.textAfter)&&t.lineIndent(t.pos,-1)>o?null:o+t.unit}const $C=cI.define({name:"python",parser:gte.configure({props:[_V.add({Body:t=>{var e;return(e=Zw(t,t.node))!==null&&e!==void 0?e:t.continue()},IfStatement:t=>/^\s*(else:|elif )/.test(t.textAfter)?t.baseIndent:t.continue(),TryStatement:t=>/^\s*(except |finally:|else:)/.test(t.textAfter)?t.baseIndent:t.continue(),"TupleExpression ComprehensionExpression ParamList ArgList ParenthesizedExpression":LC({closing:")"}),"DictionaryExpression DictionaryComprehensionExpression SetExpression SetComprehensionExpression":LC({closing:"}"}),"ArrayExpression ArrayComprehensionExpression":LC({closing:"]"}),"String FormatString":()=>null,Script:t=>{if(t.pos+/\s*/.exec(t.textAfter)[0].length>=t.node.to){let e=null;for(let o=t.node,_=o.to;o=o.lastChild,!(!o||o.to!=_);)o.type.name=="Body"&&(e=o);if(e){let o=Zw(t,e);if(o!=null)return o}}return t.continue()}}),cV.add({"ArrayExpression DictionaryExpression SetExpression TupleExpression":A7,Body:(t,e)=>({from:t.from+1,to:t.to-(t.to==e.doc.length?0:1)})})]}),languageData:{closeBrackets:{brackets:["(","[","{","'",'"',"'''",'"""'],stringPrefixes:["f","fr","rf","r","u","b","br","rb","F","FR","RF","R","U","B","BR","RB"]},commentTokens:{line:"#"},indentOnInput:/^\s*([\}\]\)]|else:|elif |except |finally:)$/}});function Ite(){return new O7($C,[$C.data.of({autocomplete:Ote}),$C.data.of({autocomplete:Rte})])}var Ji="top",Xn="bottom",Yn="right",en="left",ev="auto",OO=[Ji,Xn,Yn,en],qE="start",Ud="end",Ste="clippingParents",wW="viewport",Cg="popper",pte="reference",jw=OO.reduce(function(t,e){return t.concat([e+"-"+qE,e+"-"+Ud])},[]),tT=[].concat(OO,[ev]).reduce(function(t,e){return t.concat([e,e+"-"+qE,e+"-"+Ud])},[]),Lte="beforeRead",fte="read",mte="afterRead",Cte="beforeMain",Ate="main",bte="afterMain",Nte="beforeWrite",Pte="write",vte="afterWrite",Dte=[Lte,fte,mte,Cte,Ate,bte,Nte,Pte,vte];function T_(t){return t?(t.nodeName||"").toLowerCase():null}function Lr(t){if(t==null)return window;if(t.toString()!=="[object Window]"){var e=t.ownerDocument;return e&&e.defaultView||window}return t}function QE(t){var e=Lr(t).Element;return t instanceof e||t instanceof Element}function Vn(t){var e=Lr(t).HTMLElement;return t instanceof e||t instanceof HTMLElement}function tv(t){if(typeof ShadowRoot>"u")return!1;var e=Lr(t).ShadowRoot;return t instanceof e||t instanceof ShadowRoot}function Ute(t){var e=t.state;Object.keys(e.elements).forEach(function(o){var _=e.styles[o]||{},l=e.attributes[o]||{},c=e.elements[o];!Vn(c)||!T_(c)||(Object.assign(c.style,_),Object.keys(l).forEach(function(T){var E=l[T];E===!1?c.removeAttribute(T):c.setAttribute(T,E===!0?"":E)}))})}function yte(t){var e=t.state,o={popper:{position:e.options.strategy,left:"0",top:"0",margin:"0"},arrow:{position:"absolute"},reference:{}};return Object.assign(e.elements.popper.style,o.popper),e.styles=o,e.elements.arrow&&Object.assign(e.elements.arrow.style,o.arrow),function(){Object.keys(e.elements).forEach(function(_){var l=e.elements[_],c=e.attributes[_]||{},T=Object.keys(e.styles.hasOwnProperty(_)?e.styles[_]:o[_]),E=T.reduce(function(u,d){return u[d]="",u},{});!Vn(l)||!T_(l)||(Object.assign(l.style,E),Object.keys(c).forEach(function(u){l.removeAttribute(u)}))})}}var GW={name:"applyStyles",enabled:!0,phase:"write",fn:Ute,effect:yte,requires:["computeStyles"]};function c_(t){return t.split("-")[0]}var yc=Math.max,CI=Math.min,JE=Math.round;function eu(t,e){e===void 0&&(e=!1);var o=t.getBoundingClientRect(),_=1,l=1;if(Vn(t)&&e){var c=t.offsetHeight,T=t.offsetWidth;T>0&&(_=JE(o.width)/T||1),c>0&&(l=JE(o.height)/c||1)}return{width:o.width/_,height:o.height/l,top:o.top/l,right:o.right/_,bottom:o.bottom/l,left:o.left/_,x:o.left/_,y:o.top/l}}function ov(t){var e=eu(t),o=t.offsetWidth,_=t.offsetHeight;return Math.abs(e.width-o)<=1&&(o=e.width),Math.abs(e.height-_)<=1&&(_=e.height),{x:t.offsetLeft,y:t.offsetTop,width:o,height:_}}function kW(t,e){var o=e.getRootNode&&e.getRootNode();if(t.contains(e))return!0;if(o&&tv(o)){var _=e;do{if(_&&t.isSameNode(_))return!0;_=_.parentNode||_.host}while(_)}return!1}function sl(t){return Lr(t).getComputedStyle(t)}function $te(t){return["table","td","th"].indexOf(T_(t))>=0}function Pa(t){return((QE(t)?t.ownerDocument:t.document)||window.document).documentElement}function CS(t){return T_(t)==="html"?t:t.assignedSlot||t.parentNode||(tv(t)?t.host:null)||Pa(t)}function qw(t){return!Vn(t)||sl(t).position==="fixed"?null:t.offsetParent}function Bte(t){var e=navigator.userAgent.toLowerCase().indexOf("firefox")!==-1,o=navigator.userAgent.indexOf("Trident")!==-1;if(o&&Vn(t)){var _=sl(t);if(_.position==="fixed")return null}var l=CS(t);for(tv(l)&&(l=l.host);Vn(l)&&["html","body"].indexOf(T_(l))<0;){var c=sl(l);if(c.transform!=="none"||c.perspective!=="none"||c.contain==="paint"||["transform","perspective"].indexOf(c.willChange)!==-1||e&&c.willChange==="filter"||e&&c.filter&&c.filter!=="none")return l;l=l.parentNode}return null}function hO(t){for(var e=Lr(t),o=qw(t);o&&$te(o)&&sl(o).position==="static";)o=qw(o);return o&&(T_(o)==="html"||T_(o)==="body"&&sl(o).position==="static")?e:o||Bte(t)||e}function sv(t){return["top","bottom"].indexOf(t)>=0?"x":"y"}function qg(t,e,o){return yc(t,CI(e,o))}function wte(t,e,o){var _=qg(t,e,o);return _>o?o:_}function HW(){return{top:0,right:0,bottom:0,left:0}}function xW(t){return Object.assign({},HW(),t)}function FW(t,e){return e.reduce(function(o,_){return o[_]=t,o},{})}var Gte=function(t,e){return t=typeof t=="function"?t(Object.assign({},e.rects,{placement:e.placement})):t,xW(typeof t!="number"?t:FW(t,OO))};function kte(t){var e,o=t.state,_=t.name,l=t.options,c=o.elements.arrow,T=o.modifiersData.popperOffsets,E=c_(o.placement),u=sv(E),d=[en,Yn].indexOf(E)>=0,O=d?"height":"width";if(!(!c||!T)){var h=Gte(l.padding,o),I=ov(c),S=u==="y"?Ji:en,L=u==="y"?Xn:Yn,p=o.rects.reference[O]+o.rects.reference[u]-T[u]-o.rects.popper[O],C=T[u]-o.rects.reference[u],m=hO(c),A=m?u==="y"?m.clientHeight||0:m.clientWidth||0:0,b=p/2-C/2,N=h[S],U=A-I[O]-h[L],P=A/2-I[O]/2+b,G=qg(N,P,U),w=u;o.modifiersData[_]=(e={},e[w]=G,e.centerOffset=G-P,e)}}function Hte(t){var e=t.state,o=t.options,_=o.element,l=_===void 0?"[data-popper-arrow]":_;l!=null&&(typeof l=="string"&&(l=e.elements.popper.querySelector(l),!l)||!kW(e.elements.popper,l)||(e.elements.arrow=l))}var xte={name:"arrow",enabled:!0,phase:"main",fn:kte,effect:Hte,requires:["popperOffsets"],requiresIfExists:["preventOverflow"]};function tu(t){return t.split("-")[1]}var Fte={top:"auto",right:"auto",bottom:"auto",left:"auto"};function Vte(t){var e=t.x,o=t.y,_=window,l=_.devicePixelRatio||1;return{x:JE(e*l)/l||0,y:JE(o*l)/l||0}}function Qw(t){var e,o=t.popper,_=t.popperRect,l=t.placement,c=t.variation,T=t.offsets,E=t.position,u=t.gpuAcceleration,d=t.adaptive,O=t.roundOffsets,h=t.isFixed,I=T.x,S=I===void 0?0:I,L=T.y,p=L===void 0?0:L,C=typeof O=="function"?O({x:S,y:p}):{x:S,y:p};S=C.x,p=C.y;var m=T.hasOwnProperty("x"),A=T.hasOwnProperty("y"),b=en,N=Ji,U=window;if(d){var P=hO(o),G="clientHeight",w="clientWidth";if(P===Lr(o)&&(P=Pa(o),sl(P).position!=="static"&&E==="absolute"&&(G="scrollHeight",w="scrollWidth")),P=P,l===Ji||(l===en||l===Yn)&&c===Ud){N=Xn;var F=h&&P===U&&U.visualViewport?U.visualViewport.height:P[G];p-=F-_.height,p*=u?1:-1}if(l===en||(l===Ji||l===Xn)&&c===Ud){b=Yn;var V=h&&P===U&&U.visualViewport?U.visualViewport.width:P[w];S-=V-_.width,S*=u?1:-1}}var W=Object.assign({position:E},d&&Fte),K=O===!0?Vte({x:S,y:p}):{x:S,y:p};if(S=K.x,p=K.y,u){var ee;return Object.assign({},W,(ee={},ee[N]=A?"0":"",ee[b]=m?"0":"",ee.transform=(U.devicePixelRatio||1)<=1?"translate("+S+"px, "+p+"px)":"translate3d("+S+"px, "+p+"px, 0)",ee))}return Object.assign({},W,(e={},e[N]=A?p+"px":"",e[b]=m?S+"px":"",e.transform="",e))}function Wte(t){var e=t.state,o=t.options,_=o.gpuAcceleration,l=_===void 0?!0:_,c=o.adaptive,T=c===void 0?!0:c,E=o.roundOffsets,u=E===void 0?!0:E,d={placement:c_(e.placement),variation:tu(e.placement),popper:e.elements.popper,popperRect:e.rects.popper,gpuAcceleration:l,isFixed:e.options.strategy==="fixed"};e.modifiersData.popperOffsets!=null&&(e.styles.popper=Object.assign({},e.styles.popper,Qw(Object.assign({},d,{offsets:e.modifiersData.popperOffsets,position:e.options.strategy,adaptive:T,roundOffsets:u})))),e.modifiersData.arrow!=null&&(e.styles.arrow=Object.assign({},e.styles.arrow,Qw(Object.assign({},d,{offsets:e.modifiersData.arrow,position:"absolute",adaptive:!1,roundOffsets:u})))),e.attributes.popper=Object.assign({},e.attributes.popper,{"data-popper-placement":e.placement})}var VW={name:"computeStyles",enabled:!0,phase:"beforeWrite",fn:Wte,data:{}},GM={passive:!0};function Xte(t){var e=t.state,o=t.instance,_=t.options,l=_.scroll,c=l===void 0?!0:l,T=_.resize,E=T===void 0?!0:T,u=Lr(e.elements.popper),d=[].concat(e.scrollParents.reference,e.scrollParents.popper);return c&&d.forEach(function(O){O.addEventListener("scroll",o.update,GM)}),E&&u.addEventListener("resize",o.update,GM),function(){c&&d.forEach(function(O){O.removeEventListener("scroll",o.update,GM)}),E&&u.removeEventListener("resize",o.update,GM)}}var WW={name:"eventListeners",enabled:!0,phase:"write",fn:function(){},effect:Xte,data:{}},Yte={left:"right",right:"left",bottom:"top",top:"bottom"};function hR(t){return t.replace(/left|right|bottom|top/g,function(e){return Yte[e]})}var Kte={start:"end",end:"start"};function Jw(t){return t.replace(/start|end/g,function(e){return Kte[e]})}function iv(t){var e=Lr(t),o=e.pageXOffset,_=e.pageYOffset;return{scrollLeft:o,scrollTop:_}}function nv(t){return eu(Pa(t)).left+iv(t).scrollLeft}function zte(t){var e=Lr(t),o=Pa(t),_=e.visualViewport,l=o.clientWidth,c=o.clientHeight,T=0,E=0;return _&&(l=_.width,c=_.height,/^((?!chrome|android).)*safari/i.test(navigator.userAgent)||(T=_.offsetLeft,E=_.offsetTop)),{width:l,height:c,x:T+nv(t),y:E}}function Zte(t){var e,o=Pa(t),_=iv(t),l=(e=t.ownerDocument)==null?void 0:e.body,c=yc(o.scrollWidth,o.clientWidth,l?l.scrollWidth:0,l?l.clientWidth:0),T=yc(o.scrollHeight,o.clientHeight,l?l.scrollHeight:0,l?l.clientHeight:0),E=-_.scrollLeft+nv(t),u=-_.scrollTop;return sl(l||o).direction==="rtl"&&(E+=yc(o.clientWidth,l?l.clientWidth:0)-c),{width:c,height:T,x:E,y:u}}function rv(t){var e=sl(t),o=e.overflow,_=e.overflowX,l=e.overflowY;return/auto|scroll|overlay|hidden/.test(o+l+_)}function XW(t){return["html","body","#document"].indexOf(T_(t))>=0?t.ownerDocument.body:Vn(t)&&rv(t)?t:XW(CS(t))}function Qg(t,e){var o;e===void 0&&(e=[]);var _=XW(t),l=_===((o=t.ownerDocument)==null?void 0:o.body),c=Lr(_),T=l?[c].concat(c.visualViewport||[],rv(_)?_:[]):_,E=e.concat(T);return l?E:E.concat(Qg(CS(T)))}function bb(t){return Object.assign({},t,{left:t.x,top:t.y,right:t.x+t.width,bottom:t.y+t.height})}function jte(t){var e=eu(t);return e.top=e.top+t.clientTop,e.left=e.left+t.clientLeft,e.bottom=e.top+t.clientHeight,e.right=e.left+t.clientWidth,e.width=t.clientWidth,e.height=t.clientHeight,e.x=e.left,e.y=e.top,e}function eG(t,e){return e===wW?bb(zte(t)):QE(e)?jte(e):bb(Zte(Pa(t)))}function qte(t){var e=Qg(CS(t)),o=["absolute","fixed"].indexOf(sl(t).position)>=0,_=o&&Vn(t)?hO(t):t;return QE(_)?e.filter(function(l){return QE(l)&&kW(l,_)&&T_(l)!=="body"}):[]}function Qte(t,e,o){var _=e==="clippingParents"?qte(t):[].concat(e),l=[].concat(_,[o]),c=l[0],T=l.reduce(function(E,u){var d=eG(t,u);return E.top=yc(d.top,E.top),E.right=CI(d.right,E.right),E.bottom=CI(d.bottom,E.bottom),E.left=yc(d.left,E.left),E},eG(t,c));return T.width=T.right-T.left,T.height=T.bottom-T.top,T.x=T.left,T.y=T.top,T}function YW(t){var e=t.reference,o=t.element,_=t.placement,l=_?c_(_):null,c=_?tu(_):null,T=e.x+e.width/2-o.width/2,E=e.y+e.height/2-o.height/2,u;switch(l){case Ji:u={x:T,y:e.y-o.height};break;case Xn:u={x:T,y:e.y+e.height};break;case Yn:u={x:e.x+e.width,y:E};break;case en:u={x:e.x-o.width,y:E};break;default:u={x:e.x,y:e.y}}var d=l?sv(l):null;if(d!=null){var O=d==="y"?"height":"width";switch(c){case qE:u[d]=u[d]-(e[O]/2-o[O]/2);break;case Ud:u[d]=u[d]+(e[O]/2-o[O]/2);break}}return u}function yd(t,e){e===void 0&&(e={});var o=e,_=o.placement,l=_===void 0?t.placement:_,c=o.boundary,T=c===void 0?Ste:c,E=o.rootBoundary,u=E===void 0?wW:E,d=o.elementContext,O=d===void 0?Cg:d,h=o.altBoundary,I=h===void 0?!1:h,S=o.padding,L=S===void 0?0:S,p=xW(typeof L!="number"?L:FW(L,OO)),C=O===Cg?pte:Cg,m=t.rects.popper,A=t.elements[I?C:O],b=Qte(QE(A)?A:A.contextElement||Pa(t.elements.popper),T,u),N=eu(t.elements.reference),U=YW({reference:N,element:m,strategy:"absolute",placement:l}),P=bb(Object.assign({},m,U)),G=O===Cg?P:N,w={top:b.top-G.top+p.top,bottom:G.bottom-b.bottom+p.bottom,left:b.left-G.left+p.left,right:G.right-b.right+p.right},F=t.modifiersData.offset;if(O===Cg&&F){var V=F[l];Object.keys(w).forEach(function(W){var K=[Yn,Xn].indexOf(W)>=0?1:-1,ee=[Ji,Xn].indexOf(W)>=0?"y":"x";w[W]+=V[ee]*K})}return w}function Jte(t,e){e===void 0&&(e={});var o=e,_=o.placement,l=o.boundary,c=o.rootBoundary,T=o.padding,E=o.flipVariations,u=o.allowedAutoPlacements,d=u===void 0?tT:u,O=tu(_),h=O?E?jw:jw.filter(function(L){return tu(L)===O}):OO,I=h.filter(function(L){return d.indexOf(L)>=0});I.length===0&&(I=h);var S=I.reduce(function(L,p){return L[p]=yd(t,{placement:p,boundary:l,rootBoundary:c,padding:T})[c_(p)],L},{});return Object.keys(S).sort(function(L,p){return S[L]-S[p]})}function eoe(t){if(c_(t)===ev)return[];var e=hR(t);return[Jw(t),e,Jw(e)]}function toe(t){var e=t.state,o=t.options,_=t.name;if(!e.modifiersData[_]._skip){for(var l=o.mainAxis,c=l===void 0?!0:l,T=o.altAxis,E=T===void 0?!0:T,u=o.fallbackPlacements,d=o.padding,O=o.boundary,h=o.rootBoundary,I=o.altBoundary,S=o.flipVariations,L=S===void 0?!0:S,p=o.allowedAutoPlacements,C=e.options.placement,m=c_(C),A=m===C,b=u||(A||!L?[hR(C)]:eoe(C)),N=[C].concat(b).reduce(function(pe,We){return pe.concat(c_(We)===ev?Jte(e,{placement:We,boundary:O,rootBoundary:h,padding:d,flipVariations:L,allowedAutoPlacements:p}):We)},[]),U=e.rects.reference,P=e.rects.popper,G=new Map,w=!0,F=N[0],V=0;V<N.length;V++){var W=N[V],K=c_(W),ee=tu(W)===qE,j=[Ji,Xn].indexOf(K)>=0,J=j?"width":"height",ie=yd(e,{placement:W,boundary:O,rootBoundary:h,altBoundary:I,padding:d}),Y=j?ee?Yn:en:ee?Xn:Ji;U[J]>P[J]&&(Y=hR(Y));var re=hR(Y),H=[];if(c&&H.push(ie[K]<=0),E&&H.push(ie[Y]<=0,ie[re]<=0),H.every(function(pe){return pe})){F=W,w=!1;break}G.set(W,H)}if(w)for(var Q=L?3:1,ae=function(pe){var We=N.find(function(be){var Me=G.get(be);if(Me)return Me.slice(0,pe).every(function(Ie){return Ie})});if(We)return F=We,"break"},ge=Q;ge>0;ge--){var Se=ae(ge);if(Se==="break")break}e.placement!==F&&(e.modifiersData[_]._skip=!0,e.placement=F,e.reset=!0)}}var ooe={name:"flip",enabled:!0,phase:"main",fn:toe,requiresIfExists:["offset"],data:{_skip:!1}};function tG(t,e,o){return o===void 0&&(o={x:0,y:0}),{top:t.top-e.height-o.y,right:t.right-e.width+o.x,bottom:t.bottom-e.height+o.y,left:t.left-e.width-o.x}}function oG(t){return[Ji,Yn,Xn,en].some(function(e){return t[e]>=0})}function soe(t){var e=t.state,o=t.name,_=e.rects.reference,l=e.rects.popper,c=e.modifiersData.preventOverflow,T=yd(e,{elementContext:"reference"}),E=yd(e,{altBoundary:!0}),u=tG(T,_),d=tG(E,l,c),O=oG(u),h=oG(d);e.modifiersData[o]={referenceClippingOffsets:u,popperEscapeOffsets:d,isReferenceHidden:O,hasPopperEscaped:h},e.attributes.popper=Object.assign({},e.attributes.popper,{"data-popper-reference-hidden":O,"data-popper-escaped":h})}var ioe={name:"hide",enabled:!0,phase:"main",requiresIfExists:["preventOverflow"],fn:soe};function noe(t,e,o){var _=c_(t),l=[en,Ji].indexOf(_)>=0?-1:1,c=typeof o=="function"?o(Object.assign({},e,{placement:t})):o,T=c[0],E=c[1];return T=T||0,E=(E||0)*l,[en,Yn].indexOf(_)>=0?{x:E,y:T}:{x:T,y:E}}function roe(t){var e=t.state,o=t.options,_=t.name,l=o.offset,c=l===void 0?[0,0]:l,T=tT.reduce(function(O,h){return O[h]=noe(h,e.rects,c),O},{}),E=T[e.placement],u=E.x,d=E.y;e.modifiersData.popperOffsets!=null&&(e.modifiersData.popperOffsets.x+=u,e.modifiersData.popperOffsets.y+=d),e.modifiersData[_]=T}var _oe={name:"offset",enabled:!0,phase:"main",requires:["popperOffsets"],fn:roe};function loe(t){var e=t.state,o=t.name;e.modifiersData[o]=YW({reference:e.rects.reference,element:e.rects.popper,strategy:"absolute",placement:e.placement})}var KW={name:"popperOffsets",enabled:!0,phase:"read",fn:loe,data:{}};function aoe(t){return t==="x"?"y":"x"}function coe(t){var e=t.state,o=t.options,_=t.name,l=o.mainAxis,c=l===void 0?!0:l,T=o.altAxis,E=T===void 0?!1:T,u=o.boundary,d=o.rootBoundary,O=o.altBoundary,h=o.padding,I=o.tether,S=I===void 0?!0:I,L=o.tetherOffset,p=L===void 0?0:L,C=yd(e,{boundary:u,rootBoundary:d,padding:h,altBoundary:O}),m=c_(e.placement),A=tu(e.placement),b=!A,N=sv(m),U=aoe(N),P=e.modifiersData.popperOffsets,G=e.rects.reference,w=e.rects.popper,F=typeof p=="function"?p(Object.assign({},e.rects,{placement:e.placement})):p,V=typeof F=="number"?{mainAxis:F,altAxis:F}:Object.assign({mainAxis:0,altAxis:0},F),W=e.modifiersData.offset?e.modifiersData.offset[e.placement]:null,K={x:0,y:0};if(P){if(c){var ee,j=N==="y"?Ji:en,J=N==="y"?Xn:Yn,ie=N==="y"?"height":"width",Y=P[N],re=Y+C[j],H=Y-C[J],Q=S?-w[ie]/2:0,ae=A===qE?G[ie]:w[ie],ge=A===qE?-w[ie]:-G[ie],Se=e.elements.arrow,pe=S&&Se?ov(Se):{width:0,height:0},We=e.modifiersData["arrow#persistent"]?e.modifiersData["arrow#persistent"].padding:HW(),be=We[j],Me=We[J],Ie=qg(0,G[ie],pe[ie]),Pe=b?G[ie]/2-Q-Ie-be-V.mainAxis:ae-Ie-be-V.mainAxis,Ae=b?-G[ie]/2+Q+Ie+Me+V.mainAxis:ge+Ie+Me+V.mainAxis,ke=e.elements.arrow&&hO(e.elements.arrow),ve=ke?N==="y"?ke.clientTop||0:ke.clientLeft||0:0,Te=(ee=W==null?void 0:W[N])!=null?ee:0,Re=Y+Pe-Te-ve,Ue=Y+Ae-Te,Ye=qg(S?CI(re,Re):re,Y,S?yc(H,Ue):H);P[N]=Ye,K[N]=Ye-Y}if(E){var De,Xe=N==="x"?Ji:en,Ke=N==="x"?Xn:Yn,Be=P[U],qe=U==="y"?"height":"width",xe=Be+C[Xe],Le=Be-C[Ke],je=[Ji,en].indexOf(m)!==-1,He=(De=W==null?void 0:W[U])!=null?De:0,Je=je?xe:Be-G[qe]-w[qe]-He+V.altAxis,St=je?Be+G[qe]+w[qe]-He-V.altAxis:Le,Ot=S&&je?wte(Je,Be,St):qg(S?Je:xe,Be,S?St:Le);P[U]=Ot,K[U]=Ot-Be}e.modifiersData[_]=K}}var Toe={name:"preventOverflow",enabled:!0,phase:"main",fn:coe,requiresIfExists:["offset"]};function Eoe(t){return{scrollLeft:t.scrollLeft,scrollTop:t.scrollTop}}function uoe(t){return t===Lr(t)||!Vn(t)?iv(t):Eoe(t)}function goe(t){var e=t.getBoundingClientRect(),o=JE(e.width)/t.offsetWidth||1,_=JE(e.height)/t.offsetHeight||1;return o!==1||_!==1}function doe(t,e,o){o===void 0&&(o=!1);var _=Vn(e),l=Vn(e)&&goe(e),c=Pa(e),T=eu(t,l),E={scrollLeft:0,scrollTop:0},u={x:0,y:0};return(_||!_&&!o)&&((T_(e)!=="body"||rv(c))&&(E=uoe(e)),Vn(e)?(u=eu(e,!0),u.x+=e.clientLeft,u.y+=e.clientTop):c&&(u.x=nv(c))),{x:T.left+E.scrollLeft-u.x,y:T.top+E.scrollTop-u.y,width:T.width,height:T.height}}function Ooe(t){var e=new Map,o=new Set,_=[];t.forEach(function(c){e.set(c.name,c)});function l(c){o.add(c.name);var T=[].concat(c.requires||[],c.requiresIfExists||[]);T.forEach(function(E){if(!o.has(E)){var u=e.get(E);u&&l(u)}}),_.push(c)}return t.forEach(function(c){o.has(c.name)||l(c)}),_}function hoe(t){var e=Ooe(t);return Dte.reduce(function(o,_){return o.concat(e.filter(function(l){return l.phase===_}))},[])}function Moe(t){var e;return function(){return e||(e=new Promise(function(o){Promise.resolve().then(function(){e=void 0,o(t())})})),e}}function Roe(t){var e=t.reduce(function(o,_){var l=o[_.name];return o[_.name]=l?Object.assign({},l,_,{options:Object.assign({},l.options,_.options),data:Object.assign({},l.data,_.data)}):_,o},{});return Object.keys(e).map(function(o){return e[o]})}var sG={placement:"bottom",modifiers:[],strategy:"absolute"};function iG(){for(var t=arguments.length,e=new Array(t),o=0;o<t;o++)e[o]=arguments[o];return!e.some(function(_){return!(_&&typeof _.getBoundingClientRect=="function")})}function _v(t){t===void 0&&(t={});var e=t,o=e.defaultModifiers,_=o===void 0?[]:o,l=e.defaultOptions,c=l===void 0?sG:l;return function(T,E,u){u===void 0&&(u=c);var d={placement:"bottom",orderedModifiers:[],options:Object.assign({},sG,c),modifiersData:{},elements:{reference:T,popper:E},attributes:{},styles:{}},O=[],h=!1,I={state:d,setOptions:function(p){var C=typeof p=="function"?p(d.options):p;L(),d.options=Object.assign({},c,d.options,C),d.scrollParents={reference:QE(T)?Qg(T):T.contextElement?Qg(T.contextElement):[],popper:Qg(E)};var m=hoe(Roe([].concat(_,d.options.modifiers)));return d.orderedModifiers=m.filter(function(A){return A.enabled}),S(),I.update()},forceUpdate:function(){if(!h){var p=d.elements,C=p.reference,m=p.popper;if(iG(C,m)){d.rects={reference:doe(C,hO(m),d.options.strategy==="fixed"),popper:ov(m)},d.reset=!1,d.placement=d.options.placement,d.orderedModifiers.forEach(function(w){return d.modifiersData[w.name]=Object.assign({},w.data)});for(var A=0;A<d.orderedModifiers.length;A++){if(d.reset===!0){d.reset=!1,A=-1;continue}var b=d.orderedModifiers[A],N=b.fn,U=b.options,P=U===void 0?{}:U,G=b.name;typeof N=="function"&&(d=N({state:d,options:P,name:G,instance:I})||d)}}}},update:Moe(function(){return new Promise(function(p){I.forceUpdate(),p(d)})}),destroy:function(){L(),h=!0}};if(!iG(T,E))return I;I.setOptions(u).then(function(p){!h&&u.onFirstUpdate&&u.onFirstUpdate(p)});function S(){d.orderedModifiers.forEach(function(p){var C=p.name,m=p.options,A=m===void 0?{}:m,b=p.effect;if(typeof b=="function"){var N=b({state:d,name:C,instance:I,options:A}),U=function(){};O.push(N||U)}})}function L(){O.forEach(function(p){return p()}),O=[]}return I}}_v();var Ioe=[WW,KW,VW,GW];_v({defaultModifiers:Ioe});var Soe=[WW,KW,VW,GW,_oe,ooe,Toe,xte,ioe],zW=_v({defaultModifiers:Soe}),ZW=typeof global=="object"&&global&&global.Object===Object&&global,poe=typeof self=="object"&&self&&self.Object===Object&&self,fr=ZW||poe||Function("return this")(),Kn=fr.Symbol,jW=Object.prototype,Loe=jW.hasOwnProperty,foe=jW.toString,Ag=Kn?Kn.toStringTag:void 0;function moe(t){var e=Loe.call(t,Ag),o=t[Ag];try{t[Ag]=void 0;var _=!0}catch{}var l=foe.call(t);return _&&(e?t[Ag]=o:delete t[Ag]),l}var Coe=Object.prototype,Aoe=Coe.toString;function boe(t){return Aoe.call(t)}var Noe="[object Null]",Poe="[object Undefined]",nG=Kn?Kn.toStringTag:void 0;function oT(t){return t==null?t===void 0?Poe:Noe:nG&&nG in Object(t)?moe(t):boe(t)}function E_(t){return t!=null&&typeof t=="object"}var voe="[object Symbol]";function AS(t){return typeof t=="symbol"||E_(t)&&oT(t)==voe}function qW(t,e){for(var o=-1,_=t==null?0:t.length,l=Array(_);++o<_;)l[o]=e(t[o],o,t);return l}var $i=Array.isArray,Doe=1/0,rG=Kn?Kn.prototype:void 0,_G=rG?rG.toString:void 0;function QW(t){if(typeof t=="string")return t;if($i(t))return qW(t,QW)+"";if(AS(t))return _G?_G.call(t):"";var e=t+"";return e=="0"&&1/t==-Doe?"-0":e}var Uoe=/\s/;function yoe(t){for(var e=t.length;e--&&Uoe.test(t.charAt(e)););return e}var $oe=/^\s+/;function Boe(t){return t&&t.slice(0,yoe(t)+1).replace($oe,"")}function Bi(t){var e=typeof t;return t!=null&&(e=="object"||e=="function")}var lG=NaN,woe=/^[-+]0x[0-9a-f]+$/i,Goe=/^0b[01]+$/i,koe=/^0o[0-7]+$/i,Hoe=parseInt;function Nb(t){if(typeof t=="number")return t;if(AS(t))return lG;if(Bi(t)){var e=typeof t.valueOf=="function"?t.valueOf():t;t=Bi(e)?e+"":e}if(typeof t!="string")return t===0?t:+t;t=Boe(t);var o=Goe.test(t);return o||koe.test(t)?Hoe(t.slice(2),o?2:8):woe.test(t)?lG:+t}var aG=1/0,xoe=17976931348623157e292;function Foe(t){if(!t)return t===0?t:0;if(t=Nb(t),t===aG||t===-aG){var e=t<0?-1:1;return e*xoe}return t===t?t:0}function Voe(t){var e=Foe(t),o=e%1;return e===e?o?e-o:e:0}function lv(t){return t}var Woe="[object AsyncFunction]",Xoe="[object Function]",Yoe="[object GeneratorFunction]",Koe="[object Proxy]";function av(t){if(!Bi(t))return!1;var e=oT(t);return e==Xoe||e==Yoe||e==Woe||e==Koe}var BC=fr["__core-js_shared__"],cG=function(){var t=/[^.]+$/.exec(BC&&BC.keys&&BC.keys.IE_PROTO||"");return t?"Symbol(src)_1."+t:""}();function zoe(t){return!!cG&&cG in t}var Zoe=Function.prototype,joe=Zoe.toString;function sT(t){if(t!=null){try{return joe.call(t)}catch{}try{return t+""}catch{}}return""}var qoe=/[\\^$.*+?()[\]{}|]/g,Qoe=/^\[object .+?Constructor\]$/,Joe=Function.prototype,ese=Object.prototype,tse=Joe.toString,ose=ese.hasOwnProperty,sse=RegExp("^"+tse.call(ose).replace(qoe,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");function ise(t){if(!Bi(t)||zoe(t))return!1;var e=av(t)?sse:Qoe;return e.test(sT(t))}function nse(t,e){return t==null?void 0:t[e]}function iT(t,e){var o=nse(t,e);return ise(o)?o:void 0}var Pb=iT(fr,"WeakMap"),TG=Object.create,rse=function(){function t(){}return function(e){if(!Bi(e))return{};if(TG)return TG(e);t.prototype=e;var o=new t;return t.prototype=void 0,o}}();function _se(t,e,o){switch(o.length){case 0:return t.call(e);case 1:return t.call(e,o[0]);case 2:return t.call(e,o[0],o[1]);case 3:return t.call(e,o[0],o[1],o[2])}return t.apply(e,o)}function lse(){}function JW(t,e){var o=-1,_=t.length;for(e||(e=Array(_));++o<_;)e[o]=t[o];return e}var ase=800,cse=16,Tse=Date.now;function Ese(t){var e=0,o=0;return function(){var _=Tse(),l=cse-(_-o);if(o=_,l>0){if(++e>=ase)return arguments[0]}else e=0;return t.apply(void 0,arguments)}}function use(t){return function(){return t}}var AI=function(){try{var t=iT(Object,"defineProperty");return t({},"",{}),t}catch{}}(),gse=AI?function(t,e){return AI(t,"toString",{configurable:!0,enumerable:!1,value:use(e),writable:!0})}:lv;const dse=gse;var eX=Ese(dse);function Ose(t,e){for(var o=-1,_=t==null?0:t.length;++o<_&&e(t[o],o,t)!==!1;);return t}function tX(t,e,o,_){for(var l=t.length,c=o+(_?1:-1);_?c--:++c<l;)if(e(t[c],c,t))return c;return-1}function hse(t){return t!==t}function Mse(t,e,o){for(var _=o-1,l=t.length;++_<l;)if(t[_]===e)return _;return-1}function Rse(t,e,o){return e===e?Mse(t,e,o):tX(t,hse,o)}function Ise(t,e){var o=t==null?0:t.length;return!!o&&Rse(t,e,0)>-1}var Sse=9007199254740991,pse=/^(?:0|[1-9]\d*)$/;function bS(t,e){var o=typeof t;return e=e??Sse,!!e&&(o=="number"||o!="symbol"&&pse.test(t))&&t>-1&&t%1==0&&t<e}function cv(t,e,o){e=="__proto__"&&AI?AI(t,e,{configurable:!0,enumerable:!0,value:o,writable:!0}):t[e]=o}function MO(t,e){return t===e||t!==t&&e!==e}var Lse=Object.prototype,fse=Lse.hasOwnProperty;function Tv(t,e,o){var _=t[e];(!(fse.call(t,e)&&MO(_,o))||o===void 0&&!(e in t))&&cv(t,e,o)}function RO(t,e,o,_){var l=!o;o||(o={});for(var c=-1,T=e.length;++c<T;){var E=e[c],u=_?_(o[E],t[E],E,o,t):void 0;u===void 0&&(u=t[E]),l?cv(o,E,u):Tv(o,E,u)}return o}var EG=Math.max;function oX(t,e,o){return e=EG(e===void 0?t.length-1:e,0),function(){for(var _=arguments,l=-1,c=EG(_.length-e,0),T=Array(c);++l<c;)T[l]=_[e+l];l=-1;for(var E=Array(e+1);++l<e;)E[l]=_[l];return E[e]=o(T),_se(t,this,E)}}function sX(t,e){return eX(oX(t,e,lv),t+"")}var mse=9007199254740991;function Ev(t){return typeof t=="number"&&t>-1&&t%1==0&&t<=mse}function fu(t){return t!=null&&Ev(t.length)&&!av(t)}function Cse(t,e,o){if(!Bi(o))return!1;var _=typeof e;return(_=="number"?fu(o)&&bS(e,o.length):_=="string"&&e in o)?MO(o[e],t):!1}function Ase(t){return sX(function(e,o){var _=-1,l=o.length,c=l>1?o[l-1]:void 0,T=l>2?o[2]:void 0;for(c=t.length>3&&typeof c=="function"?(l--,c):void 0,T&&Cse(o[0],o[1],T)&&(c=l<3?void 0:c,l=1),e=Object(e);++_<l;){var E=o[_];E&&t(e,E,_,c)}return e})}var bse=Object.prototype;function uv(t){var e=t&&t.constructor,o=typeof e=="function"&&e.prototype||bse;return t===o}function Nse(t,e){for(var o=-1,_=Array(t);++o<t;)_[o]=e(o);return _}var Pse="[object Arguments]";function uG(t){return E_(t)&&oT(t)==Pse}var iX=Object.prototype,vse=iX.hasOwnProperty,Dse=iX.propertyIsEnumerable,$d=uG(function(){return arguments}())?uG:function(t){return E_(t)&&vse.call(t,"callee")&&!Dse.call(t,"callee")};function Use(){return!1}var nX=typeof mn=="object"&&mn&&!mn.nodeType&&mn,gG=nX&&typeof Cn=="object"&&Cn&&!Cn.nodeType&&Cn,yse=gG&&gG.exports===nX,dG=yse?fr.Buffer:void 0,$se=dG?dG.isBuffer:void 0,Bd=$se||Use,Bse="[object Arguments]",wse="[object Array]",Gse="[object Boolean]",kse="[object Date]",Hse="[object Error]",xse="[object Function]",Fse="[object Map]",Vse="[object Number]",Wse="[object Object]",Xse="[object RegExp]",Yse="[object Set]",Kse="[object String]",zse="[object WeakMap]",Zse="[object ArrayBuffer]",jse="[object DataView]",qse="[object Float32Array]",Qse="[object Float64Array]",Jse="[object Int8Array]",eie="[object Int16Array]",tie="[object Int32Array]",oie="[object Uint8Array]",sie="[object Uint8ClampedArray]",iie="[object Uint16Array]",nie="[object Uint32Array]",as={};as[qse]=as[Qse]=as[Jse]=as[eie]=as[tie]=as[oie]=as[sie]=as[iie]=as[nie]=!0;as[Bse]=as[wse]=as[Zse]=as[Gse]=as[jse]=as[kse]=as[Hse]=as[xse]=as[Fse]=as[Vse]=as[Wse]=as[Xse]=as[Yse]=as[Kse]=as[zse]=!1;function rie(t){return E_(t)&&Ev(t.length)&&!!as[oT(t)]}function gv(t){return function(e){return t(e)}}var rX=typeof mn=="object"&&mn&&!mn.nodeType&&mn,Jg=rX&&typeof Cn=="object"&&Cn&&!Cn.nodeType&&Cn,_ie=Jg&&Jg.exports===rX,wC=_ie&&ZW.process,ou=function(){try{var t=Jg&&Jg.require&&Jg.require("util").types;return t||wC&&wC.binding&&wC.binding("util")}catch{}}(),OG=ou&&ou.isTypedArray,dv=OG?gv(OG):rie,lie=Object.prototype,aie=lie.hasOwnProperty;function _X(t,e){var o=$i(t),_=!o&&$d(t),l=!o&&!_&&Bd(t),c=!o&&!_&&!l&&dv(t),T=o||_||l||c,E=T?Nse(t.length,String):[],u=E.length;for(var d in t)(e||aie.call(t,d))&&!(T&&(d=="length"||l&&(d=="offset"||d=="parent")||c&&(d=="buffer"||d=="byteLength"||d=="byteOffset")||bS(d,u)))&&E.push(d);return E}function lX(t,e){return function(o){return t(e(o))}}var cie=lX(Object.keys,Object),Tie=Object.prototype,Eie=Tie.hasOwnProperty;function uie(t){if(!uv(t))return cie(t);var e=[];for(var o in Object(t))Eie.call(t,o)&&o!="constructor"&&e.push(o);return e}function IO(t){return fu(t)?_X(t):uie(t)}function gie(t){var e=[];if(t!=null)for(var o in Object(t))e.push(o);return e}var die=Object.prototype,Oie=die.hasOwnProperty;function hie(t){if(!Bi(t))return gie(t);var e=uv(t),o=[];for(var _ in t)_=="constructor"&&(e||!Oie.call(t,_))||o.push(_);return o}function SO(t){return fu(t)?_X(t,!0):hie(t)}var Mie=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,Rie=/^\w*$/;function Ov(t,e){if($i(t))return!1;var o=typeof t;return o=="number"||o=="symbol"||o=="boolean"||t==null||AS(t)?!0:Rie.test(t)||!Mie.test(t)||e!=null&&t in Object(e)}var wd=iT(Object,"create");function Iie(){this.__data__=wd?wd(null):{},this.size=0}function Sie(t){var e=this.has(t)&&delete this.__data__[t];return this.size-=e?1:0,e}var pie="__lodash_hash_undefined__",Lie=Object.prototype,fie=Lie.hasOwnProperty;function mie(t){var e=this.__data__;if(wd){var o=e[t];return o===pie?void 0:o}return fie.call(e,t)?e[t]:void 0}var Cie=Object.prototype,Aie=Cie.hasOwnProperty;function bie(t){var e=this.__data__;return wd?e[t]!==void 0:Aie.call(e,t)}var Nie="__lodash_hash_undefined__";function Pie(t,e){var o=this.__data__;return this.size+=this.has(t)?0:1,o[t]=wd&&e===void 0?Nie:e,this}function Vc(t){var e=-1,o=t==null?0:t.length;for(this.clear();++e<o;){var _=t[e];this.set(_[0],_[1])}}Vc.prototype.clear=Iie;Vc.prototype.delete=Sie;Vc.prototype.get=mie;Vc.prototype.has=bie;Vc.prototype.set=Pie;function vie(){this.__data__=[],this.size=0}function NS(t,e){for(var o=t.length;o--;)if(MO(t[o][0],e))return o;return-1}var Die=Array.prototype,Uie=Die.splice;function yie(t){var e=this.__data__,o=NS(e,t);if(o<0)return!1;var _=e.length-1;return o==_?e.pop():Uie.call(e,o,1),--this.size,!0}function $ie(t){var e=this.__data__,o=NS(e,t);return o<0?void 0:e[o][1]}function Bie(t){return NS(this.__data__,t)>-1}function wie(t,e){var o=this.__data__,_=NS(o,t);return _<0?(++this.size,o.push([t,e])):o[_][1]=e,this}function al(t){var e=-1,o=t==null?0:t.length;for(this.clear();++e<o;){var _=t[e];this.set(_[0],_[1])}}al.prototype.clear=vie;al.prototype.delete=yie;al.prototype.get=$ie;al.prototype.has=Bie;al.prototype.set=wie;var Gd=iT(fr,"Map");function Gie(){this.size=0,this.__data__={hash:new Vc,map:new(Gd||al),string:new Vc}}function kie(t){var e=typeof t;return e=="string"||e=="number"||e=="symbol"||e=="boolean"?t!=="__proto__":t===null}function PS(t,e){var o=t.__data__;return kie(e)?o[typeof e=="string"?"string":"hash"]:o.map}function Hie(t){var e=PS(this,t).delete(t);return this.size-=e?1:0,e}function xie(t){return PS(this,t).get(t)}function Fie(t){return PS(this,t).has(t)}function Vie(t,e){var o=PS(this,t),_=o.size;return o.set(t,e),this.size+=o.size==_?0:1,this}function cl(t){var e=-1,o=t==null?0:t.length;for(this.clear();++e<o;){var _=t[e];this.set(_[0],_[1])}}cl.prototype.clear=Gie;cl.prototype.delete=Hie;cl.prototype.get=xie;cl.prototype.has=Fie;cl.prototype.set=Vie;var Wie="Expected a function";function vS(t,e){if(typeof t!="function"||e!=null&&typeof e!="function")throw new TypeError(Wie);var o=function(){var _=arguments,l=e?e.apply(this,_):_[0],c=o.cache;if(c.has(l))return c.get(l);var T=t.apply(this,_);return o.cache=c.set(l,T)||c,T};return o.cache=new(vS.Cache||cl),o}vS.Cache=cl;var Xie=500;function Yie(t){var e=vS(t,function(_){return o.size===Xie&&o.clear(),_}),o=e.cache;return e}var Kie=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,zie=/\\(\\)?/g,Zie=Yie(function(t){var e=[];return t.charCodeAt(0)===46&&e.push(""),t.replace(Kie,function(o,_,l,c){e.push(l?c.replace(zie,"$1"):_||o)}),e});function jie(t){return t==null?"":QW(t)}function DS(t,e){return $i(t)?t:Ov(t,e)?[t]:Zie(jie(t))}var qie=1/0;function pO(t){if(typeof t=="string"||AS(t))return t;var e=t+"";return e=="0"&&1/t==-qie?"-0":e}function hv(t,e){e=DS(e,t);for(var o=0,_=e.length;t!=null&&o<_;)t=t[pO(e[o++])];return o&&o==_?t:void 0}function ds(t,e,o){var _=t==null?void 0:hv(t,e);return _===void 0?o:_}function Mv(t,e){for(var o=-1,_=e.length,l=t.length;++o<_;)t[l+o]=e[o];return t}var hG=Kn?Kn.isConcatSpreadable:void 0;function Qie(t){return $i(t)||$d(t)||!!(hG&&t&&t[hG])}function LO(t,e,o,_,l){var c=-1,T=t.length;for(o||(o=Qie),l||(l=[]);++c<T;){var E=t[c];e>0&&o(E)?e>1?LO(E,e-1,o,_,l):Mv(l,E):_||(l[l.length]=E)}return l}function aX(t){var e=t==null?0:t.length;return e?LO(t,1):[]}function Jie(t){return eX(oX(t,void 0,aX),t+"")}var ene=lX(Object.getPrototypeOf,Object);const Rv=ene;var tne="[object Object]",one=Function.prototype,sne=Object.prototype,cX=one.toString,ine=sne.hasOwnProperty,nne=cX.call(Object);function rne(t){if(!E_(t)||oT(t)!=tne)return!1;var e=Rv(t);if(e===null)return!0;var o=ine.call(e,"constructor")&&e.constructor;return typeof o=="function"&&o instanceof o&&cX.call(o)==nne}function Wc(){if(!arguments.length)return[];var t=arguments[0];return $i(t)?t:[t]}function _ne(){this.__data__=new al,this.size=0}function lne(t){var e=this.__data__,o=e.delete(t);return this.size=e.size,o}function ane(t){return this.__data__.get(t)}function cne(t){return this.__data__.has(t)}var Tne=200;function Ene(t,e){var o=this.__data__;if(o instanceof al){var _=o.__data__;if(!Gd||_.length<Tne-1)return _.push([t,e]),this.size=++o.size,this;o=this.__data__=new cl(_)}return o.set(t,e),this.size=o.size,this}function dr(t){var e=this.__data__=new al(t);this.size=e.size}dr.prototype.clear=_ne;dr.prototype.delete=lne;dr.prototype.get=ane;dr.prototype.has=cne;dr.prototype.set=Ene;function une(t,e){return t&&RO(e,IO(e),t)}function gne(t,e){return t&&RO(e,SO(e),t)}var TX=typeof mn=="object"&&mn&&!mn.nodeType&&mn,MG=TX&&typeof Cn=="object"&&Cn&&!Cn.nodeType&&Cn,dne=MG&&MG.exports===TX,RG=dne?fr.Buffer:void 0,IG=RG?RG.allocUnsafe:void 0;function EX(t,e){if(e)return t.slice();var o=t.length,_=IG?IG(o):new t.constructor(o);return t.copy(_),_}function One(t,e){for(var o=-1,_=t==null?0:t.length,l=0,c=[];++o<_;){var T=t[o];e(T,o,t)&&(c[l++]=T)}return c}function uX(){return[]}var hne=Object.prototype,Mne=hne.propertyIsEnumerable,SG=Object.getOwnPropertySymbols,Iv=SG?function(t){return t==null?[]:(t=Object(t),One(SG(t),function(e){return Mne.call(t,e)}))}:uX;function Rne(t,e){return RO(t,Iv(t),e)}var Ine=Object.getOwnPropertySymbols,gX=Ine?function(t){for(var e=[];t;)Mv(e,Iv(t)),t=Rv(t);return e}:uX;function Sne(t,e){return RO(t,gX(t),e)}function dX(t,e,o){var _=e(t);return $i(t)?_:Mv(_,o(t))}function vb(t){return dX(t,IO,Iv)}function pne(t){return dX(t,SO,gX)}var Db=iT(fr,"DataView"),Ub=iT(fr,"Promise"),$E=iT(fr,"Set"),pG="[object Map]",Lne="[object Object]",LG="[object Promise]",fG="[object Set]",mG="[object WeakMap]",CG="[object DataView]",fne=sT(Db),mne=sT(Gd),Cne=sT(Ub),Ane=sT($E),bne=sT(Pb),gc=oT;(Db&&gc(new Db(new ArrayBuffer(1)))!=CG||Gd&&gc(new Gd)!=pG||Ub&&gc(Ub.resolve())!=LG||$E&&gc(new $E)!=fG||Pb&&gc(new Pb)!=mG)&&(gc=function(t){var e=oT(t),o=e==Lne?t.constructor:void 0,_=o?sT(o):"";if(_)switch(_){case fne:return CG;case mne:return pG;case Cne:return LG;case Ane:return fG;case bne:return mG}return e});const kd=gc;var Nne=Object.prototype,Pne=Nne.hasOwnProperty;function vne(t){var e=t.length,o=new t.constructor(e);return e&&typeof t[0]=="string"&&Pne.call(t,"index")&&(o.index=t.index,o.input=t.input),o}var bI=fr.Uint8Array;function Sv(t){var e=new t.constructor(t.byteLength);return new bI(e).set(new bI(t)),e}function Dne(t,e){var o=e?Sv(t.buffer):t.buffer;return new t.constructor(o,t.byteOffset,t.byteLength)}var Une=/\w*$/;function yne(t){var e=new t.constructor(t.source,Une.exec(t));return e.lastIndex=t.lastIndex,e}var AG=Kn?Kn.prototype:void 0,bG=AG?AG.valueOf:void 0;function $ne(t){return bG?Object(bG.call(t)):{}}function OX(t,e){var o=e?Sv(t.buffer):t.buffer;return new t.constructor(o,t.byteOffset,t.length)}var Bne="[object Boolean]",wne="[object Date]",Gne="[object Map]",kne="[object Number]",Hne="[object RegExp]",xne="[object Set]",Fne="[object String]",Vne="[object Symbol]",Wne="[object ArrayBuffer]",Xne="[object DataView]",Yne="[object Float32Array]",Kne="[object Float64Array]",zne="[object Int8Array]",Zne="[object Int16Array]",jne="[object Int32Array]",qne="[object Uint8Array]",Qne="[object Uint8ClampedArray]",Jne="[object Uint16Array]",ere="[object Uint32Array]";function tre(t,e,o){var _=t.constructor;switch(e){case Wne:return Sv(t);case Bne:case wne:return new _(+t);case Xne:return Dne(t,o);case Yne:case Kne:case zne:case Zne:case jne:case qne:case Qne:case Jne:case ere:return OX(t,o);case Gne:return new _;case kne:case Fne:return new _(t);case Hne:return yne(t);case xne:return new _;case Vne:return $ne(t)}}function hX(t){return typeof t.constructor=="function"&&!uv(t)?rse(Rv(t)):{}}var ore="[object Map]";function sre(t){return E_(t)&&kd(t)==ore}var NG=ou&&ou.isMap,ire=NG?gv(NG):sre,nre="[object Set]";function rre(t){return E_(t)&&kd(t)==nre}var PG=ou&&ou.isSet,_re=PG?gv(PG):rre,lre=1,are=2,cre=4,MX="[object Arguments]",Tre="[object Array]",Ere="[object Boolean]",ure="[object Date]",gre="[object Error]",RX="[object Function]",dre="[object GeneratorFunction]",Ore="[object Map]",hre="[object Number]",IX="[object Object]",Mre="[object RegExp]",Rre="[object Set]",Ire="[object String]",Sre="[object Symbol]",pre="[object WeakMap]",Lre="[object ArrayBuffer]",fre="[object DataView]",mre="[object Float32Array]",Cre="[object Float64Array]",Are="[object Int8Array]",bre="[object Int16Array]",Nre="[object Int32Array]",Pre="[object Uint8Array]",vre="[object Uint8ClampedArray]",Dre="[object Uint16Array]",Ure="[object Uint32Array]",rs={};rs[MX]=rs[Tre]=rs[Lre]=rs[fre]=rs[Ere]=rs[ure]=rs[mre]=rs[Cre]=rs[Are]=rs[bre]=rs[Nre]=rs[Ore]=rs[hre]=rs[IX]=rs[Mre]=rs[Rre]=rs[Ire]=rs[Sre]=rs[Pre]=rs[vre]=rs[Dre]=rs[Ure]=!0;rs[gre]=rs[RX]=rs[pre]=!1;function ed(t,e,o,_,l,c){var T,E=e&lre,u=e&are,d=e&cre;if(o&&(T=l?o(t,_,l,c):o(t)),T!==void 0)return T;if(!Bi(t))return t;var O=$i(t);if(O){if(T=vne(t),!E)return JW(t,T)}else{var h=kd(t),I=h==RX||h==dre;if(Bd(t))return EX(t,E);if(h==IX||h==MX||I&&!l){if(T=u||I?{}:hX(t),!E)return u?Sne(t,gne(T,t)):Rne(t,une(T,t))}else{if(!rs[h])return l?t:{};T=tre(t,h,E)}}c||(c=new dr);var S=c.get(t);if(S)return S;c.set(t,T),_re(t)?t.forEach(function(C){T.add(ed(C,e,o,C,t,c))}):ire(t)&&t.forEach(function(C,m){T.set(m,ed(C,e,o,m,t,c))});var L=d?u?pne:vb:u?SO:IO,p=O?void 0:L(t);return Ose(p||t,function(C,m){p&&(m=C,C=t[m]),Tv(T,m,ed(C,e,o,m,t,c))}),T}var yre=4;function vG(t){return ed(t,yre)}var $re=1,Bre=4;function NI(t){return ed(t,$re|Bre)}var wre="__lodash_hash_undefined__";function Gre(t){return this.__data__.set(t,wre),this}function kre(t){return this.__data__.has(t)}function Hd(t){var e=-1,o=t==null?0:t.length;for(this.__data__=new cl;++e<o;)this.add(t[e])}Hd.prototype.add=Hd.prototype.push=Gre;Hd.prototype.has=kre;function Hre(t,e){for(var o=-1,_=t==null?0:t.length;++o<_;)if(e(t[o],o,t))return!0;return!1}function SX(t,e){return t.has(e)}var xre=1,Fre=2;function pX(t,e,o,_,l,c){var T=o&xre,E=t.length,u=e.length;if(E!=u&&!(T&&u>E))return!1;var d=c.get(t),O=c.get(e);if(d&&O)return d==e&&O==t;var h=-1,I=!0,S=o&Fre?new Hd:void 0;for(c.set(t,e),c.set(e,t);++h<E;){var L=t[h],p=e[h];if(_)var C=T?_(p,L,h,e,t,c):_(L,p,h,t,e,c);if(C!==void 0){if(C)continue;I=!1;break}if(S){if(!Hre(e,function(m,A){if(!SX(S,A)&&(L===m||l(L,m,o,_,c)))return S.push(A)})){I=!1;break}}else if(!(L===p||l(L,p,o,_,c))){I=!1;break}}return c.delete(t),c.delete(e),I}function Vre(t){var e=-1,o=Array(t.size);return t.forEach(function(_,l){o[++e]=[l,_]}),o}function pv(t){var e=-1,o=Array(t.size);return t.forEach(function(_){o[++e]=_}),o}var Wre=1,Xre=2,Yre="[object Boolean]",Kre="[object Date]",zre="[object Error]",Zre="[object Map]",jre="[object Number]",qre="[object RegExp]",Qre="[object Set]",Jre="[object String]",e_e="[object Symbol]",t_e="[object ArrayBuffer]",o_e="[object DataView]",DG=Kn?Kn.prototype:void 0,GC=DG?DG.valueOf:void 0;function s_e(t,e,o,_,l,c,T){switch(o){case o_e:if(t.byteLength!=e.byteLength||t.byteOffset!=e.byteOffset)return!1;t=t.buffer,e=e.buffer;case t_e:return!(t.byteLength!=e.byteLength||!c(new bI(t),new bI(e)));case Yre:case Kre:case jre:return MO(+t,+e);case zre:return t.name==e.name&&t.message==e.message;case qre:case Jre:return t==e+"";case Zre:var E=Vre;case Qre:var u=_&Wre;if(E||(E=pv),t.size!=e.size&&!u)return!1;var d=T.get(t);if(d)return d==e;_|=Xre,T.set(t,e);var O=pX(E(t),E(e),_,l,c,T);return T.delete(t),O;case e_e:if(GC)return GC.call(t)==GC.call(e)}return!1}var i_e=1,n_e=Object.prototype,r_e=n_e.hasOwnProperty;function __e(t,e,o,_,l,c){var T=o&i_e,E=vb(t),u=E.length,d=vb(e),O=d.length;if(u!=O&&!T)return!1;for(var h=u;h--;){var I=E[h];if(!(T?I in e:r_e.call(e,I)))return!1}var S=c.get(t),L=c.get(e);if(S&&L)return S==e&&L==t;var p=!0;c.set(t,e),c.set(e,t);for(var C=T;++h<u;){I=E[h];var m=t[I],A=e[I];if(_)var b=T?_(A,m,I,e,t,c):_(m,A,I,t,e,c);if(!(b===void 0?m===A||l(m,A,o,_,c):b)){p=!1;break}C||(C=I=="constructor")}if(p&&!C){var N=t.constructor,U=e.constructor;N!=U&&"constructor"in t&&"constructor"in e&&!(typeof N=="function"&&N instanceof N&&typeof U=="function"&&U instanceof U)&&(p=!1)}return c.delete(t),c.delete(e),p}var l_e=1,UG="[object Arguments]",yG="[object Array]",kM="[object Object]",a_e=Object.prototype,$G=a_e.hasOwnProperty;function c_e(t,e,o,_,l,c){var T=$i(t),E=$i(e),u=T?yG:kd(t),d=E?yG:kd(e);u=u==UG?kM:u,d=d==UG?kM:d;var O=u==kM,h=d==kM,I=u==d;if(I&&Bd(t)){if(!Bd(e))return!1;T=!0,O=!1}if(I&&!O)return c||(c=new dr),T||dv(t)?pX(t,e,o,_,l,c):s_e(t,e,u,o,_,l,c);if(!(o&l_e)){var S=O&&$G.call(t,"__wrapped__"),L=h&&$G.call(e,"__wrapped__");if(S||L){var p=S?t.value():t,C=L?e.value():e;return c||(c=new dr),l(p,C,o,_,c)}}return I?(c||(c=new dr),__e(t,e,o,_,l,c)):!1}function US(t,e,o,_,l){return t===e?!0:t==null||e==null||!E_(t)&&!E_(e)?t!==t&&e!==e:c_e(t,e,o,_,US,l)}var T_e=1,E_e=2;function u_e(t,e,o,_){var l=o.length,c=l,T=!_;if(t==null)return!c;for(t=Object(t);l--;){var E=o[l];if(T&&E[2]?E[1]!==t[E[0]]:!(E[0]in t))return!1}for(;++l<c;){E=o[l];var u=E[0],d=t[u],O=E[1];if(T&&E[2]){if(d===void 0&&!(u in t))return!1}else{var h=new dr;if(_)var I=_(d,O,u,t,e,h);if(!(I===void 0?US(O,d,T_e|E_e,_,h):I))return!1}}return!0}function LX(t){return t===t&&!Bi(t)}function g_e(t){for(var e=IO(t),o=e.length;o--;){var _=e[o],l=t[_];e[o]=[_,l,LX(l)]}return e}function fX(t,e){return function(o){return o==null?!1:o[t]===e&&(e!==void 0||t in Object(o))}}function d_e(t){var e=g_e(t);return e.length==1&&e[0][2]?fX(e[0][0],e[0][1]):function(o){return o===t||u_e(o,t,e)}}function O_e(t,e){return t!=null&&e in Object(t)}function h_e(t,e,o){e=DS(e,t);for(var _=-1,l=e.length,c=!1;++_<l;){var T=pO(e[_]);if(!(c=t!=null&&o(t,T)))break;t=t[T]}return c||++_!=l?c:(l=t==null?0:t.length,!!l&&Ev(l)&&bS(T,l)&&($i(t)||$d(t)))}function mX(t,e){return t!=null&&h_e(t,e,O_e)}var M_e=1,R_e=2;function I_e(t,e){return Ov(t)&&LX(e)?fX(pO(t),e):function(o){var _=ds(o,t);return _===void 0&&_===e?mX(o,t):US(e,_,M_e|R_e)}}function S_e(t){return function(e){return e==null?void 0:e[t]}}function p_e(t){return function(e){return hv(e,t)}}function L_e(t){return Ov(t)?S_e(pO(t)):p_e(t)}function CX(t){return typeof t=="function"?t:t==null?lv:typeof t=="object"?$i(t)?I_e(t[0],t[1]):d_e(t):L_e(t)}function f_e(t){return function(e,o,_){for(var l=-1,c=Object(e),T=_(e),E=T.length;E--;){var u=T[t?E:++l];if(o(c[u],u,c)===!1)break}return e}}var AX=f_e();function m_e(t,e){return t&&AX(t,e,IO)}function C_e(t,e){return function(o,_){if(o==null)return o;if(!fu(o))return t(o,_);for(var l=o.length,c=e?l:-1,T=Object(o);(e?c--:++c<l)&&_(T[c],c,T)!==!1;);return o}}var A_e=C_e(m_e),kC=function(){return fr.Date.now()},b_e="Expected a function",N_e=Math.max,P_e=Math.min;function nn(t,e,o){var _,l,c,T,E,u,d=0,O=!1,h=!1,I=!0;if(typeof t!="function")throw new TypeError(b_e);e=Nb(e)||0,Bi(o)&&(O=!!o.leading,h="maxWait"in o,c=h?N_e(Nb(o.maxWait)||0,e):c,I="trailing"in o?!!o.trailing:I);function S(P){var G=_,w=l;return _=l=void 0,d=P,T=t.apply(w,G),T}function L(P){return d=P,E=setTimeout(m,e),O?S(P):T}function p(P){var G=P-u,w=P-d,F=e-G;return h?P_e(F,c-w):F}function C(P){var G=P-u,w=P-d;return u===void 0||G>=e||G<0||h&&w>=c}function m(){var P=kC();if(C(P))return A(P);E=setTimeout(m,p(P))}function A(P){return E=void 0,I&&_?S(P):(_=l=void 0,T)}function b(){E!==void 0&&clearTimeout(E),d=0,_=u=l=E=void 0}function N(){return E===void 0?T:A(kC())}function U(){var P=kC(),G=C(P);if(_=arguments,l=this,u=P,G){if(E===void 0)return L(u);if(h)return clearTimeout(E),E=setTimeout(m,e),S(u)}return E===void 0&&(E=setTimeout(m,e)),T}return U.cancel=b,U.flush=N,U}function yb(t,e,o){(o!==void 0&&!MO(t[e],o)||o===void 0&&!(e in t))&&cv(t,e,o)}function bX(t){return E_(t)&&fu(t)}function $b(t,e){if(!(e==="constructor"&&typeof t[e]=="function")&&e!="__proto__")return t[e]}function v_e(t){return RO(t,SO(t))}function D_e(t,e,o,_,l,c,T){var E=$b(t,o),u=$b(e,o),d=T.get(u);if(d){yb(t,o,d);return}var O=c?c(E,u,o+"",t,e,T):void 0,h=O===void 0;if(h){var I=$i(u),S=!I&&Bd(u),L=!I&&!S&&dv(u);O=u,I||S||L?$i(E)?O=E:bX(E)?O=JW(E):S?(h=!1,O=EX(u,!0)):L?(h=!1,O=OX(u,!0)):O=[]:rne(u)||$d(u)?(O=E,$d(E)?O=v_e(E):(!Bi(E)||av(E))&&(O=hX(u))):h=!1}h&&(T.set(u,O),l(O,u,_,c,T),T.delete(u)),yb(t,o,O)}function NX(t,e,o,_,l){t!==e&&AX(e,function(c,T){if(l||(l=new dr),Bi(c))D_e(t,e,T,o,NX,_,l);else{var E=_?_($b(t,T),c,T+"",t,e,l):void 0;E===void 0&&(E=c),yb(t,T,E)}},SO)}function U_e(t,e,o){for(var _=-1,l=t==null?0:t.length;++_<l;)if(o(e,t[_]))return!0;return!1}var y_e=Math.max,$_e=Math.min;function PX(t,e,o){var _=t==null?0:t.length;if(!_)return-1;var l=_-1;return o!==void 0&&(l=Voe(o),l=o<0?y_e(_+l,0):$_e(l,_-1)),tX(t,CX(e),l,!0)}function B_e(t,e){var o=-1,_=fu(t)?Array(t.length):[];return A_e(t,function(l,c,T){_[++o]=e(l,c,T)}),_}function w_e(t,e){var o=$i(t)?qW:B_e;return o(t,CX(e))}function G_e(t,e){return LO(w_e(t,e),1)}var k_e=1/0;function H_e(t){var e=t==null?0:t.length;return e?LO(t,k_e):[]}function PI(t){for(var e=-1,o=t==null?0:t.length,_={};++e<o;){var l=t[e];_[l[0]]=l[1]}return _}function ui(t,e){return US(t,e)}function ws(t){return t==null}function vX(t){return t===void 0}var x_e=Ase(function(t,e,o){NX(t,e,o)});const DX=x_e;function UX(t,e,o,_){if(!Bi(t))return t;e=DS(e,t);for(var l=-1,c=e.length,T=c-1,E=t;E!=null&&++l<c;){var u=pO(e[l]),d=o;if(u==="__proto__"||u==="constructor"||u==="prototype")return t;if(l!=T){var O=E[u];d=_?_(O,u,E):void 0,d===void 0&&(d=Bi(O)?O:bS(e[l+1])?[]:{})}Tv(E,u,d),E=E[u]}return t}function F_e(t,e,o){for(var _=-1,l=e.length,c={};++_<l;){var T=e[_],E=hv(t,T);o(E,T)&&UX(c,DS(T,t),E)}return c}function V_e(t,e){return F_e(t,e,function(o,_){return mX(t,_)})}var Y_=Jie(function(t,e){return t==null?{}:V_e(t,e)});function W_e(t,e,o){return t==null?t:UX(t,e,o)}var X_e="Expected a function";function $c(t,e,o){var _=!0,l=!0;if(typeof t!="function")throw new TypeError(X_e);return Bi(o)&&(_="leading"in o?!!o.leading:_,l="trailing"in o?!!o.trailing:l),nn(t,e,{leading:_,maxWait:e,trailing:l})}var Y_e=1/0,K_e=$E&&1/pv(new $E([,-0]))[1]==Y_e?function(t){return new $E(t)}:lse,z_e=200;function Z_e(t,e,o){var _=-1,l=Ise,c=t.length,T=!0,E=[],u=E;if(o)T=!1,l=U_e;else if(c>=z_e){var d=e?null:K_e(t);if(d)return pv(d);T=!1,l=SX,u=new Hd}else u=e?[]:E;e:for(;++_<c;){var O=t[_],h=e?e(O):O;if(O=o||O!==0?O:0,T&&h===h){for(var I=u.length;I--;)if(u[I]===h)continue e;e&&u.push(h),E.push(O)}else l(u,h,o)||(u!==E&&u.push(h),E.push(O))}return E}var HC=sX(function(t){return Z_e(LO(t,1,bX,!0))});/*!
- * escape-html
- * Copyright(c) 2012-2013 TJ Holowaychuk
- * Copyright(c) 2015 Andreas Lubbe
- * Copyright(c) 2015 Tiancheng "Timothy" Gu
- * MIT Licensed
- */var j_e=/["'&<>]/,q_e=Q_e;function Q_e(t){var e=""+t,o=j_e.exec(e);if(!o)return e;var _,l="",c=0,T=0;for(c=o.index;c<e.length;c++){switch(e.charCodeAt(c)){case 34:_=""";break;case 38:_="&";break;case 39:_="'";break;case 60:_="<";break;case 62:_=">";break;default:continue}T!==c&&(l+=e.substring(T,c)),T=c+1,l+=_}return T!==c?l+e.substring(T,c):l}const J_e=Sr(q_e),ele='a[href],button:not([disabled]),button:not([hidden]),:not([tabindex="-1"]),input:not([disabled]),input:not([type="hidden"]),select:not([disabled]),textarea:not([disabled])',tle=t=>getComputedStyle(t).position==="fixed"?!1:t.offsetParent!==null,BG=t=>Array.from(t.querySelectorAll(ele)).filter(e=>ole(e)&&tle(e)),ole=t=>{if(t.tabIndex>0||t.tabIndex===0&&t.getAttribute("tabIndex")!==null)return!0;if(t.disabled)return!1;switch(t.nodeName){case"A":return!!t.href&&t.rel!=="ignore";case"INPUT":return!(t.type==="hidden"||t.type==="file");case"BUTTON":case"SELECT":case"TEXTAREA":return!0;default:return!1}},MR=function(t,e,...o){let _;e.includes("mouse")||e.includes("click")?_="MouseEvents":e.includes("key")?_="KeyboardEvent":_="HTMLEvents";const l=document.createEvent(_);return l.initEvent(e,...o),t.dispatchEvent(l),t},yX=t=>!t.getAttribute("aria-owns"),$X=(t,e,o)=>{const{parentNode:_}=t;if(!_)return null;const l=_.querySelectorAll(o),c=Array.prototype.indexOf.call(l,t);return l[c+e]||null},RR=t=>{t&&(t.focus(),!yX(t)&&t.click())},ls=(t,e,{checkForDefaultPrevented:o=!0}={})=>l=>{const c=t==null?void 0:t(l);if(o===!1||!c)return e==null?void 0:e(l)},wG=t=>e=>e.pointerType==="mouse"?t(e):void 0;var sle=Object.defineProperty,ile=Object.defineProperties,nle=Object.getOwnPropertyDescriptors,GG=Object.getOwnPropertySymbols,rle=Object.prototype.hasOwnProperty,_le=Object.prototype.propertyIsEnumerable,kG=(t,e,o)=>e in t?sle(t,e,{enumerable:!0,configurable:!0,writable:!0,value:o}):t[e]=o,lle=(t,e)=>{for(var o in e||(e={}))rle.call(e,o)&&kG(t,o,e[o]);if(GG)for(var o of GG(e))_le.call(e,o)&&kG(t,o,e[o]);return t},ale=(t,e)=>ile(t,nle(e));function HG(t,e){var o;const _=mo();return qs(()=>{_.value=t()},ale(lle({},e),{flush:(o=e==null?void 0:e.flush)!=null?o:"sync"})),hu(_)}var xG;const ro=typeof window<"u",cle=t=>typeof t<"u",Tle=t=>typeof t=="function",Ele=t=>typeof t=="string",su=()=>{},ule=ro&&((xG=window==null?void 0:window.navigator)==null?void 0:xG.userAgent)&&/iP(ad|hone|od)/.test(window.navigator.userAgent);function pa(t){return typeof t=="function"?t():M(t)}function BX(t,e){function o(..._){return new Promise((l,c)=>{Promise.resolve(t(()=>e.apply(this,_),{fn:e,thisArg:this,args:_})).then(l).catch(c)})}return o}function gle(t,e={}){let o,_,l=su;const c=E=>{clearTimeout(E),l(),l=su};return E=>{const u=pa(t),d=pa(e.maxWait);return o&&c(o),u<=0||d!==void 0&&d<=0?(_&&(c(_),_=null),Promise.resolve(E())):new Promise((O,h)=>{l=e.rejectOnCancel?h:O,d&&!_&&(_=setTimeout(()=>{o&&c(o),_=null,O(E())},d)),o=setTimeout(()=>{_&&c(_),_=null,O(E())},u)})}}function dle(t,e=!0,o=!0,_=!1){let l=0,c,T=!0,E=su,u;const d=()=>{c&&(clearTimeout(c),c=void 0,E(),E=su)};return h=>{const I=pa(t),S=Date.now()-l,L=()=>u=h();return d(),I<=0?(l=Date.now(),L()):(S>I&&(o||!T)?(l=Date.now(),L()):e&&(u=new Promise((p,C)=>{E=_?C:p,c=setTimeout(()=>{l=Date.now(),T=!0,p(L()),d()},Math.max(0,I-S))})),!o&&!c&&(c=setTimeout(()=>T=!0,I)),T=!1,u)}}function Ole(t){return t}function fO(t){return qN()?(QN(t),!0):!1}function hle(t,e=200,o={}){return BX(gle(e,o),t)}function Mle(t,e=200,o={}){const _=X(t.value),l=hle(()=>{_.value=t.value},e,o);return Fe(t,()=>l()),_}function wX(t,e=200,o=!1,_=!0,l=!1){return BX(dle(e,o,_,l),t)}function Lv(t,e=!0){Ht()?Bt(t):e?t():Lt(t)}function Xc(t,e,o={}){const{immediate:_=!0}=o,l=X(!1);let c=null;function T(){c&&(clearTimeout(c),c=null)}function E(){l.value=!1,T()}function u(...d){T(),l.value=!0,c=setTimeout(()=>{l.value=!1,c=null,t(...d)},pa(e))}return _&&(l.value=!0,ro&&u()),fO(E),{isPending:hu(l),start:u,stop:E}}function qi(t){var e;const o=pa(t);return(e=o==null?void 0:o.$el)!=null?e:o}const nT=ro?window:void 0,Rle=ro?window.document:void 0;function Yo(...t){let e,o,_,l;if(Ele(t[0])||Array.isArray(t[0])?([o,_,l]=t,e=nT):[e,o,_,l]=t,!e)return su;Array.isArray(o)||(o=[o]),Array.isArray(_)||(_=[_]);const c=[],T=()=>{c.forEach(O=>O()),c.length=0},E=(O,h,I,S)=>(O.addEventListener(h,I,S),()=>O.removeEventListener(h,I,S)),u=Fe(()=>[qi(e),pa(l)],([O,h])=>{T(),O&&c.push(...o.flatMap(I=>_.map(S=>E(O,I,S,h))))},{immediate:!0,flush:"post"}),d=()=>{u(),T()};return fO(d),d}let FG=!1;function fv(t,e,o={}){const{window:_=nT,ignore:l=[],capture:c=!0,detectIframe:T=!1}=o;if(!_)return;ule&&!FG&&(FG=!0,Array.from(_.document.body.children).forEach(I=>I.addEventListener("click",su)));let E=!0;const u=I=>l.some(S=>{if(typeof S=="string")return Array.from(_.document.querySelectorAll(S)).some(L=>L===I.target||I.composedPath().includes(L));{const L=qi(S);return L&&(I.target===L||I.composedPath().includes(L))}}),O=[Yo(_,"click",I=>{const S=qi(t);if(!(!S||S===I.target||I.composedPath().includes(S))){if(I.detail===0&&(E=!u(I)),!E){E=!0;return}e(I)}},{passive:!0,capture:c}),Yo(_,"pointerdown",I=>{const S=qi(t);S&&(E=!I.composedPath().includes(S)&&!u(I))},{passive:!0}),T&&Yo(_,"blur",I=>{var S;const L=qi(t);((S=_.document.activeElement)==null?void 0:S.tagName)==="IFRAME"&&!(L!=null&&L.contains(_.document.activeElement))&&e(I)})].filter(Boolean);return()=>O.forEach(I=>I())}function GX(t,e=!1){const o=X(),_=()=>o.value=!!t();return _(),Lv(_,e),o}function Ile(t){return JSON.parse(JSON.stringify(t))}const VG=typeof globalThis<"u"?globalThis:typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{},WG="__vueuse_ssr_handlers__";VG[WG]=VG[WG]||{};function Sle(t,e,{window:o=nT,initialValue:_=""}={}){const l=X(_),c=v(()=>{var T;return qi(e)||((T=o==null?void 0:o.document)==null?void 0:T.documentElement)});return Fe([c,()=>pa(t)],([T,E])=>{var u;if(T&&o){const d=(u=o.getComputedStyle(T).getPropertyValue(E))==null?void 0:u.trim();l.value=d||_}},{immediate:!0}),Fe(l,T=>{var E;(E=c.value)!=null&&E.style&&c.value.style.setProperty(pa(t),T)}),l}function ple({document:t=Rle}={}){if(!t)return X("visible");const e=X(t.visibilityState);return Yo(t,"visibilitychange",()=>{e.value=t.visibilityState}),e}var XG=Object.getOwnPropertySymbols,Lle=Object.prototype.hasOwnProperty,fle=Object.prototype.propertyIsEnumerable,mle=(t,e)=>{var o={};for(var _ in t)Lle.call(t,_)&&e.indexOf(_)<0&&(o[_]=t[_]);if(t!=null&&XG)for(var _ of XG(t))e.indexOf(_)<0&&fle.call(t,_)&&(o[_]=t[_]);return o};function Rs(t,e,o={}){const _=o,{window:l=nT}=_,c=mle(_,["window"]);let T;const E=GX(()=>l&&"ResizeObserver"in l),u=()=>{T&&(T.disconnect(),T=void 0)},d=Fe(()=>qi(t),h=>{u(),E.value&&l&&h&&(T=new ResizeObserver(e),T.observe(h,c))},{immediate:!0,flush:"post"}),O=()=>{u(),d()};return fO(O),{isSupported:E,stop:O}}function YG(t,e={}){const{reset:o=!0,windowResize:_=!0,windowScroll:l=!0,immediate:c=!0}=e,T=X(0),E=X(0),u=X(0),d=X(0),O=X(0),h=X(0),I=X(0),S=X(0);function L(){const p=qi(t);if(!p){o&&(T.value=0,E.value=0,u.value=0,d.value=0,O.value=0,h.value=0,I.value=0,S.value=0);return}const C=p.getBoundingClientRect();T.value=C.height,E.value=C.bottom,u.value=C.left,d.value=C.right,O.value=C.top,h.value=C.width,I.value=C.x,S.value=C.y}return Rs(t,L),Fe(()=>qi(t),p=>!p&&L()),l&&Yo("scroll",L,{capture:!0,passive:!0}),_&&Yo("resize",L,{passive:!0}),Lv(()=>{c&&L()}),{height:T,bottom:E,left:u,right:d,top:O,width:h,x:I,y:S,update:L}}var KG=Object.getOwnPropertySymbols,Cle=Object.prototype.hasOwnProperty,Ale=Object.prototype.propertyIsEnumerable,ble=(t,e)=>{var o={};for(var _ in t)Cle.call(t,_)&&e.indexOf(_)<0&&(o[_]=t[_]);if(t!=null&&KG)for(var _ of KG(t))e.indexOf(_)<0&&Ale.call(t,_)&&(o[_]=t[_]);return o};function kX(t,e,o={}){const _=o,{window:l=nT}=_,c=ble(_,["window"]);let T;const E=GX(()=>l&&"MutationObserver"in l),u=()=>{T&&(T.disconnect(),T=void 0)},d=Fe(()=>qi(t),h=>{u(),E.value&&l&&h&&(T=new MutationObserver(e),T.observe(h,c))},{immediate:!0}),O=()=>{u(),d()};return fO(O),{isSupported:E,stop:O}}var zG;(function(t){t.UP="UP",t.RIGHT="RIGHT",t.DOWN="DOWN",t.LEFT="LEFT",t.NONE="NONE"})(zG||(zG={}));var Nle=Object.defineProperty,ZG=Object.getOwnPropertySymbols,Ple=Object.prototype.hasOwnProperty,vle=Object.prototype.propertyIsEnumerable,jG=(t,e,o)=>e in t?Nle(t,e,{enumerable:!0,configurable:!0,writable:!0,value:o}):t[e]=o,Dle=(t,e)=>{for(var o in e||(e={}))Ple.call(e,o)&&jG(t,o,e[o]);if(ZG)for(var o of ZG(e))vle.call(e,o)&&jG(t,o,e[o]);return t};const Ule={easeInSine:[.12,0,.39,0],easeOutSine:[.61,1,.88,1],easeInOutSine:[.37,0,.63,1],easeInQuad:[.11,0,.5,0],easeOutQuad:[.5,1,.89,1],easeInOutQuad:[.45,0,.55,1],easeInCubic:[.32,0,.67,0],easeOutCubic:[.33,1,.68,1],easeInOutCubic:[.65,0,.35,1],easeInQuart:[.5,0,.75,0],easeOutQuart:[.25,1,.5,1],easeInOutQuart:[.76,0,.24,1],easeInQuint:[.64,0,.78,0],easeOutQuint:[.22,1,.36,1],easeInOutQuint:[.83,0,.17,1],easeInExpo:[.7,0,.84,0],easeOutExpo:[.16,1,.3,1],easeInOutExpo:[.87,0,.13,1],easeInCirc:[.55,0,1,.45],easeOutCirc:[0,.55,.45,1],easeInOutCirc:[.85,0,.15,1],easeInBack:[.36,0,.66,-.56],easeOutBack:[.34,1.56,.64,1],easeInOutBack:[.68,-.6,.32,1.6]};Dle({linear:Ole},Ule);function HX(t,e,o,_={}){var l,c,T;const{clone:E=!1,passive:u=!1,eventName:d,deep:O=!1,defaultValue:h}=_,I=Ht(),S=o||(I==null?void 0:I.emit)||((l=I==null?void 0:I.$emit)==null?void 0:l.bind(I))||((T=(c=I==null?void 0:I.proxy)==null?void 0:c.$emit)==null?void 0:T.bind(I==null?void 0:I.proxy));let L=d;e||(e="modelValue"),L=d||L||`update:${e.toString()}`;const p=m=>E?Tle(E)?E(m):Ile(m):m,C=()=>cle(t[e])?p(t[e]):h;if(u){const m=C(),A=X(m);return Fe(()=>t[e],b=>A.value=p(b)),Fe(A,b=>{(b!==t[e]||O)&&S(L,b)},{deep:O}),A}else return v({get(){return C()},set(m){S(L,m)}})}function yle({window:t=nT}={}){if(!t)return X(!1);const e=X(t.document.hasFocus());return Yo(t,"blur",()=>{e.value=!1}),Yo(t,"focus",()=>{e.value=!0}),e}function $le(t={}){const{window:e=nT,initialWidth:o=1/0,initialHeight:_=1/0,listenOrientation:l=!0,includeScrollbar:c=!0}=t,T=X(o),E=X(_),u=()=>{e&&(c?(T.value=e.innerWidth,E.value=e.innerHeight):(T.value=e.document.documentElement.clientWidth,E.value=e.document.documentElement.clientHeight))};return u(),Lv(u),Yo("resize",u,{passive:!0}),l&&Yo("orientationchange",u,{passive:!0}),{width:T,height:E}}const xX=()=>ro&&/firefox/i.test(window.navigator.userAgent),Ble=(t,e)=>{if(!ro||!t||!e)return!1;const o=t.getBoundingClientRect();let _;return e instanceof Element?_=e.getBoundingClientRect():_={top:0,right:window.innerWidth,bottom:window.innerHeight,left:0},o.top<_.bottom&&o.bottom>_.top&&o.right>_.left&&o.left<_.right},qG=t=>{let e=0,o=t;for(;o;)e+=o.offsetTop,o=o.offsetParent;return e},wle=(t,e)=>Math.abs(qG(t)-qG(e)),mv=t=>{let e,o;return t.type==="touchend"?(o=t.changedTouches[0].clientY,e=t.changedTouches[0].clientX):t.type.startsWith("touch")?(o=t.touches[0].clientY,e=t.touches[0].clientX):(o=t.clientY,e=t.clientX),{clientX:e,clientY:o}},bs=t=>t===void 0,Ss=t=>typeof t=="boolean",mt=t=>typeof t=="number",Bn=t=>!t&&t!==0||rt(t)&&t.length===0||Zt(t)&&!Object.keys(t).length,zn=t=>typeof Element>"u"?!1:t instanceof Element,Gle=t=>ws(t),kle=t=>vt(t)?!Number.isNaN(Number(t)):!1,Cv=(t="")=>t.replace(/[|\\{}()[\]^$+*?.]/g,"\\$&").replace(/-/g,"\\x2d"),o_=t=>sO(t),iu=t=>Object.keys(t),Hle=t=>Object.entries(t),IR=(t,e,o)=>({get value(){return ds(t,e,o)},set value(_){W_e(t,e,_)}});class xle extends Error{constructor(e){super(e),this.name="ElementPlusError"}}function vs(t,e){throw new xle(`[${t}] ${e}`)}const FX=(t="")=>t.split(" ").filter(e=>!!e.trim()),Or=(t,e)=>{if(!t||!e)return!1;if(e.includes(" "))throw new Error("className should not contain space.");return t.classList.contains(e)},r_=(t,e)=>{!t||!e.trim()||t.classList.add(...FX(e))},tn=(t,e)=>{!t||!e.trim()||t.classList.remove(...FX(e))},Jl=(t,e)=>{var o;if(!ro||!t||!e)return"";let _=bn(e);_==="float"&&(_="cssFloat");try{const l=t.style[_];if(l)return l;const c=(o=document.defaultView)==null?void 0:o.getComputedStyle(t,"");return c?c[_]:""}catch{return t.style[_]}};function hs(t,e="px"){if(!t)return"";if(mt(t)||kle(t))return`${t}${e}`;if(vt(t))return t}const Fle=(t,e)=>{if(!ro)return!1;const o={undefined:"overflow",true:"overflow-y",false:"overflow-x"}[String(e)],_=Jl(t,o);return["scroll","auto","overlay"].some(l=>_.includes(l))},Av=(t,e)=>{if(!ro)return;let o=t;for(;o;){if([window,document,document.documentElement].includes(o))return window;if(Fle(o,e))return o;o=o.parentNode}return o};let HM;const VX=t=>{var e;if(!ro)return 0;if(HM!==void 0)return HM;const o=document.createElement("div");o.className=`${t}-scrollbar__wrap`,o.style.visibility="hidden",o.style.width="100px",o.style.position="absolute",o.style.top="-9999px",document.body.appendChild(o);const _=o.offsetWidth;o.style.overflow="scroll";const l=document.createElement("div");l.style.width="100%",o.appendChild(l);const c=l.offsetWidth;return(e=o.parentNode)==null||e.removeChild(o),HM=_-c,HM};function WX(t,e){if(!ro)return;if(!e){t.scrollTop=0;return}const o=[];let _=e.offsetParent;for(;_!==null&&t!==_&&t.contains(_);)o.push(_),_=_.offsetParent;const l=e.offsetTop+o.reduce((u,d)=>u+d.offsetTop,0),c=l+e.offsetHeight,T=t.scrollTop,E=T+t.clientHeight;l<T?t.scrollTop=l:c>E&&(t.scrollTop=c-t.clientHeight)}/*! Element Plus Icons Vue v2.3.1 */var Vle=Oe({name:"ArrowDown",__name:"arrow-down",setup(t){return(e,o)=>(B(),se("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[te("path",{fill:"currentColor",d:"M831.872 340.864 512 652.672 192.128 340.864a30.592 30.592 0 0 0-42.752 0 29.12 29.12 0 0 0 0 41.6L489.664 714.24a32 32 0 0 0 44.672 0l340.288-331.712a29.12 29.12 0 0 0 0-41.728 30.592 30.592 0 0 0-42.752 0z"})]))}}),Tl=Vle,Wle=Oe({name:"ArrowLeft",__name:"arrow-left",setup(t){return(e,o)=>(B(),se("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[te("path",{fill:"currentColor",d:"M609.408 149.376 277.76 489.6a32 32 0 0 0 0 44.672l331.648 340.352a29.12 29.12 0 0 0 41.728 0 30.592 30.592 0 0 0 0-42.752L339.264 511.936l311.872-319.872a30.592 30.592 0 0 0 0-42.688 29.12 29.12 0 0 0-41.728 0z"})]))}}),La=Wle,Xle=Oe({name:"ArrowRight",__name:"arrow-right",setup(t){return(e,o)=>(B(),se("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[te("path",{fill:"currentColor",d:"M340.864 149.312a30.592 30.592 0 0 0 0 42.752L652.736 512 340.864 831.872a30.592 30.592 0 0 0 0 42.752 29.12 29.12 0 0 0 41.728 0L714.24 534.336a32 32 0 0 0 0-44.672L382.592 149.376a29.12 29.12 0 0 0-41.728 0z"})]))}}),Ui=Xle,Yle=Oe({name:"ArrowUp",__name:"arrow-up",setup(t){return(e,o)=>(B(),se("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[te("path",{fill:"currentColor",d:"m488.832 344.32-339.84 356.672a32 32 0 0 0 0 44.16l.384.384a29.44 29.44 0 0 0 42.688 0l320-335.872 319.872 335.872a29.44 29.44 0 0 0 42.688 0l.384-.384a32 32 0 0 0 0-44.16L535.168 344.32a32 32 0 0 0-46.336 0"})]))}}),bv=Yle,Kle=Oe({name:"Back",__name:"back",setup(t){return(e,o)=>(B(),se("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[te("path",{fill:"currentColor",d:"M224 480h640a32 32 0 1 1 0 64H224a32 32 0 0 1 0-64"}),te("path",{fill:"currentColor",d:"m237.248 512 265.408 265.344a32 32 0 0 1-45.312 45.312l-288-288a32 32 0 0 1 0-45.312l288-288a32 32 0 1 1 45.312 45.312z"})]))}}),zle=Kle,Zle=Oe({name:"Calendar",__name:"calendar",setup(t){return(e,o)=>(B(),se("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[te("path",{fill:"currentColor",d:"M128 384v512h768V192H768v32a32 32 0 1 1-64 0v-32H320v32a32 32 0 0 1-64 0v-32H128v128h768v64zm192-256h384V96a32 32 0 1 1 64 0v32h160a32 32 0 0 1 32 32v768a32 32 0 0 1-32 32H96a32 32 0 0 1-32-32V160a32 32 0 0 1 32-32h160V96a32 32 0 0 1 64 0zm-32 384h64a32 32 0 0 1 0 64h-64a32 32 0 0 1 0-64m0 192h64a32 32 0 1 1 0 64h-64a32 32 0 1 1 0-64m192-192h64a32 32 0 0 1 0 64h-64a32 32 0 0 1 0-64m0 192h64a32 32 0 1 1 0 64h-64a32 32 0 1 1 0-64m192-192h64a32 32 0 1 1 0 64h-64a32 32 0 1 1 0-64m0 192h64a32 32 0 1 1 0 64h-64a32 32 0 1 1 0-64"})]))}}),jle=Zle,qle=Oe({name:"CaretRight",__name:"caret-right",setup(t){return(e,o)=>(B(),se("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[te("path",{fill:"currentColor",d:"M384 192v640l384-320.064z"})]))}}),XX=qle,Qle=Oe({name:"CaretTop",__name:"caret-top",setup(t){return(e,o)=>(B(),se("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[te("path",{fill:"currentColor",d:"M512 320 192 704h639.936z"})]))}}),Jle=Qle,eae=Oe({name:"Check",__name:"check",setup(t){return(e,o)=>(B(),se("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[te("path",{fill:"currentColor",d:"M406.656 706.944 195.84 496.256a32 32 0 1 0-45.248 45.248l256 256 512-512a32 32 0 0 0-45.248-45.248L406.592 706.944z"})]))}}),mO=eae,tae=Oe({name:"CircleCheckFilled",__name:"circle-check-filled",setup(t){return(e,o)=>(B(),se("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[te("path",{fill:"currentColor",d:"M512 64a448 448 0 1 1 0 896 448 448 0 0 1 0-896m-55.808 536.384-99.52-99.584a38.4 38.4 0 1 0-54.336 54.336l126.72 126.72a38.272 38.272 0 0 0 54.336 0l262.4-262.464a38.4 38.4 0 1 0-54.272-54.336z"})]))}}),oae=tae,sae=Oe({name:"CircleCheck",__name:"circle-check",setup(t){return(e,o)=>(B(),se("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[te("path",{fill:"currentColor",d:"M512 896a384 384 0 1 0 0-768 384 384 0 0 0 0 768m0 64a448 448 0 1 1 0-896 448 448 0 0 1 0 896"}),te("path",{fill:"currentColor",d:"M745.344 361.344a32 32 0 0 1 45.312 45.312l-288 288a32 32 0 0 1-45.312 0l-160-160a32 32 0 1 1 45.312-45.312L480 626.752l265.344-265.408z"})]))}}),Nv=sae,iae=Oe({name:"CircleCloseFilled",__name:"circle-close-filled",setup(t){return(e,o)=>(B(),se("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[te("path",{fill:"currentColor",d:"M512 64a448 448 0 1 1 0 896 448 448 0 0 1 0-896m0 393.664L407.936 353.6a38.4 38.4 0 1 0-54.336 54.336L457.664 512 353.6 616.064a38.4 38.4 0 1 0 54.336 54.336L512 566.336 616.064 670.4a38.4 38.4 0 1 0 54.336-54.336L566.336 512 670.4 407.936a38.4 38.4 0 1 0-54.336-54.336z"})]))}}),Pv=iae,nae=Oe({name:"CircleClose",__name:"circle-close",setup(t){return(e,o)=>(B(),se("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[te("path",{fill:"currentColor",d:"m466.752 512-90.496-90.496a32 32 0 0 1 45.248-45.248L512 466.752l90.496-90.496a32 32 0 1 1 45.248 45.248L557.248 512l90.496 90.496a32 32 0 1 1-45.248 45.248L512 557.248l-90.496 90.496a32 32 0 0 1-45.248-45.248z"}),te("path",{fill:"currentColor",d:"M512 896a384 384 0 1 0 0-768 384 384 0 0 0 0 768m0 64a448 448 0 1 1 0-896 448 448 0 0 1 0 896"})]))}}),va=nae,rae=Oe({name:"Clock",__name:"clock",setup(t){return(e,o)=>(B(),se("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[te("path",{fill:"currentColor",d:"M512 896a384 384 0 1 0 0-768 384 384 0 0 0 0 768m0 64a448 448 0 1 1 0-896 448 448 0 0 1 0 896"}),te("path",{fill:"currentColor",d:"M480 256a32 32 0 0 1 32 32v256a32 32 0 0 1-64 0V288a32 32 0 0 1 32-32"}),te("path",{fill:"currentColor",d:"M480 512h256q32 0 32 32t-32 32H480q-32 0-32-32t32-32"})]))}}),YX=rae,_ae=Oe({name:"Close",__name:"close",setup(t){return(e,o)=>(B(),se("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[te("path",{fill:"currentColor",d:"M764.288 214.592 512 466.88 259.712 214.592a31.936 31.936 0 0 0-45.12 45.12L466.752 512 214.528 764.224a31.936 31.936 0 1 0 45.12 45.184L512 557.184l252.288 252.288a31.936 31.936 0 0 0 45.12-45.12L557.12 512.064l252.288-252.352a31.936 31.936 0 1 0-45.12-45.184z"})]))}}),Rr=_ae,lae=Oe({name:"DArrowLeft",__name:"d-arrow-left",setup(t){return(e,o)=>(B(),se("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[te("path",{fill:"currentColor",d:"M529.408 149.376a29.12 29.12 0 0 1 41.728 0 30.592 30.592 0 0 1 0 42.688L259.264 511.936l311.872 319.936a30.592 30.592 0 0 1-.512 43.264 29.12 29.12 0 0 1-41.216-.512L197.76 534.272a32 32 0 0 1 0-44.672l331.648-340.224zm256 0a29.12 29.12 0 0 1 41.728 0 30.592 30.592 0 0 1 0 42.688L515.264 511.936l311.872 319.936a30.592 30.592 0 0 1-.512 43.264 29.12 29.12 0 0 1-41.216-.512L453.76 534.272a32 32 0 0 1 0-44.672l331.648-340.224z"})]))}}),nu=lae,aae=Oe({name:"DArrowRight",__name:"d-arrow-right",setup(t){return(e,o)=>(B(),se("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[te("path",{fill:"currentColor",d:"M452.864 149.312a29.12 29.12 0 0 1 41.728.064L826.24 489.664a32 32 0 0 1 0 44.672L494.592 874.624a29.12 29.12 0 0 1-41.728 0 30.592 30.592 0 0 1 0-42.752L764.736 512 452.864 192a30.592 30.592 0 0 1 0-42.688m-256 0a29.12 29.12 0 0 1 41.728.064L570.24 489.664a32 32 0 0 1 0 44.672L238.592 874.624a29.12 29.12 0 0 1-41.728 0 30.592 30.592 0 0 1 0-42.752L508.736 512 196.864 192a30.592 30.592 0 0 1 0-42.688z"})]))}}),ru=aae,cae=Oe({name:"Delete",__name:"delete",setup(t){return(e,o)=>(B(),se("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[te("path",{fill:"currentColor",d:"M160 256H96a32 32 0 0 1 0-64h256V95.936a32 32 0 0 1 32-32h256a32 32 0 0 1 32 32V192h256a32 32 0 1 1 0 64h-64v672a32 32 0 0 1-32 32H192a32 32 0 0 1-32-32zm448-64v-64H416v64zM224 896h576V256H224zm192-128a32 32 0 0 1-32-32V416a32 32 0 0 1 64 0v320a32 32 0 0 1-32 32m192 0a32 32 0 0 1-32-32V416a32 32 0 0 1 64 0v320a32 32 0 0 1-32 32"})]))}}),Tae=cae,Eae=Oe({name:"Document",__name:"document",setup(t){return(e,o)=>(B(),se("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[te("path",{fill:"currentColor",d:"M832 384H576V128H192v768h640zm-26.496-64L640 154.496V320zM160 64h480l256 256v608a32 32 0 0 1-32 32H160a32 32 0 0 1-32-32V96a32 32 0 0 1 32-32m160 448h384v64H320zm0-192h160v64H320zm0 384h384v64H320z"})]))}}),uae=Eae,gae=Oe({name:"FullScreen",__name:"full-screen",setup(t){return(e,o)=>(B(),se("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[te("path",{fill:"currentColor",d:"m160 96.064 192 .192a32 32 0 0 1 0 64l-192-.192V352a32 32 0 0 1-64 0V96h64zm0 831.872V928H96V672a32 32 0 1 1 64 0v191.936l192-.192a32 32 0 1 1 0 64zM864 96.064V96h64v256a32 32 0 1 1-64 0V160.064l-192 .192a32 32 0 1 1 0-64l192-.192zm0 831.872-192-.192a32 32 0 0 1 0-64l192 .192V672a32 32 0 1 1 64 0v256h-64z"})]))}}),dae=gae,Oae=Oe({name:"Hide",__name:"hide",setup(t){return(e,o)=>(B(),se("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[te("path",{fill:"currentColor",d:"M876.8 156.8c0-9.6-3.2-16-9.6-22.4-6.4-6.4-12.8-9.6-22.4-9.6-9.6 0-16 3.2-22.4 9.6L736 220.8c-64-32-137.6-51.2-224-60.8-160 16-288 73.6-377.6 176C44.8 438.4 0 496 0 512s48 73.6 134.4 176c22.4 25.6 44.8 48 73.6 67.2l-86.4 89.6c-6.4 6.4-9.6 12.8-9.6 22.4 0 9.6 3.2 16 9.6 22.4 6.4 6.4 12.8 9.6 22.4 9.6 9.6 0 16-3.2 22.4-9.6l704-710.4c3.2-6.4 6.4-12.8 6.4-22.4Zm-646.4 528c-76.8-70.4-128-128-153.6-172.8 28.8-48 80-105.6 153.6-172.8C304 272 400 230.4 512 224c64 3.2 124.8 19.2 176 44.8l-54.4 54.4C598.4 300.8 560 288 512 288c-64 0-115.2 22.4-160 64s-64 96-64 160c0 48 12.8 89.6 35.2 124.8L256 707.2c-9.6-6.4-19.2-16-25.6-22.4Zm140.8-96c-12.8-22.4-19.2-48-19.2-76.8 0-44.8 16-83.2 48-112 32-28.8 67.2-48 112-48 28.8 0 54.4 6.4 73.6 19.2zM889.599 336c-12.8-16-28.8-28.8-41.6-41.6l-48 48c73.6 67.2 124.8 124.8 150.4 169.6-28.8 48-80 105.6-153.6 172.8-73.6 67.2-172.8 108.8-284.8 115.2-51.2-3.2-99.2-12.8-140.8-28.8l-48 48c57.6 22.4 118.4 38.4 188.8 44.8 160-16 288-73.6 377.6-176C979.199 585.6 1024 528 1024 512s-48.001-73.6-134.401-176Z"}),te("path",{fill:"currentColor",d:"M511.998 672c-12.8 0-25.6-3.2-38.4-6.4l-51.2 51.2c28.8 12.8 57.6 19.2 89.6 19.2 64 0 115.2-22.4 160-64 41.6-41.6 64-96 64-160 0-32-6.4-64-19.2-89.6l-51.2 51.2c3.2 12.8 6.4 25.6 6.4 38.4 0 44.8-16 83.2-48 112-32 28.8-67.2 48-112 48Z"})]))}}),hae=Oae,Mae=Oe({name:"InfoFilled",__name:"info-filled",setup(t){return(e,o)=>(B(),se("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[te("path",{fill:"currentColor",d:"M512 64a448 448 0 1 1 0 896.064A448 448 0 0 1 512 64m67.2 275.072c33.28 0 60.288-23.104 60.288-57.344s-27.072-57.344-60.288-57.344c-33.28 0-60.16 23.104-60.16 57.344s26.88 57.344 60.16 57.344M590.912 699.2c0-6.848 2.368-24.64 1.024-34.752l-52.608 60.544c-10.88 11.456-24.512 19.392-30.912 17.28a12.992 12.992 0 0 1-8.256-14.72l87.68-276.992c7.168-35.136-12.544-67.2-54.336-71.296-44.096 0-108.992 44.736-148.48 101.504 0 6.784-1.28 23.68.064 33.792l52.544-60.608c10.88-11.328 23.552-19.328 29.952-17.152a12.8 12.8 0 0 1 7.808 16.128L388.48 728.576c-10.048 32.256 8.96 63.872 55.04 71.04 67.84 0 107.904-43.648 147.456-100.416z"})]))}}),vv=Mae,Rae=Oe({name:"Loading",__name:"loading",setup(t){return(e,o)=>(B(),se("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[te("path",{fill:"currentColor",d:"M512 64a32 32 0 0 1 32 32v192a32 32 0 0 1-64 0V96a32 32 0 0 1 32-32m0 640a32 32 0 0 1 32 32v192a32 32 0 1 1-64 0V736a32 32 0 0 1 32-32m448-192a32 32 0 0 1-32 32H736a32 32 0 1 1 0-64h192a32 32 0 0 1 32 32m-640 0a32 32 0 0 1-32 32H96a32 32 0 0 1 0-64h192a32 32 0 0 1 32 32M195.2 195.2a32 32 0 0 1 45.248 0L376.32 331.008a32 32 0 0 1-45.248 45.248L195.2 240.448a32 32 0 0 1 0-45.248zm452.544 452.544a32 32 0 0 1 45.248 0L828.8 783.552a32 32 0 0 1-45.248 45.248L647.744 692.992a32 32 0 0 1 0-45.248zM828.8 195.264a32 32 0 0 1 0 45.184L692.992 376.32a32 32 0 0 1-45.248-45.248l135.808-135.808a32 32 0 0 1 45.248 0m-452.544 452.48a32 32 0 0 1 0 45.248L240.448 828.8a32 32 0 0 1-45.248-45.248l135.808-135.808a32 32 0 0 1 45.248 0z"})]))}}),Da=Rae,Iae=Oe({name:"Minus",__name:"minus",setup(t){return(e,o)=>(B(),se("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[te("path",{fill:"currentColor",d:"M128 544h768a32 32 0 1 0 0-64H128a32 32 0 0 0 0 64"})]))}}),Sae=Iae,pae=Oe({name:"MoreFilled",__name:"more-filled",setup(t){return(e,o)=>(B(),se("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[te("path",{fill:"currentColor",d:"M176 416a112 112 0 1 1 0 224 112 112 0 0 1 0-224m336 0a112 112 0 1 1 0 224 112 112 0 0 1 0-224m336 0a112 112 0 1 1 0 224 112 112 0 0 1 0-224"})]))}}),QG=pae,Lae=Oe({name:"More",__name:"more",setup(t){return(e,o)=>(B(),se("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[te("path",{fill:"currentColor",d:"M176 416a112 112 0 1 0 0 224 112 112 0 0 0 0-224m0 64a48 48 0 1 1 0 96 48 48 0 0 1 0-96m336-64a112 112 0 1 1 0 224 112 112 0 0 1 0-224m0 64a48 48 0 1 0 0 96 48 48 0 0 0 0-96m336-64a112 112 0 1 1 0 224 112 112 0 0 1 0-224m0 64a48 48 0 1 0 0 96 48 48 0 0 0 0-96"})]))}}),fae=Lae,mae=Oe({name:"PictureFilled",__name:"picture-filled",setup(t){return(e,o)=>(B(),se("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[te("path",{fill:"currentColor",d:"M96 896a32 32 0 0 1-32-32V160a32 32 0 0 1 32-32h832a32 32 0 0 1 32 32v704a32 32 0 0 1-32 32zm315.52-228.48-68.928-68.928a32 32 0 0 0-45.248 0L128 768.064h778.688l-242.112-290.56a32 32 0 0 0-49.216 0L458.752 665.408a32 32 0 0 1-47.232 2.112M256 384a96 96 0 1 0 192.064-.064A96 96 0 0 0 256 384"})]))}}),Cae=mae,Aae=Oe({name:"Plus",__name:"plus",setup(t){return(e,o)=>(B(),se("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[te("path",{fill:"currentColor",d:"M480 480V128a32 32 0 0 1 64 0v352h352a32 32 0 1 1 0 64H544v352a32 32 0 1 1-64 0V544H128a32 32 0 0 1 0-64z"})]))}}),KX=Aae,bae=Oe({name:"QuestionFilled",__name:"question-filled",setup(t){return(e,o)=>(B(),se("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[te("path",{fill:"currentColor",d:"M512 64a448 448 0 1 1 0 896 448 448 0 0 1 0-896m23.744 191.488c-52.096 0-92.928 14.784-123.2 44.352-30.976 29.568-45.76 70.4-45.76 122.496h80.256c0-29.568 5.632-52.8 17.6-68.992 13.376-19.712 35.2-28.864 66.176-28.864 23.936 0 42.944 6.336 56.32 19.712 12.672 13.376 19.712 31.68 19.712 54.912 0 17.6-6.336 34.496-19.008 49.984l-8.448 9.856c-45.76 40.832-73.216 70.4-82.368 89.408-9.856 19.008-14.08 42.24-14.08 68.992v9.856h80.96v-9.856c0-16.896 3.52-31.68 10.56-45.76 6.336-12.672 15.488-24.64 28.16-35.2 33.792-29.568 54.208-48.576 60.544-55.616 16.896-22.528 26.048-51.392 26.048-86.592 0-42.944-14.08-76.736-42.24-101.376-28.16-25.344-65.472-37.312-111.232-37.312zm-12.672 406.208a54.272 54.272 0 0 0-38.72 14.784 49.408 49.408 0 0 0-15.488 38.016c0 15.488 4.928 28.16 15.488 38.016A54.848 54.848 0 0 0 523.072 768c15.488 0 28.16-4.928 38.72-14.784a51.52 51.52 0 0 0 16.192-38.72 51.968 51.968 0 0 0-15.488-38.016 55.936 55.936 0 0 0-39.424-14.784z"})]))}}),Nae=bae,Pae=Oe({name:"RefreshLeft",__name:"refresh-left",setup(t){return(e,o)=>(B(),se("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[te("path",{fill:"currentColor",d:"M289.088 296.704h92.992a32 32 0 0 1 0 64H232.96a32 32 0 0 1-32-32V179.712a32 32 0 0 1 64 0v50.56a384 384 0 0 1 643.84 282.88 384 384 0 0 1-383.936 384 384 384 0 0 1-384-384h64a320 320 0 1 0 640 0 320 320 0 0 0-555.712-216.448z"})]))}}),vae=Pae,Dae=Oe({name:"RefreshRight",__name:"refresh-right",setup(t){return(e,o)=>(B(),se("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[te("path",{fill:"currentColor",d:"M784.512 230.272v-50.56a32 32 0 1 1 64 0v149.056a32 32 0 0 1-32 32H667.52a32 32 0 1 1 0-64h92.992A320 320 0 1 0 524.8 833.152a320 320 0 0 0 320-320h64a384 384 0 0 1-384 384 384 384 0 0 1-384-384 384 384 0 0 1 643.712-282.88z"})]))}}),Uae=Dae,yae=Oe({name:"ScaleToOriginal",__name:"scale-to-original",setup(t){return(e,o)=>(B(),se("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[te("path",{fill:"currentColor",d:"M813.176 180.706a60.235 60.235 0 0 1 60.236 60.235v481.883a60.235 60.235 0 0 1-60.236 60.235H210.824a60.235 60.235 0 0 1-60.236-60.235V240.94a60.235 60.235 0 0 1 60.236-60.235h602.352zm0-60.235H210.824A120.47 120.47 0 0 0 90.353 240.94v481.883a120.47 120.47 0 0 0 120.47 120.47h602.353a120.47 120.47 0 0 0 120.471-120.47V240.94a120.47 120.47 0 0 0-120.47-120.47zm-120.47 180.705a30.118 30.118 0 0 0-30.118 30.118v301.177a30.118 30.118 0 0 0 60.236 0V331.294a30.118 30.118 0 0 0-30.118-30.118zm-361.412 0a30.118 30.118 0 0 0-30.118 30.118v301.177a30.118 30.118 0 1 0 60.236 0V331.294a30.118 30.118 0 0 0-30.118-30.118M512 361.412a30.118 30.118 0 0 0-30.118 30.117v30.118a30.118 30.118 0 0 0 60.236 0V391.53A30.118 30.118 0 0 0 512 361.412M512 512a30.118 30.118 0 0 0-30.118 30.118v30.117a30.118 30.118 0 0 0 60.236 0v-30.117A30.118 30.118 0 0 0 512 512"})]))}}),$ae=yae,Bae=Oe({name:"Search",__name:"search",setup(t){return(e,o)=>(B(),se("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[te("path",{fill:"currentColor",d:"m795.904 750.72 124.992 124.928a32 32 0 0 1-45.248 45.248L750.656 795.904a416 416 0 1 1 45.248-45.248zM480 832a352 352 0 1 0 0-704 352 352 0 0 0 0 704"})]))}}),wae=Bae,Gae=Oe({name:"SortDown",__name:"sort-down",setup(t){return(e,o)=>(B(),se("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[te("path",{fill:"currentColor",d:"M576 96v709.568L333.312 562.816A32 32 0 1 0 288 608l297.408 297.344A32 32 0 0 0 640 882.688V96a32 32 0 0 0-64 0"})]))}}),kae=Gae,Hae=Oe({name:"SortUp",__name:"sort-up",setup(t){return(e,o)=>(B(),se("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[te("path",{fill:"currentColor",d:"M384 141.248V928a32 32 0 1 0 64 0V218.56l242.688 242.688A32 32 0 1 0 736 416L438.592 118.656A32 32 0 0 0 384 141.248"})]))}}),xae=Hae,Fae=Oe({name:"StarFilled",__name:"star-filled",setup(t){return(e,o)=>(B(),se("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[te("path",{fill:"currentColor",d:"M283.84 867.84 512 747.776l228.16 119.936a6.4 6.4 0 0 0 9.28-6.72l-43.52-254.08 184.512-179.904a6.4 6.4 0 0 0-3.52-10.88l-255.104-37.12L517.76 147.904a6.4 6.4 0 0 0-11.52 0L392.192 379.072l-255.104 37.12a6.4 6.4 0 0 0-3.52 10.88L318.08 606.976l-43.584 254.08a6.4 6.4 0 0 0 9.28 6.72z"})]))}}),xM=Fae,Vae=Oe({name:"Star",__name:"star",setup(t){return(e,o)=>(B(),se("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[te("path",{fill:"currentColor",d:"m512 747.84 228.16 119.936a6.4 6.4 0 0 0 9.28-6.72l-43.52-254.08 184.512-179.904a6.4 6.4 0 0 0-3.52-10.88l-255.104-37.12L517.76 147.904a6.4 6.4 0 0 0-11.52 0L392.192 379.072l-255.104 37.12a6.4 6.4 0 0 0-3.52 10.88L318.08 606.976l-43.584 254.08a6.4 6.4 0 0 0 9.28 6.72zM313.6 924.48a70.4 70.4 0 0 1-102.144-74.24l37.888-220.928L88.96 472.96A70.4 70.4 0 0 1 128 352.896l221.76-32.256 99.2-200.96a70.4 70.4 0 0 1 126.208 0l99.2 200.96 221.824 32.256a70.4 70.4 0 0 1 39.04 120.064L774.72 629.376l37.888 220.928a70.4 70.4 0 0 1-102.144 74.24L512 820.096l-198.4 104.32z"})]))}}),Wae=Vae,Xae=Oe({name:"SuccessFilled",__name:"success-filled",setup(t){return(e,o)=>(B(),se("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[te("path",{fill:"currentColor",d:"M512 64a448 448 0 1 1 0 896 448 448 0 0 1 0-896m-55.808 536.384-99.52-99.584a38.4 38.4 0 1 0-54.336 54.336l126.72 126.72a38.272 38.272 0 0 0 54.336 0l262.4-262.464a38.4 38.4 0 1 0-54.272-54.336z"})]))}}),zX=Xae,Yae=Oe({name:"View",__name:"view",setup(t){return(e,o)=>(B(),se("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[te("path",{fill:"currentColor",d:"M512 160c320 0 512 352 512 352S832 864 512 864 0 512 0 512s192-352 512-352m0 64c-225.28 0-384.128 208.064-436.8 288 52.608 79.872 211.456 288 436.8 288 225.28 0 384.128-208.064 436.8-288-52.608-79.872-211.456-288-436.8-288zm0 64a224 224 0 1 1 0 448 224 224 0 0 1 0-448m0 64a160.192 160.192 0 0 0-160 160c0 88.192 71.744 160 160 160s160-71.808 160-160-71.744-160-160-160"})]))}}),Kae=Yae,zae=Oe({name:"WarningFilled",__name:"warning-filled",setup(t){return(e,o)=>(B(),se("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[te("path",{fill:"currentColor",d:"M512 64a448 448 0 1 1 0 896 448 448 0 0 1 0-896m0 192a58.432 58.432 0 0 0-58.24 63.744l23.36 256.384a35.072 35.072 0 0 0 69.76 0l23.296-256.384A58.432 58.432 0 0 0 512 256m0 512a51.2 51.2 0 1 0 0-102.4 51.2 51.2 0 0 0 0 102.4"})]))}}),yS=zae,Zae=Oe({name:"ZoomIn",__name:"zoom-in",setup(t){return(e,o)=>(B(),se("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[te("path",{fill:"currentColor",d:"m795.904 750.72 124.992 124.928a32 32 0 0 1-45.248 45.248L750.656 795.904a416 416 0 1 1 45.248-45.248zM480 832a352 352 0 1 0 0-704 352 352 0 0 0 0 704m-32-384v-96a32 32 0 0 1 64 0v96h96a32 32 0 0 1 0 64h-96v96a32 32 0 0 1-64 0v-96h-96a32 32 0 0 1 0-64z"})]))}}),ZX=Zae,jae=Oe({name:"ZoomOut",__name:"zoom-out",setup(t){return(e,o)=>(B(),se("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[te("path",{fill:"currentColor",d:"m795.904 750.72 124.992 124.928a32 32 0 0 1-45.248 45.248L750.656 795.904a416 416 0 1 1 45.248-45.248zM480 832a352 352 0 1 0 0-704 352 352 0 0 0 0 704M352 448h256a32 32 0 0 1 0 64H352a32 32 0 0 1 0-64"})]))}}),qae=jae;const jX="__epPropKey",me=t=>t,Qae=t=>Zt(t)&&!!t[jX],mr=(t,e)=>{if(!Zt(t)||Qae(t))return t;const{values:o,required:_,default:l,type:c,validator:T}=t,u={type:c,required:!!_,validator:o||T?d=>{let O=!1,h=[];if(o&&(h=Array.from(o),so(t,"default")&&h.push(l),O||(O=h.includes(d))),T&&(O||(O=T(d))),!O&&h.length>0){const I=[...new Set(h)].map(S=>JSON.stringify(S)).join(", ");a6(`Invalid prop: validation failed${e?` for prop "${e}"`:""}. Expected one of [${I}], got value ${JSON.stringify(d)}.`)}return O}:void 0,[jX]:!0};return so(t,"default")&&(u.default=l),u},et=t=>PI(Object.entries(t).map(([e,o])=>[e,mr(o,e)])),Lo=me([String,Object,Function]),Dv={Close:Rr},Uv={Close:Rr,SuccessFilled:zX,InfoFilled:vv,WarningFilled:yS,CircleCloseFilled:Pv},fa={success:zX,warning:yS,error:Pv,info:vv},yv={validating:Da,success:Nv,error:va},Vt=(t,e)=>{if(t.install=o=>{for(const _ of[t,...Object.values(e??{})])o.component(_.name,_)},e)for(const[o,_]of Object.entries(e))t[o]=_;return t},qX=(t,e)=>(t.install=o=>{t._context=o._context,o.config.globalProperties[e]=t},t),Jae=(t,e)=>(t.install=o=>{o.directive(e,t)},t),ss=t=>(t.install=Ro,t),$S=(...t)=>e=>{t.forEach(o=>{At(o)?o(e):o.value=e})},Rt={tab:"Tab",enter:"Enter",space:"Space",left:"ArrowLeft",up:"ArrowUp",right:"ArrowRight",down:"ArrowDown",esc:"Escape",delete:"Delete",backspace:"Backspace",numpadEnter:"NumpadEnter",pageUp:"PageUp",pageDown:"PageDown",home:"Home",end:"End"},ece=["year","month","date","dates","week","datetime","datetimerange","daterange","monthrange"],xC=["sun","mon","tue","wed","thu","fri","sat"],Xt="update:modelValue",Vo="change",yi="input",JG=Symbol("INSTALLED_KEY"),R_=["","default","small","large"],QX=t=>["",...R_].includes(t);var yn=(t=>(t[t.TEXT=1]="TEXT",t[t.CLASS=2]="CLASS",t[t.STYLE=4]="STYLE",t[t.PROPS=8]="PROPS",t[t.FULL_PROPS=16]="FULL_PROPS",t[t.HYDRATE_EVENTS=32]="HYDRATE_EVENTS",t[t.STABLE_FRAGMENT=64]="STABLE_FRAGMENT",t[t.KEYED_FRAGMENT=128]="KEYED_FRAGMENT",t[t.UNKEYED_FRAGMENT=256]="UNKEYED_FRAGMENT",t[t.NEED_PATCH=512]="NEED_PATCH",t[t.DYNAMIC_SLOTS=1024]="DYNAMIC_SLOTS",t[t.HOISTED=-1]="HOISTED",t[t.BAIL=-2]="BAIL",t))(yn||{});function Bb(t){return Fo(t)&&t.type===ht}function tce(t){return Fo(t)&&t.type===Pi}function oce(t){return Fo(t)&&!Bb(t)&&!tce(t)}const sce=t=>{if(!Fo(t))return{};const e=t.props||{},o=(Fo(t.type)?t.type.props:void 0)||{},_={};return Object.keys(o).forEach(l=>{so(o[l],"default")&&(_[l]=o[l].default)}),Object.keys(e).forEach(l=>{_[bn(l)]=e[l]}),_},ice=t=>{if(!rt(t)||t.length>1)throw new Error("expect to receive a single Vue element child");return t[0]},Ta=t=>{const e=rt(t)?t:[t],o=[];return e.forEach(_=>{var l;rt(_)?o.push(...Ta(_)):Fo(_)&&rt(_.children)?o.push(...Ta(_.children)):(o.push(_),Fo(_)&&((l=_.component)!=null&&l.subTree)&&o.push(...Ta(_.component.subTree)))}),o},ek=t=>[...new Set(t)],j_=t=>!t&&t!==0?[]:Array.isArray(t)?t:[t],$v=t=>/([\uAC00-\uD7AF\u3130-\u318F])+/gi.test(t),_u=t=>ro?window.requestAnimationFrame(t):setTimeout(t,16),BS=t=>ro?window.cancelAnimationFrame(t):clearTimeout(t),wS=()=>Math.floor(Math.random()*1e4),Qo=t=>t,nce=["class","style"],rce=/^on[A-Z]/,Bv=(t={})=>{const{excludeListeners:e=!1,excludeKeys:o}=t,_=v(()=>((o==null?void 0:o.value)||[]).concat(nce)),l=Ht();return v(l?()=>{var c;return PI(Object.entries((c=l.proxy)==null?void 0:c.$attrs).filter(([T])=>!_.value.includes(T)&&!(e&&rce.test(T))))}:()=>({}))},u_=({from:t,replacement:e,scope:o,version:_,ref:l,type:c="API"},T)=>{Fe(()=>M(T),E=>{},{immediate:!0})},JX=(t,e,o)=>{let _={offsetX:0,offsetY:0};const l=E=>{const u=E.clientX,d=E.clientY,{offsetX:O,offsetY:h}=_,I=t.value.getBoundingClientRect(),S=I.left,L=I.top,p=I.width,C=I.height,m=document.documentElement.clientWidth,A=document.documentElement.clientHeight,b=-S+O,N=-L+h,U=m-S-p+O,P=A-L-C+h,G=F=>{const V=Math.min(Math.max(O+F.clientX-u,b),U),W=Math.min(Math.max(h+F.clientY-d,N),P);_={offsetX:V,offsetY:W},t.value&&(t.value.style.transform=`translate(${hs(V)}, ${hs(W)})`)},w=()=>{document.removeEventListener("mousemove",G),document.removeEventListener("mouseup",w)};document.addEventListener("mousemove",G),document.addEventListener("mouseup",w)},c=()=>{e.value&&t.value&&e.value.addEventListener("mousedown",l)},T=()=>{e.value&&t.value&&e.value.removeEventListener("mousedown",l)};Bt(()=>{qs(()=>{o.value?c():T()})}),Do(()=>{T()})};var _ce={name:"en",el:{colorpicker:{confirm:"OK",clear:"Clear",defaultLabel:"color picker",description:"current color is {color}. press enter to select a new color."},datepicker:{now:"Now",today:"Today",cancel:"Cancel",clear:"Clear",confirm:"OK",dateTablePrompt:"Use the arrow keys and enter to select the day of the month",monthTablePrompt:"Use the arrow keys and enter to select the month",yearTablePrompt:"Use the arrow keys and enter to select the year",selectedDate:"Selected date",selectDate:"Select date",selectTime:"Select time",startDate:"Start Date",startTime:"Start Time",endDate:"End Date",endTime:"End Time",prevYear:"Previous Year",nextYear:"Next Year",prevMonth:"Previous Month",nextMonth:"Next Month",year:"",month1:"January",month2:"February",month3:"March",month4:"April",month5:"May",month6:"June",month7:"July",month8:"August",month9:"September",month10:"October",month11:"November",month12:"December",week:"week",weeks:{sun:"Sun",mon:"Mon",tue:"Tue",wed:"Wed",thu:"Thu",fri:"Fri",sat:"Sat"},weeksFull:{sun:"Sunday",mon:"Monday",tue:"Tuesday",wed:"Wednesday",thu:"Thursday",fri:"Friday",sat:"Saturday"},months:{jan:"Jan",feb:"Feb",mar:"Mar",apr:"Apr",may:"May",jun:"Jun",jul:"Jul",aug:"Aug",sep:"Sep",oct:"Oct",nov:"Nov",dec:"Dec"}},inputNumber:{decrease:"decrease number",increase:"increase number"},select:{loading:"Loading",noMatch:"No matching data",noData:"No data",placeholder:"Select"},dropdown:{toggleDropdown:"Toggle Dropdown"},cascader:{noMatch:"No matching data",loading:"Loading",placeholder:"Select",noData:"No data"},pagination:{goto:"Go to",pagesize:"/page",total:"Total {total}",pageClassifier:"",page:"Page",prev:"Go to previous page",next:"Go to next page",currentPage:"page {pager}",prevPages:"Previous {pager} pages",nextPages:"Next {pager} pages",deprecationWarning:"Deprecated usages detected, please refer to the el-pagination documentation for more details"},dialog:{close:"Close this dialog"},drawer:{close:"Close this dialog"},messagebox:{title:"Message",confirm:"OK",cancel:"Cancel",error:"Illegal input",close:"Close this dialog"},upload:{deleteTip:"press delete to remove",delete:"Delete",preview:"Preview",continue:"Continue"},slider:{defaultLabel:"slider between {min} and {max}",defaultRangeStartLabel:"pick start value",defaultRangeEndLabel:"pick end value"},table:{emptyText:"No Data",confirmFilter:"Confirm",resetFilter:"Reset",clearFilter:"All",sumText:"Sum"},tour:{next:"Next",previous:"Previous",finish:"Finish"},tree:{emptyText:"No Data"},transfer:{noMatch:"No matching data",noData:"No data",titles:["List 1","List 2"],filterPlaceholder:"Enter keyword",noCheckedFormat:"{total} items",hasCheckedFormat:"{checked}/{total} checked"},image:{error:"FAILED"},pageHeader:{title:"Back"},popconfirm:{confirmButtonText:"Yes",cancelButtonText:"No"}}};const lce=t=>(e,o)=>ace(e,o,M(t)),ace=(t,e,o)=>ds(o,t,t).replace(/\{(\w+)\}/g,(_,l)=>{var c;return`${(c=e==null?void 0:e[l])!=null?c:`{${l}}`}`}),cce=t=>{const e=v(()=>M(t).name),o=bo(t)?t:X(t);return{lang:e,locale:o,t:lce(t)}},e3=Symbol("localeContextKey"),lo=t=>{const e=t||lt(e3,X());return cce(v(()=>e.value||_ce))},td="el",Tce="is-",Ec=(t,e,o,_,l)=>{let c=`${t}-${e}`;return o&&(c+=`-${o}`),_&&(c+=`__${_}`),l&&(c+=`--${l}`),c},t3=Symbol("namespaceContextKey"),wv=t=>{const e=t||(Ht()?lt(t3,X(td)):X(td));return v(()=>M(e)||td)},Ze=(t,e)=>{const o=wv(e);return{namespace:o,b:(p="")=>Ec(o.value,t,p,"",""),e:p=>p?Ec(o.value,t,"",p,""):"",m:p=>p?Ec(o.value,t,"","",p):"",be:(p,C)=>p&&C?Ec(o.value,t,p,C,""):"",em:(p,C)=>p&&C?Ec(o.value,t,"",p,C):"",bm:(p,C)=>p&&C?Ec(o.value,t,p,"",C):"",bem:(p,C,m)=>p&&C&&m?Ec(o.value,t,p,C,m):"",is:(p,...C)=>{const m=C.length>=1?C[0]:!0;return p&&m?`${Tce}${p}`:""},cssVar:p=>{const C={};for(const m in p)p[m]&&(C[`--${o.value}-${m}`]=p[m]);return C},cssVarName:p=>`--${o.value}-${p}`,cssVarBlock:p=>{const C={};for(const m in p)p[m]&&(C[`--${o.value}-${t}-${m}`]=p[m]);return C},cssVarBlockName:p=>`--${o.value}-${t}-${p}`}},Gv=(t,e={})=>{bo(t)||vs("[useLockscreen]","You need to pass a ref param to this function");const o=e.ns||Ze("popup"),_=bx(()=>o.bm("parent","hidden"));if(!ro||Or(document.body,_.value))return;let l=0,c=!1,T="0";const E=()=>{setTimeout(()=>{tn(document==null?void 0:document.body,_.value),c&&document&&(document.body.style.width=T)},200)};Fe(t,u=>{if(!u){E();return}c=!Or(document.body,_.value),c&&(T=document.body.style.width),l=VX(o.namespace.value);const d=document.documentElement.clientHeight<document.body.scrollHeight,O=Jl(document.body,"overflowY");l>0&&(d||O==="scroll")&&c&&(document.body.style.width=`calc(100% - ${l}px)`),r_(document.body,_.value)}),QN(()=>E())},Ece=mr({type:me(Boolean),default:null}),uce=mr({type:me(Function)}),o3=t=>{const e=`update:${t}`,o=`onUpdate:${t}`,_=[e],l={[t]:Ece,[o]:uce};return{useModelToggle:({indicator:T,toggleReason:E,shouldHideWhenRouteChanges:u,shouldProceed:d,onShow:O,onHide:h})=>{const I=Ht(),{emit:S}=I,L=I.props,p=v(()=>At(L[o])),C=v(()=>L[t]===null),m=G=>{T.value!==!0&&(T.value=!0,E&&(E.value=G),At(O)&&O(G))},A=G=>{T.value!==!1&&(T.value=!1,E&&(E.value=G),At(h)&&h(G))},b=G=>{if(L.disabled===!0||At(d)&&!d())return;const w=p.value&&ro;w&&S(e,!0),(C.value||!w)&&m(G)},N=G=>{if(L.disabled===!0||!ro)return;const w=p.value&&ro;w&&S(e,!1),(C.value||!w)&&A(G)},U=G=>{Ss(G)&&(L.disabled&&G?p.value&&S(e,!1):T.value!==G&&(G?m():A()))},P=()=>{T.value?N():b()};return Fe(()=>L[t],U),u&&I.appContext.config.globalProperties.$route!==void 0&&Fe(()=>({...I.proxy.$route}),()=>{u.value&&T.value&&N()}),Bt(()=>{U(L[t])}),{hide:N,show:b,toggle:P,hasUpdateHandler:p}},useModelToggleProps:l,useModelToggleEmits:_}};o3("modelValue");const s3=t=>{const e=Ht();return v(()=>{var o,_;return(_=(o=e==null?void 0:e.proxy)==null?void 0:o.$props)==null?void 0:_[t]})},gce=(t,e,o={})=>{const _={name:"updateState",enabled:!0,phase:"write",fn:({state:u})=>{const d=dce(u);Object.assign(T.value,d)},requires:["computeStyles"]},l=v(()=>{const{onFirstUpdate:u,placement:d,strategy:O,modifiers:h}=M(o);return{onFirstUpdate:u,placement:d||"bottom",strategy:O||"absolute",modifiers:[...h||[],_,{name:"applyStyles",enabled:!1}]}}),c=mo(),T=X({styles:{popper:{position:M(l).strategy,left:"0",top:"0"},arrow:{position:"absolute"}},attributes:{}}),E=()=>{c.value&&(c.value.destroy(),c.value=void 0)};return Fe(l,u=>{const d=M(c);d&&d.setOptions(u)},{deep:!0}),Fe([t,e],([u,d])=>{E(),!(!u||!d)&&(c.value=zW(u,d,M(l)))}),Do(()=>{E()}),{state:v(()=>{var u;return{...((u=M(c))==null?void 0:u.state)||{}}}),styles:v(()=>M(T).styles),attributes:v(()=>M(T).attributes),update:()=>{var u;return(u=M(c))==null?void 0:u.update()},forceUpdate:()=>{var u;return(u=M(c))==null?void 0:u.forceUpdate()},instanceRef:v(()=>M(c))}};function dce(t){const e=Object.keys(t.elements),o=PI(e.map(l=>[l,t.styles[l]||{}])),_=PI(e.map(l=>[l,t.attributes[l]]));return{styles:o,attributes:_}}const kv=t=>{if(!t)return{onClick:Ro,onMousedown:Ro,onMouseup:Ro};let e=!1,o=!1;return{onClick:T=>{e&&o&&t(T),e=o=!1},onMousedown:T=>{e=T.target===T.currentTarget},onMouseup:T=>{o=T.target===T.currentTarget}}},Oce=(t,e=0)=>{if(e===0)return t;const o=X(!1);let _=0;const l=()=>{_&&clearTimeout(_),_=window.setTimeout(()=>{o.value=t.value},e)};return Bt(l),Fe(()=>t.value,c=>{c?l():o.value=c}),o};function tk(){let t;const e=(_,l)=>{o(),t=window.setTimeout(_,l)},o=()=>window.clearTimeout(t);return fO(()=>o()),{registerTimeout:e,cancelTimeout:o}}const ok={prefix:Math.floor(Math.random()*1e4),current:0},hce=Symbol("elIdInjection"),i3=()=>Ht()?lt(hce,ok):ok,rn=t=>{const e=i3(),o=wv();return v(()=>M(t)||`${o.value}-id-${e.prefix}-${e.current++}`)};let uE=[];const sk=t=>{const e=t;e.key===Rt.esc&&uE.forEach(o=>o(e))},Mce=t=>{Bt(()=>{uE.length===0&&document.addEventListener("keydown",sk),ro&&uE.push(t)}),Do(()=>{uE=uE.filter(e=>e!==t),uE.length===0&&ro&&document.removeEventListener("keydown",sk)})};let ik;const n3=()=>{const t=wv(),e=i3(),o=v(()=>`${t.value}-popper-container-${e.prefix}`),_=v(()=>`#${o.value}`);return{id:o,selector:_}},Rce=t=>{const e=document.createElement("div");return e.id=t,document.body.appendChild(e),e},Ice=()=>{const{id:t,selector:e}=n3();return nS(()=>{ro&&!ik&&!document.body.querySelector(e.value)&&(ik=Rce(t.value))}),{id:t,selector:e}},Sce=et({showAfter:{type:Number,default:0},hideAfter:{type:Number,default:200},autoClose:{type:Number,default:0}}),r3=({showAfter:t,hideAfter:e,autoClose:o,open:_,close:l})=>{const{registerTimeout:c}=tk(),{registerTimeout:T,cancelTimeout:E}=tk();return{onOpen:O=>{c(()=>{_(O);const h=M(o);mt(h)&&h>0&&T(()=>{l(O)},h)},M(t))},onClose:O=>{E(),c(()=>{l(O)},M(e))}}},_3=Symbol("elForwardRef"),pce=t=>{Jt(_3,{setForwardRef:o=>{t.value=o}})},Lce=t=>({mounted(e){t(e)},updated(e){t(e)},unmounted(){t(null)}}),nk=X(0),l3=2e3,a3=Symbol("zIndexContextKey"),rT=t=>{const e=t||(Ht()?lt(a3,void 0):void 0),o=v(()=>{const c=M(e);return mt(c)?c:l3}),_=v(()=>o.value+nk.value);return{initialZIndex:o,currentZIndex:_,nextZIndex:()=>(nk.value++,_.value)}},lu=Math.min,Bc=Math.max,vI=Math.round,FM=Math.floor,ma=t=>({x:t,y:t}),fce={left:"right",right:"left",bottom:"top",top:"bottom"},mce={start:"end",end:"start"};function wb(t,e,o){return Bc(t,lu(e,o))}function CO(t,e){return typeof t=="function"?t(e):t}function Yc(t){return t.split("-")[0]}function AO(t){return t.split("-")[1]}function c3(t){return t==="x"?"y":"x"}function Hv(t){return t==="y"?"height":"width"}function GS(t){return["top","bottom"].includes(Yc(t))?"y":"x"}function xv(t){return c3(GS(t))}function Cce(t,e,o){o===void 0&&(o=!1);const _=AO(t),l=xv(t),c=Hv(l);let T=l==="x"?_===(o?"end":"start")?"right":"left":_==="start"?"bottom":"top";return e.reference[c]>e.floating[c]&&(T=DI(T)),[T,DI(T)]}function Ace(t){const e=DI(t);return[Gb(t),e,Gb(e)]}function Gb(t){return t.replace(/start|end/g,e=>mce[e])}function bce(t,e,o){const _=["left","right"],l=["right","left"],c=["top","bottom"],T=["bottom","top"];switch(t){case"top":case"bottom":return o?e?l:_:e?_:l;case"left":case"right":return e?c:T;default:return[]}}function Nce(t,e,o,_){const l=AO(t);let c=bce(Yc(t),o==="start",_);return l&&(c=c.map(T=>T+"-"+l),e&&(c=c.concat(c.map(Gb)))),c}function DI(t){return t.replace(/left|right|bottom|top/g,e=>fce[e])}function Pce(t){return{top:0,right:0,bottom:0,left:0,...t}}function T3(t){return typeof t!="number"?Pce(t):{top:t,right:t,bottom:t,left:t}}function UI(t){return{...t,top:t.y,left:t.x,right:t.x+t.width,bottom:t.y+t.height}}function rk(t,e,o){let{reference:_,floating:l}=t;const c=GS(e),T=xv(e),E=Hv(T),u=Yc(e),d=c==="y",O=_.x+_.width/2-l.width/2,h=_.y+_.height/2-l.height/2,I=_[E]/2-l[E]/2;let S;switch(u){case"top":S={x:O,y:_.y-l.height};break;case"bottom":S={x:O,y:_.y+_.height};break;case"right":S={x:_.x+_.width,y:h};break;case"left":S={x:_.x-l.width,y:h};break;default:S={x:_.x,y:_.y}}switch(AO(e)){case"start":S[T]-=I*(o&&d?-1:1);break;case"end":S[T]+=I*(o&&d?-1:1);break}return S}const vce=async(t,e,o)=>{const{placement:_="bottom",strategy:l="absolute",middleware:c=[],platform:T}=o,E=c.filter(Boolean),u=await(T.isRTL==null?void 0:T.isRTL(e));let d=await T.getElementRects({reference:t,floating:e,strategy:l}),{x:O,y:h}=rk(d,_,u),I=_,S={},L=0;for(let p=0;p<E.length;p++){const{name:C,fn:m}=E[p],{x:A,y:b,data:N,reset:U}=await m({x:O,y:h,initialPlacement:_,placement:I,strategy:l,middlewareData:S,rects:d,platform:T,elements:{reference:t,floating:e}});if(O=A??O,h=b??h,S={...S,[C]:{...S[C],...N}},U&&L<=50){L++,typeof U=="object"&&(U.placement&&(I=U.placement),U.rects&&(d=U.rects===!0?await T.getElementRects({reference:t,floating:e,strategy:l}):U.rects),{x:O,y:h}=rk(d,I,u)),p=-1;continue}}return{x:O,y:h,placement:I,strategy:l,middlewareData:S}};async function Fv(t,e){var o;e===void 0&&(e={});const{x:_,y:l,platform:c,rects:T,elements:E,strategy:u}=t,{boundary:d="clippingAncestors",rootBoundary:O="viewport",elementContext:h="floating",altBoundary:I=!1,padding:S=0}=CO(e,t),L=T3(S),C=E[I?h==="floating"?"reference":"floating":h],m=UI(await c.getClippingRect({element:(o=await(c.isElement==null?void 0:c.isElement(C)))==null||o?C:C.contextElement||await(c.getDocumentElement==null?void 0:c.getDocumentElement(E.floating)),boundary:d,rootBoundary:O,strategy:u})),A=h==="floating"?{...T.floating,x:_,y:l}:T.reference,b=await(c.getOffsetParent==null?void 0:c.getOffsetParent(E.floating)),N=await(c.isElement==null?void 0:c.isElement(b))?await(c.getScale==null?void 0:c.getScale(b))||{x:1,y:1}:{x:1,y:1},U=UI(c.convertOffsetParentRelativeRectToViewportRelativeRect?await c.convertOffsetParentRelativeRectToViewportRelativeRect({rect:A,offsetParent:b,strategy:u}):A);return{top:(m.top-U.top+L.top)/N.y,bottom:(U.bottom-m.bottom+L.bottom)/N.y,left:(m.left-U.left+L.left)/N.x,right:(U.right-m.right+L.right)/N.x}}const Dce=t=>({name:"arrow",options:t,async fn(e){const{x:o,y:_,placement:l,rects:c,platform:T,elements:E,middlewareData:u}=e,{element:d,padding:O=0}=CO(t,e)||{};if(d==null)return{};const h=T3(O),I={x:o,y:_},S=xv(l),L=Hv(S),p=await T.getDimensions(d),C=S==="y",m=C?"top":"left",A=C?"bottom":"right",b=C?"clientHeight":"clientWidth",N=c.reference[L]+c.reference[S]-I[S]-c.floating[L],U=I[S]-c.reference[S],P=await(T.getOffsetParent==null?void 0:T.getOffsetParent(d));let G=P?P[b]:0;(!G||!await(T.isElement==null?void 0:T.isElement(P)))&&(G=E.floating[b]||c.floating[L]);const w=N/2-U/2,F=G/2-p[L]/2-1,V=lu(h[m],F),W=lu(h[A],F),K=V,ee=G-p[L]-W,j=G/2-p[L]/2+w,J=wb(K,j,ee),ie=!u.arrow&&AO(l)!=null&&j!=J&&c.reference[L]/2-(j<K?V:W)-p[L]/2<0,Y=ie?j<K?j-K:j-ee:0;return{[S]:I[S]+Y,data:{[S]:J,centerOffset:j-J-Y,...ie&&{alignmentOffset:Y}},reset:ie}}}),Uce=function(t){return t===void 0&&(t={}),{name:"flip",options:t,async fn(e){var o,_;const{placement:l,middlewareData:c,rects:T,initialPlacement:E,platform:u,elements:d}=e,{mainAxis:O=!0,crossAxis:h=!0,fallbackPlacements:I,fallbackStrategy:S="bestFit",fallbackAxisSideDirection:L="none",flipAlignment:p=!0,...C}=CO(t,e);if((o=c.arrow)!=null&&o.alignmentOffset)return{};const m=Yc(l),A=Yc(E)===E,b=await(u.isRTL==null?void 0:u.isRTL(d.floating)),N=I||(A||!p?[DI(E)]:Ace(E));!I&&L!=="none"&&N.push(...Nce(E,p,L,b));const U=[E,...N],P=await Fv(e,C),G=[];let w=((_=c.flip)==null?void 0:_.overflows)||[];if(O&&G.push(P[m]),h){const K=Cce(l,T,b);G.push(P[K[0]],P[K[1]])}if(w=[...w,{placement:l,overflows:G}],!G.every(K=>K<=0)){var F,V;const K=(((F=c.flip)==null?void 0:F.index)||0)+1,ee=U[K];if(ee)return{data:{index:K,overflows:w},reset:{placement:ee}};let j=(V=w.filter(J=>J.overflows[0]<=0).sort((J,ie)=>J.overflows[1]-ie.overflows[1])[0])==null?void 0:V.placement;if(!j)switch(S){case"bestFit":{var W;const J=(W=w.map(ie=>[ie.placement,ie.overflows.filter(Y=>Y>0).reduce((Y,re)=>Y+re,0)]).sort((ie,Y)=>ie[1]-Y[1])[0])==null?void 0:W[0];J&&(j=J);break}case"initialPlacement":j=E;break}if(l!==j)return{reset:{placement:j}}}return{}}}};async function yce(t,e){const{placement:o,platform:_,elements:l}=t,c=await(_.isRTL==null?void 0:_.isRTL(l.floating)),T=Yc(o),E=AO(o),u=GS(o)==="y",d=["left","top"].includes(T)?-1:1,O=c&&u?-1:1,h=CO(e,t);let{mainAxis:I,crossAxis:S,alignmentAxis:L}=typeof h=="number"?{mainAxis:h,crossAxis:0,alignmentAxis:null}:{mainAxis:0,crossAxis:0,alignmentAxis:null,...h};return E&&typeof L=="number"&&(S=E==="end"?L*-1:L),u?{x:S*O,y:I*d}:{x:I*d,y:S*O}}const E3=function(t){return t===void 0&&(t=0),{name:"offset",options:t,async fn(e){var o,_;const{x:l,y:c,placement:T,middlewareData:E}=e,u=await yce(e,t);return T===((o=E.offset)==null?void 0:o.placement)&&(_=E.arrow)!=null&&_.alignmentOffset?{}:{x:l+u.x,y:c+u.y,data:{...u,placement:T}}}}},$ce=function(t){return t===void 0&&(t={}),{name:"shift",options:t,async fn(e){const{x:o,y:_,placement:l}=e,{mainAxis:c=!0,crossAxis:T=!1,limiter:E={fn:C=>{let{x:m,y:A}=C;return{x:m,y:A}}},...u}=CO(t,e),d={x:o,y:_},O=await Fv(e,u),h=GS(Yc(l)),I=c3(h);let S=d[I],L=d[h];if(c){const C=I==="y"?"top":"left",m=I==="y"?"bottom":"right",A=S+O[C],b=S-O[m];S=wb(A,S,b)}if(T){const C=h==="y"?"top":"left",m=h==="y"?"bottom":"right",A=L+O[C],b=L-O[m];L=wb(A,L,b)}const p=E.fn({...e,[I]:S,[h]:L});return{...p,data:{x:p.x-o,y:p.y-_}}}}};function Ca(t){return u3(t)?(t.nodeName||"").toLowerCase():"#document"}function An(t){var e;return(t==null||(e=t.ownerDocument)==null?void 0:e.defaultView)||window}function El(t){var e;return(e=(u3(t)?t.ownerDocument:t.document)||window.document)==null?void 0:e.documentElement}function u3(t){return t instanceof Node||t instanceof An(t).Node}function il(t){return t instanceof Element||t instanceof An(t).Element}function g_(t){return t instanceof HTMLElement||t instanceof An(t).HTMLElement}function _k(t){return typeof ShadowRoot>"u"?!1:t instanceof ShadowRoot||t instanceof An(t).ShadowRoot}function bO(t){const{overflow:e,overflowX:o,overflowY:_,display:l}=Zn(t);return/auto|scroll|overlay|hidden|clip/.test(e+_+o)&&!["inline","contents"].includes(l)}function Bce(t){return["table","td","th"].includes(Ca(t))}function Vv(t){const e=Wv(),o=Zn(t);return o.transform!=="none"||o.perspective!=="none"||(o.containerType?o.containerType!=="normal":!1)||!e&&(o.backdropFilter?o.backdropFilter!=="none":!1)||!e&&(o.filter?o.filter!=="none":!1)||["transform","perspective","filter"].some(_=>(o.willChange||"").includes(_))||["paint","layout","strict","content"].some(_=>(o.contain||"").includes(_))}function wce(t){let e=au(t);for(;g_(e)&&!kS(e);){if(Vv(e))return e;e=au(e)}return null}function Wv(){return typeof CSS>"u"||!CSS.supports?!1:CSS.supports("-webkit-backdrop-filter","none")}function kS(t){return["html","body","#document"].includes(Ca(t))}function Zn(t){return An(t).getComputedStyle(t)}function HS(t){return il(t)?{scrollLeft:t.scrollLeft,scrollTop:t.scrollTop}:{scrollLeft:t.pageXOffset,scrollTop:t.pageYOffset}}function au(t){if(Ca(t)==="html")return t;const e=t.assignedSlot||t.parentNode||_k(t)&&t.host||El(t);return _k(e)?e.host:e}function g3(t){const e=au(t);return kS(e)?t.ownerDocument?t.ownerDocument.body:t.body:g_(e)&&bO(e)?e:g3(e)}function xd(t,e,o){var _;e===void 0&&(e=[]),o===void 0&&(o=!0);const l=g3(t),c=l===((_=t.ownerDocument)==null?void 0:_.body),T=An(l);return c?e.concat(T,T.visualViewport||[],bO(l)?l:[],T.frameElement&&o?xd(T.frameElement):[]):e.concat(l,xd(l,[],o))}function d3(t){const e=Zn(t);let o=parseFloat(e.width)||0,_=parseFloat(e.height)||0;const l=g_(t),c=l?t.offsetWidth:o,T=l?t.offsetHeight:_,E=vI(o)!==c||vI(_)!==T;return E&&(o=c,_=T),{width:o,height:_,$:E}}function Xv(t){return il(t)?t:t.contextElement}function BE(t){const e=Xv(t);if(!g_(e))return ma(1);const o=e.getBoundingClientRect(),{width:_,height:l,$:c}=d3(e);let T=(c?vI(o.width):o.width)/_,E=(c?vI(o.height):o.height)/l;return(!T||!Number.isFinite(T))&&(T=1),(!E||!Number.isFinite(E))&&(E=1),{x:T,y:E}}const Gce=ma(0);function O3(t){const e=An(t);return!Wv()||!e.visualViewport?Gce:{x:e.visualViewport.offsetLeft,y:e.visualViewport.offsetTop}}function kce(t,e,o){return e===void 0&&(e=!1),!o||e&&o!==An(t)?!1:e}function Kc(t,e,o,_){e===void 0&&(e=!1),o===void 0&&(o=!1);const l=t.getBoundingClientRect(),c=Xv(t);let T=ma(1);e&&(_?il(_)&&(T=BE(_)):T=BE(t));const E=kce(c,o,_)?O3(c):ma(0);let u=(l.left+E.x)/T.x,d=(l.top+E.y)/T.y,O=l.width/T.x,h=l.height/T.y;if(c){const I=An(c),S=_&&il(_)?An(_):_;let L=I.frameElement;for(;L&&_&&S!==I;){const p=BE(L),C=L.getBoundingClientRect(),m=Zn(L),A=C.left+(L.clientLeft+parseFloat(m.paddingLeft))*p.x,b=C.top+(L.clientTop+parseFloat(m.paddingTop))*p.y;u*=p.x,d*=p.y,O*=p.x,h*=p.y,u+=A,d+=b,L=An(L).frameElement}}return UI({width:O,height:h,x:u,y:d})}function Hce(t){let{rect:e,offsetParent:o,strategy:_}=t;const l=g_(o),c=El(o);if(o===c)return e;let T={scrollLeft:0,scrollTop:0},E=ma(1);const u=ma(0);if((l||!l&&_!=="fixed")&&((Ca(o)!=="body"||bO(c))&&(T=HS(o)),g_(o))){const d=Kc(o);E=BE(o),u.x=d.x+o.clientLeft,u.y=d.y+o.clientTop}return{width:e.width*E.x,height:e.height*E.y,x:e.x*E.x-T.scrollLeft*E.x+u.x,y:e.y*E.y-T.scrollTop*E.y+u.y}}function xce(t){return Array.from(t.getClientRects())}function h3(t){return Kc(El(t)).left+HS(t).scrollLeft}function Fce(t){const e=El(t),o=HS(t),_=t.ownerDocument.body,l=Bc(e.scrollWidth,e.clientWidth,_.scrollWidth,_.clientWidth),c=Bc(e.scrollHeight,e.clientHeight,_.scrollHeight,_.clientHeight);let T=-o.scrollLeft+h3(t);const E=-o.scrollTop;return Zn(_).direction==="rtl"&&(T+=Bc(e.clientWidth,_.clientWidth)-l),{width:l,height:c,x:T,y:E}}function Vce(t,e){const o=An(t),_=El(t),l=o.visualViewport;let c=_.clientWidth,T=_.clientHeight,E=0,u=0;if(l){c=l.width,T=l.height;const d=Wv();(!d||d&&e==="fixed")&&(E=l.offsetLeft,u=l.offsetTop)}return{width:c,height:T,x:E,y:u}}function Wce(t,e){const o=Kc(t,!0,e==="fixed"),_=o.top+t.clientTop,l=o.left+t.clientLeft,c=g_(t)?BE(t):ma(1),T=t.clientWidth*c.x,E=t.clientHeight*c.y,u=l*c.x,d=_*c.y;return{width:T,height:E,x:u,y:d}}function lk(t,e,o){let _;if(e==="viewport")_=Vce(t,o);else if(e==="document")_=Fce(El(t));else if(il(e))_=Wce(e,o);else{const l=O3(t);_={...e,x:e.x-l.x,y:e.y-l.y}}return UI(_)}function M3(t,e){const o=au(t);return o===e||!il(o)||kS(o)?!1:Zn(o).position==="fixed"||M3(o,e)}function Xce(t,e){const o=e.get(t);if(o)return o;let _=xd(t,[],!1).filter(E=>il(E)&&Ca(E)!=="body"),l=null;const c=Zn(t).position==="fixed";let T=c?au(t):t;for(;il(T)&&!kS(T);){const E=Zn(T),u=Vv(T);!u&&E.position==="fixed"&&(l=null),(c?!u&&!l:!u&&E.position==="static"&&!!l&&["absolute","fixed"].includes(l.position)||bO(T)&&!u&&M3(t,T))?_=_.filter(O=>O!==T):l=E,T=au(T)}return e.set(t,_),_}function Yce(t){let{element:e,boundary:o,rootBoundary:_,strategy:l}=t;const T=[...o==="clippingAncestors"?Xce(e,this._c):[].concat(o),_],E=T[0],u=T.reduce((d,O)=>{const h=lk(e,O,l);return d.top=Bc(h.top,d.top),d.right=lu(h.right,d.right),d.bottom=lu(h.bottom,d.bottom),d.left=Bc(h.left,d.left),d},lk(e,E,l));return{width:u.right-u.left,height:u.bottom-u.top,x:u.left,y:u.top}}function Kce(t){const{width:e,height:o}=d3(t);return{width:e,height:o}}function zce(t,e,o){const _=g_(e),l=El(e),c=o==="fixed",T=Kc(t,!0,c,e);let E={scrollLeft:0,scrollTop:0};const u=ma(0);if(_||!_&&!c)if((Ca(e)!=="body"||bO(l))&&(E=HS(e)),_){const d=Kc(e,!0,c,e);u.x=d.x+e.clientLeft,u.y=d.y+e.clientTop}else l&&(u.x=h3(l));return{x:T.left+E.scrollLeft-u.x,y:T.top+E.scrollTop-u.y,width:T.width,height:T.height}}function ak(t,e){return!g_(t)||Zn(t).position==="fixed"?null:e?e(t):t.offsetParent}function R3(t,e){const o=An(t);if(!g_(t))return o;let _=ak(t,e);for(;_&&Bce(_)&&Zn(_).position==="static";)_=ak(_,e);return _&&(Ca(_)==="html"||Ca(_)==="body"&&Zn(_).position==="static"&&!Vv(_))?o:_||wce(t)||o}const Zce=async function(t){let{reference:e,floating:o,strategy:_}=t;const l=this.getOffsetParent||R3,c=this.getDimensions;return{reference:zce(e,await l(o),_),floating:{x:0,y:0,...await c(o)}}};function jce(t){return Zn(t).direction==="rtl"}const qce={convertOffsetParentRelativeRectToViewportRelativeRect:Hce,getDocumentElement:El,getClippingRect:Yce,getOffsetParent:R3,getElementRects:Zce,getClientRects:xce,getDimensions:Kce,getScale:BE,isElement:il,isRTL:jce};function Qce(t,e){let o=null,_;const l=El(t);function c(){clearTimeout(_),o&&o.disconnect(),o=null}function T(E,u){E===void 0&&(E=!1),u===void 0&&(u=1),c();const{left:d,top:O,width:h,height:I}=t.getBoundingClientRect();if(E||e(),!h||!I)return;const S=FM(O),L=FM(l.clientWidth-(d+h)),p=FM(l.clientHeight-(O+I)),C=FM(d),A={rootMargin:-S+"px "+-L+"px "+-p+"px "+-C+"px",threshold:Bc(0,lu(1,u))||1};let b=!0;function N(U){const P=U[0].intersectionRatio;if(P!==u){if(!b)return T();P?T(!1,P):_=setTimeout(()=>{T(!1,1e-7)},100)}b=!1}try{o=new IntersectionObserver(N,{...A,root:l.ownerDocument})}catch{o=new IntersectionObserver(N,A)}o.observe(t)}return T(!0),c}function Jce(t,e,o,_){_===void 0&&(_={});const{ancestorScroll:l=!0,ancestorResize:c=!0,elementResize:T=typeof ResizeObserver=="function",layoutShift:E=typeof IntersectionObserver=="function",animationFrame:u=!1}=_,d=Xv(t),O=l||c?[...d?xd(d):[],...xd(e)]:[];O.forEach(m=>{l&&m.addEventListener("scroll",o,{passive:!0}),c&&m.addEventListener("resize",o)});const h=d&&E?Qce(d,o):null;let I=-1,S=null;T&&(S=new ResizeObserver(m=>{let[A]=m;A&&A.target===d&&S&&(S.unobserve(e),cancelAnimationFrame(I),I=requestAnimationFrame(()=>{S&&S.observe(e)})),o()}),d&&!u&&S.observe(d),S.observe(e));let L,p=u?Kc(t):null;u&&C();function C(){const m=Kc(t);p&&(m.x!==p.x||m.y!==p.y||m.width!==p.width||m.height!==p.height)&&o(),p=m,L=requestAnimationFrame(C)}return o(),()=>{O.forEach(m=>{l&&m.removeEventListener("scroll",o),c&&m.removeEventListener("resize",o)}),h&&h(),S&&S.disconnect(),S=null,u&&cancelAnimationFrame(L)}}const eTe=$ce,tTe=Uce,I3=Dce,S3=(t,e,o)=>{const _=new Map,l={platform:qce,...o},c={...l.platform,_c:_};return vce(t,e,{...l,platform:c})};et({});const oTe=t=>{if(!ro)return;if(!t)return t;const e=qi(t);return e||(bo(t)?e:t)},sTe=({middleware:t,placement:e,strategy:o})=>{const _=X(),l=X(),c=X(),T=X(),E=X({}),u={x:c,y:T,placement:e,strategy:o,middlewareData:E},d=async()=>{if(!ro)return;const O=oTe(_),h=qi(l);if(!O||!h)return;const I=await S3(O,h,{placement:M(e),strategy:M(o),middleware:M(t)});iu(u).forEach(S=>{u[S].value=I[S]})};return Bt(()=>{qs(()=>{d()})}),{...u,update:d,referenceRef:_,contentRef:l}},iTe=({arrowRef:t,padding:e})=>({name:"arrow",options:{element:t,padding:e},fn(o){const _=M(t);return _?I3({element:_,padding:e}).fn(o):{}}});function nTe(t){const e=X();function o(){if(t.value==null)return;const{selectionStart:l,selectionEnd:c,value:T}=t.value;if(l==null||c==null)return;const E=T.slice(0,Math.max(0,l)),u=T.slice(Math.max(0,c));e.value={selectionStart:l,selectionEnd:c,value:T,beforeTxt:E,afterTxt:u}}function _(){if(t.value==null||e.value==null)return;const{value:l}=t.value,{beforeTxt:c,afterTxt:T,selectionStart:E}=e.value;if(c==null||T==null||E==null)return;let u=l.length;if(l.endsWith(T))u=l.length-T.length;else if(l.startsWith(c))u=c.length;else{const d=c[E-1],O=l.indexOf(d,E-1);O!==-1&&(u=O+1)}t.value.setSelectionRange(u,u)}return[o,_]}const rTe=(t,e,o)=>Ta(t.subTree).filter(c=>{var T;return Fo(c)&&((T=c.type)==null?void 0:T.name)===e&&!!c.component}).map(c=>c.component.uid).map(c=>o[c]).filter(c=>!!c),Yv=(t,e)=>{const o={},_=mo([]);return{children:_,addChild:T=>{o[T.uid]=T,_.value=rTe(t,e,o)},removeChild:T=>{delete o[T],_.value=_.value.filter(E=>E.uid!==T)}}},Ys=mr({type:String,values:R_,required:!1}),p3=Symbol("size"),_Te=()=>{const t=lt(p3,{});return v(()=>M(t.size)||"")};function xS(t,{afterFocus:e,beforeBlur:o,afterBlur:_}={}){const l=Ht(),{emit:c}=l,T=mo(),E=X(!1),u=h=>{E.value||(E.value=!0,c("focus",h),e==null||e())},d=h=>{var I;At(o)&&o(h)||h.relatedTarget&&((I=T.value)!=null&&I.contains(h.relatedTarget))||(E.value=!1,c("blur",h),_==null||_())},O=()=>{var h;(h=t.value)==null||h.focus()};return Fe(T,h=>{h&&h.setAttribute("tabindex","-1")}),Yo(T,"click",O),{wrapperRef:T,isFocused:E,handleFocus:u,handleBlur:d}}const FC=function(t){var e;return(e=t.target)==null?void 0:e.closest("td")},lTe=function(t,e,o,_,l){if(!e&&!_&&(!l||Array.isArray(l)&&!l.length))return t;typeof o=="string"?o=o==="descending"?-1:1:o=o&&o<0?-1:1;const c=_?null:function(E,u){return l?(Array.isArray(l)||(l=[l]),l.map(d=>typeof d=="string"?ds(E,d):d(E,u,t))):(e!=="$key"&&Zt(E)&&"$value"in E&&(E=E.$value),[Zt(E)?ds(E,e):E])},T=function(E,u){if(_)return _(E.value,u.value);for(let d=0,O=E.key.length;d<O;d++){if(E.key[d]<u.key[d])return-1;if(E.key[d]>u.key[d])return 1}return 0};return t.map((E,u)=>({value:E,index:u,key:c?c(E,u):null})).sort((E,u)=>{let d=T(E,u);return d||(d=E.index-u.index),d*+o}).map(E=>E.value)},L3=function(t,e){let o=null;return t.columns.forEach(_=>{_.id===e&&(o=_)}),o},aTe=function(t,e){let o=null;for(let _=0;_<t.columns.length;_++){const l=t.columns[_];if(l.columnKey===e){o=l;break}}return o||vs("ElTable",`No column matching with column-key: ${e}`),o},ck=function(t,e,o){const _=(e.className||"").match(new RegExp(`${o}-table_[^\\s]+`,"gm"));return _?L3(t,_[0]):null},ci=(t,e)=>{if(!t)throw new Error("Row is required when get row identity");if(typeof e=="string"){if(!e.includes("."))return`${t[e]}`;const o=e.split(".");let _=t;for(const l of o)_=_[l];return`${_}`}else if(typeof e=="function")return e.call(null,t)},mc=function(t,e){const o={};return(t||[]).forEach((_,l)=>{o[ci(_,e)]={row:_,index:l}}),o};function cTe(t,e){const o={};let _;for(_ in t)o[_]=t[_];for(_ in e)if(so(e,_)){const l=e[_];typeof l<"u"&&(o[_]=l)}return o}function Kv(t){return t===""||t!==void 0&&(t=Number.parseInt(t,10),Number.isNaN(t)&&(t="")),t}function f3(t){return t===""||t!==void 0&&(t=Kv(t),Number.isNaN(t)&&(t=80)),t}function TTe(t){return typeof t=="number"?t:typeof t=="string"?/^\d+(?:px)?$/.test(t)?Number.parseInt(t,10):t:null}function ETe(...t){return t.length===0?e=>e:t.length===1?t[0]:t.reduce((e,o)=>(..._)=>e(o(..._)))}function od(t,e,o){let _=!1;const l=t.indexOf(e),c=l!==-1,T=E=>{E==="add"?t.push(e):t.splice(l,1),_=!0,rt(e.children)&&e.children.forEach(u=>{od(t,u,o??!c)})};return Ss(o)?o&&!c?T("add"):!o&&c&&T("remove"):T(c?"remove":"add"),_}function uTe(t,e,o="children",_="hasChildren"){const l=T=>!(Array.isArray(T)&&T.length);function c(T,E,u){e(T,E,u),E.forEach(d=>{if(d[_]){e(d,null,u+1);return}const O=d[o];l(O)||c(d,O,u+1)})}t.forEach(T=>{if(T[_]){e(T,null,0);return}const E=T[o];l(E)||c(T,E,0)})}let ar;function gTe(t,e,o,_,l){l=DX({enterable:!0,showArrow:!0},l);const c=t==null?void 0:t.dataset.prefix,T=t==null?void 0:t.querySelector(`.${c}-scrollbar__wrap`);function E(){const A=l.effect==="light",b=document.createElement("div");return b.className=[`${c}-popper`,A?"is-light":"is-dark",l.popperClass||""].join(" "),o=J_e(o),b.innerHTML=o,b.style.zIndex=String(_()),t==null||t.appendChild(b),b}function u(){const A=document.createElement("div");return A.className=`${c}-popper__arrow`,A}function d(A){return{name:"updateState",enabled:!0,phase:"beforeWrite",fn:({state:b})=>{b.styles.popper.display=A},requires:["computeStyles"]}}function O(){l.showAfter&&(I==null||I.setOptions({modifiers:[d("block")]})),I==null||I.update()}const h=(ar==null?void 0:ar.trigger)!==e;ar==null||ar(),ar=()=>{try{I&&I.destroy(),p&&(t==null||t.removeChild(p)),e.removeEventListener("mouseenter",S),e.removeEventListener("mouseleave",L),T==null||T.removeEventListener("scroll",ar),ar=void 0}catch{}},ar.trigger=e;let I=null;const{onOpen:S,onClose:L}=r3({showAfter:l.showAfter,hideAfter:l.hideAfter,open:O,close:ar}),p=E();l.enterable&&(p.onmouseenter=S,p.onmouseleave=L);const C=[];if(l.offset&&C.push({name:"offset",options:{offset:[0,l.offset]}}),l.showArrow){const A=p.appendChild(u());C.push({name:"arrow",options:{element:A,padding:10}})}l.showAfter&&h&&C.push(d("none"));const m=l.popperOptions||{};return I=zW(e,p,{placement:l.placement||"top",strategy:"fixed",...m,modifiers:m.modifiers?C.concat(m.modifiers):C}),e.addEventListener("mouseenter",S),e.addEventListener("mouseleave",L),T==null||T.addEventListener("scroll",ar),S(),I}function m3(t){return t.children?G_e(t.children,m3):[t]}function Tk(t,e){return t+e.colSpan}const C3=(t,e,o,_)=>{let l=0,c=t;const T=o.states.columns.value;if(_){const u=m3(_[t]);l=T.slice(0,T.indexOf(u[0])).reduce(Tk,0),c=l+u.reduce(Tk,0)-1}else l=t;let E;switch(e){case"left":c<o.states.fixedLeafColumnsLength.value&&(E="left");break;case"right":l>=T.length-o.states.rightFixedLeafColumnsLength.value&&(E="right");break;default:c<o.states.fixedLeafColumnsLength.value?E="left":l>=T.length-o.states.rightFixedLeafColumnsLength.value&&(E="right")}return E?{direction:E,start:l,after:c}:{}},zv=(t,e,o,_,l,c=0)=>{const T=[],{direction:E,start:u,after:d}=C3(e,o,_,l);if(E){const O=E==="left";T.push(`${t}-fixed-column--${E}`),O&&d+c===_.states.fixedLeafColumnsLength.value-1?T.push("is-last-column"):!O&&u-c===_.states.columns.value.length-_.states.rightFixedLeafColumnsLength.value&&T.push("is-first-column")}return T};function Ek(t,e){return t+(e.realWidth===null||Number.isNaN(e.realWidth)?Number(e.width):e.realWidth)}const Zv=(t,e,o,_)=>{const{direction:l,start:c=0,after:T=0}=C3(t,e,o,_);if(!l)return;const E={},u=l==="left",d=o.states.columns.value;return u?E.left=d.slice(0,c).reduce(Ek,0):E.right=d.slice(T+1).reverse().reduce(Ek,0),E},cu=(t,e)=>{t&&(Number.isNaN(t[e])||(t[e]=`${t[e]}px`))},Ua=(t,e)=>{const o=t.__vccOpts||t;for(const[_,l]of e)o[_]=l;return o},dTe={class:"codemirrorDiv"},OTe={key:0,class:"codeMirrorMask"},hTe={__name:"codemirror",props:{pythonCode:{type:String,require:!0,default:""},codeMirrorShow:{type:Boolean,require:!0,default:!0}},setup(t){let e=Gt.theme({"&":{color:"#0052D9",backgroundColor:"#FFFFFF"},".cm-content":{caretColor:"#0052D9"},".cm-activeLine":{backgroundColor:"#FAFAFA"},".cm-activeLineGutter":{backgroundColor:"#FAFAFA"},"&.cm-focused .cm-cursor":{borderLeftColor:"#0052D9"},"&.cm-focused .cm-selectionBackground, ::selection":{backgroundColor:"#0052D9",color:"#FFFFFF"},".cm-gutters":{backgroundColor:"#FFFFFF",color:"#ddd",border:"none"}},{dark:!1});const o=[Ite(),e];X({}),Bt(()=>{});const _=()=>{};return(l,c)=>(B(),se("div",dTe,[ne(M(see),{modelValue:t.pythonCode,placeholder:"",style:{height:"100%"},autofocus:!0,tabSize:2,extensions:o,"indent-with-tab":!0,onChange:c[0]||(c[0]=T=>_())},null,8,["modelValue"]),t.codeMirrorShow?(B(),se("div",OTe)):Ce("",!0)]))}},MTe=Ua(hTe,[["__scopeId","data-v-9917e313"]]);var RTe=!1;/*!
- * pinia v2.1.7
- * (c) 2023 Eduardo San Martin Morote
- * @license MIT
- */let A3;const FS=t=>A3=t,b3=Symbol();function kb(t){return t&&typeof t=="object"&&Object.prototype.toString.call(t)==="[object Object]"&&typeof t.toJSON!="function"}var sd;(function(t){t.direct="direct",t.patchObject="patch object",t.patchFunction="patch function"})(sd||(sd={}));function ITe(){const t=jN(!0),e=t.run(()=>X({}));let o=[],_=[];const l=z_({install(c){FS(l),l._a=c,c.provide(b3,l),c.config.globalProperties.$pinia=l,_.forEach(T=>o.push(T)),_=[]},use(c){return!this._a&&!RTe?_.push(c):o.push(c),this},_p:o,_a:null,_e:t,_s:new Map,state:e});return l}const N3=()=>{};function uk(t,e,o,_=N3){t.push(e);const l=()=>{const c=t.indexOf(e);c>-1&&(t.splice(c,1),_())};return!o&&qN()&&QN(l),l}function nE(t,...e){t.slice().forEach(o=>{o(...e)})}const STe=t=>t();function Hb(t,e){t instanceof Map&&e instanceof Map&&e.forEach((o,_)=>t.set(_,o)),t instanceof Set&&e instanceof Set&&e.forEach(t.add,t);for(const o in e){if(!e.hasOwnProperty(o))continue;const _=e[o],l=t[o];kb(l)&&kb(_)&&t.hasOwnProperty(o)&&!bo(_)&&!ra(_)?t[o]=Hb(l,_):t[o]=_}return t}const pTe=Symbol();function LTe(t){return!kb(t)||!t.hasOwnProperty(pTe)}const{assign:kl}=Object;function fTe(t){return!!(bo(t)&&t.effect)}function mTe(t,e,o,_){const{state:l,actions:c,getters:T}=e,E=o.state.value[t];let u;function d(){E||(o.state.value[t]=l?l():{});const O=Xs(o.state.value[t]);return kl(O,c,Object.keys(T||{}).reduce((h,I)=>(h[I]=z_(v(()=>{FS(o);const S=o._s.get(t);return T[I].call(S,S)})),h),{}))}return u=P3(t,d,e,o,_,!0),u}function P3(t,e,o={},_,l,c){let T;const E=kl({actions:{}},o),u={deep:!0};let d,O,h=[],I=[],S;const L=_.state.value[t];!c&&!L&&(_.state.value[t]={}),X({});let p;function C(w){let F;d=O=!1,typeof w=="function"?(w(_.state.value[t]),F={type:sd.patchFunction,storeId:t,events:S}):(Hb(_.state.value[t],w),F={type:sd.patchObject,payload:w,storeId:t,events:S});const V=p=Symbol();Lt().then(()=>{p===V&&(d=!0)}),O=!0,nE(h,F,_.state.value[t])}const m=c?function(){const{state:F}=o,V=F?F():{};this.$patch(W=>{kl(W,V)})}:N3;function A(){T.stop(),h=[],I=[],_._s.delete(t)}function b(w,F){return function(){FS(_);const V=Array.from(arguments),W=[],K=[];function ee(ie){W.push(ie)}function j(ie){K.push(ie)}nE(I,{args:V,name:w,store:U,after:ee,onError:j});let J;try{J=F.apply(this&&this.$id===t?this:U,V)}catch(ie){throw nE(K,ie),ie}return J instanceof Promise?J.then(ie=>(nE(W,ie),ie)).catch(ie=>(nE(K,ie),Promise.reject(ie))):(nE(W,J),J)}}const N={_p:_,$id:t,$onAction:uk.bind(null,I),$patch:C,$reset:m,$subscribe(w,F={}){const V=uk(h,w,F.detached,()=>W()),W=T.run(()=>Fe(()=>_.state.value[t],K=>{(F.flush==="sync"?O:d)&&w({storeId:t,type:sd.direct,events:S},K)},kl({},u,F)));return V},$dispose:A},U=Eo(N);_._s.set(t,U);const G=(_._a&&_._a.runWithContext||STe)(()=>_._e.run(()=>(T=jN()).run(e)));for(const w in G){const F=G[w];if(bo(F)&&!fTe(F)||ra(F))c||(L&<e(F)&&(bo(F)?F.value=L[w]:Hb(F,L[w])),_.state.value[t][w]=F);else if(typeof F=="function"){const V=b(w,F);G[w]=V,E.actions[w]=F}}return kl(U,G),kl(Mo(U),G),Object.defineProperty(U,"$state",{get:()=>_.state.value[t],set:w=>{C(F=>{kl(F,w)})}}),_._p.forEach(w=>{kl(U,T.run(()=>w({store:U,app:_._a,pinia:_,options:E})))}),L&&c&&o.hydrate&&o.hydrate(U.$state,L),d=!0,O=!0,U}function jv(t,e,o){let _,l;const c=typeof e=="function";typeof t=="string"?(_=t,l=c?o:e):(l=t,_=t.id);function T(E,u){const d=k8();return E=E||(d?lt(b3,null):null),E&&FS(E),E=A3,E._s.has(_)||(c?P3(_,e,l,E):mTe(_,l,E)),E._s.get(_)}return T.$id=_,T}const CTe=jv("Xml",()=>{const t=X(""),e=v(()=>t);function o(){}return{xmlStr:t,doubleCount:e,increment:o}}),ATe=jv("code",()=>{const t=X(""),e=v(()=>t);function o(){}return{pythonCode:t,doubleCount:e,increment:o}}),bTe=jv("fileName",()=>{const t=X(""),e=v(()=>t);function o(){}return{fileName:t,doubleCount:e,increment:o}}),zc={useyXmlStore:CTe,useyPythonCodeStore:ATe,useImportFileNameStore:bTe},NTe=t=>(Gx("data-v-05873afd"),t=t(),kx(),t),PTe={style:{height:"100%"}},vTe=NTe(()=>te("div",{id:"blocklyDiv",style:{height:"100%",width:"100%"}},null,-1)),DTe={style:{height:"100%"}},UTe={__name:"BlocklyComponent",setup(t){const e=X(null),o=X("");Bt(()=>{_(),localStorage.getItem("workspaceXml")&&u()});const _=()=>{$e.Blocks=$e.Blocks,$e.Python=t9.Python,$e.setLocale(q6),e.value=$e.inject("blocklyDiv",{toolbox:Q6.xml,theme:e9,collapse:!0,comments:!0,css:!0,disable:!0,grid:!1,maxBlocks:1/0,rtl:!1,scrollbars:!0,sounds:!0,trashcan:!0,zoom:{controls:!0,wheel:!1,startScale:1,maxScale:2,minScale:.2,scaleSpeed:1.2}}),e.value.addChangeListener(l)},l=d=>{E()},c=zc.useyXmlStore(),T=zc.useyPythonCodeStore(),E=()=>{let d=$e.Python.workspaceToCode(e.value);var O=$e.Xml.domToText($e.Xml.workspaceToDom(e.value));o.value=d,T.$patch({pythonCode:d}),c.$patch({xmlStr:O})},u=()=>{let d=localStorage.getItem("workspaceXml");d&&$e.Xml.domToWorkspace($e.utils.xml.textToDom(d),e.value)};return Do(()=>{console.log("111111111111")}),(d,O)=>{const h=gt("el-col"),I=gt("el-row");return B(),se("div",PTe,[ne(I,{style:{height:"100%"}},{default:de(()=>[ne(h,{span:16},{default:de(()=>[vTe]),_:1}),ne(h,{span:8},{default:de(()=>[te("div",DTe,[ne(MTe,{pythonCode:o.value},null,8,["pythonCode"])])]),_:1})]),_:1})])}}},yTe=Ua(UTe,[["__scopeId","data-v-05873afd"]]),v3=Symbol(),yI=X();function VS(t,e=void 0){const o=Ht()?lt(v3,yI):yI;return t?v(()=>{var _,l;return(l=(_=o.value)==null?void 0:_[t])!=null?l:e}):o}function WS(t,e){const o=VS(),_=Ze(t,v(()=>{var E;return((E=o.value)==null?void 0:E.namespace)||td})),l=lo(v(()=>{var E;return(E=o.value)==null?void 0:E.locale})),c=rT(v(()=>{var E;return((E=o.value)==null?void 0:E.zIndex)||l3})),T=v(()=>{var E;return M(e)||((E=o.value)==null?void 0:E.size)||""});return qv(v(()=>M(o)||{})),{ns:_,locale:l,zIndex:c,size:T}}const qv=(t,e,o=!1)=>{var _;const l=!!Ht(),c=l?VS():void 0,T=(_=e==null?void 0:e.provide)!=null?_:l?Jt:void 0;if(!T)return;const E=v(()=>{const u=M(t);return c!=null&&c.value?$Te(c.value,u):u});return T(v3,E),T(e3,v(()=>E.value.locale)),T(t3,v(()=>E.value.namespace)),T(a3,v(()=>E.value.zIndex)),T(p3,{size:v(()=>E.value.size||"")}),(o||!yI.value)&&(yI.value=E.value),E},$Te=(t,e)=>{var o;const _=[...new Set([...iu(t),...iu(e)])],l={};for(const c of _)l[c]=(o=e[c])!=null?o:t[c];return l},BTe=et({a11y:{type:Boolean,default:!0},locale:{type:me(Object)},size:Ys,button:{type:me(Object)},experimentalFeatures:{type:me(Object)},keyboardNavigation:{type:Boolean,default:!0},message:{type:me(Object)},zIndex:Number,namespace:{type:String,default:"el"}}),xb={},wTe=Oe({name:"ElConfigProvider",props:BTe,setup(t,{slots:e}){Fe(()=>t.message,_=>{Object.assign(xb,_??{})},{immediate:!0,deep:!0});const o=qv(t);return()=>ye(e,"default",{config:o==null?void 0:o.value})}}),GTe=Vt(wTe),kTe="2.5.1",HTe=(t=[])=>({version:kTe,install:(o,_)=>{o[JG]||(o[JG]=!0,t.forEach(l=>o.use(l)),_&&qv(_,o,!0))}}),xTe=et({zIndex:{type:me([Number,String]),default:100},target:{type:String,default:""},offset:{type:Number,default:0},position:{type:String,values:["top","bottom"],default:"top"}}),FTe={scroll:({scrollTop:t,fixed:e})=>mt(t)&&Ss(e),[Vo]:t=>Ss(t)};var tt=(t,e)=>{const o=t.__vccOpts||t;for(const[_,l]of e)o[_]=l;return o};const D3="ElAffix",VTe=Oe({name:D3}),WTe=Oe({...VTe,props:xTe,emits:FTe,setup(t,{expose:e,emit:o}){const _=t,l=Ze("affix"),c=mo(),T=mo(),E=mo(),{height:u}=$le(),{height:d,width:O,top:h,bottom:I,update:S}=YG(T,{windowScroll:!1}),L=YG(c),p=X(!1),C=X(0),m=X(0),A=v(()=>({height:p.value?`${d.value}px`:"",width:p.value?`${O.value}px`:""})),b=v(()=>{if(!p.value)return{};const P=_.offset?hs(_.offset):0;return{height:`${d.value}px`,width:`${O.value}px`,top:_.position==="top"?P:"",bottom:_.position==="bottom"?P:"",transform:m.value?`translateY(${m.value}px)`:"",zIndex:_.zIndex}}),N=()=>{if(E.value)if(C.value=E.value instanceof Window?document.documentElement.scrollTop:E.value.scrollTop||0,_.position==="top")if(_.target){const P=L.bottom.value-_.offset-d.value;p.value=_.offset>h.value&&L.bottom.value>0,m.value=P<0?P:0}else p.value=_.offset>h.value;else if(_.target){const P=u.value-L.top.value-_.offset-d.value;p.value=u.value-_.offset<I.value&&u.value>L.top.value,m.value=P<0?-P:0}else p.value=u.value-_.offset<I.value},U=()=>{S(),o("scroll",{scrollTop:C.value,fixed:p.value})};return Fe(p,P=>o("change",P)),Bt(()=>{var P;_.target?(c.value=(P=document.querySelector(_.target))!=null?P:void 0,c.value||vs(D3,`Target is not existed: ${_.target}`)):c.value=document.documentElement,E.value=Av(T.value,!0),S()}),Yo(E,"scroll",U),qs(N),e({update:N,updateRoot:S}),(P,G)=>(B(),se("div",{ref_key:"root",ref:T,class:k(M(l).b()),style:dt(M(A))},[te("div",{class:k({[M(l).m("fixed")]:p.value}),style:dt(M(b))},[ye(P.$slots,"default")],6)],6))}});var XTe=tt(WTe,[["__file","affix.vue"]]);const YTe=Vt(XTe),KTe=et({size:{type:me([Number,String])},color:{type:String}}),zTe=Oe({name:"ElIcon",inheritAttrs:!1}),ZTe=Oe({...zTe,props:KTe,setup(t){const e=t,o=Ze("icon"),_=v(()=>{const{size:l,color:c}=e;return!l&&!c?{}:{fontSize:bs(l)?void 0:hs(l),"--color":c}});return(l,c)=>(B(),se("i",Yt({class:M(o).b(),style:M(_)},l.$attrs),[ye(l.$slots,"default")],16))}});var jTe=tt(ZTe,[["__file","icon.vue"]]);const Et=Vt(jTe),qTe=["light","dark"],QTe=et({title:{type:String,default:""},description:{type:String,default:""},type:{type:String,values:iu(fa),default:"info"},closable:{type:Boolean,default:!0},closeText:{type:String,default:""},showIcon:Boolean,center:Boolean,effect:{type:String,values:qTe,default:"light"}}),JTe={close:t=>t instanceof MouseEvent},eEe=Oe({name:"ElAlert"}),tEe=Oe({...eEe,props:QTe,emits:JTe,setup(t,{emit:e}){const o=t,{Close:_}=Uv,l=zs(),c=Ze("alert"),T=X(!0),E=v(()=>fa[o.type]),u=v(()=>[c.e("icon"),{[c.is("big")]:!!o.description||!!l.default}]),d=v(()=>({[c.is("bold")]:o.description||l.default})),O=h=>{T.value=!1,e("close",h)};return(h,I)=>(B(),Ne(Ns,{name:M(c).b("fade"),persisted:""},{default:de(()=>[yt(te("div",{class:k([M(c).b(),M(c).m(h.type),M(c).is("center",h.center),M(c).is(h.effect)]),role:"alert"},[h.showIcon&&M(E)?(B(),Ne(M(Et),{key:0,class:k(M(u))},{default:de(()=>[(B(),Ne(Kt(M(E))))]),_:1},8,["class"])):Ce("v-if",!0),te("div",{class:k(M(c).e("content"))},[h.title||h.$slots.title?(B(),se("span",{key:0,class:k([M(c).e("title"),M(d)])},[ye(h.$slots,"title",{},()=>[qt(Qe(h.title),1)])],2)):Ce("v-if",!0),h.$slots.default||h.description?(B(),se("p",{key:1,class:k(M(c).e("description"))},[ye(h.$slots,"default",{},()=>[qt(Qe(h.description),1)])],2)):Ce("v-if",!0),h.closable?(B(),se(ht,{key:2},[h.closeText?(B(),se("div",{key:0,class:k([M(c).e("close-btn"),M(c).is("customed")]),onClick:O},Qe(h.closeText),3)):(B(),Ne(M(Et),{key:1,class:k(M(c).e("close-btn")),onClick:O},{default:de(()=>[ne(M(_))]),_:1},8,["class"]))],64)):Ce("v-if",!0)],2)],2),[[ao,T.value]])]),_:3},8,["name"]))}});var oEe=tt(tEe,[["__file","alert.vue"]]);const sEe=Vt(oEe),_T=Symbol("formContextKey"),d_=Symbol("formItemContextKey"),Ds=(t,e={})=>{const o=X(void 0),_=e.prop?o:s3("size"),l=e.global?o:_Te(),c=e.form?{size:void 0}:lt(_T,void 0),T=e.formItem?{size:void 0}:lt(d_,void 0);return v(()=>_.value||M(t)||(T==null?void 0:T.size)||(c==null?void 0:c.size)||l.value||"")},_n=t=>{const e=s3("disabled"),o=lt(_T,void 0);return v(()=>e.value||M(t)||(o==null?void 0:o.disabled)||!1)},Gi=()=>{const t=lt(_T,void 0),e=lt(d_,void 0);return{form:t,formItem:e}},I_=(t,{formItemContext:e,disableIdGeneration:o,disableIdManagement:_})=>{o||(o=X(!1)),_||(_=X(!1));const l=X();let c;const T=v(()=>{var E;return!!(!t.label&&e&&e.inputIds&&((E=e.inputIds)==null?void 0:E.length)<=1)});return Bt(()=>{c=Fe([Ao(t,"id"),o],([E,u])=>{const d=E??(u?void 0:rn().value);d!==l.value&&(e!=null&&e.removeInputId&&(l.value&&e.removeInputId(l.value),!(_!=null&&_.value)&&!u&&d&&e.addInputId(d)),l.value=d)},{immediate:!0})}),ba(()=>{c&&c(),e!=null&&e.removeInputId&&l.value&&e.removeInputId(l.value)}),{isLabeledByFormItem:T,inputId:l}},iEe=et({size:{type:String,values:R_},disabled:Boolean}),nEe=et({...iEe,model:Object,rules:{type:me(Object)},labelPosition:{type:String,values:["left","right","top"],default:"right"},requireAsteriskPosition:{type:String,values:["left","right"],default:"left"},labelWidth:{type:[String,Number],default:""},labelSuffix:{type:String,default:""},inline:Boolean,inlineMessage:Boolean,statusIcon:Boolean,showMessage:{type:Boolean,default:!0},validateOnRuleChange:{type:Boolean,default:!0},hideRequiredAsterisk:Boolean,scrollToError:Boolean,scrollIntoViewOptions:{type:[Object,Boolean]}}),rEe={validate:(t,e,o)=>(rt(t)||vt(t))&&Ss(e)&&vt(o)};function _Ee(){const t=X([]),e=v(()=>{if(!t.value.length)return"0";const c=Math.max(...t.value);return c?`${c}px`:""});function o(c){const T=t.value.indexOf(c);return T===-1&&e.value,T}function _(c,T){if(c&&T){const E=o(T);t.value.splice(E,1,c)}else c&&t.value.push(c)}function l(c){const T=o(c);T>-1&&t.value.splice(T,1)}return{autoLabelWidth:e,registerLabelWidth:_,deregisterLabelWidth:l}}const VM=(t,e)=>{const o=Wc(e);return o.length>0?t.filter(_=>_.prop&&o.includes(_.prop)):t},lEe="ElForm",aEe=Oe({name:lEe}),cEe=Oe({...aEe,props:nEe,emits:rEe,setup(t,{expose:e,emit:o}){const _=t,l=[],c=Ds(),T=Ze("form"),E=v(()=>{const{labelPosition:b,inline:N}=_;return[T.b(),T.m(c.value||"default"),{[T.m(`label-${b}`)]:b,[T.m("inline")]:N}]}),u=b=>l.find(N=>N.prop===b),d=b=>{l.push(b)},O=b=>{b.prop&&l.splice(l.indexOf(b),1)},h=(b=[])=>{_.model&&VM(l,b).forEach(N=>N.resetField())},I=(b=[])=>{VM(l,b).forEach(N=>N.clearValidate())},S=v(()=>!!_.model),L=b=>{if(l.length===0)return[];const N=VM(l,b);return N.length?N:[]},p=async b=>m(void 0,b),C=async(b=[])=>{if(!S.value)return!1;const N=L(b);if(N.length===0)return!0;let U={};for(const P of N)try{await P.validate("")}catch(G){U={...U,...G}}return Object.keys(U).length===0?!0:Promise.reject(U)},m=async(b=[],N)=>{const U=!At(N);try{const P=await C(b);return P===!0&&(N==null||N(P)),P}catch(P){if(P instanceof Error)throw P;const G=P;return _.scrollToError&&A(Object.keys(G)[0]),N==null||N(!1,G),U&&Promise.reject(G)}},A=b=>{var N;const U=VM(l,b)[0];U&&((N=U.$el)==null||N.scrollIntoView(_.scrollIntoViewOptions))};return Fe(()=>_.rules,()=>{_.validateOnRuleChange&&p().catch(b=>void 0)},{deep:!0}),Jt(_T,Eo({...Xs(_),emit:o,resetFields:h,clearValidate:I,validateField:m,getField:u,addField:d,removeField:O,..._Ee()})),e({validate:p,validateField:m,resetFields:h,clearValidate:I,scrollToField:A}),(b,N)=>(B(),se("form",{class:k(M(E))},[ye(b.$slots,"default")],2))}});var TEe=tt(cEe,[["__file","form.vue"]]);function Cc(){return Cc=Object.assign?Object.assign.bind():function(t){for(var e=1;e<arguments.length;e++){var o=arguments[e];for(var _ in o)Object.prototype.hasOwnProperty.call(o,_)&&(t[_]=o[_])}return t},Cc.apply(this,arguments)}function EEe(t,e){t.prototype=Object.create(e.prototype),t.prototype.constructor=t,Fd(t,e)}function Fb(t){return Fb=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(o){return o.__proto__||Object.getPrototypeOf(o)},Fb(t)}function Fd(t,e){return Fd=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(_,l){return _.__proto__=l,_},Fd(t,e)}function uEe(){if(typeof Reflect>"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){})),!0}catch{return!1}}function SR(t,e,o){return uEe()?SR=Reflect.construct.bind():SR=function(l,c,T){var E=[null];E.push.apply(E,c);var u=Function.bind.apply(l,E),d=new u;return T&&Fd(d,T.prototype),d},SR.apply(null,arguments)}function gEe(t){return Function.toString.call(t).indexOf("[native code]")!==-1}function Vb(t){var e=typeof Map=="function"?new Map:void 0;return Vb=function(_){if(_===null||!gEe(_))return _;if(typeof _!="function")throw new TypeError("Super expression must either be null or a function");if(typeof e<"u"){if(e.has(_))return e.get(_);e.set(_,l)}function l(){return SR(_,arguments,Fb(this).constructor)}return l.prototype=Object.create(_.prototype,{constructor:{value:l,enumerable:!1,writable:!0,configurable:!0}}),Fd(l,_)},Vb(t)}var dEe=/%[sdj%]/g,OEe=function(){};function Wb(t){if(!t||!t.length)return null;var e={};return t.forEach(function(o){var _=o.field;e[_]=e[_]||[],e[_].push(o)}),e}function fn(t){for(var e=arguments.length,o=new Array(e>1?e-1:0),_=1;_<e;_++)o[_-1]=arguments[_];var l=0,c=o.length;if(typeof t=="function")return t.apply(null,o);if(typeof t=="string"){var T=t.replace(dEe,function(E){if(E==="%%")return"%";if(l>=c)return E;switch(E){case"%s":return String(o[l++]);case"%d":return Number(o[l++]);case"%j":try{return JSON.stringify(o[l++])}catch{return"[Circular]"}break;default:return E}});return T}return t}function hEe(t){return t==="string"||t==="url"||t==="hex"||t==="email"||t==="date"||t==="pattern"}function Ks(t,e){return!!(t==null||e==="array"&&Array.isArray(t)&&!t.length||hEe(e)&&typeof t=="string"&&!t)}function MEe(t,e,o){var _=[],l=0,c=t.length;function T(E){_.push.apply(_,E||[]),l++,l===c&&o(_)}t.forEach(function(E){e(E,T)})}function gk(t,e,o){var _=0,l=t.length;function c(T){if(T&&T.length){o(T);return}var E=_;_=_+1,E<l?e(t[E],c):o([])}c([])}function REe(t){var e=[];return Object.keys(t).forEach(function(o){e.push.apply(e,t[o]||[])}),e}var dk=function(t){EEe(e,t);function e(o,_){var l;return l=t.call(this,"Async Validation Error")||this,l.errors=o,l.fields=_,l}return e}(Vb(Error));function IEe(t,e,o,_,l){if(e.first){var c=new Promise(function(I,S){var L=function(m){return _(m),m.length?S(new dk(m,Wb(m))):I(l)},p=REe(t);gk(p,o,L)});return c.catch(function(I){return I}),c}var T=e.firstFields===!0?Object.keys(t):e.firstFields||[],E=Object.keys(t),u=E.length,d=0,O=[],h=new Promise(function(I,S){var L=function(C){if(O.push.apply(O,C),d++,d===u)return _(O),O.length?S(new dk(O,Wb(O))):I(l)};E.length||(_(O),I(l)),E.forEach(function(p){var C=t[p];T.indexOf(p)!==-1?gk(C,o,L):MEe(C,o,L)})});return h.catch(function(I){return I}),h}function SEe(t){return!!(t&&t.message!==void 0)}function pEe(t,e){for(var o=t,_=0;_<e.length;_++){if(o==null)return o;o=o[e[_]]}return o}function Ok(t,e){return function(o){var _;return t.fullFields?_=pEe(e,t.fullFields):_=e[o.field||t.fullField],SEe(o)?(o.field=o.field||t.fullField,o.fieldValue=_,o):{message:typeof o=="function"?o():o,fieldValue:_,field:o.field||t.fullField}}}function hk(t,e){if(e){for(var o in e)if(e.hasOwnProperty(o)){var _=e[o];typeof _=="object"&&typeof t[o]=="object"?t[o]=Cc({},t[o],_):t[o]=_}}return t}var U3=function(e,o,_,l,c,T){e.required&&(!_.hasOwnProperty(e.field)||Ks(o,T||e.type))&&l.push(fn(c.messages.required,e.fullField))},LEe=function(e,o,_,l,c){(/^\s+$/.test(o)||o==="")&&l.push(fn(c.messages.whitespace,e.fullField))},WM,fEe=function(){if(WM)return WM;var t="[a-fA-F\\d:]",e=function(N){return N&&N.includeBoundaries?"(?:(?<=\\s|^)(?="+t+")|(?<="+t+")(?=\\s|$))":""},o="(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]\\d|\\d)(?:\\.(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]\\d|\\d)){3}",_="[a-fA-F\\d]{1,4}",l=(`
- (?:
- (?:`+_+":){7}(?:"+_+`|:)| // 1:2:3:4:5:6:7:: 1:2:3:4:5:6:7:8
- (?:`+_+":){6}(?:"+o+"|:"+_+`|:)| // 1:2:3:4:5:6:: 1:2:3:4:5:6::8 1:2:3:4:5:6::8 1:2:3:4:5:6::1.2.3.4
- (?:`+_+":){5}(?::"+o+"|(?::"+_+`){1,2}|:)| // 1:2:3:4:5:: 1:2:3:4:5::7:8 1:2:3:4:5::8 1:2:3:4:5::7:1.2.3.4
- (?:`+_+":){4}(?:(?::"+_+"){0,1}:"+o+"|(?::"+_+`){1,3}|:)| // 1:2:3:4:: 1:2:3:4::6:7:8 1:2:3:4::8 1:2:3:4::6:7:1.2.3.4
- (?:`+_+":){3}(?:(?::"+_+"){0,2}:"+o+"|(?::"+_+`){1,4}|:)| // 1:2:3:: 1:2:3::5:6:7:8 1:2:3::8 1:2:3::5:6:7:1.2.3.4
- (?:`+_+":){2}(?:(?::"+_+"){0,3}:"+o+"|(?::"+_+`){1,5}|:)| // 1:2:: 1:2::4:5:6:7:8 1:2::8 1:2::4:5:6:7:1.2.3.4
- (?:`+_+":){1}(?:(?::"+_+"){0,4}:"+o+"|(?::"+_+`){1,6}|:)| // 1:: 1::3:4:5:6:7:8 1::8 1::3:4:5:6:7:1.2.3.4
- (?::(?:(?::`+_+"){0,5}:"+o+"|(?::"+_+`){1,7}|:)) // ::2:3:4:5:6:7:8 ::2:3:4:5:6:7:8 ::8 ::1.2.3.4
- )(?:%[0-9a-zA-Z]{1,})? // %eth0 %1
- `).replace(/\s*\/\/.*$/gm,"").replace(/\n/g,"").trim(),c=new RegExp("(?:^"+o+"$)|(?:^"+l+"$)"),T=new RegExp("^"+o+"$"),E=new RegExp("^"+l+"$"),u=function(N){return N&&N.exact?c:new RegExp("(?:"+e(N)+o+e(N)+")|(?:"+e(N)+l+e(N)+")","g")};u.v4=function(b){return b&&b.exact?T:new RegExp(""+e(b)+o+e(b),"g")},u.v6=function(b){return b&&b.exact?E:new RegExp(""+e(b)+l+e(b),"g")};var d="(?:(?:[a-z]+:)?//)",O="(?:\\S+(?::\\S*)?@)?",h=u.v4().source,I=u.v6().source,S="(?:(?:[a-z\\u00a1-\\uffff0-9][-_]*)*[a-z\\u00a1-\\uffff0-9]+)",L="(?:\\.(?:[a-z\\u00a1-\\uffff0-9]-*)*[a-z\\u00a1-\\uffff0-9]+)*",p="(?:\\.(?:[a-z\\u00a1-\\uffff]{2,}))",C="(?::\\d{2,5})?",m='(?:[/?#][^\\s"]*)?',A="(?:"+d+"|www\\.)"+O+"(?:localhost|"+h+"|"+I+"|"+S+L+p+")"+C+m;return WM=new RegExp("(?:^"+A+"$)","i"),WM},Mk={email:/^(([^<>()\[\]\\.,;:\s@"]+(\.[^<>()\[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}])|(([a-zA-Z\-0-9\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]+\.)+[a-zA-Z\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]{2,}))$/,hex:/^#?([a-f0-9]{6}|[a-f0-9]{3})$/i},Hg={integer:function(e){return Hg.number(e)&&parseInt(e,10)===e},float:function(e){return Hg.number(e)&&!Hg.integer(e)},array:function(e){return Array.isArray(e)},regexp:function(e){if(e instanceof RegExp)return!0;try{return!!new RegExp(e)}catch{return!1}},date:function(e){return typeof e.getTime=="function"&&typeof e.getMonth=="function"&&typeof e.getYear=="function"&&!isNaN(e.getTime())},number:function(e){return isNaN(e)?!1:typeof e=="number"},object:function(e){return typeof e=="object"&&!Hg.array(e)},method:function(e){return typeof e=="function"},email:function(e){return typeof e=="string"&&e.length<=320&&!!e.match(Mk.email)},url:function(e){return typeof e=="string"&&e.length<=2048&&!!e.match(fEe())},hex:function(e){return typeof e=="string"&&!!e.match(Mk.hex)}},mEe=function(e,o,_,l,c){if(e.required&&o===void 0){U3(e,o,_,l,c);return}var T=["integer","float","array","regexp","object","method","email","number","date","url","hex"],E=e.type;T.indexOf(E)>-1?Hg[E](o)||l.push(fn(c.messages.types[E],e.fullField,e.type)):E&&typeof o!==e.type&&l.push(fn(c.messages.types[E],e.fullField,e.type))},CEe=function(e,o,_,l,c){var T=typeof e.len=="number",E=typeof e.min=="number",u=typeof e.max=="number",d=/[\uD800-\uDBFF][\uDC00-\uDFFF]/g,O=o,h=null,I=typeof o=="number",S=typeof o=="string",L=Array.isArray(o);if(I?h="number":S?h="string":L&&(h="array"),!h)return!1;L&&(O=o.length),S&&(O=o.replace(d,"_").length),T?O!==e.len&&l.push(fn(c.messages[h].len,e.fullField,e.len)):E&&!u&&O<e.min?l.push(fn(c.messages[h].min,e.fullField,e.min)):u&&!E&&O>e.max?l.push(fn(c.messages[h].max,e.fullField,e.max)):E&&u&&(O<e.min||O>e.max)&&l.push(fn(c.messages[h].range,e.fullField,e.min,e.max))},rE="enum",AEe=function(e,o,_,l,c){e[rE]=Array.isArray(e[rE])?e[rE]:[],e[rE].indexOf(o)===-1&&l.push(fn(c.messages[rE],e.fullField,e[rE].join(", ")))},bEe=function(e,o,_,l,c){if(e.pattern){if(e.pattern instanceof RegExp)e.pattern.lastIndex=0,e.pattern.test(o)||l.push(fn(c.messages.pattern.mismatch,e.fullField,o,e.pattern));else if(typeof e.pattern=="string"){var T=new RegExp(e.pattern);T.test(o)||l.push(fn(c.messages.pattern.mismatch,e.fullField,o,e.pattern))}}},Co={required:U3,whitespace:LEe,type:mEe,range:CEe,enum:AEe,pattern:bEe},NEe=function(e,o,_,l,c){var T=[],E=e.required||!e.required&&l.hasOwnProperty(e.field);if(E){if(Ks(o,"string")&&!e.required)return _();Co.required(e,o,l,T,c,"string"),Ks(o,"string")||(Co.type(e,o,l,T,c),Co.range(e,o,l,T,c),Co.pattern(e,o,l,T,c),e.whitespace===!0&&Co.whitespace(e,o,l,T,c))}_(T)},PEe=function(e,o,_,l,c){var T=[],E=e.required||!e.required&&l.hasOwnProperty(e.field);if(E){if(Ks(o)&&!e.required)return _();Co.required(e,o,l,T,c),o!==void 0&&Co.type(e,o,l,T,c)}_(T)},vEe=function(e,o,_,l,c){var T=[],E=e.required||!e.required&&l.hasOwnProperty(e.field);if(E){if(o===""&&(o=void 0),Ks(o)&&!e.required)return _();Co.required(e,o,l,T,c),o!==void 0&&(Co.type(e,o,l,T,c),Co.range(e,o,l,T,c))}_(T)},DEe=function(e,o,_,l,c){var T=[],E=e.required||!e.required&&l.hasOwnProperty(e.field);if(E){if(Ks(o)&&!e.required)return _();Co.required(e,o,l,T,c),o!==void 0&&Co.type(e,o,l,T,c)}_(T)},UEe=function(e,o,_,l,c){var T=[],E=e.required||!e.required&&l.hasOwnProperty(e.field);if(E){if(Ks(o)&&!e.required)return _();Co.required(e,o,l,T,c),Ks(o)||Co.type(e,o,l,T,c)}_(T)},yEe=function(e,o,_,l,c){var T=[],E=e.required||!e.required&&l.hasOwnProperty(e.field);if(E){if(Ks(o)&&!e.required)return _();Co.required(e,o,l,T,c),o!==void 0&&(Co.type(e,o,l,T,c),Co.range(e,o,l,T,c))}_(T)},$Ee=function(e,o,_,l,c){var T=[],E=e.required||!e.required&&l.hasOwnProperty(e.field);if(E){if(Ks(o)&&!e.required)return _();Co.required(e,o,l,T,c),o!==void 0&&(Co.type(e,o,l,T,c),Co.range(e,o,l,T,c))}_(T)},BEe=function(e,o,_,l,c){var T=[],E=e.required||!e.required&&l.hasOwnProperty(e.field);if(E){if(o==null&&!e.required)return _();Co.required(e,o,l,T,c,"array"),o!=null&&(Co.type(e,o,l,T,c),Co.range(e,o,l,T,c))}_(T)},wEe=function(e,o,_,l,c){var T=[],E=e.required||!e.required&&l.hasOwnProperty(e.field);if(E){if(Ks(o)&&!e.required)return _();Co.required(e,o,l,T,c),o!==void 0&&Co.type(e,o,l,T,c)}_(T)},GEe="enum",kEe=function(e,o,_,l,c){var T=[],E=e.required||!e.required&&l.hasOwnProperty(e.field);if(E){if(Ks(o)&&!e.required)return _();Co.required(e,o,l,T,c),o!==void 0&&Co[GEe](e,o,l,T,c)}_(T)},HEe=function(e,o,_,l,c){var T=[],E=e.required||!e.required&&l.hasOwnProperty(e.field);if(E){if(Ks(o,"string")&&!e.required)return _();Co.required(e,o,l,T,c),Ks(o,"string")||Co.pattern(e,o,l,T,c)}_(T)},xEe=function(e,o,_,l,c){var T=[],E=e.required||!e.required&&l.hasOwnProperty(e.field);if(E){if(Ks(o,"date")&&!e.required)return _();if(Co.required(e,o,l,T,c),!Ks(o,"date")){var u;o instanceof Date?u=o:u=new Date(o),Co.type(e,u,l,T,c),u&&Co.range(e,u.getTime(),l,T,c)}}_(T)},FEe=function(e,o,_,l,c){var T=[],E=Array.isArray(o)?"array":typeof o;Co.required(e,o,l,T,c,E),_(T)},VC=function(e,o,_,l,c){var T=e.type,E=[],u=e.required||!e.required&&l.hasOwnProperty(e.field);if(u){if(Ks(o,T)&&!e.required)return _();Co.required(e,o,l,E,c,T),Ks(o,T)||Co.type(e,o,l,E,c)}_(E)},VEe=function(e,o,_,l,c){var T=[],E=e.required||!e.required&&l.hasOwnProperty(e.field);if(E){if(Ks(o)&&!e.required)return _();Co.required(e,o,l,T,c)}_(T)},id={string:NEe,method:PEe,number:vEe,boolean:DEe,regexp:UEe,integer:yEe,float:$Ee,array:BEe,object:wEe,enum:kEe,pattern:HEe,date:xEe,url:VC,hex:VC,email:VC,required:FEe,any:VEe};function Xb(){return{default:"Validation error on field %s",required:"%s is required",enum:"%s must be one of %s",whitespace:"%s cannot be empty",date:{format:"%s date %s is invalid for format %s",parse:"%s date could not be parsed, %s is invalid ",invalid:"%s date %s is invalid"},types:{string:"%s is not a %s",method:"%s is not a %s (function)",array:"%s is not an %s",object:"%s is not an %s",number:"%s is not a %s",date:"%s is not a %s",boolean:"%s is not a %s",integer:"%s is not an %s",float:"%s is not a %s",regexp:"%s is not a valid %s",email:"%s is not a valid %s",url:"%s is not a valid %s",hex:"%s is not a valid %s"},string:{len:"%s must be exactly %s characters",min:"%s must be at least %s characters",max:"%s cannot be longer than %s characters",range:"%s must be between %s and %s characters"},number:{len:"%s must equal %s",min:"%s cannot be less than %s",max:"%s cannot be greater than %s",range:"%s must be between %s and %s"},array:{len:"%s must be exactly %s in length",min:"%s cannot be less than %s in length",max:"%s cannot be greater than %s in length",range:"%s must be between %s and %s in length"},pattern:{mismatch:"%s value %s does not match pattern %s"},clone:function(){var e=JSON.parse(JSON.stringify(this));return e.clone=this.clone,e}}}var Yb=Xb(),NO=function(){function t(o){this.rules=null,this._messages=Yb,this.define(o)}var e=t.prototype;return e.define=function(_){var l=this;if(!_)throw new Error("Cannot configure a schema with no rules");if(typeof _!="object"||Array.isArray(_))throw new Error("Rules must be an object");this.rules={},Object.keys(_).forEach(function(c){var T=_[c];l.rules[c]=Array.isArray(T)?T:[T]})},e.messages=function(_){return _&&(this._messages=hk(Xb(),_)),this._messages},e.validate=function(_,l,c){var T=this;l===void 0&&(l={}),c===void 0&&(c=function(){});var E=_,u=l,d=c;if(typeof u=="function"&&(d=u,u={}),!this.rules||Object.keys(this.rules).length===0)return d&&d(null,E),Promise.resolve(E);function O(p){var C=[],m={};function A(N){if(Array.isArray(N)){var U;C=(U=C).concat.apply(U,N)}else C.push(N)}for(var b=0;b<p.length;b++)A(p[b]);C.length?(m=Wb(C),d(C,m)):d(null,E)}if(u.messages){var h=this.messages();h===Yb&&(h=Xb()),hk(h,u.messages),u.messages=h}else u.messages=this.messages();var I={},S=u.keys||Object.keys(this.rules);S.forEach(function(p){var C=T.rules[p],m=E[p];C.forEach(function(A){var b=A;typeof b.transform=="function"&&(E===_&&(E=Cc({},E)),m=E[p]=b.transform(m)),typeof b=="function"?b={validator:b}:b=Cc({},b),b.validator=T.getValidationMethod(b),b.validator&&(b.field=p,b.fullField=b.fullField||p,b.type=T.getType(b),I[p]=I[p]||[],I[p].push({rule:b,value:m,source:E,field:p}))})});var L={};return IEe(I,u,function(p,C){var m=p.rule,A=(m.type==="object"||m.type==="array")&&(typeof m.fields=="object"||typeof m.defaultField=="object");A=A&&(m.required||!m.required&&p.value),m.field=p.field;function b(P,G){return Cc({},G,{fullField:m.fullField+"."+P,fullFields:m.fullFields?[].concat(m.fullFields,[P]):[P]})}function N(P){P===void 0&&(P=[]);var G=Array.isArray(P)?P:[P];!u.suppressWarning&&G.length&&t.warning("async-validator:",G),G.length&&m.message!==void 0&&(G=[].concat(m.message));var w=G.map(Ok(m,E));if(u.first&&w.length)return L[m.field]=1,C(w);if(!A)C(w);else{if(m.required&&!p.value)return m.message!==void 0?w=[].concat(m.message).map(Ok(m,E)):u.error&&(w=[u.error(m,fn(u.messages.required,m.field))]),C(w);var F={};m.defaultField&&Object.keys(p.value).map(function(K){F[K]=m.defaultField}),F=Cc({},F,p.rule.fields);var V={};Object.keys(F).forEach(function(K){var ee=F[K],j=Array.isArray(ee)?ee:[ee];V[K]=j.map(b.bind(null,K))});var W=new t(V);W.messages(u.messages),p.rule.options&&(p.rule.options.messages=u.messages,p.rule.options.error=u.error),W.validate(p.value,p.rule.options||u,function(K){var ee=[];w&&w.length&&ee.push.apply(ee,w),K&&K.length&&ee.push.apply(ee,K),C(ee.length?ee:null)})}}var U;if(m.asyncValidator)U=m.asyncValidator(m,p.value,N,p.source,u);else if(m.validator){try{U=m.validator(m,p.value,N,p.source,u)}catch(P){console.error==null||console.error(P),u.suppressValidatorError||setTimeout(function(){throw P},0),N(P.message)}U===!0?N():U===!1?N(typeof m.message=="function"?m.message(m.fullField||m.field):m.message||(m.fullField||m.field)+" fails"):U instanceof Array?N(U):U instanceof Error&&N(U.message)}U&&U.then&&U.then(function(){return N()},function(P){return N(P)})},function(p){O(p)},E)},e.getType=function(_){if(_.type===void 0&&_.pattern instanceof RegExp&&(_.type="pattern"),typeof _.validator!="function"&&_.type&&!id.hasOwnProperty(_.type))throw new Error(fn("Unknown rule type %s",_.type));return _.type||"string"},e.getValidationMethod=function(_){if(typeof _.validator=="function")return _.validator;var l=Object.keys(_),c=l.indexOf("message");return c!==-1&&l.splice(c,1),l.length===1&&l[0]==="required"?id.required:id[this.getType(_)]||void 0},t}();NO.register=function(e,o){if(typeof o!="function")throw new Error("Cannot register a validator by type, validator is not a function");id[e]=o};NO.warning=OEe;NO.messages=Yb;NO.validators=id;const WEe=["","error","validating","success"],XEe=et({label:String,labelWidth:{type:[String,Number],default:""},prop:{type:me([String,Array])},required:{type:Boolean,default:void 0},rules:{type:me([Object,Array])},error:String,validateStatus:{type:String,values:WEe},for:String,inlineMessage:{type:[String,Boolean],default:""},showMessage:{type:Boolean,default:!0},size:{type:String,values:R_}}),Rk="ElLabelWrap";var YEe=Oe({name:Rk,props:{isAutoWidth:Boolean,updateAll:Boolean},setup(t,{slots:e}){const o=lt(_T,void 0),_=lt(d_);_||vs(Rk,"usage: <el-form-item><label-wrap /></el-form-item>");const l=Ze("form"),c=X(),T=X(0),E=()=>{var O;if((O=c.value)!=null&&O.firstElementChild){const h=window.getComputedStyle(c.value.firstElementChild).width;return Math.ceil(Number.parseFloat(h))}else return 0},u=(O="update")=>{Lt(()=>{e.default&&t.isAutoWidth&&(O==="update"?T.value=E():O==="remove"&&(o==null||o.deregisterLabelWidth(T.value)))})},d=()=>u("update");return Bt(()=>{d()}),Do(()=>{u("remove")}),_l(()=>d()),Fe(T,(O,h)=>{t.updateAll&&(o==null||o.registerLabelWidth(O,h))}),Rs(v(()=>{var O,h;return(h=(O=c.value)==null?void 0:O.firstElementChild)!=null?h:null}),d),()=>{var O,h;if(!e)return null;const{isAutoWidth:I}=t;if(I){const S=o==null?void 0:o.autoLabelWidth,L=_==null?void 0:_.hasLabel,p={};if(L&&S&&S!=="auto"){const C=Math.max(0,Number.parseInt(S,10)-T.value),m=o.labelPosition==="left"?"marginRight":"marginLeft";C&&(p[m]=`${C}px`)}return ne("div",{ref:c,class:[l.be("item","label-wrap")],style:p},[(O=e.default)==null?void 0:O.call(e)])}else return ne(ht,{ref:c},[(h=e.default)==null?void 0:h.call(e)])}}});const KEe=["role","aria-labelledby"],zEe=Oe({name:"ElFormItem"}),ZEe=Oe({...zEe,props:XEe,setup(t,{expose:e}){const o=t,_=zs(),l=lt(_T,void 0),c=lt(d_,void 0),T=Ds(void 0,{formItem:!1}),E=Ze("form-item"),u=rn().value,d=X([]),O=X(""),h=Mle(O,100),I=X(""),S=X();let L,p=!1;const C=v(()=>{if((l==null?void 0:l.labelPosition)==="top")return{};const Me=hs(o.labelWidth||(l==null?void 0:l.labelWidth)||"");return Me?{width:Me}:{}}),m=v(()=>{if((l==null?void 0:l.labelPosition)==="top"||l!=null&&l.inline)return{};if(!o.label&&!o.labelWidth&&F)return{};const Me=hs(o.labelWidth||(l==null?void 0:l.labelWidth)||"");return!o.label&&!_.label?{marginLeft:Me}:{}}),A=v(()=>[E.b(),E.m(T.value),E.is("error",O.value==="error"),E.is("validating",O.value==="validating"),E.is("success",O.value==="success"),E.is("required",j.value||o.required),E.is("no-asterisk",l==null?void 0:l.hideRequiredAsterisk),(l==null?void 0:l.requireAsteriskPosition)==="right"?"asterisk-right":"asterisk-left",{[E.m("feedback")]:l==null?void 0:l.statusIcon}]),b=v(()=>Ss(o.inlineMessage)?o.inlineMessage:(l==null?void 0:l.inlineMessage)||!1),N=v(()=>[E.e("error"),{[E.em("error","inline")]:b.value}]),U=v(()=>o.prop?vt(o.prop)?o.prop:o.prop.join("."):""),P=v(()=>!!(o.label||_.label)),G=v(()=>o.for||(d.value.length===1?d.value[0]:void 0)),w=v(()=>!G.value&&P.value),F=!!c,V=v(()=>{const Me=l==null?void 0:l.model;if(!(!Me||!o.prop))return IR(Me,o.prop).value}),W=v(()=>{const{required:Me}=o,Ie=[];o.rules&&Ie.push(...Wc(o.rules));const Pe=l==null?void 0:l.rules;if(Pe&&o.prop){const Ae=IR(Pe,o.prop).value;Ae&&Ie.push(...Wc(Ae))}if(Me!==void 0){const Ae=Ie.map((ke,ve)=>[ke,ve]).filter(([ke])=>Object.keys(ke).includes("required"));if(Ae.length>0)for(const[ke,ve]of Ae)ke.required!==Me&&(Ie[ve]={...ke,required:Me});else Ie.push({required:Me})}return Ie}),K=v(()=>W.value.length>0),ee=Me=>W.value.filter(Pe=>!Pe.trigger||!Me?!0:Array.isArray(Pe.trigger)?Pe.trigger.includes(Me):Pe.trigger===Me).map(({trigger:Pe,...Ae})=>Ae),j=v(()=>W.value.some(Me=>Me.required)),J=v(()=>{var Me;return h.value==="error"&&o.showMessage&&((Me=l==null?void 0:l.showMessage)!=null?Me:!0)}),ie=v(()=>`${o.label||""}${(l==null?void 0:l.labelSuffix)||""}`),Y=Me=>{O.value=Me},re=Me=>{var Ie,Pe;const{errors:Ae,fields:ke}=Me;(!Ae||!ke)&&console.error(Me),Y("error"),I.value=Ae?(Pe=(Ie=Ae==null?void 0:Ae[0])==null?void 0:Ie.message)!=null?Pe:`${o.prop} is required`:"",l==null||l.emit("validate",o.prop,!1,I.value)},H=()=>{Y("success"),l==null||l.emit("validate",o.prop,!0,"")},Q=async Me=>{const Ie=U.value;return new NO({[Ie]:Me}).validate({[Ie]:V.value},{firstFields:!0}).then(()=>(H(),!0)).catch(Ae=>(re(Ae),Promise.reject(Ae)))},ae=async(Me,Ie)=>{if(p||!o.prop)return!1;const Pe=At(Ie);if(!K.value)return Ie==null||Ie(!1),!1;const Ae=ee(Me);return Ae.length===0?(Ie==null||Ie(!0),!0):(Y("validating"),Q(Ae).then(()=>(Ie==null||Ie(!0),!0)).catch(ke=>{const{fields:ve}=ke;return Ie==null||Ie(!1,ve),Pe?!1:Promise.reject(ve)}))},ge=()=>{Y(""),I.value="",p=!1},Se=async()=>{const Me=l==null?void 0:l.model;if(!Me||!o.prop)return;const Ie=IR(Me,o.prop);p=!0,Ie.value=vG(L),await Lt(),ge(),p=!1},pe=Me=>{d.value.includes(Me)||d.value.push(Me)},We=Me=>{d.value=d.value.filter(Ie=>Ie!==Me)};Fe(()=>o.error,Me=>{I.value=Me||"",Y(Me?"error":"")},{immediate:!0}),Fe(()=>o.validateStatus,Me=>Y(Me||""));const be=Eo({...Xs(o),$el:S,size:T,validateState:O,labelId:u,inputIds:d,isGroup:w,hasLabel:P,fieldValue:V,addInputId:pe,removeInputId:We,resetField:Se,clearValidate:ge,validate:ae});return Jt(d_,be),Bt(()=>{o.prop&&(l==null||l.addField(be),L=vG(V.value))}),Do(()=>{l==null||l.removeField(be)}),e({size:T,validateMessage:I,validateState:O,validate:ae,clearValidate:ge,resetField:Se}),(Me,Ie)=>{var Pe;return B(),se("div",{ref_key:"formItemRef",ref:S,class:k(M(A)),role:M(w)?"group":void 0,"aria-labelledby":M(w)?M(u):void 0},[ne(M(YEe),{"is-auto-width":M(C).width==="auto","update-all":((Pe=M(l))==null?void 0:Pe.labelWidth)==="auto"},{default:de(()=>[M(P)?(B(),Ne(Kt(M(G)?"label":"div"),{key:0,id:M(u),for:M(G),class:k(M(E).e("label")),style:dt(M(C))},{default:de(()=>[ye(Me.$slots,"label",{label:M(ie)},()=>[qt(Qe(M(ie)),1)])]),_:3},8,["id","for","class","style"])):Ce("v-if",!0)]),_:3},8,["is-auto-width","update-all"]),te("div",{class:k(M(E).e("content")),style:dt(M(m))},[ye(Me.$slots,"default"),ne(h2,{name:`${M(E).namespace.value}-zoom-in-top`},{default:de(()=>[M(J)?ye(Me.$slots,"error",{key:0,error:I.value},()=>[te("div",{class:k(M(N))},Qe(I.value),3)]):Ce("v-if",!0)]),_:3},8,["name"])],6)],10,KEe)}}});var y3=tt(ZEe,[["__file","form-item.vue"]]);const jEe=Vt(TEe,{FormItem:y3}),qEe=ss(y3);let lr;const QEe=`
- height:0 !important;
- visibility:hidden !important;
- ${xX()?"":"overflow:hidden !important;"}
- position:absolute !important;
- z-index:-1000 !important;
- top:0 !important;
- right:0 !important;
- `,JEe=["letter-spacing","line-height","padding-top","padding-bottom","font-family","font-weight","font-size","text-rendering","text-transform","width","text-indent","padding-left","padding-right","border-width","box-sizing"];function eue(t){const e=window.getComputedStyle(t),o=e.getPropertyValue("box-sizing"),_=Number.parseFloat(e.getPropertyValue("padding-bottom"))+Number.parseFloat(e.getPropertyValue("padding-top")),l=Number.parseFloat(e.getPropertyValue("border-bottom-width"))+Number.parseFloat(e.getPropertyValue("border-top-width"));return{contextStyle:JEe.map(T=>`${T}:${e.getPropertyValue(T)}`).join(";"),paddingSize:_,borderSize:l,boxSizing:o}}function Ik(t,e=1,o){var _;lr||(lr=document.createElement("textarea"),document.body.appendChild(lr));const{paddingSize:l,borderSize:c,boxSizing:T,contextStyle:E}=eue(t);lr.setAttribute("style",`${E};${QEe}`),lr.value=t.value||t.placeholder||"";let u=lr.scrollHeight;const d={};T==="border-box"?u=u+c:T==="content-box"&&(u=u-l),lr.value="";const O=lr.scrollHeight-l;if(mt(e)){let h=O*e;T==="border-box"&&(h=h+l+c),u=Math.max(h,u),d.minHeight=`${h}px`}if(mt(o)){let h=O*o;T==="border-box"&&(h=h+l+c),u=Math.min(h,u)}return d.height=`${u}px`,(_=lr.parentNode)==null||_.removeChild(lr),lr=void 0,d}const tue=et({id:{type:String,default:void 0},size:Ys,disabled:Boolean,modelValue:{type:me([String,Number,Object]),default:""},maxlength:{type:[String,Number]},minlength:{type:[String,Number]},type:{type:String,default:"text"},resize:{type:String,values:["none","both","horizontal","vertical"]},autosize:{type:me([Boolean,Object]),default:!1},autocomplete:{type:String,default:"off"},formatter:{type:Function},parser:{type:Function},placeholder:{type:String},form:{type:String},readonly:{type:Boolean,default:!1},clearable:{type:Boolean,default:!1},showPassword:{type:Boolean,default:!1},showWordLimit:{type:Boolean,default:!1},suffixIcon:{type:Lo},prefixIcon:{type:Lo},containerRole:{type:String,default:void 0},label:{type:String,default:void 0},tabindex:{type:[String,Number],default:0},validateEvent:{type:Boolean,default:!0},inputStyle:{type:me([Object,Array,String]),default:()=>Qo({})},autofocus:{type:Boolean,default:!1}}),oue={[Xt]:t=>vt(t),input:t=>vt(t),change:t=>vt(t),focus:t=>t instanceof FocusEvent,blur:t=>t instanceof FocusEvent,clear:()=>!0,mouseleave:t=>t instanceof MouseEvent,mouseenter:t=>t instanceof MouseEvent,keydown:t=>t instanceof Event,compositionstart:t=>t instanceof CompositionEvent,compositionupdate:t=>t instanceof CompositionEvent,compositionend:t=>t instanceof CompositionEvent},sue=["role"],iue=["id","minlength","maxlength","type","disabled","readonly","autocomplete","tabindex","aria-label","placeholder","form","autofocus"],nue=["id","tabindex","disabled","readonly","autocomplete","aria-label","placeholder","form","autofocus"],rue=Oe({name:"ElInput",inheritAttrs:!1}),_ue=Oe({...rue,props:tue,emits:oue,setup(t,{expose:e,emit:o}){const _=t,l=Jc(),c=zs(),T=v(()=>{const He={};return _.containerRole==="combobox"&&(He["aria-haspopup"]=l["aria-haspopup"],He["aria-owns"]=l["aria-owns"],He["aria-expanded"]=l["aria-expanded"]),He}),E=v(()=>[_.type==="textarea"?C.b():p.b(),p.m(S.value),p.is("disabled",L.value),p.is("exceed",pe.value),{[p.b("group")]:c.prepend||c.append,[p.bm("group","append")]:c.append,[p.bm("group","prepend")]:c.prepend,[p.m("prefix")]:c.prefix||_.prefixIcon,[p.m("suffix")]:c.suffix||_.suffixIcon||_.clearable||_.showPassword,[p.bm("suffix","password-clear")]:Q.value&&ae.value},l.class]),u=v(()=>[p.e("wrapper"),p.is("focus",V.value)]),d=Bv({excludeKeys:v(()=>Object.keys(T.value))}),{form:O,formItem:h}=Gi(),{inputId:I}=I_(_,{formItemContext:h}),S=Ds(),L=_n(),p=Ze("input"),C=Ze("textarea"),m=mo(),A=mo(),b=X(!1),N=X(!1),U=X(!1),P=X(),G=mo(_.inputStyle),w=v(()=>m.value||A.value),{wrapperRef:F,isFocused:V,handleFocus:W,handleBlur:K}=xS(w,{afterBlur(){var He;_.validateEvent&&((He=h==null?void 0:h.validate)==null||He.call(h,"blur").catch(Je=>void 0))}}),ee=v(()=>{var He;return(He=O==null?void 0:O.statusIcon)!=null?He:!1}),j=v(()=>(h==null?void 0:h.validateState)||""),J=v(()=>j.value&&yv[j.value]),ie=v(()=>U.value?Kae:hae),Y=v(()=>[l.style]),re=v(()=>[_.inputStyle,G.value,{resize:_.resize}]),H=v(()=>ws(_.modelValue)?"":String(_.modelValue)),Q=v(()=>_.clearable&&!L.value&&!_.readonly&&!!H.value&&(V.value||b.value)),ae=v(()=>_.showPassword&&!L.value&&!_.readonly&&!!H.value&&(!!H.value||V.value)),ge=v(()=>_.showWordLimit&&!!_.maxlength&&(_.type==="text"||_.type==="textarea")&&!L.value&&!_.readonly&&!_.showPassword),Se=v(()=>H.value.length),pe=v(()=>!!ge.value&&Se.value>Number(_.maxlength)),We=v(()=>!!c.suffix||!!_.suffixIcon||Q.value||_.showPassword||ge.value||!!j.value&&ee.value),[be,Me]=nTe(m);Rs(A,He=>{if(Ae(),!ge.value||_.resize!=="both")return;const Je=He[0],{width:St}=Je.contentRect;P.value={right:`calc(100% - ${St+15+6}px)`}});const Ie=()=>{const{type:He,autosize:Je}=_;if(!(!ro||He!=="textarea"||!A.value))if(Je){const St=Zt(Je)?Je.minRows:void 0,Ot=Zt(Je)?Je.maxRows:void 0,Nt=Ik(A.value,St,Ot);G.value={overflowY:"hidden",...Nt},Lt(()=>{A.value.offsetHeight,G.value=Nt})}else G.value={minHeight:Ik(A.value).minHeight}},Ae=(He=>{let Je=!1;return()=>{var St;if(Je||!_.autosize)return;((St=A.value)==null?void 0:St.offsetParent)===null||(He(),Je=!0)}})(Ie),ke=()=>{const He=w.value,Je=_.formatter?_.formatter(H.value):H.value;!He||He.value===Je||(He.value=Je)},ve=async He=>{be();let{value:Je}=He.target;if(_.formatter&&(Je=_.parser?_.parser(Je):Je),!N.value){if(Je===H.value){ke();return}o(Xt,Je),o("input",Je),await Lt(),ke(),Me()}},Te=He=>{o("change",He.target.value)},Re=He=>{o("compositionstart",He),N.value=!0},Ue=He=>{var Je;o("compositionupdate",He);const St=(Je=He.target)==null?void 0:Je.value,Ot=St[St.length-1]||"";N.value=!$v(Ot)},Ye=He=>{o("compositionend",He),N.value&&(N.value=!1,ve(He))},De=()=>{U.value=!U.value,Xe()},Xe=async()=>{var He;await Lt(),(He=w.value)==null||He.focus()},Ke=()=>{var He;return(He=w.value)==null?void 0:He.blur()},Be=He=>{b.value=!1,o("mouseleave",He)},qe=He=>{b.value=!0,o("mouseenter",He)},xe=He=>{o("keydown",He)},Le=()=>{var He;(He=w.value)==null||He.select()},je=()=>{o(Xt,""),o("change",""),o("clear"),o("input","")};return Fe(()=>_.modelValue,()=>{var He;Lt(()=>Ie()),_.validateEvent&&((He=h==null?void 0:h.validate)==null||He.call(h,"change").catch(Je=>void 0))}),Fe(H,()=>ke()),Fe(()=>_.type,async()=>{await Lt(),ke(),Ie()}),Bt(()=>{!_.formatter&&_.parser,ke(),Lt(Ie)}),e({input:m,textarea:A,ref:w,textareaStyle:re,autosize:Ao(_,"autosize"),focus:Xe,blur:Ke,select:Le,clear:je,resizeTextarea:Ie}),(He,Je)=>yt((B(),se("div",Yt(M(T),{class:M(E),style:M(Y),role:He.containerRole,onMouseenter:qe,onMouseleave:Be}),[Ce(" input "),He.type!=="textarea"?(B(),se(ht,{key:0},[Ce(" prepend slot "),He.$slots.prepend?(B(),se("div",{key:0,class:k(M(p).be("group","prepend"))},[ye(He.$slots,"prepend")],2)):Ce("v-if",!0),te("div",{ref_key:"wrapperRef",ref:F,class:k(M(u))},[Ce(" prefix slot "),He.$slots.prefix||He.prefixIcon?(B(),se("span",{key:0,class:k(M(p).e("prefix"))},[te("span",{class:k(M(p).e("prefix-inner"))},[ye(He.$slots,"prefix"),He.prefixIcon?(B(),Ne(M(Et),{key:0,class:k(M(p).e("icon"))},{default:de(()=>[(B(),Ne(Kt(He.prefixIcon)))]),_:1},8,["class"])):Ce("v-if",!0)],2)],2)):Ce("v-if",!0),te("input",Yt({id:M(I),ref_key:"input",ref:m,class:M(p).e("inner")},M(d),{minlength:He.minlength,maxlength:He.maxlength,type:He.showPassword?U.value?"text":"password":He.type,disabled:M(L),readonly:He.readonly,autocomplete:He.autocomplete,tabindex:He.tabindex,"aria-label":He.label,placeholder:He.placeholder,style:He.inputStyle,form:He.form,autofocus:He.autofocus,onCompositionstart:Re,onCompositionupdate:Ue,onCompositionend:Ye,onInput:ve,onFocus:Je[0]||(Je[0]=(...St)=>M(W)&&M(W)(...St)),onBlur:Je[1]||(Je[1]=(...St)=>M(K)&&M(K)(...St)),onChange:Te,onKeydown:xe}),null,16,iue),Ce(" suffix slot "),M(We)?(B(),se("span",{key:1,class:k(M(p).e("suffix"))},[te("span",{class:k(M(p).e("suffix-inner"))},[!M(Q)||!M(ae)||!M(ge)?(B(),se(ht,{key:0},[ye(He.$slots,"suffix"),He.suffixIcon?(B(),Ne(M(Et),{key:0,class:k(M(p).e("icon"))},{default:de(()=>[(B(),Ne(Kt(He.suffixIcon)))]),_:1},8,["class"])):Ce("v-if",!0)],64)):Ce("v-if",!0),M(Q)?(B(),Ne(M(Et),{key:1,class:k([M(p).e("icon"),M(p).e("clear")]),onMousedown:Ct(M(Ro),["prevent"]),onClick:je},{default:de(()=>[ne(M(va))]),_:1},8,["class","onMousedown"])):Ce("v-if",!0),M(ae)?(B(),Ne(M(Et),{key:2,class:k([M(p).e("icon"),M(p).e("password")]),onClick:De},{default:de(()=>[(B(),Ne(Kt(M(ie))))]),_:1},8,["class"])):Ce("v-if",!0),M(ge)?(B(),se("span",{key:3,class:k(M(p).e("count"))},[te("span",{class:k(M(p).e("count-inner"))},Qe(M(Se))+" / "+Qe(He.maxlength),3)],2)):Ce("v-if",!0),M(j)&&M(J)&&M(ee)?(B(),Ne(M(Et),{key:4,class:k([M(p).e("icon"),M(p).e("validateIcon"),M(p).is("loading",M(j)==="validating")])},{default:de(()=>[(B(),Ne(Kt(M(J))))]),_:1},8,["class"])):Ce("v-if",!0)],2)],2)):Ce("v-if",!0)],2),Ce(" append slot "),He.$slots.append?(B(),se("div",{key:1,class:k(M(p).be("group","append"))},[ye(He.$slots,"append")],2)):Ce("v-if",!0)],64)):(B(),se(ht,{key:1},[Ce(" textarea "),te("textarea",Yt({id:M(I),ref_key:"textarea",ref:A,class:M(C).e("inner")},M(d),{tabindex:He.tabindex,disabled:M(L),readonly:He.readonly,autocomplete:He.autocomplete,style:M(re),"aria-label":He.label,placeholder:He.placeholder,form:He.form,autofocus:He.autofocus,onCompositionstart:Re,onCompositionupdate:Ue,onCompositionend:Ye,onInput:ve,onFocus:Je[2]||(Je[2]=(...St)=>M(W)&&M(W)(...St)),onBlur:Je[3]||(Je[3]=(...St)=>M(K)&&M(K)(...St)),onChange:Te,onKeydown:xe}),null,16,nue),M(ge)?(B(),se("span",{key:0,style:dt(P.value),class:k(M(p).e("count"))},Qe(M(Se))+" / "+Qe(He.maxlength),7)):Ce("v-if",!0)],64))],16,sue)),[[ao,He.type!=="hidden"]])}});var lue=tt(_ue,[["__file","input.vue"]]);const Ri=Vt(lue),SE=4,$3={vertical:{offset:"offsetHeight",scroll:"scrollTop",scrollSize:"scrollHeight",size:"height",key:"vertical",axis:"Y",client:"clientY",direction:"top"},horizontal:{offset:"offsetWidth",scroll:"scrollLeft",scrollSize:"scrollWidth",size:"width",key:"horizontal",axis:"X",client:"clientX",direction:"left"}},aue=({move:t,size:e,bar:o})=>({[o.size]:e,transform:`translate${o.axis}(${t}%)`}),B3=Symbol("scrollbarContextKey"),cue=et({vertical:Boolean,size:String,move:Number,ratio:{type:Number,required:!0},always:Boolean}),Tue="Thumb",Eue=Oe({__name:"thumb",props:cue,setup(t){const e=t,o=lt(B3),_=Ze("scrollbar");o||vs(Tue,"can not inject scrollbar context");const l=X(),c=X(),T=X({}),E=X(!1);let u=!1,d=!1,O=ro?document.onselectstart:null;const h=v(()=>$3[e.vertical?"vertical":"horizontal"]),I=v(()=>aue({size:e.size,move:e.move,bar:h.value})),S=v(()=>l.value[h.value.offset]**2/o.wrapElement[h.value.scrollSize]/e.ratio/c.value[h.value.offset]),L=P=>{var G;if(P.stopPropagation(),P.ctrlKey||[1,2].includes(P.button))return;(G=window.getSelection())==null||G.removeAllRanges(),C(P);const w=P.currentTarget;w&&(T.value[h.value.axis]=w[h.value.offset]-(P[h.value.client]-w.getBoundingClientRect()[h.value.direction]))},p=P=>{if(!c.value||!l.value||!o.wrapElement)return;const G=Math.abs(P.target.getBoundingClientRect()[h.value.direction]-P[h.value.client]),w=c.value[h.value.offset]/2,F=(G-w)*100*S.value/l.value[h.value.offset];o.wrapElement[h.value.scroll]=F*o.wrapElement[h.value.scrollSize]/100},C=P=>{P.stopImmediatePropagation(),u=!0,document.addEventListener("mousemove",m),document.addEventListener("mouseup",A),O=document.onselectstart,document.onselectstart=()=>!1},m=P=>{if(!l.value||!c.value||u===!1)return;const G=T.value[h.value.axis];if(!G)return;const w=(l.value.getBoundingClientRect()[h.value.direction]-P[h.value.client])*-1,F=c.value[h.value.offset]-G,V=(w-F)*100*S.value/l.value[h.value.offset];o.wrapElement[h.value.scroll]=V*o.wrapElement[h.value.scrollSize]/100},A=()=>{u=!1,T.value[h.value.axis]=0,document.removeEventListener("mousemove",m),document.removeEventListener("mouseup",A),U(),d&&(E.value=!1)},b=()=>{d=!1,E.value=!!e.size},N=()=>{d=!0,E.value=u};Do(()=>{U(),document.removeEventListener("mouseup",A)});const U=()=>{document.onselectstart!==O&&(document.onselectstart=O)};return Yo(Ao(o,"scrollbarElement"),"mousemove",b),Yo(Ao(o,"scrollbarElement"),"mouseleave",N),(P,G)=>(B(),Ne(Ns,{name:M(_).b("fade"),persisted:""},{default:de(()=>[yt(te("div",{ref_key:"instance",ref:l,class:k([M(_).e("bar"),M(_).is(M(h).key)]),onMousedown:p},[te("div",{ref_key:"thumb",ref:c,class:k(M(_).e("thumb")),style:dt(M(I)),onMousedown:L},null,38)],34),[[ao,P.always||E.value]])]),_:1},8,["name"]))}});var Sk=tt(Eue,[["__file","thumb.vue"]]);const uue=et({always:{type:Boolean,default:!0},width:String,height:String,ratioX:{type:Number,default:1},ratioY:{type:Number,default:1}}),gue=Oe({__name:"bar",props:uue,setup(t,{expose:e}){const o=t,_=X(0),l=X(0);return e({handleScroll:T=>{if(T){const E=T.offsetHeight-SE,u=T.offsetWidth-SE;l.value=T.scrollTop*100/E*o.ratioY,_.value=T.scrollLeft*100/u*o.ratioX}}}),(T,E)=>(B(),se(ht,null,[ne(Sk,{move:_.value,ratio:T.ratioX,size:T.width,always:T.always},null,8,["move","ratio","size","always"]),ne(Sk,{move:l.value,ratio:T.ratioY,size:T.height,vertical:"",always:T.always},null,8,["move","ratio","size","always"])],64))}});var due=tt(gue,[["__file","bar.vue"]]);const Oue=et({height:{type:[String,Number],default:""},maxHeight:{type:[String,Number],default:""},native:{type:Boolean,default:!1},wrapStyle:{type:me([String,Object,Array]),default:""},wrapClass:{type:[String,Array],default:""},viewClass:{type:[String,Array],default:""},viewStyle:{type:[String,Array,Object],default:""},noresize:Boolean,tag:{type:String,default:"div"},always:Boolean,minSize:{type:Number,default:20},id:String,role:String,ariaLabel:String,ariaOrientation:{type:String,values:["horizontal","vertical"]}}),hue={scroll:({scrollTop:t,scrollLeft:e})=>[t,e].every(mt)},Mue="ElScrollbar",Rue=Oe({name:Mue}),Iue=Oe({...Rue,props:Oue,emits:hue,setup(t,{expose:e,emit:o}){const _=t,l=Ze("scrollbar");let c,T;const E=X(),u=X(),d=X(),O=X("0"),h=X("0"),I=X(),S=X(1),L=X(1),p=v(()=>{const G={};return _.height&&(G.height=hs(_.height)),_.maxHeight&&(G.maxHeight=hs(_.maxHeight)),[_.wrapStyle,G]}),C=v(()=>[_.wrapClass,l.e("wrap"),{[l.em("wrap","hidden-default")]:!_.native}]),m=v(()=>[l.e("view"),_.viewClass]),A=()=>{var G;u.value&&((G=I.value)==null||G.handleScroll(u.value),o("scroll",{scrollTop:u.value.scrollTop,scrollLeft:u.value.scrollLeft}))};function b(G,w){Zt(G)?u.value.scrollTo(G):mt(G)&&mt(w)&&u.value.scrollTo(G,w)}const N=G=>{mt(G)&&(u.value.scrollTop=G)},U=G=>{mt(G)&&(u.value.scrollLeft=G)},P=()=>{if(!u.value)return;const G=u.value.offsetHeight-SE,w=u.value.offsetWidth-SE,F=G**2/u.value.scrollHeight,V=w**2/u.value.scrollWidth,W=Math.max(F,_.minSize),K=Math.max(V,_.minSize);S.value=F/(G-F)/(W/(G-W)),L.value=V/(w-V)/(K/(w-K)),h.value=W+SE<G?`${W}px`:"",O.value=K+SE<w?`${K}px`:""};return Fe(()=>_.noresize,G=>{G?(c==null||c(),T==null||T()):({stop:c}=Rs(d,P),T=Yo("resize",P))},{immediate:!0}),Fe(()=>[_.maxHeight,_.height],()=>{_.native||Lt(()=>{var G;P(),u.value&&((G=I.value)==null||G.handleScroll(u.value))})}),Jt(B3,Eo({scrollbarElement:E,wrapElement:u})),Bt(()=>{_.native||Lt(()=>{P()})}),_l(()=>P()),e({wrapRef:u,update:P,scrollTo:b,setScrollTop:N,setScrollLeft:U,handleScroll:A}),(G,w)=>(B(),se("div",{ref_key:"scrollbarRef",ref:E,class:k(M(l).b())},[te("div",{ref_key:"wrapRef",ref:u,class:k(M(C)),style:dt(M(p)),onScroll:A},[(B(),Ne(Kt(G.tag),{id:G.id,ref_key:"resizeRef",ref:d,class:k(M(m)),style:dt(G.viewStyle),role:G.role,"aria-label":G.ariaLabel,"aria-orientation":G.ariaOrientation},{default:de(()=>[ye(G.$slots,"default")]),_:3},8,["id","class","style","role","aria-label","aria-orientation"]))],38),G.native?Ce("v-if",!0):(B(),Ne(due,{key:0,ref_key:"barRef",ref:I,height:h.value,width:O.value,always:G.always,"ratio-x":L.value,"ratio-y":S.value},null,8,["height","width","always","ratio-x","ratio-y"]))],2))}});var Sue=tt(Iue,[["__file","scrollbar.vue"]]);const ul=Vt(Sue),Qv=Symbol("popper"),w3=Symbol("popperContent"),pue=["dialog","grid","group","listbox","menu","navigation","tooltip","tree"],G3=et({role:{type:String,values:pue,default:"tooltip"}}),Lue=Oe({name:"ElPopper",inheritAttrs:!1}),fue=Oe({...Lue,props:G3,setup(t,{expose:e}){const o=t,_=X(),l=X(),c=X(),T=X(),E=v(()=>o.role),u={triggerRef:_,popperInstanceRef:l,contentRef:c,referenceRef:T,role:E};return e(u),Jt(Qv,u),(d,O)=>ye(d.$slots,"default")}});var mue=tt(fue,[["__file","popper.vue"]]);const k3=et({arrowOffset:{type:Number,default:5}}),Cue=Oe({name:"ElPopperArrow",inheritAttrs:!1}),Aue=Oe({...Cue,props:k3,setup(t,{expose:e}){const o=t,_=Ze("popper"),{arrowOffset:l,arrowRef:c,arrowStyle:T}=lt(w3,void 0);return Fe(()=>o.arrowOffset,E=>{l.value=E}),Do(()=>{c.value=void 0}),e({arrowRef:c}),(E,u)=>(B(),se("span",{ref_key:"arrowRef",ref:c,class:k(M(_).e("arrow")),style:dt(M(T)),"data-popper-arrow":""},null,6))}});var bue=tt(Aue,[["__file","arrow.vue"]]);const Nue="ElOnlyChild",H3=Oe({name:Nue,setup(t,{slots:e,attrs:o}){var _;const l=lt(_3),c=Lce((_=l==null?void 0:l.setForwardRef)!=null?_:Ro);return()=>{var T;const E=(T=e.default)==null?void 0:T.call(e,o);if(!E||E.length>1)return null;const u=x3(E);return u?yt(Q_(u,o),[[c]]):null}}});function x3(t){if(!t)return null;const e=t;for(const o of e){if(Zt(o))switch(o.type){case Pi:continue;case Ru:case"svg":return pk(o);case ht:return x3(o.children);default:return o}return pk(o)}return null}function pk(t){const e=Ze("only-child");return ne("span",{class:e.e("content")},[t])}const F3=et({virtualRef:{type:me(Object)},virtualTriggering:Boolean,onMouseenter:{type:me(Function)},onMouseleave:{type:me(Function)},onClick:{type:me(Function)},onKeydown:{type:me(Function)},onFocus:{type:me(Function)},onBlur:{type:me(Function)},onContextmenu:{type:me(Function)},id:String,open:Boolean}),Pue=Oe({name:"ElPopperTrigger",inheritAttrs:!1}),vue=Oe({...Pue,props:F3,setup(t,{expose:e}){const o=t,{role:_,triggerRef:l}=lt(Qv,void 0);pce(l);const c=v(()=>E.value?o.id:void 0),T=v(()=>{if(_&&_.value==="tooltip")return o.open&&o.id?o.id:void 0}),E=v(()=>{if(_&&_.value!=="tooltip")return _.value}),u=v(()=>E.value?`${o.open}`:void 0);let d;return Bt(()=>{Fe(()=>o.virtualRef,O=>{O&&(l.value=qi(O))},{immediate:!0}),Fe(l,(O,h)=>{d==null||d(),d=void 0,zn(O)&&(["onMouseenter","onMouseleave","onClick","onKeydown","onFocus","onBlur","onContextmenu"].forEach(I=>{var S;const L=o[I];L&&(O.addEventListener(I.slice(2).toLowerCase(),L),(S=h==null?void 0:h.removeEventListener)==null||S.call(h,I.slice(2).toLowerCase(),L))}),d=Fe([c,T,E,u],I=>{["aria-controls","aria-describedby","aria-haspopup","aria-expanded"].forEach((S,L)=>{ws(I[L])?O.removeAttribute(S):O.setAttribute(S,I[L])})},{immediate:!0})),zn(h)&&["aria-controls","aria-describedby","aria-haspopup","aria-expanded"].forEach(I=>h.removeAttribute(I))},{immediate:!0})}),Do(()=>{d==null||d(),d=void 0}),e({triggerRef:l}),(O,h)=>O.virtualTriggering?Ce("v-if",!0):(B(),Ne(M(H3),Yt({key:0},O.$attrs,{"aria-controls":M(c),"aria-describedby":M(T),"aria-expanded":M(u),"aria-haspopup":M(E)}),{default:de(()=>[ye(O.$slots,"default")]),_:3},16,["aria-controls","aria-describedby","aria-expanded","aria-haspopup"]))}});var Due=tt(vue,[["__file","trigger.vue"]]);const WC="focus-trap.focus-after-trapped",XC="focus-trap.focus-after-released",Uue="focus-trap.focusout-prevented",Lk={cancelable:!0,bubbles:!1},yue={cancelable:!0,bubbles:!1},fk="focusAfterTrapped",mk="focusAfterReleased",Jv=Symbol("elFocusTrap"),eD=X(),XS=X(0),tD=X(0);let XM=0;const V3=t=>{const e=[],o=document.createTreeWalker(t,NodeFilter.SHOW_ELEMENT,{acceptNode:_=>{const l=_.tagName==="INPUT"&&_.type==="hidden";return _.disabled||_.hidden||l?NodeFilter.FILTER_SKIP:_.tabIndex>=0||_===document.activeElement?NodeFilter.FILTER_ACCEPT:NodeFilter.FILTER_SKIP}});for(;o.nextNode();)e.push(o.currentNode);return e},Ck=(t,e)=>{for(const o of t)if(!$ue(o,e))return o},$ue=(t,e)=>{if(getComputedStyle(t).visibility==="hidden")return!0;for(;t;){if(e&&t===e)return!1;if(getComputedStyle(t).display==="none")return!0;t=t.parentElement}return!1},Bue=t=>{const e=V3(t),o=Ck(e,t),_=Ck(e.reverse(),t);return[o,_]},wue=t=>t instanceof HTMLInputElement&&"select"in t,Hl=(t,e)=>{if(t&&t.focus){const o=document.activeElement;t.focus({preventScroll:!0}),tD.value=window.performance.now(),t!==o&&wue(t)&&e&&t.select()}};function Ak(t,e){const o=[...t],_=t.indexOf(e);return _!==-1&&o.splice(_,1),o}const Gue=()=>{let t=[];return{push:_=>{const l=t[0];l&&_!==l&&l.pause(),t=Ak(t,_),t.unshift(_)},remove:_=>{var l,c;t=Ak(t,_),(c=(l=t[0])==null?void 0:l.resume)==null||c.call(l)}}},kue=(t,e=!1)=>{const o=document.activeElement;for(const _ of t)if(Hl(_,e),document.activeElement!==o)return},bk=Gue(),Hue=()=>XS.value>tD.value,YM=()=>{eD.value="pointer",XS.value=window.performance.now()},Nk=()=>{eD.value="keyboard",XS.value=window.performance.now()},xue=()=>(Bt(()=>{XM===0&&(document.addEventListener("mousedown",YM),document.addEventListener("touchstart",YM),document.addEventListener("keydown",Nk)),XM++}),Do(()=>{XM--,XM<=0&&(document.removeEventListener("mousedown",YM),document.removeEventListener("touchstart",YM),document.removeEventListener("keydown",Nk))}),{focusReason:eD,lastUserFocusTimestamp:XS,lastAutomatedFocusTimestamp:tD}),KM=t=>new CustomEvent(Uue,{...yue,detail:t}),Fue=Oe({name:"ElFocusTrap",inheritAttrs:!1,props:{loop:Boolean,trapped:Boolean,focusTrapEl:Object,focusStartEl:{type:[Object,String],default:"first"}},emits:[fk,mk,"focusin","focusout","focusout-prevented","release-requested"],setup(t,{emit:e}){const o=X();let _,l;const{focusReason:c}=xue();Mce(L=>{t.trapped&&!T.paused&&e("release-requested",L)});const T={paused:!1,pause(){this.paused=!0},resume(){this.paused=!1}},E=L=>{if(!t.loop&&!t.trapped||T.paused)return;const{key:p,altKey:C,ctrlKey:m,metaKey:A,currentTarget:b,shiftKey:N}=L,{loop:U}=t,P=p===Rt.tab&&!C&&!m&&!A,G=document.activeElement;if(P&&G){const w=b,[F,V]=Bue(w);if(F&&V){if(!N&&G===V){const K=KM({focusReason:c.value});e("focusout-prevented",K),K.defaultPrevented||(L.preventDefault(),U&&Hl(F,!0))}else if(N&&[F,w].includes(G)){const K=KM({focusReason:c.value});e("focusout-prevented",K),K.defaultPrevented||(L.preventDefault(),U&&Hl(V,!0))}}else if(G===w){const K=KM({focusReason:c.value});e("focusout-prevented",K),K.defaultPrevented||L.preventDefault()}}};Jt(Jv,{focusTrapRef:o,onKeydown:E}),Fe(()=>t.focusTrapEl,L=>{L&&(o.value=L)},{immediate:!0}),Fe([o],([L],[p])=>{L&&(L.addEventListener("keydown",E),L.addEventListener("focusin",O),L.addEventListener("focusout",h)),p&&(p.removeEventListener("keydown",E),p.removeEventListener("focusin",O),p.removeEventListener("focusout",h))});const u=L=>{e(fk,L)},d=L=>e(mk,L),O=L=>{const p=M(o);if(!p)return;const C=L.target,m=L.relatedTarget,A=C&&p.contains(C);t.trapped||m&&p.contains(m)||(_=m),A&&e("focusin",L),!T.paused&&t.trapped&&(A?l=C:Hl(l,!0))},h=L=>{const p=M(o);if(!(T.paused||!p))if(t.trapped){const C=L.relatedTarget;!ws(C)&&!p.contains(C)&&setTimeout(()=>{if(!T.paused&&t.trapped){const m=KM({focusReason:c.value});e("focusout-prevented",m),m.defaultPrevented||Hl(l,!0)}},0)}else{const C=L.target;C&&p.contains(C)||e("focusout",L)}};async function I(){await Lt();const L=M(o);if(L){bk.push(T);const p=L.contains(document.activeElement)?_:document.activeElement;if(_=p,!L.contains(p)){const m=new Event(WC,Lk);L.addEventListener(WC,u),L.dispatchEvent(m),m.defaultPrevented||Lt(()=>{let A=t.focusStartEl;vt(A)||(Hl(A),document.activeElement!==A&&(A="first")),A==="first"&&kue(V3(L),!0),(document.activeElement===p||A==="container")&&Hl(L)})}}}function S(){const L=M(o);if(L){L.removeEventListener(WC,u);const p=new CustomEvent(XC,{...Lk,detail:{focusReason:c.value}});L.addEventListener(XC,d),L.dispatchEvent(p),!p.defaultPrevented&&(c.value=="keyboard"||!Hue()||L.contains(document.activeElement))&&Hl(_??document.body),L.removeEventListener(XC,d),bk.remove(T)}}return Bt(()=>{t.trapped&&I(),Fe(()=>t.trapped,L=>{L?I():S()})}),Do(()=>{t.trapped&&S()}),{onKeydown:E}}});function Vue(t,e,o,_,l,c){return ye(t.$slots,"default",{handleKeydown:t.onKeydown})}var PO=tt(Fue,[["render",Vue],["__file","focus-trap.vue"]]);const Wue=["fixed","absolute"],Xue=et({boundariesPadding:{type:Number,default:0},fallbackPlacements:{type:me(Array),default:void 0},gpuAcceleration:{type:Boolean,default:!0},offset:{type:Number,default:12},placement:{type:String,values:tT,default:"bottom"},popperOptions:{type:me(Object),default:()=>({})},strategy:{type:String,values:Wue,default:"absolute"}}),W3=et({...Xue,id:String,style:{type:me([String,Array,Object])},className:{type:me([String,Array,Object])},effect:{type:String,default:"dark"},visible:Boolean,enterable:{type:Boolean,default:!0},pure:Boolean,focusOnShow:{type:Boolean,default:!1},trapping:{type:Boolean,default:!1},popperClass:{type:me([String,Array,Object])},popperStyle:{type:me([String,Array,Object])},referenceEl:{type:me(Object)},triggerTargetEl:{type:me(Object)},stopPopperMouseEvent:{type:Boolean,default:!0},ariaLabel:{type:String,default:void 0},virtualTriggering:Boolean,zIndex:Number}),Yue={mouseenter:t=>t instanceof MouseEvent,mouseleave:t=>t instanceof MouseEvent,focus:()=>!0,blur:()=>!0,close:()=>!0},Kue=(t,e=[])=>{const{placement:o,strategy:_,popperOptions:l}=t,c={placement:o,strategy:_,...l,modifiers:[...Zue(t),...e]};return jue(c,l==null?void 0:l.modifiers),c},zue=t=>{if(ro)return qi(t)};function Zue(t){const{offset:e,gpuAcceleration:o,fallbackPlacements:_}=t;return[{name:"offset",options:{offset:[0,e??12]}},{name:"preventOverflow",options:{padding:{top:2,bottom:2,left:5,right:5}}},{name:"flip",options:{padding:5,fallbackPlacements:_}},{name:"computeStyles",options:{gpuAcceleration:o}}]}function jue(t,e){e&&(t.modifiers=[...t.modifiers,...e??[]])}const que=0,Que=t=>{const{popperInstanceRef:e,contentRef:o,triggerRef:_,role:l}=lt(Qv,void 0),c=X(),T=X(),E=v(()=>({name:"eventListeners",enabled:!!t.visible})),u=v(()=>{var m;const A=M(c),b=(m=M(T))!=null?m:que;return{name:"arrow",enabled:!vX(A),options:{element:A,padding:b}}}),d=v(()=>({onFirstUpdate:()=>{L()},...Kue(t,[M(u),M(E)])})),O=v(()=>zue(t.referenceEl)||M(_)),{attributes:h,state:I,styles:S,update:L,forceUpdate:p,instanceRef:C}=gce(O,o,d);return Fe(C,m=>e.value=m),Bt(()=>{Fe(()=>{var m;return(m=M(O))==null?void 0:m.getBoundingClientRect()},()=>{L()})}),{attributes:h,arrowRef:c,contentRef:o,instanceRef:C,state:I,styles:S,role:l,forceUpdate:p,update:L}},Jue=(t,{attributes:e,styles:o,role:_})=>{const{nextZIndex:l}=rT(),c=Ze("popper"),T=v(()=>M(e).popper),E=X(mt(t.zIndex)?t.zIndex:l()),u=v(()=>[c.b(),c.is("pure",t.pure),c.is(t.effect),t.popperClass]),d=v(()=>[{zIndex:M(E)},M(o).popper,t.popperStyle||{}]),O=v(()=>_.value==="dialog"?"false":void 0),h=v(()=>M(o).arrow||{});return{ariaModal:O,arrowStyle:h,contentAttrs:T,contentClass:u,contentStyle:d,contentZIndex:E,updateZIndex:()=>{E.value=mt(t.zIndex)?t.zIndex:l()}}},ege=(t,e)=>{const o=X(!1),_=X();return{focusStartRef:_,trapped:o,onFocusAfterReleased:d=>{var O;((O=d.detail)==null?void 0:O.focusReason)!=="pointer"&&(_.value="first",e("blur"))},onFocusAfterTrapped:()=>{e("focus")},onFocusInTrap:d=>{t.visible&&!o.value&&(d.target&&(_.value=d.target),o.value=!0)},onFocusoutPrevented:d=>{t.trapping||(d.detail.focusReason==="pointer"&&d.preventDefault(),o.value=!1)},onReleaseRequested:()=>{o.value=!1,e("close")}}},tge=Oe({name:"ElPopperContent"}),oge=Oe({...tge,props:W3,emits:Yue,setup(t,{expose:e,emit:o}){const _=t,{focusStartRef:l,trapped:c,onFocusAfterReleased:T,onFocusAfterTrapped:E,onFocusInTrap:u,onFocusoutPrevented:d,onReleaseRequested:O}=ege(_,o),{attributes:h,arrowRef:I,contentRef:S,styles:L,instanceRef:p,role:C,update:m}=Que(_),{ariaModal:A,arrowStyle:b,contentAttrs:N,contentClass:U,contentStyle:P,updateZIndex:G}=Jue(_,{styles:L,attributes:h,role:C}),w=lt(d_,void 0),F=X();Jt(w3,{arrowStyle:b,arrowRef:I,arrowOffset:F}),w&&(w.addInputId||w.removeInputId)&&Jt(d_,{...w,addInputId:Ro,removeInputId:Ro});let V;const W=(ee=!0)=>{m(),ee&&G()},K=()=>{W(!1),_.visible&&_.focusOnShow?c.value=!0:_.visible===!1&&(c.value=!1)};return Bt(()=>{Fe(()=>_.triggerTargetEl,(ee,j)=>{V==null||V(),V=void 0;const J=M(ee||S.value),ie=M(j||S.value);zn(J)&&(V=Fe([C,()=>_.ariaLabel,A,()=>_.id],Y=>{["role","aria-label","aria-modal","id"].forEach((re,H)=>{ws(Y[H])?J.removeAttribute(re):J.setAttribute(re,Y[H])})},{immediate:!0})),ie!==J&&zn(ie)&&["role","aria-label","aria-modal","id"].forEach(Y=>{ie.removeAttribute(Y)})},{immediate:!0}),Fe(()=>_.visible,K,{immediate:!0})}),Do(()=>{V==null||V(),V=void 0}),e({popperContentRef:S,popperInstanceRef:p,updatePopper:W,contentStyle:P}),(ee,j)=>(B(),se("div",Yt({ref_key:"contentRef",ref:S},M(N),{style:M(P),class:M(U),tabindex:"-1",onMouseenter:j[0]||(j[0]=J=>ee.$emit("mouseenter",J)),onMouseleave:j[1]||(j[1]=J=>ee.$emit("mouseleave",J))}),[ne(M(PO),{trapped:M(c),"trap-on-focus-in":!0,"focus-trap-el":M(S),"focus-start-el":M(l),onFocusAfterTrapped:M(E),onFocusAfterReleased:M(T),onFocusin:M(u),onFocusoutPrevented:M(d),onReleaseRequested:M(O)},{default:de(()=>[ye(ee.$slots,"default")]),_:3},8,["trapped","focus-trap-el","focus-start-el","onFocusAfterTrapped","onFocusAfterReleased","onFocusin","onFocusoutPrevented","onReleaseRequested"])],16))}});var sge=tt(oge,[["__file","content.vue"]]);const X3=Vt(mue),YS=Symbol("elTooltip"),Zs=et({...Sce,...W3,appendTo:{type:me([String,Object])},content:{type:String,default:""},rawContent:{type:Boolean,default:!1},persistent:Boolean,ariaLabel:String,visible:{type:me(Boolean),default:null},transition:String,teleported:{type:Boolean,default:!0},disabled:Boolean}),Vd=et({...F3,disabled:Boolean,trigger:{type:me([String,Array]),default:"hover"},triggerKeys:{type:me(Array),default:()=>[Rt.enter,Rt.space]}}),{useModelToggleProps:ige,useModelToggleEmits:nge,useModelToggle:rge}=o3("visible"),_ge=et({...G3,...ige,...Zs,...Vd,...k3,showArrow:{type:Boolean,default:!0}}),lge=[...nge,"before-show","before-hide","show","hide","open","close"],age=(t,e)=>rt(t)?t.includes(e):t===e,_E=(t,e,o)=>_=>{age(M(t),e)&&o(_)},cge=Oe({name:"ElTooltipTrigger"}),Tge=Oe({...cge,props:Vd,setup(t,{expose:e}){const o=t,_=Ze("tooltip"),{controlled:l,id:c,open:T,onOpen:E,onClose:u,onToggle:d}=lt(YS,void 0),O=X(null),h=()=>{if(M(l)||o.disabled)return!0},I=Ao(o,"trigger"),S=ls(h,_E(I,"hover",E)),L=ls(h,_E(I,"hover",u)),p=ls(h,_E(I,"click",N=>{N.button===0&&d(N)})),C=ls(h,_E(I,"focus",E)),m=ls(h,_E(I,"focus",u)),A=ls(h,_E(I,"contextmenu",N=>{N.preventDefault(),d(N)})),b=ls(h,N=>{const{code:U}=N;o.triggerKeys.includes(U)&&(N.preventDefault(),d(N))});return e({triggerRef:O}),(N,U)=>(B(),Ne(M(Due),{id:M(c),"virtual-ref":N.virtualRef,open:M(T),"virtual-triggering":N.virtualTriggering,class:k(M(_).e("trigger")),onBlur:M(m),onClick:M(p),onContextmenu:M(A),onFocus:M(C),onMouseenter:M(S),onMouseleave:M(L),onKeydown:M(b)},{default:de(()=>[ye(N.$slots,"default")]),_:3},8,["id","virtual-ref","open","virtual-triggering","class","onBlur","onClick","onContextmenu","onFocus","onMouseenter","onMouseleave","onKeydown"]))}});var Ege=tt(Tge,[["__file","trigger.vue"]]);const uge=Oe({name:"ElTooltipContent",inheritAttrs:!1}),gge=Oe({...uge,props:Zs,setup(t,{expose:e}){const o=t,{selector:_}=n3(),l=Ze("tooltip"),c=X(null),T=X(!1),{controlled:E,id:u,open:d,trigger:O,onClose:h,onOpen:I,onShow:S,onHide:L,onBeforeShow:p,onBeforeHide:C}=lt(YS,void 0),m=v(()=>o.transition||`${l.namespace.value}-fade-in-linear`),A=v(()=>o.persistent);Do(()=>{T.value=!0});const b=v(()=>M(A)?!0:M(d)),N=v(()=>o.disabled?!1:M(d)),U=v(()=>o.appendTo||_.value),P=v(()=>{var Y;return(Y=o.style)!=null?Y:{}}),G=v(()=>!M(d)),w=()=>{L()},F=()=>{if(M(E))return!0},V=ls(F,()=>{o.enterable&&M(O)==="hover"&&I()}),W=ls(F,()=>{M(O)==="hover"&&h()}),K=()=>{var Y,re;(re=(Y=c.value)==null?void 0:Y.updatePopper)==null||re.call(Y),p==null||p()},ee=()=>{C==null||C()},j=()=>{S(),ie=fv(v(()=>{var Y;return(Y=c.value)==null?void 0:Y.popperContentRef}),()=>{if(M(E))return;M(O)!=="hover"&&h()})},J=()=>{o.virtualTriggering||h()};let ie;return Fe(()=>M(d),Y=>{Y||ie==null||ie()},{flush:"post"}),Fe(()=>o.content,()=>{var Y,re;(re=(Y=c.value)==null?void 0:Y.updatePopper)==null||re.call(Y)}),e({contentRef:c}),(Y,re)=>(B(),Ne(Mu,{disabled:!Y.teleported,to:M(U)},[ne(Ns,{name:M(m),onAfterLeave:w,onBeforeEnter:K,onAfterEnter:j,onBeforeLeave:ee},{default:de(()=>[M(b)?yt((B(),Ne(M(sge),Yt({key:0,id:M(u),ref_key:"contentRef",ref:c},Y.$attrs,{"aria-label":Y.ariaLabel,"aria-hidden":M(G),"boundaries-padding":Y.boundariesPadding,"fallback-placements":Y.fallbackPlacements,"gpu-acceleration":Y.gpuAcceleration,offset:Y.offset,placement:Y.placement,"popper-options":Y.popperOptions,strategy:Y.strategy,effect:Y.effect,enterable:Y.enterable,pure:Y.pure,"popper-class":Y.popperClass,"popper-style":[Y.popperStyle,M(P)],"reference-el":Y.referenceEl,"trigger-target-el":Y.triggerTargetEl,visible:M(N),"z-index":Y.zIndex,onMouseenter:M(V),onMouseleave:M(W),onBlur:J,onClose:M(h)}),{default:de(()=>[T.value?Ce("v-if",!0):ye(Y.$slots,"default",{key:0})]),_:3},16,["id","aria-label","aria-hidden","boundaries-padding","fallback-placements","gpu-acceleration","offset","placement","popper-options","strategy","effect","enterable","pure","popper-class","popper-style","reference-el","trigger-target-el","visible","z-index","onMouseenter","onMouseleave","onClose"])),[[ao,M(N)]]):Ce("v-if",!0)]),_:3},8,["name"])],8,["disabled","to"]))}});var dge=tt(gge,[["__file","content.vue"]]);const Oge=["innerHTML"],hge={key:1},Mge=Oe({name:"ElTooltip"}),Rge=Oe({...Mge,props:_ge,emits:lge,setup(t,{expose:e,emit:o}){const _=t;Ice();const l=rn(),c=X(),T=X(),E=()=>{var m;const A=M(c);A&&((m=A.popperInstanceRef)==null||m.update())},u=X(!1),d=X(),{show:O,hide:h,hasUpdateHandler:I}=rge({indicator:u,toggleReason:d}),{onOpen:S,onClose:L}=r3({showAfter:Ao(_,"showAfter"),hideAfter:Ao(_,"hideAfter"),autoClose:Ao(_,"autoClose"),open:O,close:h}),p=v(()=>Ss(_.visible)&&!I.value);Jt(YS,{controlled:p,id:l,open:hu(u),trigger:Ao(_,"trigger"),onOpen:m=>{S(m)},onClose:m=>{L(m)},onToggle:m=>{M(u)?L(m):S(m)},onShow:()=>{o("show",d.value)},onHide:()=>{o("hide",d.value)},onBeforeShow:()=>{o("before-show",d.value)},onBeforeHide:()=>{o("before-hide",d.value)},updatePopper:E}),Fe(()=>_.disabled,m=>{m&&u.value&&(u.value=!1)});const C=m=>{var A,b;const N=(b=(A=T.value)==null?void 0:A.contentRef)==null?void 0:b.popperContentRef,U=(m==null?void 0:m.relatedTarget)||document.activeElement;return N&&N.contains(U)};return Xx(()=>u.value&&h()),e({popperRef:c,contentRef:T,isFocusInsideContent:C,updatePopper:E,onOpen:S,onClose:L,hide:h}),(m,A)=>(B(),Ne(M(X3),{ref_key:"popperRef",ref:c,role:m.role},{default:de(()=>[ne(Ege,{disabled:m.disabled,trigger:m.trigger,"trigger-keys":m.triggerKeys,"virtual-ref":m.virtualRef,"virtual-triggering":m.virtualTriggering},{default:de(()=>[m.$slots.default?ye(m.$slots,"default",{key:0}):Ce("v-if",!0)]),_:3},8,["disabled","trigger","trigger-keys","virtual-ref","virtual-triggering"]),ne(dge,{ref_key:"contentRef",ref:T,"aria-label":m.ariaLabel,"boundaries-padding":m.boundariesPadding,content:m.content,disabled:m.disabled,effect:m.effect,enterable:m.enterable,"fallback-placements":m.fallbackPlacements,"hide-after":m.hideAfter,"gpu-acceleration":m.gpuAcceleration,offset:m.offset,persistent:m.persistent,"popper-class":m.popperClass,"popper-style":m.popperStyle,placement:m.placement,"popper-options":m.popperOptions,pure:m.pure,"raw-content":m.rawContent,"reference-el":m.referenceEl,"trigger-target-el":m.triggerTargetEl,"show-after":m.showAfter,strategy:m.strategy,teleported:m.teleported,transition:m.transition,"virtual-triggering":m.virtualTriggering,"z-index":m.zIndex,"append-to":m.appendTo},{default:de(()=>[ye(m.$slots,"content",{},()=>[m.rawContent?(B(),se("span",{key:0,innerHTML:m.content},null,8,Oge)):(B(),se("span",hge,Qe(m.content),1))]),m.showArrow?(B(),Ne(M(bue),{key:0,"arrow-offset":m.arrowOffset},null,8,["arrow-offset"])):Ce("v-if",!0)]),_:3},8,["aria-label","boundaries-padding","content","disabled","effect","enterable","fallback-placements","hide-after","gpu-acceleration","offset","persistent","popper-class","popper-style","placement","popper-options","pure","raw-content","reference-el","trigger-target-el","show-after","strategy","teleported","transition","virtual-triggering","z-index","append-to"])]),_:3},8,["role"]))}});var Ige=tt(Rge,[["__file","tooltip.vue"]]);const wi=Vt(Ige),Sge=et({valueKey:{type:String,default:"value"},modelValue:{type:[String,Number],default:""},debounce:{type:Number,default:300},placement:{type:me(String),values:["top","top-start","top-end","bottom","bottom-start","bottom-end"],default:"bottom-start"},fetchSuggestions:{type:me([Function,Array]),default:Ro},popperClass:{type:String,default:""},triggerOnFocus:{type:Boolean,default:!0},selectWhenUnmatched:{type:Boolean,default:!1},hideLoading:{type:Boolean,default:!1},label:{type:String},teleported:Zs.teleported,highlightFirstItem:{type:Boolean,default:!1},fitInputWidth:{type:Boolean,default:!1},clearable:{type:Boolean,default:!1},disabled:{type:Boolean,default:!1},name:String}),pge={[Xt]:t=>vt(t),[yi]:t=>vt(t),[Vo]:t=>vt(t),focus:t=>t instanceof FocusEvent,blur:t=>t instanceof FocusEvent,clear:()=>!0,select:t=>Zt(t)},Lge=["aria-expanded","aria-owns"],fge={key:0},mge=["id","aria-selected","onClick"],Y3="ElAutocomplete",Cge=Oe({name:Y3,inheritAttrs:!1}),Age=Oe({...Cge,props:Sge,emits:pge,setup(t,{expose:e,emit:o}){const _=t,l=Bv(),c=Jc(),T=_n(),E=Ze("autocomplete"),u=X(),d=X(),O=X(),h=X();let I=!1,S=!1;const L=X([]),p=X(-1),C=X(""),m=X(!1),A=X(!1),b=X(!1),N=v(()=>E.b(String(wS()))),U=v(()=>c.style),P=v(()=>(L.value.length>0||b.value)&&m.value),G=v(()=>!_.hideLoading&&b.value),w=v(()=>u.value?Array.from(u.value.$el.querySelectorAll("input")):[]),F=()=>{P.value&&(C.value=`${u.value.$el.offsetWidth}px`)},V=()=>{p.value=-1},K=nn(async be=>{if(A.value)return;const Me=Ie=>{b.value=!1,!A.value&&(rt(Ie)?(L.value=Ie,p.value=_.highlightFirstItem?0:-1):vs(Y3,"autocomplete suggestions must be an array"))};if(b.value=!0,rt(_.fetchSuggestions))Me(_.fetchSuggestions);else{const Ie=await _.fetchSuggestions(be,Me);rt(Ie)&&Me(Ie)}},_.debounce),ee=be=>{const Me=!!be;if(o(yi,be),o(Xt,be),A.value=!1,m.value||(m.value=Me),!_.triggerOnFocus&&!be){A.value=!0,L.value=[];return}K(be)},j=be=>{var Me;T.value||(((Me=be.target)==null?void 0:Me.tagName)!=="INPUT"||w.value.includes(document.activeElement))&&(m.value=!0)},J=be=>{o(Vo,be)},ie=be=>{S?S=!1:(m.value=!0,o("focus",be),_.triggerOnFocus&&!I&&K(String(_.modelValue)))},Y=be=>{setTimeout(()=>{var Me;if((Me=O.value)!=null&&Me.isFocusInsideContent()){S=!0;return}m.value&&ae(),o("blur",be)})},re=()=>{m.value=!1,o(Xt,""),o("clear")},H=async()=>{P.value&&p.value>=0&&p.value<L.value.length?pe(L.value[p.value]):_.selectWhenUnmatched&&(o("select",{value:_.modelValue}),L.value=[],p.value=-1)},Q=be=>{P.value&&(be.preventDefault(),be.stopPropagation(),ae())},ae=()=>{m.value=!1},ge=()=>{var be;(be=u.value)==null||be.focus()},Se=()=>{var be;(be=u.value)==null||be.blur()},pe=async be=>{o(yi,be[_.valueKey]),o(Xt,be[_.valueKey]),o("select",be),L.value=[],p.value=-1},We=be=>{if(!P.value||b.value)return;if(be<0){p.value=-1;return}be>=L.value.length&&(be=L.value.length-1);const Me=d.value.querySelector(`.${E.be("suggestion","wrap")}`),Pe=Me.querySelectorAll(`.${E.be("suggestion","list")} li`)[be],Ae=Me.scrollTop,{offsetTop:ke,scrollHeight:ve}=Pe;ke+ve>Ae+Me.clientHeight&&(Me.scrollTop+=ve),ke<Ae&&(Me.scrollTop-=ve),p.value=be,u.value.ref.setAttribute("aria-activedescendant",`${N.value}-item-${p.value}`)};return fv(h,()=>{P.value&&ae()}),Bt(()=>{u.value.ref.setAttribute("role","textbox"),u.value.ref.setAttribute("aria-autocomplete","list"),u.value.ref.setAttribute("aria-controls","id"),u.value.ref.setAttribute("aria-activedescendant",`${N.value}-item-${p.value}`),I=u.value.ref.hasAttribute("readonly")}),e({highlightedIndex:p,activated:m,loading:b,inputRef:u,popperRef:O,suggestions:L,handleSelect:pe,handleKeyEnter:H,focus:ge,blur:Se,close:ae,highlight:We}),(be,Me)=>(B(),Ne(M(wi),{ref_key:"popperRef",ref:O,visible:M(P),placement:be.placement,"fallback-placements":["bottom-start","top-start"],"popper-class":[M(E).e("popper"),be.popperClass],teleported:be.teleported,"gpu-acceleration":!1,pure:"","manual-mode":"",effect:"light",trigger:"click",transition:`${M(E).namespace.value}-zoom-in-top`,persistent:"",role:"listbox",onBeforeShow:F,onHide:V},{content:de(()=>[te("div",{ref_key:"regionRef",ref:d,class:k([M(E).b("suggestion"),M(E).is("loading",M(G))]),style:dt({[be.fitInputWidth?"width":"minWidth"]:C.value,outline:"none"}),role:"region"},[ne(M(ul),{id:M(N),tag:"ul","wrap-class":M(E).be("suggestion","wrap"),"view-class":M(E).be("suggestion","list"),role:"listbox"},{default:de(()=>[M(G)?(B(),se("li",fge,[ye(be.$slots,"loading",{},()=>[ne(M(Et),{class:k(M(E).is("loading"))},{default:de(()=>[ne(M(Da))]),_:1},8,["class"])])])):(B(!0),se(ht,{key:1},oo(L.value,(Ie,Pe)=>(B(),se("li",{id:`${M(N)}-item-${Pe}`,key:Pe,class:k({highlighted:p.value===Pe}),role:"option","aria-selected":p.value===Pe,onClick:Ae=>pe(Ie)},[ye(be.$slots,"default",{item:Ie},()=>[qt(Qe(Ie[be.valueKey]),1)])],10,mge))),128))]),_:3},8,["id","wrap-class","view-class"])],6)]),default:de(()=>[te("div",{ref_key:"listboxRef",ref:h,class:k([M(E).b(),be.$attrs.class]),style:dt(M(U)),role:"combobox","aria-haspopup":"listbox","aria-expanded":M(P),"aria-owns":M(N)},[ne(M(Ri),Yt({ref_key:"inputRef",ref:u},M(l),{clearable:be.clearable,disabled:M(T),name:be.name,"model-value":be.modelValue,onInput:ee,onChange:J,onFocus:ie,onBlur:Y,onClear:re,onKeydown:[Me[0]||(Me[0]=So(Ct(Ie=>We(p.value-1),["prevent"]),["up"])),Me[1]||(Me[1]=So(Ct(Ie=>We(p.value+1),["prevent"]),["down"])),So(H,["enter"]),So(ae,["tab"]),So(Q,["esc"])],onMousedown:j}),da({_:2},[be.$slots.prepend?{name:"prepend",fn:de(()=>[ye(be.$slots,"prepend")])}:void 0,be.$slots.append?{name:"append",fn:de(()=>[ye(be.$slots,"append")])}:void 0,be.$slots.prefix?{name:"prefix",fn:de(()=>[ye(be.$slots,"prefix")])}:void 0,be.$slots.suffix?{name:"suffix",fn:de(()=>[ye(be.$slots,"suffix")])}:void 0]),1040,["clearable","disabled","name","model-value","onKeydown"])],14,Lge)]),_:3},8,["visible","placement","popper-class","teleported","transition"]))}});var bge=tt(Age,[["__file","autocomplete.vue"]]);const Nge=Vt(bge),Pge=et({size:{type:[Number,String],values:R_,default:"",validator:t=>mt(t)},shape:{type:String,values:["circle","square"],default:"circle"},icon:{type:Lo},src:{type:String,default:""},alt:String,srcSet:String,fit:{type:me(String),default:"cover"}}),vge={error:t=>t instanceof Event},Dge=["src","alt","srcset"],Uge=Oe({name:"ElAvatar"}),yge=Oe({...Uge,props:Pge,emits:vge,setup(t,{emit:e}){const o=t,_=Ze("avatar"),l=X(!1),c=v(()=>{const{size:d,icon:O,shape:h}=o,I=[_.b()];return vt(d)&&I.push(_.m(d)),O&&I.push(_.m("icon")),h&&I.push(_.m(h)),I}),T=v(()=>{const{size:d}=o;return mt(d)?_.cssVarBlock({size:hs(d)||""}):void 0}),E=v(()=>({objectFit:o.fit}));Fe(()=>o.src,()=>l.value=!1);function u(d){l.value=!0,e("error",d)}return(d,O)=>(B(),se("span",{class:k(M(c)),style:dt(M(T))},[(d.src||d.srcSet)&&!l.value?(B(),se("img",{key:0,src:d.src,alt:d.alt,srcset:d.srcSet,style:dt(M(E)),onError:u},null,44,Dge)):d.icon?(B(),Ne(M(Et),{key:1},{default:de(()=>[(B(),Ne(Kt(d.icon)))]),_:1})):ye(d.$slots,"default",{key:2})],6))}});var $ge=tt(yge,[["__file","avatar.vue"]]);const Bge=Vt($ge),wge={visibilityHeight:{type:Number,default:200},target:{type:String,default:""},right:{type:Number,default:40},bottom:{type:Number,default:40}},Gge={click:t=>t instanceof MouseEvent},kge=(t,e,o)=>{const _=mo(),l=mo(),c=X(!1),T=()=>{_.value&&(c.value=_.value.scrollTop>=t.visibilityHeight)},E=d=>{var O;(O=_.value)==null||O.scrollTo({top:0,behavior:"smooth"}),e("click",d)},u=wX(T,300,!0);return Yo(l,"scroll",u),Bt(()=>{var d;l.value=document,_.value=document.documentElement,t.target&&(_.value=(d=document.querySelector(t.target))!=null?d:void 0,_.value||vs(o,`target does not exist: ${t.target}`),l.value=_.value),T()}),{visible:c,handleClick:E}},K3="ElBacktop",Hge=Oe({name:K3}),xge=Oe({...Hge,props:wge,emits:Gge,setup(t,{emit:e}){const o=t,_=Ze("backtop"),{handleClick:l,visible:c}=kge(o,e,K3),T=v(()=>({right:`${o.right}px`,bottom:`${o.bottom}px`}));return(E,u)=>(B(),Ne(Ns,{name:`${M(_).namespace.value}-fade-in`},{default:de(()=>[M(c)?(B(),se("div",{key:0,style:dt(M(T)),class:k(M(_).b()),onClick:u[0]||(u[0]=Ct((...d)=>M(l)&&M(l)(...d),["stop"]))},[ye(E.$slots,"default",{},()=>[ne(M(Et),{class:k(M(_).e("icon"))},{default:de(()=>[ne(M(Jle))]),_:1},8,["class"])])],6)):Ce("v-if",!0)]),_:3},8,["name"]))}});var Fge=tt(xge,[["__file","backtop.vue"]]);const Vge=Vt(Fge),Wge=et({value:{type:[String,Number],default:""},max:{type:Number,default:99},isDot:Boolean,hidden:Boolean,type:{type:String,values:["primary","success","warning","info","danger"],default:"danger"}}),Xge=["textContent"],Yge=Oe({name:"ElBadge"}),Kge=Oe({...Yge,props:Wge,setup(t,{expose:e}){const o=t,_=Ze("badge"),l=v(()=>o.isDot?"":mt(o.value)&&mt(o.max)?o.max<o.value?`${o.max}+`:`${o.value}`:`${o.value}`);return e({content:l}),(c,T)=>(B(),se("div",{class:k(M(_).b())},[ye(c.$slots,"default"),ne(Ns,{name:`${M(_).namespace.value}-zoom-in-center`,persisted:""},{default:de(()=>[yt(te("sup",{class:k([M(_).e("content"),M(_).em("content",c.type),M(_).is("fixed",!!c.$slots.default),M(_).is("dot",c.isDot)]),textContent:Qe(M(l))},null,10,Xge),[[ao,!c.hidden&&(M(l)||c.isDot)]])]),_:1},8,["name"])],2))}});var zge=tt(Kge,[["__file","badge.vue"]]);const z3=Vt(zge),Z3=Symbol("breadcrumbKey"),Zge=et({separator:{type:String,default:"/"},separatorIcon:{type:Lo}}),jge=Oe({name:"ElBreadcrumb"}),qge=Oe({...jge,props:Zge,setup(t){const e=t,o=Ze("breadcrumb"),_=X();return Jt(Z3,e),Bt(()=>{const l=_.value.querySelectorAll(`.${o.e("item")}`);l.length&&l[l.length-1].setAttribute("aria-current","page")}),(l,c)=>(B(),se("div",{ref_key:"breadcrumb",ref:_,class:k(M(o).b()),"aria-label":"Breadcrumb",role:"navigation"},[ye(l.$slots,"default")],2))}});var Qge=tt(qge,[["__file","breadcrumb.vue"]]);const Jge=et({to:{type:me([String,Object]),default:""},replace:{type:Boolean,default:!1}}),ede=Oe({name:"ElBreadcrumbItem"}),tde=Oe({...ede,props:Jge,setup(t){const e=t,o=Ht(),_=lt(Z3,void 0),l=Ze("breadcrumb"),c=o.appContext.config.globalProperties.$router,T=X(),E=()=>{!e.to||!c||(e.replace?c.replace(e.to):c.push(e.to))};return(u,d)=>{var O,h;return B(),se("span",{class:k(M(l).e("item"))},[te("span",{ref_key:"link",ref:T,class:k([M(l).e("inner"),M(l).is("link",!!u.to)]),role:"link",onClick:E},[ye(u.$slots,"default")],2),(O=M(_))!=null&&O.separatorIcon?(B(),Ne(M(Et),{key:0,class:k(M(l).e("separator"))},{default:de(()=>[(B(),Ne(Kt(M(_).separatorIcon)))]),_:1},8,["class"])):(B(),se("span",{key:1,class:k(M(l).e("separator")),role:"presentation"},Qe((h=M(_))==null?void 0:h.separator),3))],2)}}});var j3=tt(tde,[["__file","breadcrumb-item.vue"]]);const ode=Vt(Qge,{BreadcrumbItem:j3}),sde=ss(j3),q3=Symbol("buttonGroupContextKey"),ide=(t,e)=>{u_({from:"type.text",replacement:"link",version:"3.0.0",scope:"props",ref:"https://element-plus.org/en-US/component/button.html#button-attributes"},v(()=>t.type==="text"));const o=lt(q3,void 0),_=VS("button"),{form:l}=Gi(),c=Ds(v(()=>o==null?void 0:o.size)),T=_n(),E=X(),u=zs(),d=v(()=>t.type||(o==null?void 0:o.type)||""),O=v(()=>{var L,p,C;return(C=(p=t.autoInsertSpace)!=null?p:(L=_.value)==null?void 0:L.autoInsertSpace)!=null?C:!1}),h=v(()=>t.tag==="button"?{ariaDisabled:T.value||t.loading,disabled:T.value||t.loading,autofocus:t.autofocus,type:t.nativeType}:{}),I=v(()=>{var L;const p=(L=u.default)==null?void 0:L.call(u);if(O.value&&(p==null?void 0:p.length)===1){const C=p[0];if((C==null?void 0:C.type)===Ru){const m=C.children;return new RegExp("^\\p{Unified_Ideograph}{2}$","u").test(m.trim())}}return!1});return{_disabled:T,_size:c,_type:d,_ref:E,_props:h,shouldAddSpace:I,handleClick:L=>{t.nativeType==="reset"&&(l==null||l.resetFields()),e("click",L)}}},Kb=["default","primary","success","warning","info","danger","text",""],nde=["button","submit","reset"],zb=et({size:Ys,disabled:Boolean,type:{type:String,values:Kb,default:""},icon:{type:Lo},nativeType:{type:String,values:nde,default:"button"},loading:Boolean,loadingIcon:{type:Lo,default:()=>Da},plain:Boolean,text:Boolean,link:Boolean,bg:Boolean,autofocus:Boolean,round:Boolean,circle:Boolean,color:String,dark:Boolean,autoInsertSpace:{type:Boolean,default:void 0},tag:{type:me([String,Object]),default:"button"}}),rde={click:t=>t instanceof MouseEvent};function gi(t,e){_de(t)&&(t="100%");var o=lde(t);return t=e===360?t:Math.min(e,Math.max(0,parseFloat(t))),o&&(t=parseInt(String(t*e),10)/100),Math.abs(t-e)<1e-6?1:(e===360?t=(t<0?t%e+e:t%e)/parseFloat(String(e)):t=t%e/parseFloat(String(e)),t)}function zM(t){return Math.min(1,Math.max(0,t))}function _de(t){return typeof t=="string"&&t.indexOf(".")!==-1&&parseFloat(t)===1}function lde(t){return typeof t=="string"&&t.indexOf("%")!==-1}function Q3(t){return t=parseFloat(t),(isNaN(t)||t<0||t>1)&&(t=1),t}function ZM(t){return t<=1?"".concat(Number(t)*100,"%"):t}function Ac(t){return t.length===1?"0"+t:String(t)}function ade(t,e,o){return{r:gi(t,255)*255,g:gi(e,255)*255,b:gi(o,255)*255}}function Pk(t,e,o){t=gi(t,255),e=gi(e,255),o=gi(o,255);var _=Math.max(t,e,o),l=Math.min(t,e,o),c=0,T=0,E=(_+l)/2;if(_===l)T=0,c=0;else{var u=_-l;switch(T=E>.5?u/(2-_-l):u/(_+l),_){case t:c=(e-o)/u+(e<o?6:0);break;case e:c=(o-t)/u+2;break;case o:c=(t-e)/u+4;break}c/=6}return{h:c,s:T,l:E}}function YC(t,e,o){return o<0&&(o+=1),o>1&&(o-=1),o<1/6?t+(e-t)*(6*o):o<1/2?e:o<2/3?t+(e-t)*(2/3-o)*6:t}function cde(t,e,o){var _,l,c;if(t=gi(t,360),e=gi(e,100),o=gi(o,100),e===0)l=o,c=o,_=o;else{var T=o<.5?o*(1+e):o+e-o*e,E=2*o-T;_=YC(E,T,t+1/3),l=YC(E,T,t),c=YC(E,T,t-1/3)}return{r:_*255,g:l*255,b:c*255}}function vk(t,e,o){t=gi(t,255),e=gi(e,255),o=gi(o,255);var _=Math.max(t,e,o),l=Math.min(t,e,o),c=0,T=_,E=_-l,u=_===0?0:E/_;if(_===l)c=0;else{switch(_){case t:c=(e-o)/E+(e<o?6:0);break;case e:c=(o-t)/E+2;break;case o:c=(t-e)/E+4;break}c/=6}return{h:c,s:u,v:T}}function Tde(t,e,o){t=gi(t,360)*6,e=gi(e,100),o=gi(o,100);var _=Math.floor(t),l=t-_,c=o*(1-e),T=o*(1-l*e),E=o*(1-(1-l)*e),u=_%6,d=[o,T,c,c,E,o][u],O=[E,o,o,T,c,c][u],h=[c,c,E,o,o,T][u];return{r:d*255,g:O*255,b:h*255}}function Dk(t,e,o,_){var l=[Ac(Math.round(t).toString(16)),Ac(Math.round(e).toString(16)),Ac(Math.round(o).toString(16))];return _&&l[0].startsWith(l[0].charAt(1))&&l[1].startsWith(l[1].charAt(1))&&l[2].startsWith(l[2].charAt(1))?l[0].charAt(0)+l[1].charAt(0)+l[2].charAt(0):l.join("")}function Ede(t,e,o,_,l){var c=[Ac(Math.round(t).toString(16)),Ac(Math.round(e).toString(16)),Ac(Math.round(o).toString(16)),Ac(ude(_))];return l&&c[0].startsWith(c[0].charAt(1))&&c[1].startsWith(c[1].charAt(1))&&c[2].startsWith(c[2].charAt(1))&&c[3].startsWith(c[3].charAt(1))?c[0].charAt(0)+c[1].charAt(0)+c[2].charAt(0)+c[3].charAt(0):c.join("")}function ude(t){return Math.round(parseFloat(t)*255).toString(16)}function Uk(t){return Mn(t)/255}function Mn(t){return parseInt(t,16)}function gde(t){return{r:t>>16,g:(t&65280)>>8,b:t&255}}var Zb={aliceblue:"#f0f8ff",antiquewhite:"#faebd7",aqua:"#00ffff",aquamarine:"#7fffd4",azure:"#f0ffff",beige:"#f5f5dc",bisque:"#ffe4c4",black:"#000000",blanchedalmond:"#ffebcd",blue:"#0000ff",blueviolet:"#8a2be2",brown:"#a52a2a",burlywood:"#deb887",cadetblue:"#5f9ea0",chartreuse:"#7fff00",chocolate:"#d2691e",coral:"#ff7f50",cornflowerblue:"#6495ed",cornsilk:"#fff8dc",crimson:"#dc143c",cyan:"#00ffff",darkblue:"#00008b",darkcyan:"#008b8b",darkgoldenrod:"#b8860b",darkgray:"#a9a9a9",darkgreen:"#006400",darkgrey:"#a9a9a9",darkkhaki:"#bdb76b",darkmagenta:"#8b008b",darkolivegreen:"#556b2f",darkorange:"#ff8c00",darkorchid:"#9932cc",darkred:"#8b0000",darksalmon:"#e9967a",darkseagreen:"#8fbc8f",darkslateblue:"#483d8b",darkslategray:"#2f4f4f",darkslategrey:"#2f4f4f",darkturquoise:"#00ced1",darkviolet:"#9400d3",deeppink:"#ff1493",deepskyblue:"#00bfff",dimgray:"#696969",dimgrey:"#696969",dodgerblue:"#1e90ff",firebrick:"#b22222",floralwhite:"#fffaf0",forestgreen:"#228b22",fuchsia:"#ff00ff",gainsboro:"#dcdcdc",ghostwhite:"#f8f8ff",goldenrod:"#daa520",gold:"#ffd700",gray:"#808080",green:"#008000",greenyellow:"#adff2f",grey:"#808080",honeydew:"#f0fff0",hotpink:"#ff69b4",indianred:"#cd5c5c",indigo:"#4b0082",ivory:"#fffff0",khaki:"#f0e68c",lavenderblush:"#fff0f5",lavender:"#e6e6fa",lawngreen:"#7cfc00",lemonchiffon:"#fffacd",lightblue:"#add8e6",lightcoral:"#f08080",lightcyan:"#e0ffff",lightgoldenrodyellow:"#fafad2",lightgray:"#d3d3d3",lightgreen:"#90ee90",lightgrey:"#d3d3d3",lightpink:"#ffb6c1",lightsalmon:"#ffa07a",lightseagreen:"#20b2aa",lightskyblue:"#87cefa",lightslategray:"#778899",lightslategrey:"#778899",lightsteelblue:"#b0c4de",lightyellow:"#ffffe0",lime:"#00ff00",limegreen:"#32cd32",linen:"#faf0e6",magenta:"#ff00ff",maroon:"#800000",mediumaquamarine:"#66cdaa",mediumblue:"#0000cd",mediumorchid:"#ba55d3",mediumpurple:"#9370db",mediumseagreen:"#3cb371",mediumslateblue:"#7b68ee",mediumspringgreen:"#00fa9a",mediumturquoise:"#48d1cc",mediumvioletred:"#c71585",midnightblue:"#191970",mintcream:"#f5fffa",mistyrose:"#ffe4e1",moccasin:"#ffe4b5",navajowhite:"#ffdead",navy:"#000080",oldlace:"#fdf5e6",olive:"#808000",olivedrab:"#6b8e23",orange:"#ffa500",orangered:"#ff4500",orchid:"#da70d6",palegoldenrod:"#eee8aa",palegreen:"#98fb98",paleturquoise:"#afeeee",palevioletred:"#db7093",papayawhip:"#ffefd5",peachpuff:"#ffdab9",peru:"#cd853f",pink:"#ffc0cb",plum:"#dda0dd",powderblue:"#b0e0e6",purple:"#800080",rebeccapurple:"#663399",red:"#ff0000",rosybrown:"#bc8f8f",royalblue:"#4169e1",saddlebrown:"#8b4513",salmon:"#fa8072",sandybrown:"#f4a460",seagreen:"#2e8b57",seashell:"#fff5ee",sienna:"#a0522d",silver:"#c0c0c0",skyblue:"#87ceeb",slateblue:"#6a5acd",slategray:"#708090",slategrey:"#708090",snow:"#fffafa",springgreen:"#00ff7f",steelblue:"#4682b4",tan:"#d2b48c",teal:"#008080",thistle:"#d8bfd8",tomato:"#ff6347",turquoise:"#40e0d0",violet:"#ee82ee",wheat:"#f5deb3",white:"#ffffff",whitesmoke:"#f5f5f5",yellow:"#ffff00",yellowgreen:"#9acd32"};function dde(t){var e={r:0,g:0,b:0},o=1,_=null,l=null,c=null,T=!1,E=!1;return typeof t=="string"&&(t=Mde(t)),typeof t=="object"&&(H_(t.r)&&H_(t.g)&&H_(t.b)?(e=ade(t.r,t.g,t.b),T=!0,E=String(t.r).substr(-1)==="%"?"prgb":"rgb"):H_(t.h)&&H_(t.s)&&H_(t.v)?(_=ZM(t.s),l=ZM(t.v),e=Tde(t.h,_,l),T=!0,E="hsv"):H_(t.h)&&H_(t.s)&&H_(t.l)&&(_=ZM(t.s),c=ZM(t.l),e=cde(t.h,_,c),T=!0,E="hsl"),Object.prototype.hasOwnProperty.call(t,"a")&&(o=t.a)),o=Q3(o),{ok:T,format:t.format||E,r:Math.min(255,Math.max(e.r,0)),g:Math.min(255,Math.max(e.g,0)),b:Math.min(255,Math.max(e.b,0)),a:o}}var Ode="[-\\+]?\\d+%?",hde="[-\\+]?\\d*\\.\\d+%?",sa="(?:".concat(hde,")|(?:").concat(Ode,")"),KC="[\\s|\\(]+(".concat(sa,")[,|\\s]+(").concat(sa,")[,|\\s]+(").concat(sa,")\\s*\\)?"),zC="[\\s|\\(]+(".concat(sa,")[,|\\s]+(").concat(sa,")[,|\\s]+(").concat(sa,")[,|\\s]+(").concat(sa,")\\s*\\)?"),cr={CSS_UNIT:new RegExp(sa),rgb:new RegExp("rgb"+KC),rgba:new RegExp("rgba"+zC),hsl:new RegExp("hsl"+KC),hsla:new RegExp("hsla"+zC),hsv:new RegExp("hsv"+KC),hsva:new RegExp("hsva"+zC),hex3:/^#?([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})$/,hex6:/^#?([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})$/,hex4:/^#?([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})$/,hex8:/^#?([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})$/};function Mde(t){if(t=t.trim().toLowerCase(),t.length===0)return!1;var e=!1;if(Zb[t])t=Zb[t],e=!0;else if(t==="transparent")return{r:0,g:0,b:0,a:0,format:"name"};var o=cr.rgb.exec(t);return o?{r:o[1],g:o[2],b:o[3]}:(o=cr.rgba.exec(t),o?{r:o[1],g:o[2],b:o[3],a:o[4]}:(o=cr.hsl.exec(t),o?{h:o[1],s:o[2],l:o[3]}:(o=cr.hsla.exec(t),o?{h:o[1],s:o[2],l:o[3],a:o[4]}:(o=cr.hsv.exec(t),o?{h:o[1],s:o[2],v:o[3]}:(o=cr.hsva.exec(t),o?{h:o[1],s:o[2],v:o[3],a:o[4]}:(o=cr.hex8.exec(t),o?{r:Mn(o[1]),g:Mn(o[2]),b:Mn(o[3]),a:Uk(o[4]),format:e?"name":"hex8"}:(o=cr.hex6.exec(t),o?{r:Mn(o[1]),g:Mn(o[2]),b:Mn(o[3]),format:e?"name":"hex"}:(o=cr.hex4.exec(t),o?{r:Mn(o[1]+o[1]),g:Mn(o[2]+o[2]),b:Mn(o[3]+o[3]),a:Uk(o[4]+o[4]),format:e?"name":"hex8"}:(o=cr.hex3.exec(t),o?{r:Mn(o[1]+o[1]),g:Mn(o[2]+o[2]),b:Mn(o[3]+o[3]),format:e?"name":"hex"}:!1)))))))))}function H_(t){return!!cr.CSS_UNIT.exec(String(t))}var J3=function(){function t(e,o){e===void 0&&(e=""),o===void 0&&(o={});var _;if(e instanceof t)return e;typeof e=="number"&&(e=gde(e)),this.originalInput=e;var l=dde(e);this.originalInput=e,this.r=l.r,this.g=l.g,this.b=l.b,this.a=l.a,this.roundA=Math.round(100*this.a)/100,this.format=(_=o.format)!==null&&_!==void 0?_:l.format,this.gradientType=o.gradientType,this.r<1&&(this.r=Math.round(this.r)),this.g<1&&(this.g=Math.round(this.g)),this.b<1&&(this.b=Math.round(this.b)),this.isValid=l.ok}return t.prototype.isDark=function(){return this.getBrightness()<128},t.prototype.isLight=function(){return!this.isDark()},t.prototype.getBrightness=function(){var e=this.toRgb();return(e.r*299+e.g*587+e.b*114)/1e3},t.prototype.getLuminance=function(){var e=this.toRgb(),o,_,l,c=e.r/255,T=e.g/255,E=e.b/255;return c<=.03928?o=c/12.92:o=Math.pow((c+.055)/1.055,2.4),T<=.03928?_=T/12.92:_=Math.pow((T+.055)/1.055,2.4),E<=.03928?l=E/12.92:l=Math.pow((E+.055)/1.055,2.4),.2126*o+.7152*_+.0722*l},t.prototype.getAlpha=function(){return this.a},t.prototype.setAlpha=function(e){return this.a=Q3(e),this.roundA=Math.round(100*this.a)/100,this},t.prototype.isMonochrome=function(){var e=this.toHsl().s;return e===0},t.prototype.toHsv=function(){var e=vk(this.r,this.g,this.b);return{h:e.h*360,s:e.s,v:e.v,a:this.a}},t.prototype.toHsvString=function(){var e=vk(this.r,this.g,this.b),o=Math.round(e.h*360),_=Math.round(e.s*100),l=Math.round(e.v*100);return this.a===1?"hsv(".concat(o,", ").concat(_,"%, ").concat(l,"%)"):"hsva(".concat(o,", ").concat(_,"%, ").concat(l,"%, ").concat(this.roundA,")")},t.prototype.toHsl=function(){var e=Pk(this.r,this.g,this.b);return{h:e.h*360,s:e.s,l:e.l,a:this.a}},t.prototype.toHslString=function(){var e=Pk(this.r,this.g,this.b),o=Math.round(e.h*360),_=Math.round(e.s*100),l=Math.round(e.l*100);return this.a===1?"hsl(".concat(o,", ").concat(_,"%, ").concat(l,"%)"):"hsla(".concat(o,", ").concat(_,"%, ").concat(l,"%, ").concat(this.roundA,")")},t.prototype.toHex=function(e){return e===void 0&&(e=!1),Dk(this.r,this.g,this.b,e)},t.prototype.toHexString=function(e){return e===void 0&&(e=!1),"#"+this.toHex(e)},t.prototype.toHex8=function(e){return e===void 0&&(e=!1),Ede(this.r,this.g,this.b,this.a,e)},t.prototype.toHex8String=function(e){return e===void 0&&(e=!1),"#"+this.toHex8(e)},t.prototype.toHexShortString=function(e){return e===void 0&&(e=!1),this.a===1?this.toHexString(e):this.toHex8String(e)},t.prototype.toRgb=function(){return{r:Math.round(this.r),g:Math.round(this.g),b:Math.round(this.b),a:this.a}},t.prototype.toRgbString=function(){var e=Math.round(this.r),o=Math.round(this.g),_=Math.round(this.b);return this.a===1?"rgb(".concat(e,", ").concat(o,", ").concat(_,")"):"rgba(".concat(e,", ").concat(o,", ").concat(_,", ").concat(this.roundA,")")},t.prototype.toPercentageRgb=function(){var e=function(o){return"".concat(Math.round(gi(o,255)*100),"%")};return{r:e(this.r),g:e(this.g),b:e(this.b),a:this.a}},t.prototype.toPercentageRgbString=function(){var e=function(o){return Math.round(gi(o,255)*100)};return this.a===1?"rgb(".concat(e(this.r),"%, ").concat(e(this.g),"%, ").concat(e(this.b),"%)"):"rgba(".concat(e(this.r),"%, ").concat(e(this.g),"%, ").concat(e(this.b),"%, ").concat(this.roundA,")")},t.prototype.toName=function(){if(this.a===0)return"transparent";if(this.a<1)return!1;for(var e="#"+Dk(this.r,this.g,this.b,!1),o=0,_=Object.entries(Zb);o<_.length;o++){var l=_[o],c=l[0],T=l[1];if(e===T)return c}return!1},t.prototype.toString=function(e){var o=!!e;e=e??this.format;var _=!1,l=this.a<1&&this.a>=0,c=!o&&l&&(e.startsWith("hex")||e==="name");return c?e==="name"&&this.a===0?this.toName():this.toRgbString():(e==="rgb"&&(_=this.toRgbString()),e==="prgb"&&(_=this.toPercentageRgbString()),(e==="hex"||e==="hex6")&&(_=this.toHexString()),e==="hex3"&&(_=this.toHexString(!0)),e==="hex4"&&(_=this.toHex8String(!0)),e==="hex8"&&(_=this.toHex8String()),e==="name"&&(_=this.toName()),e==="hsl"&&(_=this.toHslString()),e==="hsv"&&(_=this.toHsvString()),_||this.toHexString())},t.prototype.toNumber=function(){return(Math.round(this.r)<<16)+(Math.round(this.g)<<8)+Math.round(this.b)},t.prototype.clone=function(){return new t(this.toString())},t.prototype.lighten=function(e){e===void 0&&(e=10);var o=this.toHsl();return o.l+=e/100,o.l=zM(o.l),new t(o)},t.prototype.brighten=function(e){e===void 0&&(e=10);var o=this.toRgb();return o.r=Math.max(0,Math.min(255,o.r-Math.round(255*-(e/100)))),o.g=Math.max(0,Math.min(255,o.g-Math.round(255*-(e/100)))),o.b=Math.max(0,Math.min(255,o.b-Math.round(255*-(e/100)))),new t(o)},t.prototype.darken=function(e){e===void 0&&(e=10);var o=this.toHsl();return o.l-=e/100,o.l=zM(o.l),new t(o)},t.prototype.tint=function(e){return e===void 0&&(e=10),this.mix("white",e)},t.prototype.shade=function(e){return e===void 0&&(e=10),this.mix("black",e)},t.prototype.desaturate=function(e){e===void 0&&(e=10);var o=this.toHsl();return o.s-=e/100,o.s=zM(o.s),new t(o)},t.prototype.saturate=function(e){e===void 0&&(e=10);var o=this.toHsl();return o.s+=e/100,o.s=zM(o.s),new t(o)},t.prototype.greyscale=function(){return this.desaturate(100)},t.prototype.spin=function(e){var o=this.toHsl(),_=(o.h+e)%360;return o.h=_<0?360+_:_,new t(o)},t.prototype.mix=function(e,o){o===void 0&&(o=50);var _=this.toRgb(),l=new t(e).toRgb(),c=o/100,T={r:(l.r-_.r)*c+_.r,g:(l.g-_.g)*c+_.g,b:(l.b-_.b)*c+_.b,a:(l.a-_.a)*c+_.a};return new t(T)},t.prototype.analogous=function(e,o){e===void 0&&(e=6),o===void 0&&(o=30);var _=this.toHsl(),l=360/o,c=[this];for(_.h=(_.h-(l*e>>1)+720)%360;--e;)_.h=(_.h+l)%360,c.push(new t(_));return c},t.prototype.complement=function(){var e=this.toHsl();return e.h=(e.h+180)%360,new t(e)},t.prototype.monochromatic=function(e){e===void 0&&(e=6);for(var o=this.toHsv(),_=o.h,l=o.s,c=o.v,T=[],E=1/e;e--;)T.push(new t({h:_,s:l,v:c})),c=(c+E)%1;return T},t.prototype.splitcomplement=function(){var e=this.toHsl(),o=e.h;return[this,new t({h:(o+72)%360,s:e.s,l:e.l}),new t({h:(o+216)%360,s:e.s,l:e.l})]},t.prototype.onBackground=function(e){var o=this.toRgb(),_=new t(e).toRgb(),l=o.a+_.a*(1-o.a);return new t({r:(o.r*o.a+_.r*_.a*(1-o.a))/l,g:(o.g*o.a+_.g*_.a*(1-o.a))/l,b:(o.b*o.a+_.b*_.a*(1-o.a))/l,a:l})},t.prototype.triad=function(){return this.polyad(3)},t.prototype.tetrad=function(){return this.polyad(4)},t.prototype.polyad=function(e){for(var o=this.toHsl(),_=o.h,l=[this],c=360/e,T=1;T<e;T++)l.push(new t({h:(_+T*c)%360,s:o.s,l:o.l}));return l},t.prototype.equals=function(e){return this.toRgbString()===new t(e).toRgbString()},t}();function $l(t,e=20){return t.mix("#141414",e).toString()}function Rde(t){const e=_n(),o=Ze("button");return v(()=>{let _={};const l=t.color;if(l){const c=new J3(l),T=t.dark?c.tint(20).toString():$l(c,20);if(t.plain)_=o.cssVarBlock({"bg-color":t.dark?$l(c,90):c.tint(90).toString(),"text-color":l,"border-color":t.dark?$l(c,50):c.tint(50).toString(),"hover-text-color":`var(${o.cssVarName("color-white")})`,"hover-bg-color":l,"hover-border-color":l,"active-bg-color":T,"active-text-color":`var(${o.cssVarName("color-white")})`,"active-border-color":T}),e.value&&(_[o.cssVarBlockName("disabled-bg-color")]=t.dark?$l(c,90):c.tint(90).toString(),_[o.cssVarBlockName("disabled-text-color")]=t.dark?$l(c,50):c.tint(50).toString(),_[o.cssVarBlockName("disabled-border-color")]=t.dark?$l(c,80):c.tint(80).toString());else{const E=t.dark?$l(c,30):c.tint(30).toString(),u=c.isDark()?`var(${o.cssVarName("color-white")})`:`var(${o.cssVarName("color-black")})`;if(_=o.cssVarBlock({"bg-color":l,"text-color":u,"border-color":l,"hover-bg-color":E,"hover-text-color":u,"hover-border-color":E,"active-bg-color":T,"active-border-color":T}),e.value){const d=t.dark?$l(c,50):c.tint(50).toString();_[o.cssVarBlockName("disabled-bg-color")]=d,_[o.cssVarBlockName("disabled-text-color")]=t.dark?"rgba(255, 255, 255, 0.5)":`var(${o.cssVarName("color-white")})`,_[o.cssVarBlockName("disabled-border-color")]=d}}}return _})}const Ide=Oe({name:"ElButton"}),Sde=Oe({...Ide,props:zb,emits:rde,setup(t,{expose:e,emit:o}){const _=t,l=Rde(_),c=Ze("button"),{_ref:T,_size:E,_type:u,_disabled:d,_props:O,shouldAddSpace:h,handleClick:I}=ide(_,o);return e({ref:T,size:E,type:u,disabled:d,shouldAddSpace:h}),(S,L)=>(B(),Ne(Kt(S.tag),Yt({ref_key:"_ref",ref:T},M(O),{class:[M(c).b(),M(c).m(M(u)),M(c).m(M(E)),M(c).is("disabled",M(d)),M(c).is("loading",S.loading),M(c).is("plain",S.plain),M(c).is("round",S.round),M(c).is("circle",S.circle),M(c).is("text",S.text),M(c).is("link",S.link),M(c).is("has-bg",S.bg)],style:M(l),onClick:M(I)}),{default:de(()=>[S.loading?(B(),se(ht,{key:0},[S.$slots.loading?ye(S.$slots,"loading",{key:0}):(B(),Ne(M(Et),{key:1,class:k(M(c).is("loading"))},{default:de(()=>[(B(),Ne(Kt(S.loadingIcon)))]),_:1},8,["class"]))],64)):S.icon||S.$slots.icon?(B(),Ne(M(Et),{key:1},{default:de(()=>[S.icon?(B(),Ne(Kt(S.icon),{key:0})):ye(S.$slots,"icon",{key:1})]),_:3})):Ce("v-if",!0),S.$slots.default?(B(),se("span",{key:2,class:k({[M(c).em("text","expand")]:M(h)})},[ye(S.$slots,"default")],2)):Ce("v-if",!0)]),_:3},16,["class","style","onClick"]))}});var pde=tt(Sde,[["__file","button.vue"]]);const Lde={size:zb.size,type:zb.type},fde=Oe({name:"ElButtonGroup"}),mde=Oe({...fde,props:Lde,setup(t){const e=t;Jt(q3,Eo({size:Ao(e,"size"),type:Ao(e,"type")}));const o=Ze("button");return(_,l)=>(B(),se("div",{class:k(`${M(o).b("group")}`)},[ye(_.$slots,"default")],2))}});var eY=tt(mde,[["__file","button-group.vue"]]);const Ws=Vt(pde,{ButtonGroup:eY}),tY=ss(eY);var oY={exports:{}};(function(t,e){(function(o,_){t.exports=_()})(Is,function(){var o=1e3,_=6e4,l=36e5,c="millisecond",T="second",E="minute",u="hour",d="day",O="week",h="month",I="quarter",S="year",L="date",p="Invalid Date",C=/^(\d{4})[-/]?(\d{1,2})?[-/]?(\d{0,2})[Tt\s]*(\d{1,2})?:?(\d{1,2})?:?(\d{1,2})?[.:]?(\d+)?$/,m=/\[([^\]]+)]|Y{1,4}|M{1,4}|D{1,2}|d{1,4}|H{1,2}|h{1,2}|a|A|m{1,2}|s{1,2}|Z{1,2}|SSS/g,A={name:"en",weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),ordinal:function(j){var J=["th","st","nd","rd"],ie=j%100;return"["+j+(J[(ie-20)%10]||J[ie]||J[0])+"]"}},b=function(j,J,ie){var Y=String(j);return!Y||Y.length>=J?j:""+Array(J+1-Y.length).join(ie)+j},N={s:b,z:function(j){var J=-j.utcOffset(),ie=Math.abs(J),Y=Math.floor(ie/60),re=ie%60;return(J<=0?"+":"-")+b(Y,2,"0")+":"+b(re,2,"0")},m:function j(J,ie){if(J.date()<ie.date())return-j(ie,J);var Y=12*(ie.year()-J.year())+(ie.month()-J.month()),re=J.clone().add(Y,h),H=ie-re<0,Q=J.clone().add(Y+(H?-1:1),h);return+(-(Y+(ie-re)/(H?re-Q:Q-re))||0)},a:function(j){return j<0?Math.ceil(j)||0:Math.floor(j)},p:function(j){return{M:h,y:S,w:O,d,D:L,h:u,m:E,s:T,ms:c,Q:I}[j]||String(j||"").toLowerCase().replace(/s$/,"")},u:function(j){return j===void 0}},U="en",P={};P[U]=A;var G="$isDayjsObject",w=function(j){return j instanceof K||!(!j||!j[G])},F=function j(J,ie,Y){var re;if(!J)return U;if(typeof J=="string"){var H=J.toLowerCase();P[H]&&(re=H),ie&&(P[H]=ie,re=H);var Q=J.split("-");if(!re&&Q.length>1)return j(Q[0])}else{var ae=J.name;P[ae]=J,re=ae}return!Y&&re&&(U=re),re||!Y&&U},V=function(j,J){if(w(j))return j.clone();var ie=typeof J=="object"?J:{};return ie.date=j,ie.args=arguments,new K(ie)},W=N;W.l=F,W.i=w,W.w=function(j,J){return V(j,{locale:J.$L,utc:J.$u,x:J.$x,$offset:J.$offset})};var K=function(){function j(ie){this.$L=F(ie.locale,null,!0),this.parse(ie),this.$x=this.$x||ie.x||{},this[G]=!0}var J=j.prototype;return J.parse=function(ie){this.$d=function(Y){var re=Y.date,H=Y.utc;if(re===null)return new Date(NaN);if(W.u(re))return new Date;if(re instanceof Date)return new Date(re);if(typeof re=="string"&&!/Z$/i.test(re)){var Q=re.match(C);if(Q){var ae=Q[2]-1||0,ge=(Q[7]||"0").substring(0,3);return H?new Date(Date.UTC(Q[1],ae,Q[3]||1,Q[4]||0,Q[5]||0,Q[6]||0,ge)):new Date(Q[1],ae,Q[3]||1,Q[4]||0,Q[5]||0,Q[6]||0,ge)}}return new Date(re)}(ie),this.init()},J.init=function(){var ie=this.$d;this.$y=ie.getFullYear(),this.$M=ie.getMonth(),this.$D=ie.getDate(),this.$W=ie.getDay(),this.$H=ie.getHours(),this.$m=ie.getMinutes(),this.$s=ie.getSeconds(),this.$ms=ie.getMilliseconds()},J.$utils=function(){return W},J.isValid=function(){return this.$d.toString()!==p},J.isSame=function(ie,Y){var re=V(ie);return this.startOf(Y)<=re&&re<=this.endOf(Y)},J.isAfter=function(ie,Y){return V(ie)<this.startOf(Y)},J.isBefore=function(ie,Y){return this.endOf(Y)<V(ie)},J.$g=function(ie,Y,re){return W.u(ie)?this[Y]:this.set(re,ie)},J.unix=function(){return Math.floor(this.valueOf()/1e3)},J.valueOf=function(){return this.$d.getTime()},J.startOf=function(ie,Y){var re=this,H=!!W.u(Y)||Y,Q=W.p(ie),ae=function(Pe,Ae){var ke=W.w(re.$u?Date.UTC(re.$y,Ae,Pe):new Date(re.$y,Ae,Pe),re);return H?ke:ke.endOf(d)},ge=function(Pe,Ae){return W.w(re.toDate()[Pe].apply(re.toDate("s"),(H?[0,0,0,0]:[23,59,59,999]).slice(Ae)),re)},Se=this.$W,pe=this.$M,We=this.$D,be="set"+(this.$u?"UTC":"");switch(Q){case S:return H?ae(1,0):ae(31,11);case h:return H?ae(1,pe):ae(0,pe+1);case O:var Me=this.$locale().weekStart||0,Ie=(Se<Me?Se+7:Se)-Me;return ae(H?We-Ie:We+(6-Ie),pe);case d:case L:return ge(be+"Hours",0);case u:return ge(be+"Minutes",1);case E:return ge(be+"Seconds",2);case T:return ge(be+"Milliseconds",3);default:return this.clone()}},J.endOf=function(ie){return this.startOf(ie,!1)},J.$set=function(ie,Y){var re,H=W.p(ie),Q="set"+(this.$u?"UTC":""),ae=(re={},re[d]=Q+"Date",re[L]=Q+"Date",re[h]=Q+"Month",re[S]=Q+"FullYear",re[u]=Q+"Hours",re[E]=Q+"Minutes",re[T]=Q+"Seconds",re[c]=Q+"Milliseconds",re)[H],ge=H===d?this.$D+(Y-this.$W):Y;if(H===h||H===S){var Se=this.clone().set(L,1);Se.$d[ae](ge),Se.init(),this.$d=Se.set(L,Math.min(this.$D,Se.daysInMonth())).$d}else ae&&this.$d[ae](ge);return this.init(),this},J.set=function(ie,Y){return this.clone().$set(ie,Y)},J.get=function(ie){return this[W.p(ie)]()},J.add=function(ie,Y){var re,H=this;ie=Number(ie);var Q=W.p(Y),ae=function(pe){var We=V(H);return W.w(We.date(We.date()+Math.round(pe*ie)),H)};if(Q===h)return this.set(h,this.$M+ie);if(Q===S)return this.set(S,this.$y+ie);if(Q===d)return ae(1);if(Q===O)return ae(7);var ge=(re={},re[E]=_,re[u]=l,re[T]=o,re)[Q]||1,Se=this.$d.getTime()+ie*ge;return W.w(Se,this)},J.subtract=function(ie,Y){return this.add(-1*ie,Y)},J.format=function(ie){var Y=this,re=this.$locale();if(!this.isValid())return re.invalidDate||p;var H=ie||"YYYY-MM-DDTHH:mm:ssZ",Q=W.z(this),ae=this.$H,ge=this.$m,Se=this.$M,pe=re.weekdays,We=re.months,be=re.meridiem,Me=function(Ae,ke,ve,Te){return Ae&&(Ae[ke]||Ae(Y,H))||ve[ke].slice(0,Te)},Ie=function(Ae){return W.s(ae%12||12,Ae,"0")},Pe=be||function(Ae,ke,ve){var Te=Ae<12?"AM":"PM";return ve?Te.toLowerCase():Te};return H.replace(m,function(Ae,ke){return ke||function(ve){switch(ve){case"YY":return String(Y.$y).slice(-2);case"YYYY":return W.s(Y.$y,4,"0");case"M":return Se+1;case"MM":return W.s(Se+1,2,"0");case"MMM":return Me(re.monthsShort,Se,We,3);case"MMMM":return Me(We,Se);case"D":return Y.$D;case"DD":return W.s(Y.$D,2,"0");case"d":return String(Y.$W);case"dd":return Me(re.weekdaysMin,Y.$W,pe,2);case"ddd":return Me(re.weekdaysShort,Y.$W,pe,3);case"dddd":return pe[Y.$W];case"H":return String(ae);case"HH":return W.s(ae,2,"0");case"h":return Ie(1);case"hh":return Ie(2);case"a":return Pe(ae,ge,!0);case"A":return Pe(ae,ge,!1);case"m":return String(ge);case"mm":return W.s(ge,2,"0");case"s":return String(Y.$s);case"ss":return W.s(Y.$s,2,"0");case"SSS":return W.s(Y.$ms,3,"0");case"Z":return Q}return null}(Ae)||Q.replace(":","")})},J.utcOffset=function(){return 15*-Math.round(this.$d.getTimezoneOffset()/15)},J.diff=function(ie,Y,re){var H,Q=this,ae=W.p(Y),ge=V(ie),Se=(ge.utcOffset()-this.utcOffset())*_,pe=this-ge,We=function(){return W.m(Q,ge)};switch(ae){case S:H=We()/12;break;case h:H=We();break;case I:H=We()/3;break;case O:H=(pe-Se)/6048e5;break;case d:H=(pe-Se)/864e5;break;case u:H=pe/l;break;case E:H=pe/_;break;case T:H=pe/o;break;default:H=pe}return re?H:W.a(H)},J.daysInMonth=function(){return this.endOf(h).$D},J.$locale=function(){return P[this.$L]},J.locale=function(ie,Y){if(!ie)return this.$L;var re=this.clone(),H=F(ie,Y,!0);return H&&(re.$L=H),re},J.clone=function(){return W.w(this.$d,this)},J.toDate=function(){return new Date(this.valueOf())},J.toJSON=function(){return this.isValid()?this.toISOString():null},J.toISOString=function(){return this.$d.toISOString()},J.toString=function(){return this.$d.toUTCString()},j}(),ee=K.prototype;return V.prototype=ee,[["$ms",c],["$s",T],["$m",E],["$H",u],["$W",d],["$M",h],["$y",S],["$D",L]].forEach(function(j){ee[j[1]]=function(J){return this.$g(J,j[0],j[1])}}),V.extend=function(j,J){return j.$i||(j(J,K,V),j.$i=!0),V},V.locale=F,V.isDayjs=w,V.unix=function(j){return V(1e3*j)},V.en=P[U],V.Ls=P,V.p={},V})})(oY);var Cde=oY.exports;const xt=Sr(Cde);var sY={exports:{}};(function(t,e){(function(o,_){t.exports=_()})(Is,function(){var o={LTS:"h:mm:ss A",LT:"h:mm A",L:"MM/DD/YYYY",LL:"MMMM D, YYYY",LLL:"MMMM D, YYYY h:mm A",LLLL:"dddd, MMMM D, YYYY h:mm A"},_=/(\[[^[]*\])|([-_:/.,()\s]+)|(A|a|YYYY|YY?|MM?M?M?|Do|DD?|hh?|HH?|mm?|ss?|S{1,3}|z|ZZ?)/g,l=/\d\d/,c=/\d\d?/,T=/\d*[^-_:/,()\s\d]+/,E={},u=function(p){return(p=+p)+(p>68?1900:2e3)},d=function(p){return function(C){this[p]=+C}},O=[/[+-]\d\d:?(\d\d)?|Z/,function(p){(this.zone||(this.zone={})).offset=function(C){if(!C||C==="Z")return 0;var m=C.match(/([+-]|\d\d)/g),A=60*m[1]+(+m[2]||0);return A===0?0:m[0]==="+"?-A:A}(p)}],h=function(p){var C=E[p];return C&&(C.indexOf?C:C.s.concat(C.f))},I=function(p,C){var m,A=E.meridiem;if(A){for(var b=1;b<=24;b+=1)if(p.indexOf(A(b,0,C))>-1){m=b>12;break}}else m=p===(C?"pm":"PM");return m},S={A:[T,function(p){this.afternoon=I(p,!1)}],a:[T,function(p){this.afternoon=I(p,!0)}],S:[/\d/,function(p){this.milliseconds=100*+p}],SS:[l,function(p){this.milliseconds=10*+p}],SSS:[/\d{3}/,function(p){this.milliseconds=+p}],s:[c,d("seconds")],ss:[c,d("seconds")],m:[c,d("minutes")],mm:[c,d("minutes")],H:[c,d("hours")],h:[c,d("hours")],HH:[c,d("hours")],hh:[c,d("hours")],D:[c,d("day")],DD:[l,d("day")],Do:[T,function(p){var C=E.ordinal,m=p.match(/\d+/);if(this.day=m[0],C)for(var A=1;A<=31;A+=1)C(A).replace(/\[|\]/g,"")===p&&(this.day=A)}],M:[c,d("month")],MM:[l,d("month")],MMM:[T,function(p){var C=h("months"),m=(h("monthsShort")||C.map(function(A){return A.slice(0,3)})).indexOf(p)+1;if(m<1)throw new Error;this.month=m%12||m}],MMMM:[T,function(p){var C=h("months").indexOf(p)+1;if(C<1)throw new Error;this.month=C%12||C}],Y:[/[+-]?\d+/,d("year")],YY:[l,function(p){this.year=u(p)}],YYYY:[/\d{4}/,d("year")],Z:O,ZZ:O};function L(p){var C,m;C=p,m=E&&E.formats;for(var A=(p=C.replace(/(\[[^\]]+])|(LTS?|l{1,4}|L{1,4})/g,function(F,V,W){var K=W&&W.toUpperCase();return V||m[W]||o[W]||m[K].replace(/(\[[^\]]+])|(MMMM|MM|DD|dddd)/g,function(ee,j,J){return j||J.slice(1)})})).match(_),b=A.length,N=0;N<b;N+=1){var U=A[N],P=S[U],G=P&&P[0],w=P&&P[1];A[N]=w?{regex:G,parser:w}:U.replace(/^\[|\]$/g,"")}return function(F){for(var V={},W=0,K=0;W<b;W+=1){var ee=A[W];if(typeof ee=="string")K+=ee.length;else{var j=ee.regex,J=ee.parser,ie=F.slice(K),Y=j.exec(ie)[0];J.call(V,Y),F=F.replace(Y,"")}}return function(re){var H=re.afternoon;if(H!==void 0){var Q=re.hours;H?Q<12&&(re.hours+=12):Q===12&&(re.hours=0),delete re.afternoon}}(V),V}}return function(p,C,m){m.p.customParseFormat=!0,p&&p.parseTwoDigitYear&&(u=p.parseTwoDigitYear);var A=C.prototype,b=A.parse;A.parse=function(N){var U=N.date,P=N.utc,G=N.args;this.$u=P;var w=G[1];if(typeof w=="string"){var F=G[2]===!0,V=G[3]===!0,W=F||V,K=G[2];V&&(K=G[2]),E=this.$locale(),!F&&K&&(E=m.Ls[K]),this.$d=function(ie,Y,re){try{if(["x","X"].indexOf(Y)>-1)return new Date((Y==="X"?1e3:1)*ie);var H=L(Y)(ie),Q=H.year,ae=H.month,ge=H.day,Se=H.hours,pe=H.minutes,We=H.seconds,be=H.milliseconds,Me=H.zone,Ie=new Date,Pe=ge||(Q||ae?1:Ie.getDate()),Ae=Q||Ie.getFullYear(),ke=0;Q&&!ae||(ke=ae>0?ae-1:Ie.getMonth());var ve=Se||0,Te=pe||0,Re=We||0,Ue=be||0;return Me?new Date(Date.UTC(Ae,ke,Pe,ve,Te,Re,Ue+60*Me.offset*1e3)):re?new Date(Date.UTC(Ae,ke,Pe,ve,Te,Re,Ue)):new Date(Ae,ke,Pe,ve,Te,Re,Ue)}catch{return new Date("")}}(U,w,P),this.init(),K&&K!==!0&&(this.$L=this.locale(K).$L),W&&U!=this.format(w)&&(this.$d=new Date("")),E={}}else if(w instanceof Array)for(var ee=w.length,j=1;j<=ee;j+=1){G[1]=w[j-1];var J=m.apply(this,G);if(J.isValid()){this.$d=J.$d,this.$L=J.$L,this.init();break}j===ee&&(this.$d=new Date(""))}else b.call(this,N)}}})})(sY);var Ade=sY.exports;const oD=Sr(Ade),yk=["hours","minutes","seconds"],jb="HH:mm:ss",gE="YYYY-MM-DD",bde={date:gE,dates:gE,week:"gggg[w]ww",year:"YYYY",month:"YYYY-MM",datetime:`${gE} ${jb}`,monthrange:"YYYY-MM",daterange:gE,datetimerange:`${gE} ${jb}`},ZC=(t,e)=>[t>0?t-1:void 0,t,t<e?t+1:void 0],Ea=t=>Array.from(Array.from({length:t}).keys()),iY=t=>t.replace(/\W?m{1,2}|\W?ZZ/g,"").replace(/\W?h{1,2}|\W?s{1,3}|\W?a/gi,"").trim(),nY=t=>t.replace(/\W?D{1,2}|\W?Do|\W?d{1,4}|\W?M{1,4}|\W?Y{2,4}/g,"").trim(),$k=function(t,e){const o=Gc(t),_=Gc(e);return o&&_?t.getTime()===e.getTime():!o&&!_?t===e:!1},Bk=function(t,e){const o=rt(t),_=rt(e);return o&&_?t.length!==e.length?!1:t.every((l,c)=>$k(l,e[c])):!o&&!_?$k(t,e):!1},wk=function(t,e,o){const _=Bn(e)||e==="x"?xt(t).locale(o):xt(t,e).locale(o);return _.isValid()?_:void 0},Gk=function(t,e,o){return Bn(e)?t:e==="x"?+t:xt(t).locale(o).format(e)},jC=(t,e)=>{var o;const _=[],l=e==null?void 0:e();for(let c=0;c<t;c++)_.push((o=l==null?void 0:l.includes(c))!=null?o:!1);return _},rY=et({disabledHours:{type:me(Function)},disabledMinutes:{type:me(Function)},disabledSeconds:{type:me(Function)}}),_Y=et({visible:Boolean,actualVisible:{type:Boolean,default:void 0},format:{type:String,default:""}}),sD=et({id:{type:me([Array,String])},name:{type:me([Array,String]),default:""},popperClass:{type:String,default:""},format:String,valueFormat:String,dateFormat:String,timeFormat:String,type:{type:String,default:""},clearable:{type:Boolean,default:!0},clearIcon:{type:me([String,Object]),default:va},editable:{type:Boolean,default:!0},prefixIcon:{type:me([String,Object]),default:""},size:Ys,readonly:Boolean,disabled:Boolean,placeholder:{type:String,default:""},popperOptions:{type:me(Object),default:()=>({})},modelValue:{type:me([Date,Array,String,Number]),default:""},rangeSeparator:{type:String,default:"-"},startPlaceholder:String,endPlaceholder:String,defaultValue:{type:me([Date,Array])},defaultTime:{type:me([Date,Array])},isRange:Boolean,...rY,disabledDate:{type:Function},cellClassName:{type:Function},shortcuts:{type:Array,default:()=>[]},arrowControl:Boolean,label:{type:String,default:void 0},tabindex:{type:me([String,Number]),default:0},validateEvent:{type:Boolean,default:!0},unlinkPanels:Boolean}),Nde=["id","name","placeholder","value","disabled","readonly"],Pde=["id","name","placeholder","value","disabled","readonly"],vde=Oe({name:"Picker"}),Dde=Oe({...vde,props:sD,emits:["update:modelValue","change","focus","blur","calendar-change","panel-change","visible-change","keydown"],setup(t,{expose:e,emit:o}){const _=t,l=Jc(),{lang:c}=lo(),T=Ze("date"),E=Ze("input"),u=Ze("range"),{form:d,formItem:O}=Gi(),h=lt("ElPopperOptions",{}),I=X(),S=X(),L=X(!1),p=X(!1),C=X(null);let m=!1,A=!1;const b=v(()=>[T.b("editor"),T.bm("editor",_.type),E.e("wrapper"),T.is("disabled",ge.value),T.is("active",L.value),u.b("editor"),De?u.bm("editor",De.value):"",l.class]),N=v(()=>[E.e("icon"),u.e("close-icon"),Pe.value?"":u.e("close-icon--hidden")]);Fe(L,_e=>{_e?Lt(()=>{_e&&(C.value=_.modelValue)}):(Be.value=null,Lt(()=>{U(_.modelValue)}))});const U=(_e,ze)=>{(ze||!Bk(_e,C.value))&&(o("change",_e),_.validateEvent&&(O==null||O.validate("change").catch(_t=>void 0)))},P=_e=>{if(!Bk(_.modelValue,_e)){let ze;rt(_e)?ze=_e.map(_t=>Gk(_t,_.valueFormat,c.value)):_e&&(ze=Gk(_e,_.valueFormat,c.value)),o("update:modelValue",_e&&ze,c.value)}},G=_e=>{o("keydown",_e)},w=v(()=>{if(S.value){const _e=Ye.value?S.value:S.value.$el;return Array.from(_e.querySelectorAll("input"))}return[]}),F=(_e,ze,_t)=>{const wt=w.value;wt.length&&(!_t||_t==="min"?(wt[0].setSelectionRange(_e,ze),wt[0].focus()):_t==="max"&&(wt[1].setSelectionRange(_e,ze),wt[1].focus()))},V=()=>{re(!0,!0),Lt(()=>{A=!1})},W=(_e="",ze=!1)=>{ze||(A=!0),L.value=ze;let _t;rt(_e)?_t=_e.map(wt=>wt.toDate()):_t=_e&&_e.toDate(),Be.value=null,P(_t)},K=()=>{p.value=!0},ee=()=>{o("visible-change",!0)},j=_e=>{(_e==null?void 0:_e.key)===Rt.esc&&re(!0,!0)},J=()=>{p.value=!1,L.value=!1,A=!1,o("visible-change",!1)},ie=()=>{L.value=!0},Y=()=>{L.value=!1},re=(_e=!0,ze=!1)=>{A=ze;const[_t,wt]=M(w);let Ho=_t;!_e&&Ye.value&&(Ho=wt),Ho&&Ho.focus()},H=_e=>{_.readonly||ge.value||L.value||A||(L.value=!0,o("focus",_e))};let Q;const ae=_e=>{const ze=async()=>{setTimeout(()=>{var _t;Q===ze&&(!((_t=I.value)!=null&&_t.isFocusInsideContent()&&!m)&&w.value.filter(wt=>wt.contains(document.activeElement)).length===0&&(qe(),L.value=!1,o("blur",_e),_.validateEvent&&(O==null||O.validate("blur").catch(wt=>void 0))),m=!1)},0)};Q=ze,ze()},ge=v(()=>_.disabled||(d==null?void 0:d.disabled)),Se=v(()=>{let _e;if(ke.value?y.value.getDefaultValue&&(_e=y.value.getDefaultValue()):rt(_.modelValue)?_e=_.modelValue.map(ze=>wk(ze,_.valueFormat,c.value)):_e=wk(_.modelValue,_.valueFormat,c.value),y.value.getRangeAvailableTime){const ze=y.value.getRangeAvailableTime(_e);ui(ze,_e)||(_e=ze,P(rt(_e)?_e.map(_t=>_t.toDate()):_e.toDate()))}return rt(_e)&&_e.some(ze=>!ze)&&(_e=[]),_e}),pe=v(()=>{if(!y.value.panelReady)return"";const _e=Le(Se.value);return rt(Be.value)?[Be.value[0]||_e&&_e[0]||"",Be.value[1]||_e&&_e[1]||""]:Be.value!==null?Be.value:!be.value&&ke.value||!L.value&&ke.value?"":_e?Me.value?_e.join(", "):_e:""}),We=v(()=>_.type.includes("time")),be=v(()=>_.type.startsWith("time")),Me=v(()=>_.type==="dates"),Ie=v(()=>_.prefixIcon||(We.value?YX:jle)),Pe=X(!1),Ae=_e=>{_.readonly||ge.value||Pe.value&&(_e.stopPropagation(),V(),P(null),U(null,!0),Pe.value=!1,L.value=!1,y.value.handleClear&&y.value.handleClear())},ke=v(()=>{const{modelValue:_e}=_;return!_e||rt(_e)&&!_e.filter(Boolean).length}),ve=async _e=>{var ze;_.readonly||ge.value||(((ze=_e.target)==null?void 0:ze.tagName)!=="INPUT"||w.value.includes(document.activeElement))&&(L.value=!0)},Te=()=>{_.readonly||ge.value||!ke.value&&_.clearable&&(Pe.value=!0)},Re=()=>{Pe.value=!1},Ue=_e=>{var ze;_.readonly||ge.value||(((ze=_e.touches[0].target)==null?void 0:ze.tagName)!=="INPUT"||w.value.includes(document.activeElement))&&(L.value=!0)},Ye=v(()=>_.type.includes("range")),De=Ds(),Xe=v(()=>{var _e,ze;return(ze=(_e=M(I))==null?void 0:_e.popperRef)==null?void 0:ze.contentRef}),Ke=v(()=>{var _e;return M(Ye)?M(S):(_e=M(S))==null?void 0:_e.$el});fv(Ke,_e=>{const ze=M(Xe),_t=M(Ke);ze&&(_e.target===ze||_e.composedPath().includes(ze))||_e.target===_t||_e.composedPath().includes(_t)||(L.value=!1)});const Be=X(null),qe=()=>{if(Be.value){const _e=xe(pe.value);_e&&je(_e)&&(P(rt(_e)?_e.map(ze=>ze.toDate()):_e.toDate()),Be.value=null)}Be.value===""&&(P(null),U(null),Be.value=null)},xe=_e=>_e?y.value.parseUserInput(_e):null,Le=_e=>_e?y.value.formatToString(_e):null,je=_e=>y.value.isValidValue(_e),He=async _e=>{if(_.readonly||ge.value)return;const{code:ze}=_e;if(G(_e),ze===Rt.esc){L.value===!0&&(L.value=!1,_e.preventDefault(),_e.stopPropagation());return}if(ze===Rt.down&&(y.value.handleFocusPicker&&(_e.preventDefault(),_e.stopPropagation()),L.value===!1&&(L.value=!0,await Lt()),y.value.handleFocusPicker)){y.value.handleFocusPicker();return}if(ze===Rt.tab){m=!0;return}if(ze===Rt.enter||ze===Rt.numpadEnter){(Be.value===null||Be.value===""||je(xe(pe.value)))&&(qe(),L.value=!1),_e.stopPropagation();return}if(Be.value){_e.stopPropagation();return}y.value.handleKeydownInput&&y.value.handleKeydownInput(_e)},Je=_e=>{Be.value=_e,L.value||(L.value=!0)},St=_e=>{const ze=_e.target;Be.value?Be.value=[ze.value,Be.value[1]]:Be.value=[ze.value,null]},Ot=_e=>{const ze=_e.target;Be.value?Be.value=[Be.value[0],ze.value]:Be.value=[null,ze.value]},Nt=()=>{var _e;const ze=Be.value,_t=xe(ze&&ze[0]),wt=M(Se);if(_t&&_t.isValid()){Be.value=[Le(_t),((_e=pe.value)==null?void 0:_e[1])||null];const Ho=[_t,wt&&(wt[1]||null)];je(Ho)&&(P(Ho),Be.value=null)}},z=()=>{var _e;const ze=M(Be),_t=xe(ze&&ze[1]),wt=M(Se);if(_t&&_t.isValid()){Be.value=[((_e=M(pe))==null?void 0:_e[0])||null,Le(_t)];const Ho=[wt&&wt[0],_t];je(Ho)&&(P(Ho),Be.value=null)}},y=X({}),x=_e=>{y.value[_e[0]]=_e[1],y.value.panelReady=!0},oe=_e=>{o("calendar-change",_e)},Ee=(_e,ze,_t)=>{o("panel-change",_e,ze,_t)};return Jt("EP_PICKER_BASE",{props:_}),e({focus:re,handleFocusInput:H,handleBlurInput:ae,handleOpen:ie,handleClose:Y,onPick:W}),(_e,ze)=>(B(),Ne(M(wi),Yt({ref_key:"refPopper",ref:I,visible:L.value,effect:"light",pure:"",trigger:"click"},_e.$attrs,{role:"dialog",teleported:"",transition:`${M(T).namespace.value}-zoom-in-top`,"popper-class":[`${M(T).namespace.value}-picker__popper`,_e.popperClass],"popper-options":M(h),"fallback-placements":["bottom","top","right","left"],"gpu-acceleration":!1,"stop-popper-mouse-event":!1,"hide-after":0,persistent:"",onBeforeShow:K,onShow:ee,onHide:J}),{default:de(()=>[M(Ye)?(B(),se("div",{key:1,ref_key:"inputRef",ref:S,class:k(M(b)),style:dt(_e.$attrs.style),onClick:H,onMouseenter:Te,onMouseleave:Re,onTouchstart:Ue,onKeydown:He},[M(Ie)?(B(),Ne(M(Et),{key:0,class:k([M(E).e("icon"),M(u).e("icon")]),onMousedown:Ct(ve,["prevent"]),onTouchstart:Ue},{default:de(()=>[(B(),Ne(Kt(M(Ie))))]),_:1},8,["class","onMousedown"])):Ce("v-if",!0),te("input",{id:_e.id&&_e.id[0],autocomplete:"off",name:_e.name&&_e.name[0],placeholder:_e.startPlaceholder,value:M(pe)&&M(pe)[0],disabled:M(ge),readonly:!_e.editable||_e.readonly,class:k(M(u).b("input")),onMousedown:ve,onInput:St,onChange:Nt,onFocus:H,onBlur:ae},null,42,Nde),ye(_e.$slots,"range-separator",{},()=>[te("span",{class:k(M(u).b("separator"))},Qe(_e.rangeSeparator),3)]),te("input",{id:_e.id&&_e.id[1],autocomplete:"off",name:_e.name&&_e.name[1],placeholder:_e.endPlaceholder,value:M(pe)&&M(pe)[1],disabled:M(ge),readonly:!_e.editable||_e.readonly,class:k(M(u).b("input")),onMousedown:ve,onFocus:H,onBlur:ae,onInput:Ot,onChange:z},null,42,Pde),_e.clearIcon?(B(),Ne(M(Et),{key:1,class:k(M(N)),onClick:Ae},{default:de(()=>[(B(),Ne(Kt(_e.clearIcon)))]),_:1},8,["class"])):Ce("v-if",!0)],38)):(B(),Ne(M(Ri),{key:0,id:_e.id,ref_key:"inputRef",ref:S,"container-role":"combobox","model-value":M(pe),name:_e.name,size:M(De),disabled:M(ge),placeholder:_e.placeholder,class:k([M(T).b("editor"),M(T).bm("editor",_e.type),_e.$attrs.class]),style:dt(_e.$attrs.style),readonly:!_e.editable||_e.readonly||M(Me)||_e.type==="week",label:_e.label,tabindex:_e.tabindex,"validate-event":!1,onInput:Je,onFocus:H,onBlur:ae,onKeydown:He,onChange:qe,onMousedown:ve,onMouseenter:Te,onMouseleave:Re,onTouchstart:Ue,onClick:ze[0]||(ze[0]=Ct(()=>{},["stop"]))},{prefix:de(()=>[M(Ie)?(B(),Ne(M(Et),{key:0,class:k(M(E).e("icon")),onMousedown:Ct(ve,["prevent"]),onTouchstart:Ue},{default:de(()=>[(B(),Ne(Kt(M(Ie))))]),_:1},8,["class","onMousedown"])):Ce("v-if",!0)]),suffix:de(()=>[Pe.value&&_e.clearIcon?(B(),Ne(M(Et),{key:0,class:k(`${M(E).e("icon")} clear-icon`),onClick:Ct(Ae,["stop"])},{default:de(()=>[(B(),Ne(Kt(_e.clearIcon)))]),_:1},8,["class","onClick"])):Ce("v-if",!0)]),_:1},8,["id","model-value","name","size","disabled","placeholder","class","style","readonly","label","tabindex","onKeydown"]))]),content:de(()=>[ye(_e.$slots,"default",{visible:L.value,actualVisible:p.value,parsedValue:M(Se),format:_e.format,dateFormat:_e.dateFormat,timeFormat:_e.timeFormat,unlinkPanels:_e.unlinkPanels,type:_e.type,defaultValue:_e.defaultValue,onPick:W,onSelectRange:F,onSetPickerOption:x,onCalendarChange:oe,onPanelChange:Ee,onKeydown:j,onMousedown:ze[1]||(ze[1]=Ct(()=>{},["stop"]))})]),_:3},16,["visible","transition","popper-class","popper-options"]))}});var lY=tt(Dde,[["__file","picker.vue"]]);const Ude=et({..._Y,datetimeRole:String,parsedValue:{type:me(Object)}}),aY=({getAvailableHours:t,getAvailableMinutes:e,getAvailableSeconds:o})=>{const _=(T,E,u,d)=>{const O={hour:t,minute:e,second:o};let h=T;return["hour","minute","second"].forEach(I=>{if(O[I]){let S;const L=O[I];switch(I){case"minute":{S=L(h.hour(),E,d);break}case"second":{S=L(h.hour(),h.minute(),E,d);break}default:{S=L(E,d);break}}if(S!=null&&S.length&&!S.includes(h[I]())){const p=u?0:S.length-1;h=h[I](S[p])}}}),h},l={};return{timePickerOptions:l,getAvailableTime:_,onSetOption:([T,E])=>{l[T]=E}}},qC=t=>{const e=(_,l)=>_||l,o=_=>_!==!0;return t.map(e).filter(o)},cY=(t,e,o)=>({getHoursList:(T,E)=>jC(24,t&&(()=>t==null?void 0:t(T,E))),getMinutesList:(T,E,u)=>jC(60,e&&(()=>e==null?void 0:e(T,E,u))),getSecondsList:(T,E,u,d)=>jC(60,o&&(()=>o==null?void 0:o(T,E,u,d)))}),TY=(t,e,o)=>{const{getHoursList:_,getMinutesList:l,getSecondsList:c}=cY(t,e,o);return{getAvailableHours:(d,O)=>qC(_(d,O)),getAvailableMinutes:(d,O,h)=>qC(l(d,O,h)),getAvailableSeconds:(d,O,h,I)=>qC(c(d,O,h,I))}},EY=t=>{const e=X(t.parsedValue);return Fe(()=>t.visible,o=>{o||(e.value=t.parsedValue)}),e},xl=new Map;let kk;ro&&(document.addEventListener("mousedown",t=>kk=t),document.addEventListener("mouseup",t=>{for(const e of xl.values())for(const{documentHandler:o}of e)o(t,kk)}));function Hk(t,e){let o=[];return Array.isArray(e.arg)?o=e.arg:zn(e.arg)&&o.push(e.arg),function(_,l){const c=e.instance.popperRef,T=_.target,E=l==null?void 0:l.target,u=!e||!e.instance,d=!T||!E,O=t.contains(T)||t.contains(E),h=t===T,I=o.length&&o.some(L=>L==null?void 0:L.contains(T))||o.length&&o.includes(E),S=c&&(c.contains(T)||c.contains(E));u||d||O||h||I||S||e.value(_,l)}}const nl={beforeMount(t,e){xl.has(t)||xl.set(t,[]),xl.get(t).push({documentHandler:Hk(t,e),bindingFn:e.value})},updated(t,e){xl.has(t)||xl.set(t,[]);const o=xl.get(t),_=o.findIndex(c=>c.bindingFn===e.oldValue),l={documentHandler:Hk(t,e),bindingFn:e.value};_>=0?o.splice(_,1,l):o.push(l)},unmounted(t){xl.delete(t)}},yde=100,$de=600,$I={beforeMount(t,e){const o=e.value,{interval:_=yde,delay:l=$de}=At(o)?{}:o;let c,T;const E=()=>At(o)?o():o.handler(),u=()=>{T&&(clearTimeout(T),T=void 0),c&&(clearInterval(c),c=void 0)};t.addEventListener("mousedown",d=>{d.button===0&&(u(),E(),document.addEventListener("mouseup",()=>u(),{once:!0}),T=setTimeout(()=>{c=setInterval(()=>{E()},_)},l))})}},qb="_trap-focus-children",bc=[],xk=t=>{if(bc.length===0)return;const e=bc[bc.length-1][qb];if(e.length>0&&t.code===Rt.tab){if(e.length===1){t.preventDefault(),document.activeElement!==e[0]&&e[0].focus();return}const o=t.shiftKey,_=t.target===e[0],l=t.target===e[e.length-1];_&&o&&(t.preventDefault(),e[e.length-1].focus()),l&&!o&&(t.preventDefault(),e[0].focus())}},Bde={beforeMount(t){t[qb]=BG(t),bc.push(t),bc.length<=1&&document.addEventListener("keydown",xk)},updated(t){Lt(()=>{t[qb]=BG(t)})},unmounted(){bc.shift(),bc.length===0&&document.removeEventListener("keydown",xk)}};var Fk=!1,Ic,Qb,Jb,pR,LR,uY,fR,eN,tN,oN,gY,sN,iN,dY,OY;function Xi(){if(!Fk){Fk=!0;var t=navigator.userAgent,e=/(?:MSIE.(\d+\.\d+))|(?:(?:Firefox|GranParadiso|Iceweasel).(\d+\.\d+))|(?:Opera(?:.+Version.|.)(\d+\.\d+))|(?:AppleWebKit.(\d+(?:\.\d+)?))|(?:Trident\/\d+\.\d+.*rv:(\d+\.\d+))/.exec(t),o=/(Mac OS X)|(Windows)|(Linux)/.exec(t);if(sN=/\b(iPhone|iP[ao]d)/.exec(t),iN=/\b(iP[ao]d)/.exec(t),oN=/Android/i.exec(t),dY=/FBAN\/\w+;/i.exec(t),OY=/Mobile/i.exec(t),gY=!!/Win64/.exec(t),e){Ic=e[1]?parseFloat(e[1]):e[5]?parseFloat(e[5]):NaN,Ic&&document&&document.documentMode&&(Ic=document.documentMode);var _=/(?:Trident\/(\d+.\d+))/.exec(t);uY=_?parseFloat(_[1])+4:Ic,Qb=e[2]?parseFloat(e[2]):NaN,Jb=e[3]?parseFloat(e[3]):NaN,pR=e[4]?parseFloat(e[4]):NaN,pR?(e=/(?:Chrome\/(\d+\.\d+))/.exec(t),LR=e&&e[1]?parseFloat(e[1]):NaN):LR=NaN}else Ic=Qb=Jb=LR=pR=NaN;if(o){if(o[1]){var l=/(?:Mac OS X (\d+(?:[._]\d+)?))/.exec(t);fR=l?parseFloat(l[1].replace("_",".")):!0}else fR=!1;eN=!!o[2],tN=!!o[3]}else fR=eN=tN=!1}}var nN={ie:function(){return Xi()||Ic},ieCompatibilityMode:function(){return Xi()||uY>Ic},ie64:function(){return nN.ie()&&gY},firefox:function(){return Xi()||Qb},opera:function(){return Xi()||Jb},webkit:function(){return Xi()||pR},safari:function(){return nN.webkit()},chrome:function(){return Xi()||LR},windows:function(){return Xi()||eN},osx:function(){return Xi()||fR},linux:function(){return Xi()||tN},iphone:function(){return Xi()||sN},mobile:function(){return Xi()||sN||iN||oN||OY},nativeApp:function(){return Xi()||dY},android:function(){return Xi()||oN},ipad:function(){return Xi()||iN}},wde=nN,jM=!!(typeof window<"u"&&window.document&&window.document.createElement),Gde={canUseDOM:jM,canUseWorkers:typeof Worker<"u",canUseEventListeners:jM&&!!(window.addEventListener||window.attachEvent),canUseViewport:jM&&!!window.screen,isInWorker:!jM},hY=Gde,MY;hY.canUseDOM&&(MY=document.implementation&&document.implementation.hasFeature&&document.implementation.hasFeature("","")!==!0);function kde(t,e){if(!hY.canUseDOM||e&&!("addEventListener"in document))return!1;var o="on"+t,_=o in document;if(!_){var l=document.createElement("div");l.setAttribute(o,"return;"),_=typeof l[o]=="function"}return!_&&MY&&t==="wheel"&&(_=document.implementation.hasFeature("Events.wheel","3.0")),_}var Hde=kde,Vk=10,Wk=40,Xk=800;function RY(t){var e=0,o=0,_=0,l=0;return"detail"in t&&(o=t.detail),"wheelDelta"in t&&(o=-t.wheelDelta/120),"wheelDeltaY"in t&&(o=-t.wheelDeltaY/120),"wheelDeltaX"in t&&(e=-t.wheelDeltaX/120),"axis"in t&&t.axis===t.HORIZONTAL_AXIS&&(e=o,o=0),_=e*Vk,l=o*Vk,"deltaY"in t&&(l=t.deltaY),"deltaX"in t&&(_=t.deltaX),(_||l)&&t.deltaMode&&(t.deltaMode==1?(_*=Wk,l*=Wk):(_*=Xk,l*=Xk)),_&&!e&&(e=_<1?-1:1),l&&!o&&(o=l<1?-1:1),{spinX:e,spinY:o,pixelX:_,pixelY:l}}RY.getEventType=function(){return wde.firefox()?"DOMMouseScroll":Hde("wheel")?"wheel":"mousewheel"};var xde=RY;/**
- * Checks if an event is supported in the current execution environment.
- *
- * NOTE: This will not work correctly for non-generic events such as `change`,
- * `reset`, `load`, `error`, and `select`.
- *
- * Borrows from Modernizr.
- *
- * @param {string} eventNameSuffix Event name, e.g. "click".
- * @param {?boolean} capture Check if the capture phase is supported.
- * @return {boolean} True if the event is supported.
- * @internal
- * @license Modernizr 3.0.0pre (Custom Build) | MIT
- */const Fde=function(t,e){if(t&&t.addEventListener){const o=function(_){const l=xde(_);e&&Reflect.apply(e,this,[_,l])};t.addEventListener("wheel",o,{passive:!0})}},Vde={beforeMount(t,e){Fde(t,e.value)}},Wde=et({role:{type:String,required:!0},spinnerDate:{type:me(Object),required:!0},showSeconds:{type:Boolean,default:!0},arrowControl:Boolean,amPmMode:{type:me(String),default:""},...rY}),Xde=["onClick"],Yde=["onMouseenter"],Kde=Oe({__name:"basic-time-spinner",props:Wde,emits:["change","select-range","set-option"],setup(t,{emit:e}){const o=t,_=Ze("time"),{getHoursList:l,getMinutesList:c,getSecondsList:T}=cY(o.disabledHours,o.disabledMinutes,o.disabledSeconds);let E=!1;const u=X(),d=X(),O=X(),h=X(),I={hours:d,minutes:O,seconds:h},S=v(()=>o.showSeconds?yk:yk.slice(0,2)),L=v(()=>{const{spinnerDate:H}=o,Q=H.hour(),ae=H.minute(),ge=H.second();return{hours:Q,minutes:ae,seconds:ge}}),p=v(()=>{const{hours:H,minutes:Q}=M(L);return{hours:l(o.role),minutes:c(H,o.role),seconds:T(H,Q,o.role)}}),C=v(()=>{const{hours:H,minutes:Q,seconds:ae}=M(L);return{hours:ZC(H,23),minutes:ZC(Q,59),seconds:ZC(ae,59)}}),m=nn(H=>{E=!1,N(H)},200),A=H=>{if(!!!o.amPmMode)return"";const ae=o.amPmMode==="A";let ge=H<12?" am":" pm";return ae&&(ge=ge.toUpperCase()),ge},b=H=>{let Q;switch(H){case"hours":Q=[0,2];break;case"minutes":Q=[3,5];break;case"seconds":Q=[6,8];break}const[ae,ge]=Q;e("select-range",ae,ge),u.value=H},N=H=>{G(H,M(L)[H])},U=()=>{N("hours"),N("minutes"),N("seconds")},P=H=>H.querySelector(`.${_.namespace.value}-scrollbar__wrap`),G=(H,Q)=>{if(o.arrowControl)return;const ae=M(I[H]);ae&&ae.$el&&(P(ae.$el).scrollTop=Math.max(0,Q*w(H)))},w=H=>{const Q=M(I[H]),ae=Q==null?void 0:Q.$el.querySelector("li");return ae&&Number.parseFloat(Jl(ae,"height"))||0},F=()=>{W(1)},V=()=>{W(-1)},W=H=>{u.value||b("hours");const Q=u.value,ae=M(L)[Q],ge=u.value==="hours"?24:60,Se=K(Q,ae,H,ge);ee(Q,Se),G(Q,Se),Lt(()=>b(Q))},K=(H,Q,ae,ge)=>{let Se=(Q+ae+ge)%ge;const pe=M(p)[H];for(;pe[Se]&&Se!==Q;)Se=(Se+ae+ge)%ge;return Se},ee=(H,Q)=>{if(M(p)[H][Q])return;const{hours:Se,minutes:pe,seconds:We}=M(L);let be;switch(H){case"hours":be=o.spinnerDate.hour(Q).minute(pe).second(We);break;case"minutes":be=o.spinnerDate.hour(Se).minute(Q).second(We);break;case"seconds":be=o.spinnerDate.hour(Se).minute(pe).second(Q);break}e("change",be)},j=(H,{value:Q,disabled:ae})=>{ae||(ee(H,Q),b(H),G(H,Q))},J=H=>{E=!0,m(H);const Q=Math.min(Math.round((P(M(I[H]).$el).scrollTop-(ie(H)*.5-10)/w(H)+3)/w(H)),H==="hours"?23:59);ee(H,Q)},ie=H=>M(I[H]).$el.offsetHeight,Y=()=>{const H=Q=>{const ae=M(I[Q]);ae&&ae.$el&&(P(ae.$el).onscroll=()=>{J(Q)})};H("hours"),H("minutes"),H("seconds")};Bt(()=>{Lt(()=>{!o.arrowControl&&Y(),U(),o.role==="start"&&b("hours")})});const re=(H,Q)=>{I[Q].value=H};return e("set-option",[`${o.role}_scrollDown`,W]),e("set-option",[`${o.role}_emitSelectRange`,b]),Fe(()=>o.spinnerDate,()=>{E||U()}),(H,Q)=>(B(),se("div",{class:k([M(_).b("spinner"),{"has-seconds":H.showSeconds}])},[H.arrowControl?Ce("v-if",!0):(B(!0),se(ht,{key:0},oo(M(S),ae=>(B(),Ne(M(ul),{key:ae,ref_for:!0,ref:ge=>re(ge,ae),class:k(M(_).be("spinner","wrapper")),"wrap-style":"max-height: inherit;","view-class":M(_).be("spinner","list"),noresize:"",tag:"ul",onMouseenter:ge=>b(ae),onMousemove:ge=>N(ae)},{default:de(()=>[(B(!0),se(ht,null,oo(M(p)[ae],(ge,Se)=>(B(),se("li",{key:Se,class:k([M(_).be("spinner","item"),M(_).is("active",Se===M(L)[ae]),M(_).is("disabled",ge)]),onClick:pe=>j(ae,{value:Se,disabled:ge})},[ae==="hours"?(B(),se(ht,{key:0},[qt(Qe(("0"+(H.amPmMode?Se%12||12:Se)).slice(-2))+Qe(A(Se)),1)],64)):(B(),se(ht,{key:1},[qt(Qe(("0"+Se).slice(-2)),1)],64))],10,Xde))),128))]),_:2},1032,["class","view-class","onMouseenter","onMousemove"]))),128)),H.arrowControl?(B(!0),se(ht,{key:1},oo(M(S),ae=>(B(),se("div",{key:ae,class:k([M(_).be("spinner","wrapper"),M(_).is("arrow")]),onMouseenter:ge=>b(ae)},[yt((B(),Ne(M(Et),{class:k(["arrow-up",M(_).be("spinner","arrow")])},{default:de(()=>[ne(M(bv))]),_:1},8,["class"])),[[M($I),V]]),yt((B(),Ne(M(Et),{class:k(["arrow-down",M(_).be("spinner","arrow")])},{default:de(()=>[ne(M(Tl))]),_:1},8,["class"])),[[M($I),F]]),te("ul",{class:k(M(_).be("spinner","list"))},[(B(!0),se(ht,null,oo(M(C)[ae],(ge,Se)=>(B(),se("li",{key:Se,class:k([M(_).be("spinner","item"),M(_).is("active",ge===M(L)[ae]),M(_).is("disabled",M(p)[ae][ge])])},[typeof ge=="number"?(B(),se(ht,{key:0},[ae==="hours"?(B(),se(ht,{key:0},[qt(Qe(("0"+(H.amPmMode?ge%12||12:ge)).slice(-2))+Qe(A(ge)),1)],64)):(B(),se(ht,{key:1},[qt(Qe(("0"+ge).slice(-2)),1)],64))],64)):Ce("v-if",!0)],2))),128))],2)],42,Yde))),128)):Ce("v-if",!0)],2))}});var rN=tt(Kde,[["__file","basic-time-spinner.vue"]]);const zde=Oe({__name:"panel-time-pick",props:Ude,emits:["pick","select-range","set-picker-option"],setup(t,{emit:e}){const o=t,_=lt("EP_PICKER_BASE"),{arrowControl:l,disabledHours:c,disabledMinutes:T,disabledSeconds:E,defaultValue:u}=_.props,{getAvailableHours:d,getAvailableMinutes:O,getAvailableSeconds:h}=TY(c,T,E),I=Ze("time"),{t:S,lang:L}=lo(),p=X([0,2]),C=EY(o),m=v(()=>bs(o.actualVisible)?`${I.namespace.value}-zoom-in-top`:""),A=v(()=>o.format.includes("ss")),b=v(()=>o.format.includes("A")?"A":o.format.includes("a")?"a":""),N=re=>{const H=xt(re).locale(L.value),Q=j(H);return H.isSame(Q)},U=()=>{e("pick",C.value,!1)},P=(re=!1,H=!1)=>{H||e("pick",o.parsedValue,re)},G=re=>{if(!o.visible)return;const H=j(re).millisecond(0);e("pick",H,!0)},w=(re,H)=>{e("select-range",re,H),p.value=[re,H]},F=re=>{const H=[0,3].concat(A.value?[6]:[]),Q=["hours","minutes"].concat(A.value?["seconds"]:[]),ge=(H.indexOf(p.value[0])+re+H.length)%H.length;W.start_emitSelectRange(Q[ge])},V=re=>{const H=re.code,{left:Q,right:ae,up:ge,down:Se}=Rt;if([Q,ae].includes(H)){F(H===Q?-1:1),re.preventDefault();return}if([ge,Se].includes(H)){const pe=H===ge?-1:1;W.start_scrollDown(pe),re.preventDefault();return}},{timePickerOptions:W,onSetOption:K,getAvailableTime:ee}=aY({getAvailableHours:d,getAvailableMinutes:O,getAvailableSeconds:h}),j=re=>ee(re,o.datetimeRole||"",!0),J=re=>re?xt(re,o.format).locale(L.value):null,ie=re=>re?re.format(o.format):null,Y=()=>xt(u).locale(L.value);return e("set-picker-option",["isValidValue",N]),e("set-picker-option",["formatToString",ie]),e("set-picker-option",["parseUserInput",J]),e("set-picker-option",["handleKeydownInput",V]),e("set-picker-option",["getRangeAvailableTime",j]),e("set-picker-option",["getDefaultValue",Y]),(re,H)=>(B(),Ne(Ns,{name:M(m)},{default:de(()=>[re.actualVisible||re.visible?(B(),se("div",{key:0,class:k(M(I).b("panel"))},[te("div",{class:k([M(I).be("panel","content"),{"has-seconds":M(A)}])},[ne(rN,{ref:"spinner",role:re.datetimeRole||"start","arrow-control":M(l),"show-seconds":M(A),"am-pm-mode":M(b),"spinner-date":re.parsedValue,"disabled-hours":M(c),"disabled-minutes":M(T),"disabled-seconds":M(E),onChange:G,onSetOption:M(K),onSelectRange:w},null,8,["role","arrow-control","show-seconds","am-pm-mode","spinner-date","disabled-hours","disabled-minutes","disabled-seconds","onSetOption"])],2),te("div",{class:k(M(I).be("panel","footer"))},[te("button",{type:"button",class:k([M(I).be("panel","btn"),"cancel"]),onClick:U},Qe(M(S)("el.datepicker.cancel")),3),te("button",{type:"button",class:k([M(I).be("panel","btn"),"confirm"]),onClick:H[0]||(H[0]=Q=>P())},Qe(M(S)("el.datepicker.confirm")),3)],2)],2)):Ce("v-if",!0)]),_:1},8,["name"]))}});var BI=tt(zde,[["__file","panel-time-pick.vue"]]);const Zde=et({..._Y,parsedValue:{type:me(Array)}}),jde=["disabled"],qde=Oe({__name:"panel-time-range",props:Zde,emits:["pick","select-range","set-picker-option"],setup(t,{emit:e}){const o=t,_=(ke,ve)=>{const Te=[];for(let Re=ke;Re<=ve;Re++)Te.push(Re);return Te},{t:l,lang:c}=lo(),T=Ze("time"),E=Ze("picker"),u=lt("EP_PICKER_BASE"),{arrowControl:d,disabledHours:O,disabledMinutes:h,disabledSeconds:I,defaultValue:S}=u.props,L=v(()=>[T.be("range-picker","body"),T.be("panel","content"),T.is("arrow",d),N.value?"has-seconds":""]),p=v(()=>[T.be("range-picker","body"),T.be("panel","content"),T.is("arrow",d),N.value?"has-seconds":""]),C=v(()=>o.parsedValue[0]),m=v(()=>o.parsedValue[1]),A=EY(o),b=()=>{e("pick",A.value,!1)},N=v(()=>o.format.includes("ss")),U=v(()=>o.format.includes("A")?"A":o.format.includes("a")?"a":""),P=(ke=!1)=>{e("pick",[C.value,m.value],ke)},G=ke=>{V(ke.millisecond(0),m.value)},w=ke=>{V(C.value,ke.millisecond(0))},F=ke=>{const ve=ke.map(Re=>xt(Re).locale(c.value)),Te=ae(ve);return ve[0].isSame(Te[0])&&ve[1].isSame(Te[1])},V=(ke,ve)=>{e("pick",[ke,ve],!0)},W=v(()=>C.value>m.value),K=X([0,2]),ee=(ke,ve)=>{e("select-range",ke,ve,"min"),K.value=[ke,ve]},j=v(()=>N.value?11:8),J=(ke,ve)=>{e("select-range",ke,ve,"max");const Te=M(j);K.value=[ke+Te,ve+Te]},ie=ke=>{const ve=N.value?[0,3,6,11,14,17]:[0,3,8,11],Te=["hours","minutes"].concat(N.value?["seconds"]:[]),Ue=(ve.indexOf(K.value[0])+ke+ve.length)%ve.length,Ye=ve.length/2;Ue<Ye?We.start_emitSelectRange(Te[Ue]):We.end_emitSelectRange(Te[Ue-Ye])},Y=ke=>{const ve=ke.code,{left:Te,right:Re,up:Ue,down:Ye}=Rt;if([Te,Re].includes(ve)){ie(ve===Te?-1:1),ke.preventDefault();return}if([Ue,Ye].includes(ve)){const De=ve===Ue?-1:1,Xe=K.value[0]<j.value?"start":"end";We[`${Xe}_scrollDown`](De),ke.preventDefault();return}},re=(ke,ve)=>{const Te=O?O(ke):[],Re=ke==="start",Ye=(ve||(Re?m.value:C.value)).hour(),De=Re?_(Ye+1,23):_(0,Ye-1);return HC(Te,De)},H=(ke,ve,Te)=>{const Re=h?h(ke,ve):[],Ue=ve==="start",Ye=Te||(Ue?m.value:C.value),De=Ye.hour();if(ke!==De)return Re;const Xe=Ye.minute(),Ke=Ue?_(Xe+1,59):_(0,Xe-1);return HC(Re,Ke)},Q=(ke,ve,Te,Re)=>{const Ue=I?I(ke,ve,Te):[],Ye=Te==="start",De=Re||(Ye?m.value:C.value),Xe=De.hour(),Ke=De.minute();if(ke!==Xe||ve!==Ke)return Ue;const Be=De.second(),qe=Ye?_(Be+1,59):_(0,Be-1);return HC(Ue,qe)},ae=([ke,ve])=>[be(ke,"start",!0,ve),be(ve,"end",!1,ke)],{getAvailableHours:ge,getAvailableMinutes:Se,getAvailableSeconds:pe}=TY(re,H,Q),{timePickerOptions:We,getAvailableTime:be,onSetOption:Me}=aY({getAvailableHours:ge,getAvailableMinutes:Se,getAvailableSeconds:pe}),Ie=ke=>ke?rt(ke)?ke.map(ve=>xt(ve,o.format).locale(c.value)):xt(ke,o.format).locale(c.value):null,Pe=ke=>ke?rt(ke)?ke.map(ve=>ve.format(o.format)):ke.format(o.format):null,Ae=()=>{if(rt(S))return S.map(ve=>xt(ve).locale(c.value));const ke=xt(S).locale(c.value);return[ke,ke.add(60,"m")]};return e("set-picker-option",["formatToString",Pe]),e("set-picker-option",["parseUserInput",Ie]),e("set-picker-option",["isValidValue",F]),e("set-picker-option",["handleKeydownInput",Y]),e("set-picker-option",["getDefaultValue",Ae]),e("set-picker-option",["getRangeAvailableTime",ae]),(ke,ve)=>ke.actualVisible?(B(),se("div",{key:0,class:k([M(T).b("range-picker"),M(E).b("panel")])},[te("div",{class:k(M(T).be("range-picker","content"))},[te("div",{class:k(M(T).be("range-picker","cell"))},[te("div",{class:k(M(T).be("range-picker","header"))},Qe(M(l)("el.datepicker.startTime")),3),te("div",{class:k(M(L))},[ne(rN,{ref:"minSpinner",role:"start","show-seconds":M(N),"am-pm-mode":M(U),"arrow-control":M(d),"spinner-date":M(C),"disabled-hours":re,"disabled-minutes":H,"disabled-seconds":Q,onChange:G,onSetOption:M(Me),onSelectRange:ee},null,8,["show-seconds","am-pm-mode","arrow-control","spinner-date","onSetOption"])],2)],2),te("div",{class:k(M(T).be("range-picker","cell"))},[te("div",{class:k(M(T).be("range-picker","header"))},Qe(M(l)("el.datepicker.endTime")),3),te("div",{class:k(M(p))},[ne(rN,{ref:"maxSpinner",role:"end","show-seconds":M(N),"am-pm-mode":M(U),"arrow-control":M(d),"spinner-date":M(m),"disabled-hours":re,"disabled-minutes":H,"disabled-seconds":Q,onChange:w,onSetOption:M(Me),onSelectRange:J},null,8,["show-seconds","am-pm-mode","arrow-control","spinner-date","onSetOption"])],2)],2)],2),te("div",{class:k(M(T).be("panel","footer"))},[te("button",{type:"button",class:k([M(T).be("panel","btn"),"cancel"]),onClick:ve[0]||(ve[0]=Te=>b())},Qe(M(l)("el.datepicker.cancel")),3),te("button",{type:"button",class:k([M(T).be("panel","btn"),"confirm"]),disabled:M(W),onClick:ve[1]||(ve[1]=Te=>P())},Qe(M(l)("el.datepicker.confirm")),11,jde)],2)],2)):Ce("v-if",!0)}});var Qde=tt(qde,[["__file","panel-time-range.vue"]]);xt.extend(oD);var Jde=Oe({name:"ElTimePicker",install:null,props:{...sD,isRange:{type:Boolean,default:!1}},emits:["update:modelValue"],setup(t,e){const o=X(),[_,l]=t.isRange?["timerange",Qde]:["time",BI],c=T=>e.emit("update:modelValue",T);return Jt("ElPopperOptions",t.popperOptions),e.expose({focus:T=>{var E;(E=o.value)==null||E.handleFocusInput(T)},blur:T=>{var E;(E=o.value)==null||E.handleBlurInput(T)},handleOpen:()=>{var T;(T=o.value)==null||T.handleOpen()},handleClose:()=>{var T;(T=o.value)==null||T.handleClose()}}),()=>{var T;const E=(T=t.format)!=null?T:jb;return ne(lY,Yt(t,{ref:o,type:_,format:E,"onUpdate:modelValue":c}),{default:u=>ne(l,u,null)})}}});const mR=Jde;mR.install=t=>{t.component(mR.name,mR)};const eOe=mR,tOe=(t,e)=>{const o=t.subtract(1,"month").endOf("month").date();return Ea(e).map((_,l)=>o-(e-l-1))},oOe=t=>{const e=t.daysInMonth();return Ea(e).map((o,_)=>_+1)},sOe=t=>Ea(t.length/7).map(e=>{const o=e*7;return t.slice(o,o+7)}),iOe=et({selectedDay:{type:me(Object)},range:{type:me(Array)},date:{type:me(Object),required:!0},hideHeader:{type:Boolean}}),nOe={pick:t=>Zt(t)};var IY={exports:{}};(function(t,e){(function(o,_){t.exports=_()})(Is,function(){return function(o,_,l){var c=_.prototype,T=function(h){return h&&(h.indexOf?h:h.s)},E=function(h,I,S,L,p){var C=h.name?h:h.$locale(),m=T(C[I]),A=T(C[S]),b=m||A.map(function(U){return U.slice(0,L)});if(!p)return b;var N=C.weekStart;return b.map(function(U,P){return b[(P+(N||0))%7]})},u=function(){return l.Ls[l.locale()]},d=function(h,I){return h.formats[I]||function(S){return S.replace(/(\[[^\]]+])|(MMMM|MM|DD|dddd)/g,function(L,p,C){return p||C.slice(1)})}(h.formats[I.toUpperCase()])},O=function(){var h=this;return{months:function(I){return I?I.format("MMMM"):E(h,"months")},monthsShort:function(I){return I?I.format("MMM"):E(h,"monthsShort","months",3)},firstDayOfWeek:function(){return h.$locale().weekStart||0},weekdays:function(I){return I?I.format("dddd"):E(h,"weekdays")},weekdaysMin:function(I){return I?I.format("dd"):E(h,"weekdaysMin","weekdays",2)},weekdaysShort:function(I){return I?I.format("ddd"):E(h,"weekdaysShort","weekdays",3)},longDateFormat:function(I){return d(h.$locale(),I)},meridiem:this.$locale().meridiem,ordinal:this.$locale().ordinal}};c.localeData=function(){return O.bind(this)()},l.localeData=function(){var h=u();return{firstDayOfWeek:function(){return h.weekStart||0},weekdays:function(){return l.weekdays()},weekdaysShort:function(){return l.weekdaysShort()},weekdaysMin:function(){return l.weekdaysMin()},months:function(){return l.months()},monthsShort:function(){return l.monthsShort()},longDateFormat:function(I){return d(h,I)},meridiem:h.meridiem,ordinal:h.ordinal}},l.months=function(){return E(u(),"months")},l.monthsShort=function(){return E(u(),"monthsShort","months",3)},l.weekdays=function(h){return E(u(),"weekdays",null,null,h)},l.weekdaysShort=function(h){return E(u(),"weekdaysShort","weekdays",3,h)},l.weekdaysMin=function(h){return E(u(),"weekdaysMin","weekdays",2,h)}}})})(IY);var rOe=IY.exports;const SY=Sr(rOe),_Oe=(t,e)=>{xt.extend(SY);const o=xt.localeData().firstDayOfWeek(),{t:_,lang:l}=lo(),c=xt().locale(l.value),T=v(()=>!!t.range&&!!t.range.length),E=v(()=>{let I=[];if(T.value){const[S,L]=t.range,p=Ea(L.date()-S.date()+1).map(A=>({text:S.date()+A,type:"current"}));let C=p.length%7;C=C===0?0:7-C;const m=Ea(C).map((A,b)=>({text:b+1,type:"next"}));I=p.concat(m)}else{const S=t.date.startOf("month").day(),L=tOe(t.date,(S-o+7)%7).map(A=>({text:A,type:"prev"})),p=oOe(t.date).map(A=>({text:A,type:"current"}));I=[...L,...p];const C=7-(I.length%7||7),m=Ea(C).map((A,b)=>({text:b+1,type:"next"}));I=I.concat(m)}return sOe(I)}),u=v(()=>{const I=o;return I===0?xC.map(S=>_(`el.datepicker.weeks.${S}`)):xC.slice(I).concat(xC.slice(0,I)).map(S=>_(`el.datepicker.weeks.${S}`))}),d=(I,S)=>{switch(S){case"prev":return t.date.startOf("month").subtract(1,"month").date(I);case"next":return t.date.startOf("month").add(1,"month").date(I);case"current":return t.date.date(I)}};return{now:c,isInRange:T,rows:E,weekDays:u,getFormattedDate:d,handlePickDay:({text:I,type:S})=>{const L=d(I,S);e("pick",L)},getSlotData:({text:I,type:S})=>{const L=d(I,S);return{isSelected:L.isSame(t.selectedDay),type:`${S}-month`,day:L.format("YYYY-MM-DD"),date:L.toDate()}}}},lOe={key:0},aOe=["onClick"],cOe=Oe({name:"DateTable"}),TOe=Oe({...cOe,props:iOe,emits:nOe,setup(t,{expose:e,emit:o}){const _=t,{isInRange:l,now:c,rows:T,weekDays:E,getFormattedDate:u,handlePickDay:d,getSlotData:O}=_Oe(_,o),h=Ze("calendar-table"),I=Ze("calendar-day"),S=({text:L,type:p})=>{const C=[p];if(p==="current"){const m=u(L,p);m.isSame(_.selectedDay,"day")&&C.push(I.is("selected")),m.isSame(c,"day")&&C.push(I.is("today"))}return C};return e({getFormattedDate:u}),(L,p)=>(B(),se("table",{class:k([M(h).b(),M(h).is("range",M(l))]),cellspacing:"0",cellpadding:"0"},[L.hideHeader?Ce("v-if",!0):(B(),se("thead",lOe,[(B(!0),se(ht,null,oo(M(E),C=>(B(),se("th",{key:C},Qe(C),1))),128))])),te("tbody",null,[(B(!0),se(ht,null,oo(M(T),(C,m)=>(B(),se("tr",{key:m,class:k({[M(h).e("row")]:!0,[M(h).em("row","hide-border")]:m===0&&L.hideHeader})},[(B(!0),se(ht,null,oo(C,(A,b)=>(B(),se("td",{key:b,class:k(S(A)),onClick:N=>M(d)(A)},[te("div",{class:k(M(I).b())},[ye(L.$slots,"date-cell",{data:M(O)(A)},()=>[te("span",null,Qe(A.text),1)])],2)],10,aOe))),128))],2))),128))])],2))}});var Yk=tt(TOe,[["__file","date-table.vue"]]);const EOe=(t,e)=>{const o=t.endOf("month"),_=e.startOf("month"),c=o.isSame(_,"week")?_.add(1,"week"):_;return[[t,o],[c.startOf("week"),e]]},uOe=(t,e)=>{const o=t.endOf("month"),_=t.add(1,"month").startOf("month"),l=o.isSame(_,"week")?_.add(1,"week"):_,c=l.endOf("month"),T=e.startOf("month"),E=c.isSame(T,"week")?T.add(1,"week"):T;return[[t,o],[l.startOf("week"),c],[E.startOf("week"),e]]},gOe=(t,e,o)=>{const _=zs(),{lang:l}=lo(),c=X(),T=xt().locale(l.value),E=v({get(){return t.modelValue?d.value:c.value},set(m){if(!m)return;c.value=m;const A=m.toDate();e(yi,A),e(Xt,A)}}),u=v(()=>{if(!t.range)return[];const m=t.range.map(N=>xt(N).locale(l.value)),[A,b]=m;return A.isAfter(b)?[]:A.isSame(b,"month")?L(A,b):A.add(1,"month").month()!==b.month()?[]:L(A,b)}),d=v(()=>t.modelValue?xt(t.modelValue).locale(l.value):E.value||(u.value.length?u.value[0][0]:T)),O=v(()=>d.value.subtract(1,"month").date(1)),h=v(()=>d.value.add(1,"month").date(1)),I=v(()=>d.value.subtract(1,"year").date(1)),S=v(()=>d.value.add(1,"year").date(1)),L=(m,A)=>{const b=m.startOf("week"),N=A.endOf("week"),U=b.get("month"),P=N.get("month");return U===P?[[b,N]]:(U+1)%12===P?EOe(b,N):U+2===P||(U+1)%11===P?uOe(b,N):[]},p=m=>{E.value=m},C=m=>{const b={"prev-month":O.value,"next-month":h.value,"prev-year":I.value,"next-year":S.value,today:T}[m];b.isSame(d.value,"day")||p(b)};return u_({from:'"dateCell"',replacement:'"date-cell"',scope:"ElCalendar",version:"2.3.0",ref:"https://element-plus.org/en-US/component/calendar.html#slots",type:"Slot"},v(()=>!!_.dateCell)),{calculateValidatedDateRange:L,date:d,realSelectedDay:E,pickDay:p,selectDate:C,validatedRange:u}},dOe=t=>rt(t)&&t.length===2&&t.every(e=>Gc(e)),OOe=et({modelValue:{type:Date},range:{type:me(Array),validator:dOe}}),hOe={[Xt]:t=>Gc(t),[yi]:t=>Gc(t)},MOe="ElCalendar",ROe=Oe({name:MOe}),IOe=Oe({...ROe,props:OOe,emits:hOe,setup(t,{expose:e,emit:o}){const _=t,l=Ze("calendar"),{calculateValidatedDateRange:c,date:T,pickDay:E,realSelectedDay:u,selectDate:d,validatedRange:O}=gOe(_,o),{t:h}=lo(),I=v(()=>{const S=`el.datepicker.month${T.value.format("M")}`;return`${T.value.year()} ${h("el.datepicker.year")} ${h(S)}`});return e({selectedDay:u,pickDay:E,selectDate:d,calculateValidatedDateRange:c}),(S,L)=>(B(),se("div",{class:k(M(l).b())},[te("div",{class:k(M(l).e("header"))},[ye(S.$slots,"header",{date:M(I)},()=>[te("div",{class:k(M(l).e("title"))},Qe(M(I)),3),M(O).length===0?(B(),se("div",{key:0,class:k(M(l).e("button-group"))},[ne(M(tY),null,{default:de(()=>[ne(M(Ws),{size:"small",onClick:L[0]||(L[0]=p=>M(d)("prev-month"))},{default:de(()=>[qt(Qe(M(h)("el.datepicker.prevMonth")),1)]),_:1}),ne(M(Ws),{size:"small",onClick:L[1]||(L[1]=p=>M(d)("today"))},{default:de(()=>[qt(Qe(M(h)("el.datepicker.today")),1)]),_:1}),ne(M(Ws),{size:"small",onClick:L[2]||(L[2]=p=>M(d)("next-month"))},{default:de(()=>[qt(Qe(M(h)("el.datepicker.nextMonth")),1)]),_:1})]),_:1})],2)):Ce("v-if",!0)])],2),M(O).length===0?(B(),se("div",{key:0,class:k(M(l).e("body"))},[ne(Yk,{date:M(T),"selected-day":M(u),onPick:M(E)},da({_:2},[S.$slots["date-cell"]||S.$slots.dateCell?{name:"date-cell",fn:de(p=>[S.$slots["date-cell"]?ye(S.$slots,"date-cell",wn(Yt({key:0},p))):ye(S.$slots,"dateCell",wn(Yt({key:1},p)))])}:void 0]),1032,["date","selected-day","onPick"])],2)):(B(),se("div",{key:1,class:k(M(l).e("body"))},[(B(!0),se(ht,null,oo(M(O),(p,C)=>(B(),Ne(Yk,{key:C,date:p[0],"selected-day":M(u),range:p,"hide-header":C!==0,onPick:M(E)},da({_:2},[S.$slots["date-cell"]||S.$slots.dateCell?{name:"date-cell",fn:de(m=>[S.$slots["date-cell"]?ye(S.$slots,"date-cell",wn(Yt({key:0},m))):ye(S.$slots,"dateCell",wn(Yt({key:1},m)))])}:void 0]),1032,["date","selected-day","range","hide-header","onPick"]))),128))],2))],2))}});var SOe=tt(IOe,[["__file","calendar.vue"]]);const pOe=Vt(SOe),LOe=et({header:{type:String,default:""},footer:{type:String,default:""},bodyStyle:{type:me([String,Object,Array]),default:""},bodyClass:String,shadow:{type:String,values:["always","hover","never"],default:"always"}}),fOe=Oe({name:"ElCard"}),mOe=Oe({...fOe,props:LOe,setup(t){const e=Ze("card");return(o,_)=>(B(),se("div",{class:k([M(e).b(),M(e).is(`${o.shadow}-shadow`)])},[o.$slots.header||o.header?(B(),se("div",{key:0,class:k(M(e).e("header"))},[ye(o.$slots,"header",{},()=>[qt(Qe(o.header),1)])],2)):Ce("v-if",!0),te("div",{class:k([M(e).e("body"),o.bodyClass]),style:dt(o.bodyStyle)},[ye(o.$slots,"default")],6),o.$slots.footer||o.footer?(B(),se("div",{key:1,class:k(M(e).e("footer"))},[ye(o.$slots,"footer",{},()=>[qt(Qe(o.footer),1)])],2)):Ce("v-if",!0)],2))}});var COe=tt(mOe,[["__file","card.vue"]]);const AOe=Vt(COe),bOe=et({initialIndex:{type:Number,default:0},height:{type:String,default:""},trigger:{type:String,values:["hover","click"],default:"hover"},autoplay:{type:Boolean,default:!0},interval:{type:Number,default:3e3},indicatorPosition:{type:String,values:["","none","outside"],default:""},arrow:{type:String,values:["always","hover","never"],default:"hover"},type:{type:String,values:["","card"],default:""},loop:{type:Boolean,default:!0},direction:{type:String,values:["horizontal","vertical"],default:"horizontal"},pauseOnHover:{type:Boolean,default:!0}}),NOe={change:(t,e)=>[t,e].every(mt)},pY=Symbol("carouselContextKey"),Kk=300,POe=(t,e,o)=>{const{children:_,addChild:l,removeChild:c}=Yv(Ht(),"ElCarouselItem"),T=zs(),E=X(-1),u=X(null),d=X(!1),O=X(),h=X(0),I=X(!0),S=v(()=>t.arrow!=="never"&&!M(C)),L=v(()=>_.value.some(Se=>Se.props.label.toString().length>0)),p=v(()=>t.type==="card"),C=v(()=>t.direction==="vertical"),m=v(()=>t.height!=="auto"?{height:t.height}:{height:`${h.value}px`,overflow:"hidden"}),A=$c(Se=>{w(Se)},Kk,{trailing:!0}),b=$c(Se=>{ie(Se)},Kk),N=Se=>I.value?E.value<=1?Se<=1:Se>1:!0;function U(){u.value&&(clearInterval(u.value),u.value=null)}function P(){t.interval<=0||!t.autoplay||u.value||(u.value=setInterval(()=>G(),t.interval))}const G=()=>{E.value<_.value.length-1?E.value=E.value+1:t.loop&&(E.value=0)};function w(Se){if(vt(Se)){const be=_.value.filter(Me=>Me.props.name===Se);be.length>0&&(Se=_.value.indexOf(be[0]))}if(Se=Number(Se),Number.isNaN(Se)||Se!==Math.floor(Se))return;const pe=_.value.length,We=E.value;Se<0?E.value=t.loop?pe-1:0:Se>=pe?E.value=t.loop?0:pe-1:E.value=Se,We===E.value&&F(We),H()}function F(Se){_.value.forEach((pe,We)=>{pe.translateItem(We,E.value,Se)})}function V(Se,pe){var We,be,Me,Ie;const Pe=M(_),Ae=Pe.length;if(Ae===0||!Se.states.inStage)return!1;const ke=pe+1,ve=pe-1,Te=Ae-1,Re=Pe[Te].states.active,Ue=Pe[0].states.active,Ye=(be=(We=Pe[ke])==null?void 0:We.states)==null?void 0:be.active,De=(Ie=(Me=Pe[ve])==null?void 0:Me.states)==null?void 0:Ie.active;return pe===Te&&Ue||Ye?"left":pe===0&&Re||De?"right":!1}function W(){d.value=!0,t.pauseOnHover&&U()}function K(){d.value=!1,P()}function ee(Se){M(C)||_.value.forEach((pe,We)=>{Se===V(pe,We)&&(pe.states.hover=!0)})}function j(){M(C)||_.value.forEach(Se=>{Se.states.hover=!1})}function J(Se){E.value=Se}function ie(Se){t.trigger==="hover"&&Se!==E.value&&(E.value=Se)}function Y(){w(E.value-1)}function re(){w(E.value+1)}function H(){U(),t.pauseOnHover||P()}function Q(Se){t.height==="auto"&&(h.value=Se)}function ae(){var Se;const pe=(Se=T.default)==null?void 0:Se.call(T);if(!pe)return null;const We=Ta(pe),be="ElCarouselItem",Me=We.filter(Ie=>Fo(Ie)&&Ie.type.name===be);return(Me==null?void 0:Me.length)===2&&t.loop&&!p.value?(I.value=!0,Me):(I.value=!1,null)}Fe(()=>E.value,(Se,pe)=>{F(pe),I.value&&(Se=Se%2,pe=pe%2),pe>-1&&e("change",Se,pe)}),Fe(()=>t.autoplay,Se=>{Se?P():U()}),Fe(()=>t.loop,()=>{w(E.value)}),Fe(()=>t.interval,()=>{H()});const ge=mo();return Bt(()=>{Fe(()=>_.value,()=>{_.value.length>0&&w(t.initialIndex)},{immediate:!0}),ge.value=Rs(O.value,()=>{F()}),P()}),Do(()=>{U(),O.value&&ge.value&&ge.value.stop()}),Jt(pY,{root:O,isCardType:p,isVertical:C,items:_,loop:t.loop,addItem:l,removeItem:c,setActiveItem:w,setContainerHeight:Q}),{root:O,activeIndex:E,arrowDisplay:S,hasLabel:L,hover:d,isCardType:p,items:_,isVertical:C,containerStyle:m,isItemsTwoLength:I,handleButtonEnter:ee,handleButtonLeave:j,handleIndicatorClick:J,handleMouseEnter:W,handleMouseLeave:K,setActiveItem:w,prev:Y,next:re,PlaceholderItem:ae,isTwoLengthShow:N,throttledArrowClick:A,throttledIndicatorHover:b}},vOe=["onMouseenter","onClick"],DOe={key:0},UOe="ElCarousel",yOe=Oe({name:UOe}),$Oe=Oe({...yOe,props:bOe,emits:NOe,setup(t,{expose:e,emit:o}){const _=t,{root:l,activeIndex:c,arrowDisplay:T,hasLabel:E,hover:u,isCardType:d,items:O,isVertical:h,containerStyle:I,handleButtonEnter:S,handleButtonLeave:L,handleIndicatorClick:p,handleMouseEnter:C,handleMouseLeave:m,setActiveItem:A,prev:b,next:N,PlaceholderItem:U,isTwoLengthShow:P,throttledArrowClick:G,throttledIndicatorHover:w}=POe(_,o),F=Ze("carousel"),V=v(()=>{const K=[F.b(),F.m(_.direction)];return M(d)&&K.push(F.m("card")),K}),W=v(()=>{const K=[F.e("indicators"),F.em("indicators",_.direction)];return M(E)&&K.push(F.em("indicators","labels")),_.indicatorPosition==="outside"&&K.push(F.em("indicators","outside")),M(h)&&K.push(F.em("indicators","right")),K});return e({setActiveItem:A,prev:b,next:N}),(K,ee)=>(B(),se("div",{ref_key:"root",ref:l,class:k(M(V)),onMouseenter:ee[6]||(ee[6]=Ct((...j)=>M(C)&&M(C)(...j),["stop"])),onMouseleave:ee[7]||(ee[7]=Ct((...j)=>M(m)&&M(m)(...j),["stop"]))},[te("div",{class:k(M(F).e("container")),style:dt(M(I))},[M(T)?(B(),Ne(Ns,{key:0,name:"carousel-arrow-left",persisted:""},{default:de(()=>[yt(te("button",{type:"button",class:k([M(F).e("arrow"),M(F).em("arrow","left")]),onMouseenter:ee[0]||(ee[0]=j=>M(S)("left")),onMouseleave:ee[1]||(ee[1]=(...j)=>M(L)&&M(L)(...j)),onClick:ee[2]||(ee[2]=Ct(j=>M(G)(M(c)-1),["stop"]))},[ne(M(Et),null,{default:de(()=>[ne(M(La))]),_:1})],34),[[ao,(K.arrow==="always"||M(u))&&(_.loop||M(c)>0)]])]),_:1})):Ce("v-if",!0),M(T)?(B(),Ne(Ns,{key:1,name:"carousel-arrow-right",persisted:""},{default:de(()=>[yt(te("button",{type:"button",class:k([M(F).e("arrow"),M(F).em("arrow","right")]),onMouseenter:ee[3]||(ee[3]=j=>M(S)("right")),onMouseleave:ee[4]||(ee[4]=(...j)=>M(L)&&M(L)(...j)),onClick:ee[5]||(ee[5]=Ct(j=>M(G)(M(c)+1),["stop"]))},[ne(M(Et),null,{default:de(()=>[ne(M(Ui))]),_:1})],34),[[ao,(K.arrow==="always"||M(u))&&(_.loop||M(c)<M(O).length-1)]])]),_:1})):Ce("v-if",!0),ne(M(U)),ye(K.$slots,"default")],6),K.indicatorPosition!=="none"?(B(),se("ul",{key:0,class:k(M(W))},[(B(!0),se(ht,null,oo(M(O),(j,J)=>yt((B(),se("li",{key:J,class:k([M(F).e("indicator"),M(F).em("indicator",K.direction),M(F).is("active",J===M(c))]),onMouseenter:ie=>M(w)(J),onClick:Ct(ie=>M(p)(J),["stop"])},[te("button",{class:k(M(F).e("button"))},[M(E)?(B(),se("span",DOe,Qe(j.props.label),1)):Ce("v-if",!0)],2)],42,vOe)),[[ao,M(P)(J)]])),128))],2)):Ce("v-if",!0)],34))}});var BOe=tt($Oe,[["__file","carousel.vue"]]);const wOe=et({name:{type:String,default:""},label:{type:[String,Number],default:""}}),GOe=(t,e)=>{const o=lt(pY),_=Ht(),l=.83,c=X(),T=X(!1),E=X(0),u=X(1),d=X(!1),O=X(!1),h=X(!1),I=X(!1),{isCardType:S,isVertical:L}=o;function p(N,U,P){const G=P-1,w=U-1,F=U+1,V=P/2;return U===0&&N===G?-1:U===G&&N===0?P:N<w&&U-N>=V?P+1:N>F&&N-U>=V?-2:N}function C(N,U){var P,G;const w=M(L)?((P=o.root.value)==null?void 0:P.offsetHeight)||0:((G=o.root.value)==null?void 0:G.offsetWidth)||0;return h.value?w*((2-l)*(N-U)+1)/4:N<U?-(1+l)*w/4:(3+l)*w/4}function m(N,U,P){const G=o.root.value;return G?((P?G.offsetHeight:G.offsetWidth)||0)*(N-U):0}const A=(N,U,P)=>{var G;const w=M(S),F=(G=o.items.value.length)!=null?G:Number.NaN,V=N===U;!w&&!bs(P)&&(I.value=V||N===P),!V&&F>2&&o.loop&&(N=p(N,U,F));const W=M(L);d.value=V,w?(h.value=Math.round(Math.abs(N-U))<=1,E.value=C(N,U),u.value=M(d)?1:l):E.value=m(N,U,W),O.value=!0,V&&c.value&&o.setContainerHeight(c.value.offsetHeight)};function b(){if(o&&M(S)){const N=o.items.value.findIndex(({uid:U})=>U===_.uid);o.setActiveItem(N)}}return Bt(()=>{o.addItem({props:t,states:Eo({hover:T,translate:E,scale:u,active:d,ready:O,inStage:h,animating:I}),uid:_.uid,translateItem:A})}),ba(()=>{o.removeItem(_.uid)}),{carouselItemRef:c,active:d,animating:I,hover:T,inStage:h,isVertical:L,translate:E,isCardType:S,scale:u,ready:O,handleItemClick:b}},kOe=Oe({name:"ElCarouselItem"}),HOe=Oe({...kOe,props:wOe,setup(t){const e=t,o=Ze("carousel"),{carouselItemRef:_,active:l,animating:c,hover:T,inStage:E,isVertical:u,translate:d,isCardType:O,scale:h,ready:I,handleItemClick:S}=GOe(e),L=v(()=>[o.e("item"),o.is("active",l.value),o.is("in-stage",E.value),o.is("hover",T.value),o.is("animating",c.value),{[o.em("item","card")]:O.value,[o.em("item","card-vertical")]:O.value&&u.value}]),p=v(()=>{const m=`${`translate${M(u)?"Y":"X"}`}(${M(d)}px)`,A=`scale(${M(h)})`;return{transform:[m,A].join(" ")}});return(C,m)=>yt((B(),se("div",{ref_key:"carouselItemRef",ref:_,class:k(M(L)),style:dt(M(p)),onClick:m[0]||(m[0]=(...A)=>M(S)&&M(S)(...A))},[M(O)?yt((B(),se("div",{key:0,class:k(M(o).e("mask"))},null,2)),[[ao,!M(l)]]):Ce("v-if",!0),ye(C.$slots,"default")],6)),[[ao,M(I)]])}});var LY=tt(HOe,[["__file","carousel-item.vue"]]);const xOe=Vt(BOe,{CarouselItem:LY}),FOe=ss(LY),fY={modelValue:{type:[Number,String,Boolean],default:void 0},label:{type:[String,Boolean,Number,Object],default:void 0},indeterminate:Boolean,disabled:Boolean,checked:Boolean,name:{type:String,default:void 0},trueLabel:{type:[String,Number],default:void 0},falseLabel:{type:[String,Number],default:void 0},id:{type:String,default:void 0},controls:{type:String,default:void 0},border:Boolean,size:Ys,tabindex:[String,Number],validateEvent:{type:Boolean,default:!0}},mY={[Xt]:t=>vt(t)||mt(t)||Ss(t),change:t=>vt(t)||mt(t)||Ss(t)},mu=Symbol("checkboxGroupContextKey"),VOe=({model:t,isChecked:e})=>{const o=lt(mu,void 0),_=v(()=>{var c,T;const E=(c=o==null?void 0:o.max)==null?void 0:c.value,u=(T=o==null?void 0:o.min)==null?void 0:T.value;return!bs(E)&&t.value.length>=E&&!e.value||!bs(u)&&t.value.length<=u&&e.value});return{isDisabled:_n(v(()=>(o==null?void 0:o.disabled.value)||_.value)),isLimitDisabled:_}},WOe=(t,{model:e,isLimitExceeded:o,hasOwnLabel:_,isDisabled:l,isLabeledByFormItem:c})=>{const T=lt(mu,void 0),{formItem:E}=Gi(),{emit:u}=Ht();function d(L){var p,C;return L===t.trueLabel||L===!0?(p=t.trueLabel)!=null?p:!0:(C=t.falseLabel)!=null?C:!1}function O(L,p){u("change",d(L),p)}function h(L){if(o.value)return;const p=L.target;u("change",d(p.checked),L)}async function I(L){o.value||!_.value&&!l.value&&c.value&&(L.composedPath().some(m=>m.tagName==="LABEL")||(e.value=d([!1,t.falseLabel].includes(e.value)),await Lt(),O(e.value,L)))}const S=v(()=>(T==null?void 0:T.validateEvent)||t.validateEvent);return Fe(()=>t.modelValue,()=>{S.value&&(E==null||E.validate("change").catch(L=>void 0))}),{handleChange:h,onClickRoot:I}},XOe=t=>{const e=X(!1),{emit:o}=Ht(),_=lt(mu,void 0),l=v(()=>bs(_)===!1),c=X(!1);return{model:v({get(){var E,u;return l.value?(E=_==null?void 0:_.modelValue)==null?void 0:E.value:(u=t.modelValue)!=null?u:e.value},set(E){var u,d;l.value&&rt(E)?(c.value=((u=_==null?void 0:_.max)==null?void 0:u.value)!==void 0&&E.length>(_==null?void 0:_.max.value),c.value===!1&&((d=_==null?void 0:_.changeEvent)==null||d.call(_,E))):(o(Xt,E),e.value=E)}}),isGroup:l,isLimitExceeded:c}},YOe=(t,e,{model:o})=>{const _=lt(mu,void 0),l=X(!1),c=v(()=>{const d=o.value;return Ss(d)?d:rt(d)?Zt(t.label)?d.map(Mo).some(O=>ui(O,t.label)):d.map(Mo).includes(t.label):d!=null?d===t.trueLabel:!!d}),T=Ds(v(()=>{var d;return(d=_==null?void 0:_.size)==null?void 0:d.value}),{prop:!0}),E=Ds(v(()=>{var d;return(d=_==null?void 0:_.size)==null?void 0:d.value})),u=v(()=>!!e.default||!ws(t.label));return{checkboxButtonSize:T,isChecked:c,isFocused:l,checkboxSize:E,hasOwnLabel:u}},KOe=(t,{model:e})=>{function o(){rt(e.value)&&!e.value.includes(t.label)?e.value.push(t.label):e.value=t.trueLabel||!0}t.checked&&o()},CY=(t,e)=>{const{formItem:o}=Gi(),{model:_,isGroup:l,isLimitExceeded:c}=XOe(t),{isFocused:T,isChecked:E,checkboxButtonSize:u,checkboxSize:d,hasOwnLabel:O}=YOe(t,e,{model:_}),{isDisabled:h}=VOe({model:_,isChecked:E}),{inputId:I,isLabeledByFormItem:S}=I_(t,{formItemContext:o,disableIdGeneration:O,disableIdManagement:l}),{handleChange:L,onClickRoot:p}=WOe(t,{model:_,isLimitExceeded:c,hasOwnLabel:O,isDisabled:h,isLabeledByFormItem:S});return KOe(t,{model:_}),{inputId:I,isLabeledByFormItem:S,isChecked:E,isDisabled:h,isFocused:T,checkboxButtonSize:u,checkboxSize:d,hasOwnLabel:O,model:_,handleChange:L,onClickRoot:p}},zOe=["id","indeterminate","name","tabindex","disabled","true-value","false-value"],ZOe=["id","indeterminate","disabled","value","name","tabindex"],jOe=Oe({name:"ElCheckbox"}),qOe=Oe({...jOe,props:fY,emits:mY,setup(t){const e=t,o=zs(),{inputId:_,isLabeledByFormItem:l,isChecked:c,isDisabled:T,isFocused:E,checkboxSize:u,hasOwnLabel:d,model:O,handleChange:h,onClickRoot:I}=CY(e,o),S=Ze("checkbox"),L=v(()=>[S.b(),S.m(u.value),S.is("disabled",T.value),S.is("bordered",e.border),S.is("checked",c.value)]),p=v(()=>[S.e("input"),S.is("disabled",T.value),S.is("checked",c.value),S.is("indeterminate",e.indeterminate),S.is("focus",E.value)]);return(C,m)=>(B(),Ne(Kt(!M(d)&&M(l)?"span":"label"),{class:k(M(L)),"aria-controls":C.indeterminate?C.controls:null,onClick:M(I)},{default:de(()=>[te("span",{class:k(M(p))},[C.trueLabel||C.falseLabel?yt((B(),se("input",{key:0,id:M(_),"onUpdate:modelValue":m[0]||(m[0]=A=>bo(O)?O.value=A:null),class:k(M(S).e("original")),type:"checkbox",indeterminate:C.indeterminate,name:C.name,tabindex:C.tabindex,disabled:M(T),"true-value":C.trueLabel,"false-value":C.falseLabel,onChange:m[1]||(m[1]=(...A)=>M(h)&&M(h)(...A)),onFocus:m[2]||(m[2]=A=>E.value=!0),onBlur:m[3]||(m[3]=A=>E.value=!1),onClick:m[4]||(m[4]=Ct(()=>{},["stop"]))},null,42,zOe)),[[eI,M(O)]]):yt((B(),se("input",{key:1,id:M(_),"onUpdate:modelValue":m[5]||(m[5]=A=>bo(O)?O.value=A:null),class:k(M(S).e("original")),type:"checkbox",indeterminate:C.indeterminate,disabled:M(T),value:C.label,name:C.name,tabindex:C.tabindex,onChange:m[6]||(m[6]=(...A)=>M(h)&&M(h)(...A)),onFocus:m[7]||(m[7]=A=>E.value=!0),onBlur:m[8]||(m[8]=A=>E.value=!1),onClick:m[9]||(m[9]=Ct(()=>{},["stop"]))},null,42,ZOe)),[[eI,M(O)]]),te("span",{class:k(M(S).e("inner"))},null,2)],2),M(d)?(B(),se("span",{key:0,class:k(M(S).e("label"))},[ye(C.$slots,"default"),C.$slots.default?Ce("v-if",!0):(B(),se(ht,{key:0},[qt(Qe(C.label),1)],64))],2)):Ce("v-if",!0)]),_:3},8,["class","aria-controls","onClick"]))}});var QOe=tt(qOe,[["__file","checkbox.vue"]]);const JOe=["name","tabindex","disabled","true-value","false-value"],ehe=["name","tabindex","disabled","value"],the=Oe({name:"ElCheckboxButton"}),ohe=Oe({...the,props:fY,emits:mY,setup(t){const e=t,o=zs(),{isFocused:_,isChecked:l,isDisabled:c,checkboxButtonSize:T,model:E,handleChange:u}=CY(e,o),d=lt(mu,void 0),O=Ze("checkbox"),h=v(()=>{var S,L,p,C;const m=(L=(S=d==null?void 0:d.fill)==null?void 0:S.value)!=null?L:"";return{backgroundColor:m,borderColor:m,color:(C=(p=d==null?void 0:d.textColor)==null?void 0:p.value)!=null?C:"",boxShadow:m?`-1px 0 0 0 ${m}`:void 0}}),I=v(()=>[O.b("button"),O.bm("button",T.value),O.is("disabled",c.value),O.is("checked",l.value),O.is("focus",_.value)]);return(S,L)=>(B(),se("label",{class:k(M(I))},[S.trueLabel||S.falseLabel?yt((B(),se("input",{key:0,"onUpdate:modelValue":L[0]||(L[0]=p=>bo(E)?E.value=p:null),class:k(M(O).be("button","original")),type:"checkbox",name:S.name,tabindex:S.tabindex,disabled:M(c),"true-value":S.trueLabel,"false-value":S.falseLabel,onChange:L[1]||(L[1]=(...p)=>M(u)&&M(u)(...p)),onFocus:L[2]||(L[2]=p=>_.value=!0),onBlur:L[3]||(L[3]=p=>_.value=!1),onClick:L[4]||(L[4]=Ct(()=>{},["stop"]))},null,42,JOe)),[[eI,M(E)]]):yt((B(),se("input",{key:1,"onUpdate:modelValue":L[5]||(L[5]=p=>bo(E)?E.value=p:null),class:k(M(O).be("button","original")),type:"checkbox",name:S.name,tabindex:S.tabindex,disabled:M(c),value:S.label,onChange:L[6]||(L[6]=(...p)=>M(u)&&M(u)(...p)),onFocus:L[7]||(L[7]=p=>_.value=!0),onBlur:L[8]||(L[8]=p=>_.value=!1),onClick:L[9]||(L[9]=Ct(()=>{},["stop"]))},null,42,ehe)),[[eI,M(E)]]),S.$slots.default||S.label?(B(),se("span",{key:2,class:k(M(O).be("button","inner")),style:dt(M(l)?M(h):void 0)},[ye(S.$slots,"default",{},()=>[qt(Qe(S.label),1)])],6)):Ce("v-if",!0)],2))}});var AY=tt(ohe,[["__file","checkbox-button.vue"]]);const she=et({modelValue:{type:me(Array),default:()=>[]},disabled:Boolean,min:Number,max:Number,size:Ys,label:String,fill:String,textColor:String,tag:{type:String,default:"div"},validateEvent:{type:Boolean,default:!0}}),ihe={[Xt]:t=>rt(t),change:t=>rt(t)},nhe=Oe({name:"ElCheckboxGroup"}),rhe=Oe({...nhe,props:she,emits:ihe,setup(t,{emit:e}){const o=t,_=Ze("checkbox"),{formItem:l}=Gi(),{inputId:c,isLabeledByFormItem:T}=I_(o,{formItemContext:l}),E=async d=>{e(Xt,d),await Lt(),e("change",d)},u=v({get(){return o.modelValue},set(d){E(d)}});return Jt(mu,{...Y_(Xs(o),["size","min","max","disabled","validateEvent","fill","textColor"]),modelValue:u,changeEvent:E}),Fe(()=>o.modelValue,()=>{o.validateEvent&&(l==null||l.validate("change").catch(d=>void 0))}),(d,O)=>{var h;return B(),Ne(Kt(d.tag),{id:M(c),class:k(M(_).b("group")),role:"group","aria-label":M(T)?void 0:d.label||"checkbox-group","aria-labelledby":M(T)?(h=M(l))==null?void 0:h.labelId:void 0},{default:de(()=>[ye(d.$slots,"default")]),_:3},8,["id","class","aria-label","aria-labelledby"])}}});var bY=tt(rhe,[["__file","checkbox-group.vue"]]);const jn=Vt(QOe,{CheckboxButton:AY,CheckboxGroup:bY}),_he=ss(AY),NY=ss(bY),PY=et({size:Ys,disabled:Boolean,label:{type:[String,Number,Boolean],default:""}}),lhe=et({...PY,modelValue:{type:[String,Number,Boolean],default:""},name:{type:String,default:""},border:Boolean}),vY={[Xt]:t=>vt(t)||mt(t)||Ss(t),[Vo]:t=>vt(t)||mt(t)||Ss(t)},DY=Symbol("radioGroupKey"),UY=(t,e)=>{const o=X(),_=lt(DY,void 0),l=v(()=>!!_),c=v({get(){return l.value?_.modelValue:t.modelValue},set(O){l.value?_.changeEvent(O):e&&e(Xt,O),o.value.checked=t.modelValue===t.label}}),T=Ds(v(()=>_==null?void 0:_.size)),E=_n(v(()=>_==null?void 0:_.disabled)),u=X(!1),d=v(()=>E.value||l.value&&c.value!==t.label?-1:0);return{radioRef:o,isGroup:l,radioGroup:_,focus:u,size:T,disabled:E,tabIndex:d,modelValue:c}},ahe=["value","name","disabled"],che=Oe({name:"ElRadio"}),The=Oe({...che,props:lhe,emits:vY,setup(t,{emit:e}){const o=t,_=Ze("radio"),{radioRef:l,radioGroup:c,focus:T,size:E,disabled:u,modelValue:d}=UY(o,e);function O(){Lt(()=>e("change",d.value))}return(h,I)=>{var S;return B(),se("label",{class:k([M(_).b(),M(_).is("disabled",M(u)),M(_).is("focus",M(T)),M(_).is("bordered",h.border),M(_).is("checked",M(d)===h.label),M(_).m(M(E))])},[te("span",{class:k([M(_).e("input"),M(_).is("disabled",M(u)),M(_).is("checked",M(d)===h.label)])},[yt(te("input",{ref_key:"radioRef",ref:l,"onUpdate:modelValue":I[0]||(I[0]=L=>bo(d)?d.value=L:null),class:k(M(_).e("original")),value:h.label,name:h.name||((S=M(c))==null?void 0:S.name),disabled:M(u),type:"radio",onFocus:I[1]||(I[1]=L=>T.value=!0),onBlur:I[2]||(I[2]=L=>T.value=!1),onChange:O,onClick:I[3]||(I[3]=Ct(()=>{},["stop"]))},null,42,ahe),[[M2,M(d)]]),te("span",{class:k(M(_).e("inner"))},null,2)],2),te("span",{class:k(M(_).e("label")),onKeydown:I[4]||(I[4]=Ct(()=>{},["stop"]))},[ye(h.$slots,"default",{},()=>[qt(Qe(h.label),1)])],34)],2)}}});var Ehe=tt(The,[["__file","radio.vue"]]);const uhe=et({...PY,name:{type:String,default:""}}),ghe=["value","name","disabled"],dhe=Oe({name:"ElRadioButton"}),Ohe=Oe({...dhe,props:uhe,setup(t){const e=t,o=Ze("radio"),{radioRef:_,focus:l,size:c,disabled:T,modelValue:E,radioGroup:u}=UY(e),d=v(()=>({backgroundColor:(u==null?void 0:u.fill)||"",borderColor:(u==null?void 0:u.fill)||"",boxShadow:u!=null&&u.fill?`-1px 0 0 0 ${u.fill}`:"",color:(u==null?void 0:u.textColor)||""}));return(O,h)=>{var I;return B(),se("label",{class:k([M(o).b("button"),M(o).is("active",M(E)===O.label),M(o).is("disabled",M(T)),M(o).is("focus",M(l)),M(o).bm("button",M(c))])},[yt(te("input",{ref_key:"radioRef",ref:_,"onUpdate:modelValue":h[0]||(h[0]=S=>bo(E)?E.value=S:null),class:k(M(o).be("button","original-radio")),value:O.label,type:"radio",name:O.name||((I=M(u))==null?void 0:I.name),disabled:M(T),onFocus:h[1]||(h[1]=S=>l.value=!0),onBlur:h[2]||(h[2]=S=>l.value=!1),onClick:h[3]||(h[3]=Ct(()=>{},["stop"]))},null,42,ghe),[[M2,M(E)]]),te("span",{class:k(M(o).be("button","inner")),style:dt(M(E)===O.label?M(d):{}),onKeydown:h[4]||(h[4]=Ct(()=>{},["stop"]))},[ye(O.$slots,"default",{},()=>[qt(Qe(O.label),1)])],38)],2)}}});var yY=tt(Ohe,[["__file","radio-button.vue"]]);const hhe=et({id:{type:String,default:void 0},size:Ys,disabled:Boolean,modelValue:{type:[String,Number,Boolean],default:""},fill:{type:String,default:""},label:{type:String,default:void 0},textColor:{type:String,default:""},name:{type:String,default:void 0},validateEvent:{type:Boolean,default:!0}}),Mhe=vY,Rhe=["id","aria-label","aria-labelledby"],Ihe=Oe({name:"ElRadioGroup"}),She=Oe({...Ihe,props:hhe,emits:Mhe,setup(t,{emit:e}){const o=t,_=Ze("radio"),l=rn(),c=X(),{formItem:T}=Gi(),{inputId:E,isLabeledByFormItem:u}=I_(o,{formItemContext:T}),d=h=>{e(Xt,h),Lt(()=>e("change",h))};Bt(()=>{const h=c.value.querySelectorAll("[type=radio]"),I=h[0];!Array.from(h).some(S=>S.checked)&&I&&(I.tabIndex=0)});const O=v(()=>o.name||l.value);return Jt(DY,Eo({...Xs(o),changeEvent:d,name:O})),Fe(()=>o.modelValue,()=>{o.validateEvent&&(T==null||T.validate("change").catch(h=>void 0))}),(h,I)=>(B(),se("div",{id:M(E),ref_key:"radioGroupRef",ref:c,class:k(M(_).b("group")),role:"radiogroup","aria-label":M(u)?void 0:h.label||"radio-group","aria-labelledby":M(u)?M(T).labelId:void 0},[ye(h.$slots,"default")],10,Rhe))}});var $Y=tt(She,[["__file","radio-group.vue"]]);const BY=Vt(Ehe,{RadioButton:yY,RadioGroup:$Y}),phe=ss($Y),Lhe=ss(yY);var fhe=Oe({name:"NodeContent",setup(){return{ns:Ze("cascader-node")}},render(){const{ns:t}=this,{node:e,panel:o}=this.$parent,{data:_,label:l}=e,{renderLabelFn:c}=o;return pt("span",{class:t.e("label")},c?c({node:e,data:_}):l)}});const iD=Symbol(),mhe=Oe({name:"ElCascaderNode",components:{ElCheckbox:jn,ElRadio:BY,NodeContent:fhe,ElIcon:Et,Check:mO,Loading:Da,ArrowRight:Ui},props:{node:{type:Object,required:!0},menuId:String},emits:["expand"],setup(t,{emit:e}){const o=lt(iD),_=Ze("cascader-node"),l=v(()=>o.isHoverMenu),c=v(()=>o.config.multiple),T=v(()=>o.config.checkStrictly),E=v(()=>{var P;return(P=o.checkedNodes[0])==null?void 0:P.uid}),u=v(()=>t.node.isDisabled),d=v(()=>t.node.isLeaf),O=v(()=>T.value&&!d.value||!u.value),h=v(()=>S(o.expandingNode)),I=v(()=>T.value&&o.checkedNodes.some(S)),S=P=>{var G;const{level:w,uid:F}=t.node;return((G=P==null?void 0:P.pathNodes[w-1])==null?void 0:G.uid)===F},L=()=>{h.value||o.expandNode(t.node)},p=P=>{const{node:G}=t;P!==G.checked&&o.handleCheckChange(G,P)},C=()=>{o.lazyLoad(t.node,()=>{d.value||L()})},m=P=>{l.value&&(A(),!d.value&&e("expand",P))},A=()=>{const{node:P}=t;!O.value||P.loading||(P.loaded?L():C())},b=()=>{l.value&&!d.value||(d.value&&!u.value&&!T.value&&!c.value?U(!0):A())},N=P=>{T.value?(p(P),t.node.loaded&&L()):U(P)},U=P=>{t.node.loaded?(p(P),!T.value&&L()):C()};return{panel:o,isHoverMenu:l,multiple:c,checkStrictly:T,checkedNodeId:E,isDisabled:u,isLeaf:d,expandable:O,inExpandingPath:h,inCheckedPath:I,ns:_,handleHoverExpand:m,handleExpand:A,handleClick:b,handleCheck:U,handleSelectCheck:N}}}),Che=["id","aria-haspopup","aria-owns","aria-expanded","tabindex"],Ahe=te("span",null,null,-1);function bhe(t,e,o,_,l,c){const T=gt("el-checkbox"),E=gt("el-radio"),u=gt("check"),d=gt("el-icon"),O=gt("node-content"),h=gt("loading"),I=gt("arrow-right");return B(),se("li",{id:`${t.menuId}-${t.node.uid}`,role:"menuitem","aria-haspopup":!t.isLeaf,"aria-owns":t.isLeaf?null:t.menuId,"aria-expanded":t.inExpandingPath,tabindex:t.expandable?-1:void 0,class:k([t.ns.b(),t.ns.is("selectable",t.checkStrictly),t.ns.is("active",t.node.checked),t.ns.is("disabled",!t.expandable),t.inExpandingPath&&"in-active-path",t.inCheckedPath&&"in-checked-path"]),onMouseenter:e[2]||(e[2]=(...S)=>t.handleHoverExpand&&t.handleHoverExpand(...S)),onFocus:e[3]||(e[3]=(...S)=>t.handleHoverExpand&&t.handleHoverExpand(...S)),onClick:e[4]||(e[4]=(...S)=>t.handleClick&&t.handleClick(...S))},[Ce(" prefix "),t.multiple?(B(),Ne(T,{key:0,"model-value":t.node.checked,indeterminate:t.node.indeterminate,disabled:t.isDisabled,onClick:e[0]||(e[0]=Ct(()=>{},["stop"])),"onUpdate:modelValue":t.handleSelectCheck},null,8,["model-value","indeterminate","disabled","onUpdate:modelValue"])):t.checkStrictly?(B(),Ne(E,{key:1,"model-value":t.checkedNodeId,label:t.node.uid,disabled:t.isDisabled,"onUpdate:modelValue":t.handleSelectCheck,onClick:e[1]||(e[1]=Ct(()=>{},["stop"]))},{default:de(()=>[Ce(`
- Add an empty element to avoid render label,
- do not use empty fragment here for https://github.com/vuejs/vue-next/pull/2485
- `),Ahe]),_:1},8,["model-value","label","disabled","onUpdate:modelValue"])):t.isLeaf&&t.node.checked?(B(),Ne(d,{key:2,class:k(t.ns.e("prefix"))},{default:de(()=>[ne(u)]),_:1},8,["class"])):Ce("v-if",!0),Ce(" content "),ne(O),Ce(" postfix "),t.isLeaf?Ce("v-if",!0):(B(),se(ht,{key:3},[t.node.loading?(B(),Ne(d,{key:0,class:k([t.ns.is("loading"),t.ns.e("postfix")])},{default:de(()=>[ne(h)]),_:1},8,["class"])):(B(),Ne(d,{key:1,class:k(["arrow-right",t.ns.e("postfix")])},{default:de(()=>[ne(I)]),_:1},8,["class"]))],64))],42,Che)}var Nhe=tt(mhe,[["render",bhe],["__file","node.vue"]]);const Phe=Oe({name:"ElCascaderMenu",components:{Loading:Da,ElIcon:Et,ElScrollbar:ul,ElCascaderNode:Nhe},props:{nodes:{type:Array,required:!0},index:{type:Number,required:!0}},setup(t){const e=Ht(),o=Ze("cascader-menu"),{t:_}=lo(),l=wS();let c=null,T=null;const E=lt(iD),u=X(null),d=v(()=>!t.nodes.length),O=v(()=>!E.initialLoaded),h=v(()=>`cascader-menu-${l}-${t.index}`),I=C=>{c=C.target},S=C=>{if(!(!E.isHoverMenu||!c||!u.value))if(c.contains(C.target)){L();const m=e.vnode.el,{left:A}=m.getBoundingClientRect(),{offsetWidth:b,offsetHeight:N}=m,U=C.clientX-A,P=c.offsetTop,G=P+c.offsetHeight;u.value.innerHTML=`
- <path style="pointer-events: auto;" fill="transparent" d="M${U} ${P} L${b} 0 V${P} Z" />
- <path style="pointer-events: auto;" fill="transparent" d="M${U} ${G} L${b} ${N} V${G} Z" />
- `}else T||(T=window.setTimeout(p,E.config.hoverThreshold))},L=()=>{T&&(clearTimeout(T),T=null)},p=()=>{u.value&&(u.value.innerHTML="",L())};return{ns:o,panel:E,hoverZone:u,isEmpty:d,isLoading:O,menuId:h,t:_,handleExpand:I,handleMouseMove:S,clearHoverZone:p}}});function vhe(t,e,o,_,l,c){const T=gt("el-cascader-node"),E=gt("loading"),u=gt("el-icon"),d=gt("el-scrollbar");return B(),Ne(d,{key:t.menuId,tag:"ul",role:"menu",class:k(t.ns.b()),"wrap-class":t.ns.e("wrap"),"view-class":[t.ns.e("list"),t.ns.is("empty",t.isEmpty)],onMousemove:t.handleMouseMove,onMouseleave:t.clearHoverZone},{default:de(()=>{var O;return[(B(!0),se(ht,null,oo(t.nodes,h=>(B(),Ne(T,{key:h.uid,node:h,"menu-id":t.menuId,onExpand:t.handleExpand},null,8,["node","menu-id","onExpand"]))),128)),t.isLoading?(B(),se("div",{key:0,class:k(t.ns.e("empty-text"))},[ne(u,{size:"14",class:k(t.ns.is("loading"))},{default:de(()=>[ne(E)]),_:1},8,["class"]),qt(" "+Qe(t.t("el.cascader.loading")),1)],2)):t.isEmpty?(B(),se("div",{key:1,class:k(t.ns.e("empty-text"))},Qe(t.t("el.cascader.noData")),3)):(O=t.panel)!=null&&O.isHoverMenu?(B(),se("svg",{key:2,ref:"hoverZone",class:k(t.ns.e("hover-zone"))},null,2)):Ce("v-if",!0)]}),_:1},8,["class","wrap-class","view-class","onMousemove","onMouseleave"])}var Dhe=tt(Phe,[["render",vhe],["__file","menu.vue"]]);let Uhe=0;const yhe=t=>{const e=[t];let{parent:o}=t;for(;o;)e.unshift(o),o=o.parent;return e};let _N=class lN{constructor(e,o,_,l=!1){this.data=e,this.config=o,this.parent=_,this.root=l,this.uid=Uhe++,this.checked=!1,this.indeterminate=!1,this.loading=!1;const{value:c,label:T,children:E}=o,u=e[E],d=yhe(this);this.level=l?0:_?_.level+1:1,this.value=e[c],this.label=e[T],this.pathNodes=d,this.pathValues=d.map(O=>O.value),this.pathLabels=d.map(O=>O.label),this.childrenData=u,this.children=(u||[]).map(O=>new lN(O,o,this)),this.loaded=!o.lazy||this.isLeaf||!Bn(u)}get isDisabled(){const{data:e,parent:o,config:_}=this,{disabled:l,checkStrictly:c}=_;return(At(l)?l(e,this):!!e[l])||!c&&(o==null?void 0:o.isDisabled)}get isLeaf(){const{data:e,config:o,childrenData:_,loaded:l}=this,{lazy:c,leaf:T}=o,E=At(T)?T(e,this):e[T];return bs(E)?c&&!l?!1:!(Array.isArray(_)&&_.length):!!E}get valueByOption(){return this.config.emitPath?this.pathValues:this.value}appendChild(e){const{childrenData:o,children:_}=this,l=new lN(e,this.config,this);return Array.isArray(o)?o.push(e):this.childrenData=[e],_.push(l),l}calcText(e,o){const _=e?this.pathLabels.join(o):this.label;return this.text=_,_}broadcast(e,...o){const _=`onParent${o_(e)}`;this.children.forEach(l=>{l&&(l.broadcast(e,...o),l[_]&&l[_](...o))})}emit(e,...o){const{parent:_}=this,l=`onChild${o_(e)}`;_&&(_[l]&&_[l](...o),_.emit(e,...o))}onParentCheck(e){this.isDisabled||this.setCheckState(e)}onChildCheck(){const{children:e}=this,o=e.filter(l=>!l.isDisabled),_=o.length?o.every(l=>l.checked):!1;this.setCheckState(_)}setCheckState(e){const o=this.children.length,_=this.children.reduce((l,c)=>{const T=c.checked?1:c.indeterminate?.5:0;return l+T},0);this.checked=this.loaded&&this.children.filter(l=>!l.isDisabled).every(l=>l.loaded&&l.checked)&&e,this.indeterminate=this.loaded&&_!==o&&_>0}doCheck(e){if(this.checked===e)return;const{checkStrictly:o,multiple:_}=this.config;o||!_?this.checked=e:(this.broadcast("check",e),this.setCheckState(e),this.emit("check"))}};const aN=(t,e)=>t.reduce((o,_)=>(_.isLeaf?o.push(_):(!e&&o.push(_),o=o.concat(aN(_.children,e))),o),[]);class zk{constructor(e,o){this.config=o;const _=(e||[]).map(l=>new _N(l,this.config));this.nodes=_,this.allNodes=aN(_,!1),this.leafNodes=aN(_,!0)}getNodes(){return this.nodes}getFlattedNodes(e){return e?this.leafNodes:this.allNodes}appendNode(e,o){const _=o?o.appendChild(e):new _N(e,this.config);o||this.nodes.push(_),this.allNodes.push(_),_.isLeaf&&this.leafNodes.push(_)}appendNodes(e,o){e.forEach(_=>this.appendNode(_,o))}getNodeByValue(e,o=!1){return!e&&e!==0?null:this.getFlattedNodes(o).find(l=>ui(l.value,e)||ui(l.pathValues,e))||null}getSameNode(e){return e&&this.getFlattedNodes(!1).find(({value:_,level:l})=>ui(e.value,_)&&e.level===l)||null}}const wY=et({modelValue:{type:me([Number,String,Array])},options:{type:me(Array),default:()=>[]},props:{type:me(Object),default:()=>({})}}),$he={expandTrigger:"click",multiple:!1,checkStrictly:!1,emitPath:!0,lazy:!1,lazyLoad:Ro,value:"value",label:"label",children:"children",leaf:"leaf",disabled:"disabled",hoverThreshold:500},Bhe=t=>v(()=>({...$he,...t.props})),Zk=t=>{if(!t)return 0;const e=t.id.split("-");return Number(e[e.length-2])},whe=t=>{if(!t)return;const e=t.querySelector("input");e?e.click():yX(t)&&t.click()},Ghe=(t,e)=>{const o=e.slice(0),_=o.map(c=>c.uid),l=t.reduce((c,T)=>{const E=_.indexOf(T.uid);return E>-1&&(c.push(T),o.splice(E,1),_.splice(E,1)),c},[]);return l.push(...o),l},khe=Oe({name:"ElCascaderPanel",components:{ElCascaderMenu:Dhe},props:{...wY,border:{type:Boolean,default:!0},renderLabel:Function},emits:[Xt,Vo,"close","expand-change"],setup(t,{emit:e,slots:o}){let _=!1;const l=Ze("cascader"),c=Bhe(t);let T=null;const E=X(!0),u=X([]),d=X(null),O=X([]),h=X(null),I=X([]),S=v(()=>c.value.expandTrigger==="hover"),L=v(()=>t.renderLabel||o.default),p=()=>{const{options:K}=t,ee=c.value;_=!1,T=new zk(K,ee),O.value=[T.getNodes()],ee.lazy&&Bn(t.options)?(E.value=!1,C(void 0,j=>{j&&(T=new zk(j,ee),O.value=[T.getNodes()]),E.value=!0,w(!1,!0)})):w(!1,!0)},C=(K,ee)=>{const j=c.value;K=K||new _N({},j,void 0,!0),K.loading=!0;const J=ie=>{const Y=K,re=Y.root?null:Y;ie&&(T==null||T.appendNodes(ie,re)),Y.loading=!1,Y.loaded=!0,Y.childrenData=Y.childrenData||[],ee&&ee(ie)};j.lazyLoad(K,J)},m=(K,ee)=>{var j;const{level:J}=K,ie=O.value.slice(0,J);let Y;K.isLeaf?Y=K.pathNodes[J-2]:(Y=K,ie.push(K.children)),((j=h.value)==null?void 0:j.uid)!==(Y==null?void 0:Y.uid)&&(h.value=K,O.value=ie,!ee&&e("expand-change",(K==null?void 0:K.pathValues)||[]))},A=(K,ee,j=!0)=>{const{checkStrictly:J,multiple:ie}=c.value,Y=I.value[0];_=!0,!ie&&(Y==null||Y.doCheck(!1)),K.doCheck(ee),G(),j&&!ie&&!J&&e("close"),!j&&!ie&&!J&&b(K)},b=K=>{K&&(K=K.parent,b(K),K&&m(K))},N=K=>T==null?void 0:T.getFlattedNodes(K),U=K=>{var ee;return(ee=N(K))==null?void 0:ee.filter(j=>j.checked!==!1)},P=()=>{I.value.forEach(K=>K.doCheck(!1)),G(),O.value=O.value.slice(0,1),h.value=null,e("expand-change",[])},G=()=>{var K;const{checkStrictly:ee,multiple:j}=c.value,J=I.value,ie=U(!ee),Y=Ghe(J,ie),re=Y.map(H=>H.valueByOption);I.value=Y,d.value=j?re:(K=re[0])!=null?K:null},w=(K=!1,ee=!1)=>{const{modelValue:j}=t,{lazy:J,multiple:ie,checkStrictly:Y}=c.value,re=!Y;if(!(!E.value||_||!ee&&ui(j,d.value)))if(J&&!K){const Q=ek(H_e(j_(j))).map(ae=>T==null?void 0:T.getNodeByValue(ae)).filter(ae=>!!ae&&!ae.loaded&&!ae.loading);Q.length?Q.forEach(ae=>{C(ae,()=>w(!1,ee))}):w(!0,ee)}else{const H=ie?j_(j):[j],Q=ek(H.map(ae=>T==null?void 0:T.getNodeByValue(ae,re)));F(Q,ee),d.value=NI(j)}},F=(K,ee=!0)=>{const{checkStrictly:j}=c.value,J=I.value,ie=K.filter(H=>!!H&&(j||H.isLeaf)),Y=T==null?void 0:T.getSameNode(h.value),re=ee&&Y||ie[0];re?re.pathNodes.forEach(H=>m(H,!0)):h.value=null,J.forEach(H=>H.doCheck(!1)),t.props.multiple?Eo(ie).forEach(H=>H.doCheck(!0)):ie.forEach(H=>H.doCheck(!0)),I.value=ie,Lt(V)},V=()=>{ro&&u.value.forEach(K=>{const ee=K==null?void 0:K.$el;if(ee){const j=ee.querySelector(`.${l.namespace.value}-scrollbar__wrap`),J=ee.querySelector(`.${l.b("node")}.${l.is("active")}`)||ee.querySelector(`.${l.b("node")}.in-active-path`);WX(j,J)}})},W=K=>{const ee=K.target,{code:j}=K;switch(j){case Rt.up:case Rt.down:{K.preventDefault();const J=j===Rt.up?-1:1;RR($X(ee,J,`.${l.b("node")}[tabindex="-1"]`));break}case Rt.left:{K.preventDefault();const J=u.value[Zk(ee)-1],ie=J==null?void 0:J.$el.querySelector(`.${l.b("node")}[aria-expanded="true"]`);RR(ie);break}case Rt.right:{K.preventDefault();const J=u.value[Zk(ee)+1],ie=J==null?void 0:J.$el.querySelector(`.${l.b("node")}[tabindex="-1"]`);RR(ie);break}case Rt.enter:whe(ee);break}};return Jt(iD,Eo({config:c,expandingNode:h,checkedNodes:I,isHoverMenu:S,initialLoaded:E,renderLabelFn:L,lazyLoad:C,expandNode:m,handleCheckChange:A})),Fe([c,()=>t.options],p,{deep:!0,immediate:!0}),Fe(()=>t.modelValue,()=>{_=!1,w()},{deep:!0}),Fe(()=>d.value,K=>{ui(K,t.modelValue)||(e(Xt,K),e(Vo,K))}),Kx(()=>u.value=[]),Bt(()=>!Bn(t.modelValue)&&w()),{ns:l,menuList:u,menus:O,checkedNodes:I,handleKeyDown:W,handleCheckChange:A,getFlattedNodes:N,getCheckedNodes:U,clearCheckedNodes:P,calculateCheckedValue:G,scrollToExpandingNode:V}}});function Hhe(t,e,o,_,l,c){const T=gt("el-cascader-menu");return B(),se("div",{class:k([t.ns.b("panel"),t.ns.is("bordered",t.border)]),onKeydown:e[0]||(e[0]=(...E)=>t.handleKeyDown&&t.handleKeyDown(...E))},[(B(!0),se(ht,null,oo(t.menus,(E,u)=>(B(),Ne(T,{key:u,ref_for:!0,ref:d=>t.menuList[u]=d,index:u,nodes:[...E]},null,8,["index","nodes"]))),128))],34)}var CR=tt(khe,[["render",Hhe],["__file","index.vue"]]);CR.install=t=>{t.component(CR.name,CR)};const GY=CR,xhe=GY,KS=et({type:{type:String,values:["success","info","warning","danger",""],default:""},closable:Boolean,disableTransitions:Boolean,hit:Boolean,color:{type:String,default:""},size:{type:String,values:R_,default:""},effect:{type:String,values:["dark","light","plain"],default:"light"},round:Boolean}),Fhe={close:t=>t instanceof MouseEvent,click:t=>t instanceof MouseEvent},Vhe=Oe({name:"ElTag"}),Whe=Oe({...Vhe,props:KS,emits:Fhe,setup(t,{emit:e}){const o=t,_=Ds(),l=Ze("tag"),c=v(()=>{const{type:u,hit:d,effect:O,closable:h,round:I}=o;return[l.b(),l.is("closable",h),l.m(u),l.m(_.value),l.m(O),l.is("hit",d),l.is("round",I)]}),T=u=>{e("close",u)},E=u=>{e("click",u)};return(u,d)=>u.disableTransitions?(B(),se("span",{key:0,class:k(M(c)),style:dt({backgroundColor:u.color}),onClick:E},[te("span",{class:k(M(l).e("content"))},[ye(u.$slots,"default")],2),u.closable?(B(),Ne(M(Et),{key:0,class:k(M(l).e("close")),onClick:Ct(T,["stop"])},{default:de(()=>[ne(M(Rr))]),_:1},8,["class","onClick"])):Ce("v-if",!0)],6)):(B(),Ne(Ns,{key:1,name:`${M(l).namespace.value}-zoom-in-center`,appear:""},{default:de(()=>[te("span",{class:k(M(c)),style:dt({backgroundColor:u.color}),onClick:E},[te("span",{class:k(M(l).e("content"))},[ye(u.$slots,"default")],2),u.closable?(B(),Ne(M(Et),{key:0,class:k(M(l).e("close")),onClick:Ct(T,["stop"])},{default:de(()=>[ne(M(Rr))]),_:1},8,["class","onClick"])):Ce("v-if",!0)],6)]),_:3},8,["name"]))}});var Xhe=tt(Whe,[["__file","tag.vue"]]);const Wd=Vt(Xhe),Yhe=et({...wY,size:Ys,placeholder:String,disabled:Boolean,clearable:Boolean,filterable:Boolean,filterMethod:{type:me(Function),default:(t,e)=>t.text.includes(e)},separator:{type:String,default:" / "},showAllLevels:{type:Boolean,default:!0},collapseTags:Boolean,maxCollapseTags:{type:Number,default:1},collapseTagsTooltip:{type:Boolean,default:!1},debounce:{type:Number,default:300},beforeFilter:{type:me(Function),default:()=>!0},popperClass:{type:String,default:""},teleported:Zs.teleported,tagType:{...KS.type,default:"info"},validateEvent:{type:Boolean,default:!0}}),Khe={[Xt]:t=>!!t||t===null,[Vo]:t=>!!t||t===null,focus:t=>t instanceof FocusEvent,blur:t=>t instanceof FocusEvent,visibleChange:t=>Ss(t),expandChange:t=>!!t,removeTag:t=>!!t},zhe={key:0},Zhe=["placeholder","onKeydown"],jhe=["onClick"],qhe="ElCascader",Qhe=Oe({name:qhe}),Jhe=Oe({...Qhe,props:Yhe,emits:Khe,setup(t,{expose:e,emit:o}){const _=t,l={modifiers:[{name:"arrowPosition",enabled:!0,phase:"main",fn:({state:x})=>{const{modifiersData:oe,placement:Ee}=x;["right","left","bottom","top"].includes(Ee)||(oe.arrow.x=35)},requires:["arrow"]}]},c=Jc();let T=0,E=0;const u=Ze("cascader"),d=Ze("input"),{t:O}=lo(),{form:h,formItem:I}=Gi(),S=X(null),L=X(null),p=X(null),C=X(null),m=X(null),A=X(!1),b=X(!1),N=X(!1),U=X(!1),P=X(""),G=X(""),w=X([]),F=X([]),V=X([]),W=X(!1),K=v(()=>c.style),ee=v(()=>_.disabled||(h==null?void 0:h.disabled)),j=v(()=>_.placeholder||O("el.cascader.placeholder")),J=v(()=>G.value||w.value.length>0||W.value?"":j.value),ie=Ds(),Y=v(()=>["small"].includes(ie.value)?"small":"default"),re=v(()=>!!_.props.multiple),H=v(()=>!_.filterable||re.value),Q=v(()=>re.value?G.value:P.value),ae=v(()=>{var x;return((x=C.value)==null?void 0:x.checkedNodes)||[]}),ge=v(()=>!_.clearable||ee.value||N.value||!b.value?!1:!!ae.value.length),Se=v(()=>{const{showAllLevels:x,separator:oe}=_,Ee=ae.value;return Ee.length?re.value?"":Ee[0].calcText(x,oe):""}),pe=v({get(){return NI(_.modelValue)},set(x){o(Xt,x),o(Vo,x),_.validateEvent&&(I==null||I.validate("change").catch(oe=>void 0))}}),We=v(()=>[u.b(),u.m(ie.value),u.is("disabled",ee.value),c.class]),be=v(()=>[d.e("icon"),"icon-arrow-down",u.is("reverse",A.value)]),Me=v(()=>u.is("focus",A.value||U.value)),Ie=v(()=>{var x,oe;return(oe=(x=S.value)==null?void 0:x.popperRef)==null?void 0:oe.contentRef}),Pe=x=>{var oe,Ee,_e;ee.value||(x=x??!A.value,x!==A.value&&(A.value=x,(Ee=(oe=L.value)==null?void 0:oe.input)==null||Ee.setAttribute("aria-expanded",`${x}`),x?(Ae(),Lt((_e=C.value)==null?void 0:_e.scrollToExpandingNode)):_.filterable&&Le(),o("visibleChange",x)))},Ae=()=>{Lt(()=>{var x;(x=S.value)==null||x.updatePopper()})},ke=()=>{N.value=!1},ve=x=>{const{showAllLevels:oe,separator:Ee}=_;return{node:x,key:x.uid,text:x.calcText(oe,Ee),hitState:!1,closable:!ee.value&&!x.isDisabled,isCollapseTag:!1}},Te=x=>{var oe;const Ee=x.node;Ee.doCheck(!1),(oe=C.value)==null||oe.calculateCheckedValue(),o("removeTag",Ee.valueByOption)},Re=()=>{if(!re.value)return;const x=ae.value,oe=[],Ee=[];if(x.forEach(_e=>Ee.push(ve(_e))),F.value=Ee,x.length){x.slice(0,_.maxCollapseTags).forEach(_t=>oe.push(ve(_t)));const _e=x.slice(_.maxCollapseTags),ze=_e.length;ze&&(_.collapseTags?oe.push({key:-1,text:`+ ${ze}`,closable:!1,isCollapseTag:!0}):_e.forEach(_t=>oe.push(ve(_t))))}w.value=oe},Ue=()=>{var x,oe;const{filterMethod:Ee,showAllLevels:_e,separator:ze}=_,_t=(oe=(x=C.value)==null?void 0:x.getFlattedNodes(!_.props.checkStrictly))==null?void 0:oe.filter(wt=>wt.isDisabled?!1:(wt.calcText(_e,ze),Ee(wt,Q.value)));re.value&&(w.value.forEach(wt=>{wt.hitState=!1}),F.value.forEach(wt=>{wt.hitState=!1})),N.value=!0,V.value=_t,Ae()},Ye=()=>{var x;let oe;N.value&&m.value?oe=m.value.$el.querySelector(`.${u.e("suggestion-item")}`):oe=(x=C.value)==null?void 0:x.$el.querySelector(`.${u.b("node")}[tabindex="-1"]`),oe&&(oe.focus(),!N.value&&oe.click())},De=()=>{var x,oe;const Ee=(x=L.value)==null?void 0:x.input,_e=p.value,ze=(oe=m.value)==null?void 0:oe.$el;if(!(!ro||!Ee)){if(ze){const _t=ze.querySelector(`.${u.e("suggestion-list")}`);_t.style.minWidth=`${Ee.offsetWidth}px`}if(_e){const{offsetHeight:_t}=_e,wt=w.value.length>0?`${Math.max(_t+6,T)}px`:`${T}px`;Ee.style.height=wt,Ae()}}},Xe=x=>{var oe;return(oe=C.value)==null?void 0:oe.getCheckedNodes(x)},Ke=x=>{Ae(),o("expandChange",x)},Be=x=>{var oe;const Ee=(oe=x.target)==null?void 0:oe.value;if(x.type==="compositionend")W.value=!1,Lt(()=>z(Ee));else{const _e=Ee[Ee.length-1]||"";W.value=!$v(_e)}},qe=x=>{if(!W.value)switch(x.code){case Rt.enter:Pe();break;case Rt.down:Pe(!0),Lt(Ye),x.preventDefault();break;case Rt.esc:A.value===!0&&(x.preventDefault(),x.stopPropagation(),Pe(!1));break;case Rt.tab:Pe(!1);break}},xe=()=>{var x;(x=C.value)==null||x.clearCheckedNodes(),!A.value&&_.filterable&&Le(),Pe(!1)},Le=()=>{const{value:x}=Se;P.value=x,G.value=x},je=x=>{var oe,Ee;const{checked:_e}=x;re.value?(oe=C.value)==null||oe.handleCheckChange(x,!_e,!1):(!_e&&((Ee=C.value)==null||Ee.handleCheckChange(x,!0,!1)),Pe(!1))},He=x=>{const oe=x.target,{code:Ee}=x;switch(Ee){case Rt.up:case Rt.down:{const _e=Ee===Rt.up?-1:1;RR($X(oe,_e,`.${u.e("suggestion-item")}[tabindex="-1"]`));break}case Rt.enter:oe.click();break}},Je=()=>{const x=w.value,oe=x[x.length-1];E=G.value?0:E+1,!(!oe||!E||_.collapseTags&&x.length>1)&&(oe.hitState?Te(oe):oe.hitState=!0)},St=x=>{const oe=x.target,Ee=u.e("search-input");oe.className===Ee&&(U.value=!0),o("focus",x)},Ot=x=>{U.value=!1,o("blur",x)},Nt=nn(()=>{const{value:x}=Q;if(!x)return;const oe=_.beforeFilter(x);ad(oe)?oe.then(Ue).catch(()=>{}):oe!==!1?Ue():ke()},_.debounce),z=(x,oe)=>{!A.value&&Pe(!0),!(oe!=null&&oe.isComposing)&&(x?Nt():ke())},y=x=>Number.parseFloat(Sle(d.cssVarName("input-height"),x).value)-2;return Fe(N,Ae),Fe([ae,ee],Re),Fe(w,()=>{Lt(()=>De())}),Fe(ie,async()=>{await Lt();const x=L.value.input;T=y(x)||T,De()}),Fe(Se,Le,{immediate:!0}),Bt(()=>{const x=L.value.input,oe=y(x);T=x.offsetHeight||oe,Rs(x,De)}),e({getCheckedNodes:Xe,cascaderPanelRef:C,togglePopperVisible:Pe,contentRef:Ie}),(x,oe)=>(B(),Ne(M(wi),{ref_key:"tooltipRef",ref:S,visible:A.value,teleported:x.teleported,"popper-class":[M(u).e("dropdown"),x.popperClass],"popper-options":l,"fallback-placements":["bottom-start","bottom","top-start","top","right","left"],"stop-popper-mouse-event":!1,"gpu-acceleration":!1,placement:"bottom-start",transition:`${M(u).namespace.value}-zoom-in-top`,effect:"light",pure:"",persistent:"",onHide:ke},{default:de(()=>[yt((B(),se("div",{class:k(M(We)),style:dt(M(K)),onClick:oe[5]||(oe[5]=()=>Pe(M(H)?void 0:!0)),onKeydown:qe,onMouseenter:oe[6]||(oe[6]=Ee=>b.value=!0),onMouseleave:oe[7]||(oe[7]=Ee=>b.value=!1)},[ne(M(Ri),{ref_key:"input",ref:L,modelValue:P.value,"onUpdate:modelValue":oe[1]||(oe[1]=Ee=>P.value=Ee),placeholder:M(J),readonly:M(H),disabled:M(ee),"validate-event":!1,size:M(ie),class:k(M(Me)),tabindex:M(re)&&x.filterable&&!M(ee)?-1:void 0,onCompositionstart:Be,onCompositionupdate:Be,onCompositionend:Be,onFocus:St,onBlur:Ot,onInput:z},{suffix:de(()=>[M(ge)?(B(),Ne(M(Et),{key:"clear",class:k([M(d).e("icon"),"icon-circle-close"]),onClick:Ct(xe,["stop"])},{default:de(()=>[ne(M(va))]),_:1},8,["class","onClick"])):(B(),Ne(M(Et),{key:"arrow-down",class:k(M(be)),onClick:oe[0]||(oe[0]=Ct(Ee=>Pe(),["stop"]))},{default:de(()=>[ne(M(Tl))]),_:1},8,["class"]))]),_:1},8,["modelValue","placeholder","readonly","disabled","size","class","tabindex"]),M(re)?(B(),se("div",{key:0,ref_key:"tagWrapper",ref:p,class:k(M(u).e("tags"))},[(B(!0),se(ht,null,oo(w.value,Ee=>(B(),Ne(M(Wd),{key:Ee.key,type:x.tagType,size:M(Y),hit:Ee.hitState,closable:Ee.closable,"disable-transitions":"",onClose:_e=>Te(Ee)},{default:de(()=>[Ee.isCollapseTag===!1?(B(),se("span",zhe,Qe(Ee.text),1)):(B(),Ne(M(wi),{key:1,disabled:A.value||!x.collapseTagsTooltip,"fallback-placements":["bottom","top","right","left"],placement:"bottom",effect:"light"},{default:de(()=>[te("span",null,Qe(Ee.text),1)]),content:de(()=>[te("div",{class:k(M(u).e("collapse-tags"))},[(B(!0),se(ht,null,oo(F.value.slice(x.maxCollapseTags),(_e,ze)=>(B(),se("div",{key:ze,class:k(M(u).e("collapse-tag"))},[(B(),Ne(M(Wd),{key:_e.key,class:"in-tooltip",type:x.tagType,size:M(Y),hit:_e.hitState,closable:_e.closable,"disable-transitions":"",onClose:_t=>Te(_e)},{default:de(()=>[te("span",null,Qe(_e.text),1)]),_:2},1032,["type","size","hit","closable","onClose"]))],2))),128))],2)]),_:2},1032,["disabled"]))]),_:2},1032,["type","size","hit","closable","onClose"]))),128)),x.filterable&&!M(ee)?yt((B(),se("input",{key:0,"onUpdate:modelValue":oe[2]||(oe[2]=Ee=>G.value=Ee),type:"text",class:k(M(u).e("search-input")),placeholder:M(Se)?"":M(j),onInput:oe[3]||(oe[3]=Ee=>z(G.value,Ee)),onClick:oe[4]||(oe[4]=Ct(Ee=>Pe(!0),["stop"])),onKeydown:So(Je,["delete"]),onCompositionstart:Be,onCompositionupdate:Be,onCompositionend:Be,onFocus:St,onBlur:Ot},null,42,Zhe)),[[MP,G.value]]):Ce("v-if",!0)],2)):Ce("v-if",!0)],38)),[[M(nl),()=>Pe(!1),M(Ie)]])]),content:de(()=>[yt(ne(M(GY),{ref_key:"cascaderPanelRef",ref:C,modelValue:M(pe),"onUpdate:modelValue":oe[8]||(oe[8]=Ee=>bo(pe)?pe.value=Ee:null),options:x.options,props:_.props,border:!1,"render-label":x.$slots.default,onExpandChange:Ke,onClose:oe[9]||(oe[9]=Ee=>x.$nextTick(()=>Pe(!1)))},null,8,["modelValue","options","props","render-label"]),[[ao,!N.value]]),x.filterable?yt((B(),Ne(M(ul),{key:0,ref_key:"suggestionPanel",ref:m,tag:"ul",class:k(M(u).e("suggestion-panel")),"view-class":M(u).e("suggestion-list"),onKeydown:He},{default:de(()=>[V.value.length?(B(!0),se(ht,{key:0},oo(V.value,Ee=>(B(),se("li",{key:Ee.uid,class:k([M(u).e("suggestion-item"),M(u).is("checked",Ee.checked)]),tabindex:-1,onClick:_e=>je(Ee)},[te("span",null,Qe(Ee.text),1),Ee.checked?(B(),Ne(M(Et),{key:0},{default:de(()=>[ne(M(mO))]),_:1})):Ce("v-if",!0)],10,jhe))),128)):ye(x.$slots,"empty",{key:1},()=>[te("li",{class:k(M(u).e("empty-text"))},Qe(M(O)("el.cascader.noMatch")),3)])]),_:3},8,["class","view-class"])),[[ao,N.value]]):Ce("v-if",!0)]),_:3},8,["visible","teleported","popper-class","transition"]))}});var AR=tt(Jhe,[["__file","cascader.vue"]]);AR.install=t=>{t.component(AR.name,AR)};const eMe=AR,tMe=eMe,oMe=et({checked:{type:Boolean,default:!1}}),sMe={"update:checked":t=>Ss(t),[Vo]:t=>Ss(t)},iMe=Oe({name:"ElCheckTag"}),nMe=Oe({...iMe,props:oMe,emits:sMe,setup(t,{emit:e}){const o=t,_=Ze("check-tag"),l=v(()=>[_.b(),_.is("checked",o.checked)]),c=()=>{const T=!o.checked;e(Vo,T),e("update:checked",T)};return(T,E)=>(B(),se("span",{class:k(M(l)),onClick:c},[ye(T.$slots,"default")],2))}});var rMe=tt(nMe,[["__file","check-tag.vue"]]);const _Me=Vt(rMe),kY=Symbol("rowContextKey"),lMe=["start","center","end","space-around","space-between","space-evenly"],aMe=["top","middle","bottom"],cMe=et({tag:{type:String,default:"div"},gutter:{type:Number,default:0},justify:{type:String,values:lMe,default:"start"},align:{type:String,values:aMe}}),TMe=Oe({name:"ElRow"}),EMe=Oe({...TMe,props:cMe,setup(t){const e=t,o=Ze("row"),_=v(()=>e.gutter);Jt(kY,{gutter:_});const l=v(()=>{const T={};return e.gutter&&(T.marginRight=T.marginLeft=`-${e.gutter/2}px`),T}),c=v(()=>[o.b(),o.is(`justify-${e.justify}`,e.justify!=="start"),o.is(`align-${e.align}`,!!e.align)]);return(T,E)=>(B(),Ne(Kt(T.tag),{class:k(M(c)),style:dt(M(l))},{default:de(()=>[ye(T.$slots,"default")]),_:3},8,["class","style"]))}});var uMe=tt(EMe,[["__file","row.vue"]]);const gMe=Vt(uMe),dMe=et({tag:{type:String,default:"div"},span:{type:Number,default:24},offset:{type:Number,default:0},pull:{type:Number,default:0},push:{type:Number,default:0},xs:{type:me([Number,Object]),default:()=>Qo({})},sm:{type:me([Number,Object]),default:()=>Qo({})},md:{type:me([Number,Object]),default:()=>Qo({})},lg:{type:me([Number,Object]),default:()=>Qo({})},xl:{type:me([Number,Object]),default:()=>Qo({})}}),OMe=Oe({name:"ElCol"}),hMe=Oe({...OMe,props:dMe,setup(t){const e=t,{gutter:o}=lt(kY,{gutter:v(()=>0)}),_=Ze("col"),l=v(()=>{const T={};return o.value&&(T.paddingLeft=T.paddingRight=`${o.value/2}px`),T}),c=v(()=>{const T=[];return["span","offset","pull","push"].forEach(d=>{const O=e[d];mt(O)&&(d==="span"?T.push(_.b(`${e[d]}`)):O>0&&T.push(_.b(`${d}-${e[d]}`)))}),["xs","sm","md","lg","xl"].forEach(d=>{mt(e[d])?T.push(_.b(`${d}-${e[d]}`)):Zt(e[d])&&Object.entries(e[d]).forEach(([O,h])=>{T.push(O!=="span"?_.b(`${d}-${O}-${h}`):_.b(`${d}-${h}`))})}),o.value&&T.push(_.is("guttered")),[_.b(),T]});return(T,E)=>(B(),Ne(Kt(T.tag),{class:k(M(c)),style:dt(M(l))},{default:de(()=>[ye(T.$slots,"default")]),_:3},8,["class","style"]))}});var MMe=tt(hMe,[["__file","col.vue"]]);const RMe=Vt(MMe),jk=t=>mt(t)||vt(t)||rt(t),IMe=et({accordion:Boolean,modelValue:{type:me([Array,String,Number]),default:()=>Qo([])}}),SMe={[Xt]:jk,[Vo]:jk},HY=Symbol("collapseContextKey"),pMe=(t,e)=>{const o=X(Wc(t.modelValue)),_=c=>{o.value=c;const T=t.accordion?o.value[0]:o.value;e(Xt,T),e(Vo,T)},l=c=>{if(t.accordion)_([o.value[0]===c?"":c]);else{const T=[...o.value],E=T.indexOf(c);E>-1?T.splice(E,1):T.push(c),_(T)}};return Fe(()=>t.modelValue,()=>o.value=Wc(t.modelValue),{deep:!0}),Jt(HY,{activeNames:o,handleItemClick:l}),{activeNames:o,setActiveNames:_}},LMe=()=>{const t=Ze("collapse");return{rootKls:v(()=>t.b())}},fMe=Oe({name:"ElCollapse"}),mMe=Oe({...fMe,props:IMe,emits:SMe,setup(t,{expose:e,emit:o}){const _=t,{activeNames:l,setActiveNames:c}=pMe(_,o),{rootKls:T}=LMe();return e({activeNames:l,setActiveNames:c}),(E,u)=>(B(),se("div",{class:k(M(T))},[ye(E.$slots,"default")],2))}});var CMe=tt(mMe,[["__file","collapse.vue"]]);const AMe=Oe({name:"ElCollapseTransition"}),bMe=Oe({...AMe,setup(t){const e=Ze("collapse-transition"),o=l=>{l.style.maxHeight="",l.style.overflow=l.dataset.oldOverflow,l.style.paddingTop=l.dataset.oldPaddingTop,l.style.paddingBottom=l.dataset.oldPaddingBottom},_={beforeEnter(l){l.dataset||(l.dataset={}),l.dataset.oldPaddingTop=l.style.paddingTop,l.dataset.oldPaddingBottom=l.style.paddingBottom,l.style.height&&(l.dataset.elExistsHeight=l.style.height),l.style.maxHeight=0,l.style.paddingTop=0,l.style.paddingBottom=0},enter(l){requestAnimationFrame(()=>{l.dataset.oldOverflow=l.style.overflow,l.dataset.elExistsHeight?l.style.maxHeight=l.dataset.elExistsHeight:l.scrollHeight!==0?l.style.maxHeight=`${l.scrollHeight}px`:l.style.maxHeight=0,l.style.paddingTop=l.dataset.oldPaddingTop,l.style.paddingBottom=l.dataset.oldPaddingBottom,l.style.overflow="hidden"})},afterEnter(l){l.style.maxHeight="",l.style.overflow=l.dataset.oldOverflow},enterCancelled(l){o(l)},beforeLeave(l){l.dataset||(l.dataset={}),l.dataset.oldPaddingTop=l.style.paddingTop,l.dataset.oldPaddingBottom=l.style.paddingBottom,l.dataset.oldOverflow=l.style.overflow,l.style.maxHeight=`${l.scrollHeight}px`,l.style.overflow="hidden"},leave(l){l.scrollHeight!==0&&(l.style.maxHeight=0,l.style.paddingTop=0,l.style.paddingBottom=0)},afterLeave(l){o(l)},leaveCancelled(l){o(l)}};return(l,c)=>(B(),Ne(Ns,Yt({name:M(e).b()},P8(_)),{default:de(()=>[ye(l.$slots,"default")]),_:3},16,["name"]))}});var bR=tt(bMe,[["__file","collapse-transition.vue"]]);bR.install=t=>{t.component(bR.name,bR)};const zS=bR,NMe=zS,PMe=et({title:{type:String,default:""},name:{type:me([String,Number]),default:()=>wS()},disabled:Boolean}),vMe=t=>{const e=lt(HY),o=X(!1),_=X(!1),l=X(wS()),c=v(()=>e==null?void 0:e.activeNames.value.includes(t.name));return{focusing:o,id:l,isActive:c,handleFocus:()=>{setTimeout(()=>{_.value?_.value=!1:o.value=!0},50)},handleHeaderClick:()=>{t.disabled||(e==null||e.handleItemClick(t.name),o.value=!1,_.value=!0)},handleEnterClick:()=>{e==null||e.handleItemClick(t.name)}}},DMe=(t,{focusing:e,isActive:o,id:_})=>{const l=Ze("collapse"),c=v(()=>[l.b("item"),l.is("active",M(o)),l.is("disabled",t.disabled)]),T=v(()=>[l.be("item","header"),l.is("active",M(o)),{focusing:M(e)&&!t.disabled}]),E=v(()=>[l.be("item","arrow"),l.is("active",M(o))]),u=v(()=>l.be("item","wrap")),d=v(()=>l.be("item","content")),O=v(()=>l.b(`content-${M(_)}`)),h=v(()=>l.b(`head-${M(_)}`));return{arrowKls:E,headKls:T,rootKls:c,itemWrapperKls:u,itemContentKls:d,scopedContentId:O,scopedHeadId:h}},UMe=["id","aria-expanded","aria-controls","aria-describedby","tabindex"],yMe=["id","aria-hidden","aria-labelledby"],$Me=Oe({name:"ElCollapseItem"}),BMe=Oe({...$Me,props:PMe,setup(t,{expose:e}){const o=t,{focusing:_,id:l,isActive:c,handleFocus:T,handleHeaderClick:E,handleEnterClick:u}=vMe(o),{arrowKls:d,headKls:O,rootKls:h,itemWrapperKls:I,itemContentKls:S,scopedContentId:L,scopedHeadId:p}=DMe(o,{focusing:_,isActive:c,id:l});return e({isActive:c}),(C,m)=>(B(),se("div",{class:k(M(h))},[te("button",{id:M(p),class:k(M(O)),"aria-expanded":M(c),"aria-controls":M(L),"aria-describedby":M(L),tabindex:C.disabled?-1:0,type:"button",onClick:m[0]||(m[0]=(...A)=>M(E)&&M(E)(...A)),onKeydown:m[1]||(m[1]=So(Ct((...A)=>M(u)&&M(u)(...A),["stop","prevent"]),["space","enter"])),onFocus:m[2]||(m[2]=(...A)=>M(T)&&M(T)(...A)),onBlur:m[3]||(m[3]=A=>_.value=!1)},[ye(C.$slots,"title",{},()=>[qt(Qe(C.title),1)]),ne(M(Et),{class:k(M(d))},{default:de(()=>[ne(M(Ui))]),_:1},8,["class"])],42,UMe),ne(M(zS),null,{default:de(()=>[yt(te("div",{id:M(L),role:"region",class:k(M(I)),"aria-hidden":!M(c),"aria-labelledby":M(p)},[te("div",{class:k(M(S))},[ye(C.$slots,"default")],2)],10,yMe),[[ao,M(c)]])]),_:3})],2))}});var xY=tt(BMe,[["__file","collapse-item.vue"]]);const wMe=Vt(CMe,{CollapseItem:xY}),GMe=ss(xY),kMe=et({color:{type:me(Object),required:!0},vertical:{type:Boolean,default:!1}});let QC=!1;function Xd(t,e){if(!ro)return;const o=function(c){var T;(T=e.drag)==null||T.call(e,c)},_=function(c){var T;document.removeEventListener("mousemove",o),document.removeEventListener("mouseup",_),document.removeEventListener("touchmove",o),document.removeEventListener("touchend",_),document.onselectstart=null,document.ondragstart=null,QC=!1,(T=e.end)==null||T.call(e,c)},l=function(c){var T;QC||(c.preventDefault(),document.onselectstart=()=>!1,document.ondragstart=()=>!1,document.addEventListener("mousemove",o),document.addEventListener("mouseup",_),document.addEventListener("touchmove",o),document.addEventListener("touchend",_),QC=!0,(T=e.start)==null||T.call(e,c))};t.addEventListener("mousedown",l),t.addEventListener("touchstart",l)}const HMe=t=>{const e=Ht(),o=mo(),_=mo();function l(T){T.target!==o.value&&c(T)}function c(T){if(!_.value||!o.value)return;const u=e.vnode.el.getBoundingClientRect(),{clientX:d,clientY:O}=mv(T);if(t.vertical){let h=O-u.top;h=Math.max(o.value.offsetHeight/2,h),h=Math.min(h,u.height-o.value.offsetHeight/2),t.color.set("alpha",Math.round((h-o.value.offsetHeight/2)/(u.height-o.value.offsetHeight)*100))}else{let h=d-u.left;h=Math.max(o.value.offsetWidth/2,h),h=Math.min(h,u.width-o.value.offsetWidth/2),t.color.set("alpha",Math.round((h-o.value.offsetWidth/2)/(u.width-o.value.offsetWidth)*100))}}return{thumb:o,bar:_,handleDrag:c,handleClick:l}},xMe=(t,{bar:e,thumb:o,handleDrag:_})=>{const l=Ht(),c=Ze("color-alpha-slider"),T=X(0),E=X(0),u=X();function d(){if(!o.value||t.vertical)return 0;const A=l.vnode.el,b=t.color.get("alpha");return A?Math.round(b*(A.offsetWidth-o.value.offsetWidth/2)/100):0}function O(){if(!o.value)return 0;const A=l.vnode.el;if(!t.vertical)return 0;const b=t.color.get("alpha");return A?Math.round(b*(A.offsetHeight-o.value.offsetHeight/2)/100):0}function h(){if(t.color&&t.color.value){const{r:A,g:b,b:N}=t.color.toRgb();return`linear-gradient(to right, rgba(${A}, ${b}, ${N}, 0) 0%, rgba(${A}, ${b}, ${N}, 1) 100%)`}return""}function I(){T.value=d(),E.value=O(),u.value=h()}Bt(()=>{if(!e.value||!o.value)return;const A={drag:b=>{_(b)},end:b=>{_(b)}};Xd(e.value,A),Xd(o.value,A),I()}),Fe(()=>t.color.get("alpha"),()=>I()),Fe(()=>t.color.value,()=>I());const S=v(()=>[c.b(),c.is("vertical",t.vertical)]),L=v(()=>c.e("bar")),p=v(()=>c.e("thumb")),C=v(()=>({background:u.value})),m=v(()=>({left:hs(T.value),top:hs(E.value)}));return{rootKls:S,barKls:L,barStyle:C,thumbKls:p,thumbStyle:m,update:I}},FMe="ElColorAlphaSlider",VMe=Oe({name:FMe}),WMe=Oe({...VMe,props:kMe,setup(t,{expose:e}){const o=t,{bar:_,thumb:l,handleDrag:c,handleClick:T}=HMe(o),{rootKls:E,barKls:u,barStyle:d,thumbKls:O,thumbStyle:h,update:I}=xMe(o,{bar:_,thumb:l,handleDrag:c});return e({update:I,bar:_,thumb:l}),(S,L)=>(B(),se("div",{class:k(M(E))},[te("div",{ref_key:"bar",ref:_,class:k(M(u)),style:dt(M(d)),onClick:L[0]||(L[0]=(...p)=>M(T)&&M(T)(...p))},null,6),te("div",{ref_key:"thumb",ref:l,class:k(M(O)),style:dt(M(h))},null,6)],2))}});var XMe=tt(WMe,[["__file","alpha-slider.vue"]]);const YMe=Oe({name:"ElColorHueSlider",props:{color:{type:Object,required:!0},vertical:Boolean},setup(t){const e=Ze("color-hue-slider"),o=Ht(),_=X(),l=X(),c=X(0),T=X(0),E=v(()=>t.color.get("hue"));Fe(()=>E.value,()=>{I()});function u(S){S.target!==_.value&&d(S)}function d(S){if(!l.value||!_.value)return;const p=o.vnode.el.getBoundingClientRect(),{clientX:C,clientY:m}=mv(S);let A;if(t.vertical){let b=m-p.top;b=Math.min(b,p.height-_.value.offsetHeight/2),b=Math.max(_.value.offsetHeight/2,b),A=Math.round((b-_.value.offsetHeight/2)/(p.height-_.value.offsetHeight)*360)}else{let b=C-p.left;b=Math.min(b,p.width-_.value.offsetWidth/2),b=Math.max(_.value.offsetWidth/2,b),A=Math.round((b-_.value.offsetWidth/2)/(p.width-_.value.offsetWidth)*360)}t.color.set("hue",A)}function O(){if(!_.value)return 0;const S=o.vnode.el;if(t.vertical)return 0;const L=t.color.get("hue");return S?Math.round(L*(S.offsetWidth-_.value.offsetWidth/2)/360):0}function h(){if(!_.value)return 0;const S=o.vnode.el;if(!t.vertical)return 0;const L=t.color.get("hue");return S?Math.round(L*(S.offsetHeight-_.value.offsetHeight/2)/360):0}function I(){c.value=O(),T.value=h()}return Bt(()=>{if(!l.value||!_.value)return;const S={drag:L=>{d(L)},end:L=>{d(L)}};Xd(l.value,S),Xd(_.value,S),I()}),{bar:l,thumb:_,thumbLeft:c,thumbTop:T,hueValue:E,handleClick:u,update:I,ns:e}}});function KMe(t,e,o,_,l,c){return B(),se("div",{class:k([t.ns.b(),t.ns.is("vertical",t.vertical)])},[te("div",{ref:"bar",class:k(t.ns.e("bar")),onClick:e[0]||(e[0]=(...T)=>t.handleClick&&t.handleClick(...T))},null,2),te("div",{ref:"thumb",class:k(t.ns.e("thumb")),style:dt({left:t.thumbLeft+"px",top:t.thumbTop+"px"})},null,6)],2)}var zMe=tt(YMe,[["render",KMe],["__file","hue-slider.vue"]]);const ZMe=et({modelValue:String,id:String,showAlpha:Boolean,colorFormat:String,disabled:Boolean,size:Ys,popperClass:{type:String,default:""},label:{type:String,default:void 0},tabindex:{type:[String,Number],default:0},predefine:{type:me(Array)},validateEvent:{type:Boolean,default:!0}}),jMe={[Xt]:t=>vt(t)||ws(t),[Vo]:t=>vt(t)||ws(t),activeChange:t=>vt(t)||ws(t),focus:t=>t instanceof FocusEvent,blur:t=>t instanceof FocusEvent},FY=Symbol("colorPickerContextKey"),qk=function(t,e,o){return[t,e*o/((t=(2-e)*o)<1?t:2-t)||0,t/2]},qMe=function(t){return typeof t=="string"&&t.includes(".")&&Number.parseFloat(t)===1},QMe=function(t){return typeof t=="string"&&t.includes("%")},wE=function(t,e){qMe(t)&&(t="100%");const o=QMe(t);return t=Math.min(e,Math.max(0,Number.parseFloat(`${t}`))),o&&(t=Number.parseInt(`${t*e}`,10)/100),Math.abs(t-e)<1e-6?1:t%e/Number.parseFloat(e)},Qk={10:"A",11:"B",12:"C",13:"D",14:"E",15:"F"},NR=t=>{t=Math.min(Math.round(t),255);const e=Math.floor(t/16),o=t%16;return`${Qk[e]||e}${Qk[o]||o}`},Jk=function({r:t,g:e,b:o}){return Number.isNaN(+t)||Number.isNaN(+e)||Number.isNaN(+o)?"":`#${NR(t)}${NR(e)}${NR(o)}`},JC={A:10,B:11,C:12,D:13,E:14,F:15},uc=function(t){return t.length===2?(JC[t[0].toUpperCase()]||+t[0])*16+(JC[t[1].toUpperCase()]||+t[1]):JC[t[1].toUpperCase()]||+t[1]},JMe=function(t,e,o){e=e/100,o=o/100;let _=e;const l=Math.max(o,.01);o*=2,e*=o<=1?o:2-o,_*=l<=1?l:2-l;const c=(o+e)/2,T=o===0?2*_/(l+_):2*e/(o+e);return{h:t,s:T*100,v:c*100}},eH=(t,e,o)=>{t=wE(t,255),e=wE(e,255),o=wE(o,255);const _=Math.max(t,e,o),l=Math.min(t,e,o);let c;const T=_,E=_-l,u=_===0?0:E/_;if(_===l)c=0;else{switch(_){case t:{c=(e-o)/E+(e<o?6:0);break}case e:{c=(o-t)/E+2;break}case o:{c=(t-e)/E+4;break}}c/=6}return{h:c*360,s:u*100,v:T*100}},bg=function(t,e,o){t=wE(t,360)*6,e=wE(e,100),o=wE(o,100);const _=Math.floor(t),l=t-_,c=o*(1-e),T=o*(1-l*e),E=o*(1-(1-l)*e),u=_%6,d=[o,T,c,c,E,o][u],O=[E,o,o,T,c,c][u],h=[c,c,E,o,o,T][u];return{r:Math.round(d*255),g:Math.round(O*255),b:Math.round(h*255)}};class nd{constructor(e={}){this._hue=0,this._saturation=100,this._value=100,this._alpha=100,this.enableAlpha=!1,this.format="hex",this.value="";for(const o in e)so(e,o)&&(this[o]=e[o]);e.value?this.fromString(e.value):this.doOnChange()}set(e,o){if(arguments.length===1&&typeof e=="object"){for(const _ in e)so(e,_)&&this.set(_,e[_]);return}this[`_${e}`]=o,this.doOnChange()}get(e){return e==="alpha"?Math.floor(this[`_${e}`]):this[`_${e}`]}toRgb(){return bg(this._hue,this._saturation,this._value)}fromString(e){if(!e){this._hue=0,this._saturation=100,this._value=100,this.doOnChange();return}const o=(_,l,c)=>{this._hue=Math.max(0,Math.min(360,_)),this._saturation=Math.max(0,Math.min(100,l)),this._value=Math.max(0,Math.min(100,c)),this.doOnChange()};if(e.includes("hsl")){const _=e.replace(/hsla|hsl|\(|\)/gm,"").split(/\s|,/g).filter(l=>l!=="").map((l,c)=>c>2?Number.parseFloat(l):Number.parseInt(l,10));if(_.length===4?this._alpha=Number.parseFloat(_[3])*100:_.length===3&&(this._alpha=100),_.length>=3){const{h:l,s:c,v:T}=JMe(_[0],_[1],_[2]);o(l,c,T)}}else if(e.includes("hsv")){const _=e.replace(/hsva|hsv|\(|\)/gm,"").split(/\s|,/g).filter(l=>l!=="").map((l,c)=>c>2?Number.parseFloat(l):Number.parseInt(l,10));_.length===4?this._alpha=Number.parseFloat(_[3])*100:_.length===3&&(this._alpha=100),_.length>=3&&o(_[0],_[1],_[2])}else if(e.includes("rgb")){const _=e.replace(/rgba|rgb|\(|\)/gm,"").split(/\s|,/g).filter(l=>l!=="").map((l,c)=>c>2?Number.parseFloat(l):Number.parseInt(l,10));if(_.length===4?this._alpha=Number.parseFloat(_[3])*100:_.length===3&&(this._alpha=100),_.length>=3){const{h:l,s:c,v:T}=eH(_[0],_[1],_[2]);o(l,c,T)}}else if(e.includes("#")){const _=e.replace("#","").trim();if(!/^[0-9a-fA-F]{3}$|^[0-9a-fA-F]{6}$|^[0-9a-fA-F]{8}$/.test(_))return;let l,c,T;_.length===3?(l=uc(_[0]+_[0]),c=uc(_[1]+_[1]),T=uc(_[2]+_[2])):(_.length===6||_.length===8)&&(l=uc(_.slice(0,2)),c=uc(_.slice(2,4)),T=uc(_.slice(4,6))),_.length===8?this._alpha=uc(_.slice(6))/255*100:(_.length===3||_.length===6)&&(this._alpha=100);const{h:E,s:u,v:d}=eH(l,c,T);o(E,u,d)}}compare(e){return Math.abs(e._hue-this._hue)<2&&Math.abs(e._saturation-this._saturation)<1&&Math.abs(e._value-this._value)<1&&Math.abs(e._alpha-this._alpha)<1}doOnChange(){const{_hue:e,_saturation:o,_value:_,_alpha:l,format:c}=this;if(this.enableAlpha)switch(c){case"hsl":{const T=qk(e,o/100,_/100);this.value=`hsla(${e}, ${Math.round(T[1]*100)}%, ${Math.round(T[2]*100)}%, ${this.get("alpha")/100})`;break}case"hsv":{this.value=`hsva(${e}, ${Math.round(o)}%, ${Math.round(_)}%, ${this.get("alpha")/100})`;break}case"hex":{this.value=`${Jk(bg(e,o,_))}${NR(l*255/100)}`;break}default:{const{r:T,g:E,b:u}=bg(e,o,_);this.value=`rgba(${T}, ${E}, ${u}, ${this.get("alpha")/100})`}}else switch(c){case"hsl":{const T=qk(e,o/100,_/100);this.value=`hsl(${e}, ${Math.round(T[1]*100)}%, ${Math.round(T[2]*100)}%)`;break}case"hsv":{this.value=`hsv(${e}, ${Math.round(o)}%, ${Math.round(_)}%)`;break}case"rgb":{const{r:T,g:E,b:u}=bg(e,o,_);this.value=`rgb(${T}, ${E}, ${u})`;break}default:this.value=Jk(bg(e,o,_))}}}const eRe=Oe({props:{colors:{type:Array,required:!0},color:{type:Object,required:!0}},setup(t){const e=Ze("color-predefine"),{currentColor:o}=lt(FY),_=X(c(t.colors,t.color));Fe(()=>o.value,T=>{const E=new nd;E.fromString(T),_.value.forEach(u=>{u.selected=E.compare(u)})}),qs(()=>{_.value=c(t.colors,t.color)});function l(T){t.color.fromString(t.colors[T])}function c(T,E){return T.map(u=>{const d=new nd;return d.enableAlpha=!0,d.format="rgba",d.fromString(u),d.selected=d.value===E.value,d})}return{rgbaColors:_,handleSelect:l,ns:e}}}),tRe=["onClick"];function oRe(t,e,o,_,l,c){return B(),se("div",{class:k(t.ns.b())},[te("div",{class:k(t.ns.e("colors"))},[(B(!0),se(ht,null,oo(t.rgbaColors,(T,E)=>(B(),se("div",{key:t.colors[E],class:k([t.ns.e("color-selector"),t.ns.is("alpha",T._alpha<100),{selected:T.selected}]),onClick:u=>t.handleSelect(E)},[te("div",{style:dt({backgroundColor:T.value})},null,4)],10,tRe))),128))],2)],2)}var sRe=tt(eRe,[["render",oRe],["__file","predefine.vue"]]);const iRe=Oe({name:"ElSlPanel",props:{color:{type:Object,required:!0}},setup(t){const e=Ze("color-svpanel"),o=Ht(),_=X(0),l=X(0),c=X("hsl(0, 100%, 50%)"),T=v(()=>{const d=t.color.get("hue"),O=t.color.get("value");return{hue:d,value:O}});function E(){const d=t.color.get("saturation"),O=t.color.get("value"),h=o.vnode.el,{clientWidth:I,clientHeight:S}=h;l.value=d*I/100,_.value=(100-O)*S/100,c.value=`hsl(${t.color.get("hue")}, 100%, 50%)`}function u(d){const h=o.vnode.el.getBoundingClientRect(),{clientX:I,clientY:S}=mv(d);let L=I-h.left,p=S-h.top;L=Math.max(0,L),L=Math.min(L,h.width),p=Math.max(0,p),p=Math.min(p,h.height),l.value=L,_.value=p,t.color.set({saturation:L/h.width*100,value:100-p/h.height*100})}return Fe(()=>T.value,()=>{E()}),Bt(()=>{Xd(o.vnode.el,{drag:d=>{u(d)},end:d=>{u(d)}}),E()}),{cursorTop:_,cursorLeft:l,background:c,colorValue:T,handleDrag:u,update:E,ns:e}}}),nRe=te("div",null,null,-1),rRe=[nRe];function _Re(t,e,o,_,l,c){return B(),se("div",{class:k(t.ns.b()),style:dt({backgroundColor:t.background})},[te("div",{class:k(t.ns.e("white"))},null,2),te("div",{class:k(t.ns.e("black"))},null,2),te("div",{class:k(t.ns.e("cursor")),style:dt({top:t.cursorTop+"px",left:t.cursorLeft+"px"})},rRe,6)],6)}var lRe=tt(iRe,[["render",_Re],["__file","sv-panel.vue"]]);const aRe=["onKeydown"],cRe=["id","aria-label","aria-labelledby","aria-description","aria-disabled","tabindex"],TRe=Oe({name:"ElColorPicker"}),ERe=Oe({...TRe,props:ZMe,emits:jMe,setup(t,{expose:e,emit:o}){const _=t,{t:l}=lo(),c=Ze("color"),{formItem:T}=Gi(),E=Ds(),u=_n(),{inputId:d,isLabeledByFormItem:O}=I_(_,{formItemContext:T}),h=X(),I=X(),S=X(),L=X(),p=X(),C=X(),{isFocused:m,handleFocus:A,handleBlur:b}=xS(p,{beforeBlur(Ae){var ke;return(ke=L.value)==null?void 0:ke.isFocusInsideContent(Ae)},afterBlur(){ie(!1),Q()}}),N=Ae=>{if(u.value)return Pe();A(Ae)};let U=!0;const P=Eo(new nd({enableAlpha:_.showAlpha,format:_.colorFormat||"",value:_.modelValue})),G=X(!1),w=X(!1),F=X(""),V=v(()=>!_.modelValue&&!w.value?"transparent":J(P,_.showAlpha)),W=v(()=>!_.modelValue&&!w.value?"":P.value),K=v(()=>O.value?void 0:_.label||l("el.colorpicker.defaultLabel")),ee=v(()=>O.value?T==null?void 0:T.labelId:void 0),j=v(()=>[c.b("picker"),c.is("disabled",u.value),c.bm("picker",E.value),c.is("focused",m.value)]);function J(Ae,ke){if(!(Ae instanceof nd))throw new TypeError("color should be instance of _color Class");const{r:ve,g:Te,b:Re}=Ae.toRgb();return ke?`rgba(${ve}, ${Te}, ${Re}, ${Ae.get("alpha")/100})`:`rgb(${ve}, ${Te}, ${Re})`}function ie(Ae){G.value=Ae}const Y=nn(ie,100,{leading:!0});function re(){u.value||ie(!0)}function H(){Y(!1),Q()}function Q(){Lt(()=>{_.modelValue?P.fromString(_.modelValue):(P.value="",Lt(()=>{w.value=!1}))})}function ae(){u.value||Y(!G.value)}function ge(){P.fromString(F.value)}function Se(){const Ae=P.value;o(Xt,Ae),o("change",Ae),_.validateEvent&&(T==null||T.validate("change").catch(ke=>void 0)),Y(!1),Lt(()=>{const ke=new nd({enableAlpha:_.showAlpha,format:_.colorFormat||"",value:_.modelValue});P.compare(ke)||Q()})}function pe(){Y(!1),o(Xt,null),o("change",null),_.modelValue!==null&&_.validateEvent&&(T==null||T.validate("change").catch(Ae=>void 0)),Q()}function We(Ae){if(G.value&&(H(),m.value)){const ke=new FocusEvent("focus",Ae);b(ke)}}function be(Ae){Ae.preventDefault(),Ae.stopPropagation(),ie(!1),Q()}function Me(Ae){switch(Ae.code){case Rt.enter:case Rt.space:Ae.preventDefault(),Ae.stopPropagation(),re(),C.value.focus();break;case Rt.esc:be(Ae);break}}function Ie(){p.value.focus()}function Pe(){p.value.blur()}return Bt(()=>{_.modelValue&&(F.value=W.value)}),Fe(()=>_.modelValue,Ae=>{Ae?Ae&&Ae!==P.value&&(U=!1,P.fromString(Ae)):w.value=!1}),Fe(()=>W.value,Ae=>{F.value=Ae,U&&o("activeChange",Ae),U=!0}),Fe(()=>P.value,()=>{!_.modelValue&&!w.value&&(w.value=!0)}),Fe(()=>G.value,()=>{Lt(()=>{var Ae,ke,ve;(Ae=h.value)==null||Ae.update(),(ke=I.value)==null||ke.update(),(ve=S.value)==null||ve.update()})}),Jt(FY,{currentColor:W}),e({color:P,show:re,hide:H,focus:Ie,blur:Pe}),(Ae,ke)=>(B(),Ne(M(wi),{ref_key:"popper",ref:L,visible:G.value,"show-arrow":!1,"fallback-placements":["bottom","top","right","left"],offset:0,"gpu-acceleration":!1,"popper-class":[M(c).be("picker","panel"),M(c).b("dropdown"),Ae.popperClass],"stop-popper-mouse-event":!1,effect:"light",trigger:"click",transition:`${M(c).namespace.value}-zoom-in-top`,persistent:"",onHide:ke[2]||(ke[2]=ve=>ie(!1))},{content:de(()=>[yt((B(),se("div",{onKeydown:So(be,["esc"])},[te("div",{class:k(M(c).be("dropdown","main-wrapper"))},[ne(zMe,{ref_key:"hue",ref:h,class:"hue-slider",color:M(P),vertical:""},null,8,["color"]),ne(lRe,{ref_key:"sv",ref:I,color:M(P)},null,8,["color"])],2),Ae.showAlpha?(B(),Ne(XMe,{key:0,ref_key:"alpha",ref:S,color:M(P)},null,8,["color"])):Ce("v-if",!0),Ae.predefine?(B(),Ne(sRe,{key:1,ref:"predefine",color:M(P),colors:Ae.predefine},null,8,["color","colors"])):Ce("v-if",!0),te("div",{class:k(M(c).be("dropdown","btns"))},[te("span",{class:k(M(c).be("dropdown","value"))},[ne(M(Ri),{ref_key:"inputRef",ref:C,modelValue:F.value,"onUpdate:modelValue":ke[0]||(ke[0]=ve=>F.value=ve),"validate-event":!1,size:"small",onKeyup:So(ge,["enter"]),onBlur:ge},null,8,["modelValue","onKeyup"])],2),ne(M(Ws),{class:k(M(c).be("dropdown","link-btn")),text:"",size:"small",onClick:pe},{default:de(()=>[qt(Qe(M(l)("el.colorpicker.clear")),1)]),_:1},8,["class"]),ne(M(Ws),{plain:"",size:"small",class:k(M(c).be("dropdown","btn")),onClick:Se},{default:de(()=>[qt(Qe(M(l)("el.colorpicker.confirm")),1)]),_:1},8,["class"])],2)],40,aRe)),[[M(nl),We]])]),default:de(()=>[te("div",{id:M(d),ref_key:"triggerRef",ref:p,class:k(M(j)),role:"button","aria-label":M(K),"aria-labelledby":M(ee),"aria-description":M(l)("el.colorpicker.description",{color:Ae.modelValue||""}),"aria-disabled":M(u),tabindex:M(u)?-1:Ae.tabindex,onKeydown:Me,onFocus:N,onBlur:ke[1]||(ke[1]=(...ve)=>M(b)&&M(b)(...ve))},[M(u)?(B(),se("div",{key:0,class:k(M(c).be("picker","mask"))},null,2)):Ce("v-if",!0),te("div",{class:k(M(c).be("picker","trigger")),onClick:ae},[te("span",{class:k([M(c).be("picker","color"),M(c).is("alpha",Ae.showAlpha)])},[te("span",{class:k(M(c).be("picker","color-inner")),style:dt({backgroundColor:M(V)})},[yt(ne(M(Et),{class:k([M(c).be("picker","icon"),M(c).is("icon-arrow-down")])},{default:de(()=>[ne(M(Tl))]),_:1},8,["class"]),[[ao,Ae.modelValue||w.value]]),yt(ne(M(Et),{class:k([M(c).be("picker","empty"),M(c).is("icon-close")])},{default:de(()=>[ne(M(Rr))]),_:1},8,["class"]),[[ao,!Ae.modelValue&&!w.value]])],6)],2)],2)],42,cRe)]),_:1},8,["visible","popper-class","transition"]))}});var uRe=tt(ERe,[["__file","color-picker.vue"]]);const gRe=Vt(uRe),dRe=Oe({name:"ElContainer"}),ORe=Oe({...dRe,props:{direction:{type:String}},setup(t){const e=t,o=zs(),_=Ze("container"),l=v(()=>e.direction==="vertical"?!0:e.direction==="horizontal"?!1:o&&o.default?o.default().some(T=>{const E=T.type.name;return E==="ElHeader"||E==="ElFooter"}):!1);return(c,T)=>(B(),se("section",{class:k([M(_).b(),M(_).is("vertical",M(l))])},[ye(c.$slots,"default")],2))}});var hRe=tt(ORe,[["__file","container.vue"]]);const MRe=Oe({name:"ElAside"}),RRe=Oe({...MRe,props:{width:{type:String,default:null}},setup(t){const e=t,o=Ze("aside"),_=v(()=>e.width?o.cssVarBlock({width:e.width}):{});return(l,c)=>(B(),se("aside",{class:k(M(o).b()),style:dt(M(_))},[ye(l.$slots,"default")],6))}});var VY=tt(RRe,[["__file","aside.vue"]]);const IRe=Oe({name:"ElFooter"}),SRe=Oe({...IRe,props:{height:{type:String,default:null}},setup(t){const e=t,o=Ze("footer"),_=v(()=>e.height?o.cssVarBlock({height:e.height}):{});return(l,c)=>(B(),se("footer",{class:k(M(o).b()),style:dt(M(_))},[ye(l.$slots,"default")],6))}});var WY=tt(SRe,[["__file","footer.vue"]]);const pRe=Oe({name:"ElHeader"}),LRe=Oe({...pRe,props:{height:{type:String,default:null}},setup(t){const e=t,o=Ze("header"),_=v(()=>e.height?o.cssVarBlock({height:e.height}):{});return(l,c)=>(B(),se("header",{class:k(M(o).b()),style:dt(M(_))},[ye(l.$slots,"default")],6))}});var XY=tt(LRe,[["__file","header.vue"]]);const fRe=Oe({name:"ElMain"}),mRe=Oe({...fRe,setup(t){const e=Ze("main");return(o,_)=>(B(),se("main",{class:k(M(e).b())},[ye(o.$slots,"default")],2))}});var YY=tt(mRe,[["__file","main.vue"]]);const CRe=Vt(hRe,{Aside:VY,Footer:WY,Header:XY,Main:YY}),ARe=ss(VY),bRe=ss(WY),NRe=ss(XY),PRe=ss(YY);var KY={exports:{}};(function(t,e){(function(o,_){t.exports=_()})(Is,function(){return function(o,_){var l=_.prototype,c=l.format;l.format=function(T){var E=this,u=this.$locale();if(!this.isValid())return c.bind(this)(T);var d=this.$utils(),O=(T||"YYYY-MM-DDTHH:mm:ssZ").replace(/\[([^\]]+)]|Q|wo|ww|w|WW|W|zzz|z|gggg|GGGG|Do|X|x|k{1,2}|S/g,function(h){switch(h){case"Q":return Math.ceil((E.$M+1)/3);case"Do":return u.ordinal(E.$D);case"gggg":return E.weekYear();case"GGGG":return E.isoWeekYear();case"wo":return u.ordinal(E.week(),"W");case"w":case"ww":return d.s(E.week(),h==="w"?1:2,"0");case"W":case"WW":return d.s(E.isoWeek(),h==="W"?1:2,"0");case"k":case"kk":return d.s(String(E.$H===0?24:E.$H),h==="k"?1:2,"0");case"X":return Math.floor(E.$d.getTime()/1e3);case"x":return E.$d.getTime();case"z":return"["+E.offsetName()+"]";case"zzz":return"["+E.offsetName("long")+"]";default:return h}});return c.bind(this)(O)}}})})(KY);var vRe=KY.exports;const DRe=Sr(vRe);var zY={exports:{}};(function(t,e){(function(o,_){t.exports=_()})(Is,function(){var o="week",_="year";return function(l,c,T){var E=c.prototype;E.week=function(u){if(u===void 0&&(u=null),u!==null)return this.add(7*(u-this.week()),"day");var d=this.$locale().yearStart||1;if(this.month()===11&&this.date()>25){var O=T(this).startOf(_).add(1,_).date(d),h=T(this).endOf(o);if(O.isBefore(h))return 1}var I=T(this).startOf(_).date(d).startOf(o).subtract(1,"millisecond"),S=this.diff(I,o,!0);return S<0?T(this).startOf("week").week():Math.ceil(S)},E.weeks=function(u){return u===void 0&&(u=null),this.week(u)}}})})(zY);var URe=zY.exports;const yRe=Sr(URe);var ZY={exports:{}};(function(t,e){(function(o,_){t.exports=_()})(Is,function(){return function(o,_){_.prototype.weekYear=function(){var l=this.month(),c=this.week(),T=this.year();return c===1&&l===11?T+1:l===0&&c>=52?T-1:T}}})})(ZY);var $Re=ZY.exports;const BRe=Sr($Re);var jY={exports:{}};(function(t,e){(function(o,_){t.exports=_()})(Is,function(){return function(o,_,l){_.prototype.dayOfYear=function(c){var T=Math.round((l(this).startOf("day")-l(this).startOf("year"))/864e5)+1;return c==null?T:this.add(c-T,"day")}}})})(jY);var wRe=jY.exports;const GRe=Sr(wRe);var qY={exports:{}};(function(t,e){(function(o,_){t.exports=_()})(Is,function(){return function(o,_){_.prototype.isSameOrAfter=function(l,c){return this.isSame(l,c)||this.isAfter(l,c)}}})})(qY);var kRe=qY.exports;const HRe=Sr(kRe);var QY={exports:{}};(function(t,e){(function(o,_){t.exports=_()})(Is,function(){return function(o,_){_.prototype.isSameOrBefore=function(l,c){return this.isSame(l,c)||this.isBefore(l,c)}}})})(QY);var xRe=QY.exports;const FRe=Sr(xRe),nD=Symbol(),VRe=et({...sD,type:{type:me(String),default:"date"}}),WRe=["date","dates","year","month","week","range"],rD=et({disabledDate:{type:me(Function)},date:{type:me(Object),required:!0},minDate:{type:me(Object)},maxDate:{type:me(Object)},parsedValue:{type:me([Object,Array])},rangeState:{type:me(Object),default:()=>({endDate:null,selecting:!1})}}),JY=et({type:{type:me(String),required:!0,values:ece},dateFormat:String,timeFormat:String}),eK=et({unlinkPanels:Boolean,parsedValue:{type:me(Array)}}),tK=t=>({type:String,values:WRe,default:t}),XRe=et({...JY,parsedValue:{type:me([Object,Array])},visible:{type:Boolean},format:{type:String,default:""}}),YRe=et({...rD,cellClassName:{type:me(Function)},showWeekNumber:Boolean,selectionMode:tK("date")}),KRe=["changerange","pick","select"],cN=t=>{if(!rt(t))return!1;const[e,o]=t;return xt.isDayjs(e)&&xt.isDayjs(o)&&e.isSameOrBefore(o)},oK=(t,{lang:e,unit:o,unlinkPanels:_})=>{let l;if(rt(t)){let[c,T]=t.map(E=>xt(E).locale(e));return _||(T=c.add(1,o)),[c,T]}else t?l=xt(t):l=xt();return l=l.locale(e),[l,l.add(1,o)]},zRe=(t,e,{columnIndexOffset:o,startDate:_,nextEndDate:l,now:c,unit:T,relativeDateGetter:E,setCellMetadata:u,setRowMetadata:d})=>{for(let O=0;O<t.row;O++){const h=e[O];for(let I=0;I<t.column;I++){let S=h[I+o];S||(S={row:O,column:I,type:"normal",inRange:!1,start:!1,end:!1});const L=O*t.column+I,p=E(L);S.dayjs=p,S.date=p.toDate(),S.timestamp=p.valueOf(),S.type="normal",S.inRange=!!(_&&p.isSameOrAfter(_,T)&&l&&p.isSameOrBefore(l,T))||!!(_&&p.isSameOrBefore(_,T)&&l&&p.isSameOrAfter(l,T)),_!=null&&_.isSameOrAfter(l)?(S.start=!!l&&p.isSame(l,T),S.end=_&&p.isSame(_,T)):(S.start=!!_&&p.isSame(_,T),S.end=!!l&&p.isSame(l,T)),p.isSame(c,T)&&(S.type="today"),u==null||u(S,{rowIndex:O,columnIndex:I}),h[I+o]=S}d==null||d(h)}},TN=(t="")=>["normal","today"].includes(t),ZRe=(t,e)=>{const{lang:o}=lo(),_=X(),l=X(),c=X(),T=X(),E=X([[],[],[],[],[],[]]);let u=!1;const d=t.date.$locale().weekStart||7,O=t.date.locale("en").localeData().weekdaysShort().map(H=>H.toLowerCase()),h=v(()=>d>3?7-d:-d),I=v(()=>{const H=t.date.startOf("month");return H.subtract(H.day()||7,"day")}),S=v(()=>O.concat(O).slice(d,d+7)),L=v(()=>aX(M(N)).some(H=>H.isCurrent)),p=v(()=>{const H=t.date.startOf("month"),Q=H.day()||7,ae=H.daysInMonth(),ge=H.subtract(1,"month").daysInMonth();return{startOfMonthDay:Q,dateCountOfMonth:ae,dateCountOfLastMonth:ge}}),C=v(()=>t.selectionMode==="dates"?j_(t.parsedValue):[]),m=(H,{count:Q,rowIndex:ae,columnIndex:ge})=>{const{startOfMonthDay:Se,dateCountOfMonth:pe,dateCountOfLastMonth:We}=M(p),be=M(h);if(ae>=0&&ae<=1){const Me=Se+be<0?7+Se+be:Se+be;if(ge+ae*7>=Me)return H.text=Q,!0;H.text=We-(Me-ge%7)+1+ae*7,H.type="prev-month"}else return Q<=pe?H.text=Q:(H.text=Q-pe,H.type="next-month"),!0;return!1},A=(H,{columnIndex:Q,rowIndex:ae},ge)=>{const{disabledDate:Se,cellClassName:pe}=t,We=M(C),be=m(H,{count:ge,rowIndex:ae,columnIndex:Q}),Me=H.dayjs.toDate();return H.selected=We.find(Ie=>Ie.valueOf()===H.dayjs.valueOf()),H.isSelected=!!H.selected,H.isCurrent=P(H),H.disabled=Se==null?void 0:Se(Me),H.customClass=pe==null?void 0:pe(Me),be},b=H=>{if(t.selectionMode==="week"){const[Q,ae]=t.showWeekNumber?[1,7]:[0,6],ge=re(H[Q+1]);H[Q].inRange=ge,H[Q].start=ge,H[ae].inRange=ge,H[ae].end=ge}},N=v(()=>{const{minDate:H,maxDate:Q,rangeState:ae,showWeekNumber:ge}=t,Se=M(h),pe=M(E),We="day";let be=1;if(ge)for(let Me=0;Me<6;Me++)pe[Me][0]||(pe[Me][0]={type:"week",text:M(I).add(Me*7+1,We).week()});return zRe({row:6,column:7},pe,{startDate:H,columnIndexOffset:ge?1:0,nextEndDate:ae.endDate||Q||ae.selecting&&H||null,now:xt().locale(M(o)).startOf(We),unit:We,relativeDateGetter:Me=>M(I).add(Me-Se,We),setCellMetadata:(...Me)=>{A(...Me,be)&&(be+=1)},setRowMetadata:b}),pe});Fe(()=>t.date,async()=>{var H;(H=M(_))!=null&&H.contains(document.activeElement)&&(await Lt(),await U())});const U=async()=>{var H;return(H=M(l))==null?void 0:H.focus()},P=H=>t.selectionMode==="date"&&TN(H.type)&&G(H,t.parsedValue),G=(H,Q)=>Q?xt(Q).locale(M(o)).isSame(t.date.date(Number(H.text)),"day"):!1,w=(H,Q)=>{const ae=H*7+(Q-(t.showWeekNumber?1:0))-M(h);return M(I).add(ae,"day")},F=H=>{var Q;if(!t.rangeState.selecting)return;let ae=H.target;if(ae.tagName==="SPAN"&&(ae=(Q=ae.parentNode)==null?void 0:Q.parentNode),ae.tagName==="DIV"&&(ae=ae.parentNode),ae.tagName!=="TD")return;const ge=ae.parentNode.rowIndex-1,Se=ae.cellIndex;M(N)[ge][Se].disabled||(ge!==M(c)||Se!==M(T))&&(c.value=ge,T.value=Se,e("changerange",{selecting:!0,endDate:w(ge,Se)}))},V=H=>!M(L)&&(H==null?void 0:H.text)===1&&H.type==="normal"||H.isCurrent,W=H=>{u||M(L)||t.selectionMode!=="date"||Y(H,!0)},K=H=>{H.target.closest("td")&&(u=!0)},ee=H=>{H.target.closest("td")&&(u=!1)},j=H=>{!t.rangeState.selecting||!t.minDate?(e("pick",{minDate:H,maxDate:null}),e("select",!0)):(H>=t.minDate?e("pick",{minDate:t.minDate,maxDate:H}):e("pick",{minDate:H,maxDate:t.minDate}),e("select",!1))},J=H=>{const Q=H.week(),ae=`${H.year()}w${Q}`;e("pick",{year:H.year(),week:Q,value:ae,date:H.startOf("week")})},ie=(H,Q)=>{const ae=Q?j_(t.parsedValue).filter(ge=>(ge==null?void 0:ge.valueOf())!==H.valueOf()):j_(t.parsedValue).concat([H]);e("pick",ae)},Y=(H,Q=!1)=>{const ae=H.target.closest("td");if(!ae)return;const ge=ae.parentNode.rowIndex-1,Se=ae.cellIndex,pe=M(N)[ge][Se];if(pe.disabled||pe.type==="week")return;const We=w(ge,Se);switch(t.selectionMode){case"range":{j(We);break}case"date":{e("pick",We,Q);break}case"week":{J(We);break}case"dates":{ie(We,!!pe.selected);break}}},re=H=>{if(t.selectionMode!=="week")return!1;let Q=t.date.startOf("day");if(H.type==="prev-month"&&(Q=Q.subtract(1,"month")),H.type==="next-month"&&(Q=Q.add(1,"month")),Q=Q.date(Number.parseInt(H.text,10)),t.parsedValue&&!Array.isArray(t.parsedValue)){const ae=(t.parsedValue.day()-d+7)%7-1;return t.parsedValue.subtract(ae,"day").isSame(Q,"day")}return!1};return{WEEKS:S,rows:N,tbodyRef:_,currentCellRef:l,focus:U,isCurrent:P,isWeekActive:re,isSelectedCell:V,handlePickDate:Y,handleMouseUp:ee,handleMouseDown:K,handleMouseMove:F,handleFocus:W}},jRe=(t,{isCurrent:e,isWeekActive:o})=>{const _=Ze("date-table"),{t:l}=lo(),c=v(()=>[_.b(),{"is-week-mode":t.selectionMode==="week"}]),T=v(()=>l("el.datepicker.dateTablePrompt")),E=v(()=>l("el.datepicker.week"));return{tableKls:c,tableLabel:T,weekLabel:E,getCellClasses:O=>{const h=[];return TN(O.type)&&!O.disabled?(h.push("available"),O.type==="today"&&h.push("today")):h.push(O.type),e(O)&&h.push("current"),O.inRange&&(TN(O.type)||t.selectionMode==="week")&&(h.push("in-range"),O.start&&h.push("start-date"),O.end&&h.push("end-date")),O.disabled&&h.push("disabled"),O.selected&&h.push("selected"),O.customClass&&h.push(O.customClass),h.join(" ")},getRowKls:O=>[_.e("row"),{current:o(O)}],t:l}},qRe=et({cell:{type:me(Object)}});var QRe=Oe({name:"ElDatePickerCell",props:qRe,setup(t){const e=Ze("date-table-cell"),{slots:o}=lt(nD);return()=>{const{cell:_}=t;return ye(o,"default",{..._},()=>[ne("div",{class:e.b()},[ne("span",{class:e.e("text")},[_==null?void 0:_.text])])])}}});const JRe=["aria-label"],eIe={key:0,scope:"col"},tIe=["aria-label"],oIe=["aria-current","aria-selected","tabindex"],sIe=Oe({__name:"basic-date-table",props:YRe,emits:KRe,setup(t,{expose:e,emit:o}){const _=t,{WEEKS:l,rows:c,tbodyRef:T,currentCellRef:E,focus:u,isCurrent:d,isWeekActive:O,isSelectedCell:h,handlePickDate:I,handleMouseUp:S,handleMouseDown:L,handleMouseMove:p,handleFocus:C}=ZRe(_,o),{tableLabel:m,tableKls:A,weekLabel:b,getCellClasses:N,getRowKls:U,t:P}=jRe(_,{isCurrent:d,isWeekActive:O});return e({focus:u}),(G,w)=>(B(),se("table",{"aria-label":M(m),class:k(M(A)),cellspacing:"0",cellpadding:"0",role:"grid",onClick:w[1]||(w[1]=(...F)=>M(I)&&M(I)(...F)),onMousemove:w[2]||(w[2]=(...F)=>M(p)&&M(p)(...F)),onMousedown:w[3]||(w[3]=Ct((...F)=>M(L)&&M(L)(...F),["prevent"])),onMouseup:w[4]||(w[4]=(...F)=>M(S)&&M(S)(...F))},[te("tbody",{ref_key:"tbodyRef",ref:T},[te("tr",null,[G.showWeekNumber?(B(),se("th",eIe,Qe(M(b)),1)):Ce("v-if",!0),(B(!0),se(ht,null,oo(M(l),(F,V)=>(B(),se("th",{key:V,"aria-label":M(P)("el.datepicker.weeksFull."+F),scope:"col"},Qe(M(P)("el.datepicker.weeks."+F)),9,tIe))),128))]),(B(!0),se(ht,null,oo(M(c),(F,V)=>(B(),se("tr",{key:V,class:k(M(U)(F[1]))},[(B(!0),se(ht,null,oo(F,(W,K)=>(B(),se("td",{key:`${V}.${K}`,ref_for:!0,ref:ee=>M(h)(W)&&(E.value=ee),class:k(M(N)(W)),"aria-current":W.isCurrent?"date":void 0,"aria-selected":W.isCurrent,tabindex:M(h)(W)?0:-1,onFocus:w[0]||(w[0]=(...ee)=>M(C)&&M(C)(...ee))},[ne(M(QRe),{cell:W},null,8,["cell"])],42,oIe))),128))],2))),128))],512)],42,JRe))}});var EN=tt(sIe,[["__file","basic-date-table.vue"]]);const iIe=et({...rD,selectionMode:tK("month")}),nIe=["aria-label"],rIe=["aria-selected","aria-label","tabindex","onKeydown"],_Ie={class:"cell"},lIe=Oe({__name:"basic-month-table",props:iIe,emits:["changerange","pick","select"],setup(t,{expose:e,emit:o}){const _=t,l=(N,U,P)=>{const G=xt().locale(P).startOf("month").month(U).year(N),w=G.daysInMonth();return Ea(w).map(F=>G.add(F,"day").toDate())},c=Ze("month-table"),{t:T,lang:E}=lo(),u=X(),d=X(),O=X(_.date.locale("en").localeData().monthsShort().map(N=>N.toLowerCase())),h=X([[],[],[]]),I=X(),S=X(),L=v(()=>{var N,U;const P=h.value,G=xt().locale(E.value).startOf("month");for(let w=0;w<3;w++){const F=P[w];for(let V=0;V<4;V++){const W=F[V]||(F[V]={row:w,column:V,type:"normal",inRange:!1,start:!1,end:!1,text:-1,disabled:!1});W.type="normal";const K=w*4+V,ee=_.date.startOf("year").month(K),j=_.rangeState.endDate||_.maxDate||_.rangeState.selecting&&_.minDate||null;W.inRange=!!(_.minDate&&ee.isSameOrAfter(_.minDate,"month")&&j&&ee.isSameOrBefore(j,"month"))||!!(_.minDate&&ee.isSameOrBefore(_.minDate,"month")&&j&&ee.isSameOrAfter(j,"month")),(N=_.minDate)!=null&&N.isSameOrAfter(j)?(W.start=!!(j&&ee.isSame(j,"month")),W.end=_.minDate&&ee.isSame(_.minDate,"month")):(W.start=!!(_.minDate&&ee.isSame(_.minDate,"month")),W.end=!!(j&&ee.isSame(j,"month"))),G.isSame(ee)&&(W.type="today"),W.text=K,W.disabled=((U=_.disabledDate)==null?void 0:U.call(_,ee.toDate()))||!1}}return P}),p=()=>{var N;(N=d.value)==null||N.focus()},C=N=>{const U={},P=_.date.year(),G=new Date,w=N.text;return U.disabled=_.disabledDate?l(P,w,E.value).every(_.disabledDate):!1,U.current=j_(_.parsedValue).findIndex(F=>xt.isDayjs(F)&&F.year()===P&&F.month()===w)>=0,U.today=G.getFullYear()===P&&G.getMonth()===w,N.inRange&&(U["in-range"]=!0,N.start&&(U["start-date"]=!0),N.end&&(U["end-date"]=!0)),U},m=N=>{const U=_.date.year(),P=N.text;return j_(_.date).findIndex(G=>G.year()===U&&G.month()===P)>=0},A=N=>{var U;if(!_.rangeState.selecting)return;let P=N.target;if(P.tagName==="SPAN"&&(P=(U=P.parentNode)==null?void 0:U.parentNode),P.tagName==="DIV"&&(P=P.parentNode),P.tagName!=="TD")return;const G=P.parentNode.rowIndex,w=P.cellIndex;L.value[G][w].disabled||(G!==I.value||w!==S.value)&&(I.value=G,S.value=w,o("changerange",{selecting:!0,endDate:_.date.startOf("year").month(G*4+w)}))},b=N=>{var U;const P=(U=N.target)==null?void 0:U.closest("td");if((P==null?void 0:P.tagName)!=="TD"||Or(P,"disabled"))return;const G=P.cellIndex,F=P.parentNode.rowIndex*4+G,V=_.date.startOf("year").month(F);_.selectionMode==="range"?_.rangeState.selecting?(_.minDate&&V>=_.minDate?o("pick",{minDate:_.minDate,maxDate:V}):o("pick",{minDate:V,maxDate:_.minDate}),o("select",!1)):(o("pick",{minDate:V,maxDate:null}),o("select",!0)):o("pick",F)};return Fe(()=>_.date,async()=>{var N,U;(N=u.value)!=null&&N.contains(document.activeElement)&&(await Lt(),(U=d.value)==null||U.focus())}),e({focus:p}),(N,U)=>(B(),se("table",{role:"grid","aria-label":M(T)("el.datepicker.monthTablePrompt"),class:k(M(c).b()),onClick:b,onMousemove:A},[te("tbody",{ref_key:"tbodyRef",ref:u},[(B(!0),se(ht,null,oo(M(L),(P,G)=>(B(),se("tr",{key:G},[(B(!0),se(ht,null,oo(P,(w,F)=>(B(),se("td",{key:F,ref_for:!0,ref:V=>m(w)&&(d.value=V),class:k(C(w)),"aria-selected":`${m(w)}`,"aria-label":M(T)(`el.datepicker.month${+w.text+1}`),tabindex:m(w)?0:-1,onKeydown:[So(Ct(b,["prevent","stop"]),["space"]),So(Ct(b,["prevent","stop"]),["enter"])]},[te("div",null,[te("span",_Ie,Qe(M(T)("el.datepicker.months."+O.value[w.text])),1)])],42,rIe))),128))]))),128))],512)],42,nIe))}});var uN=tt(lIe,[["__file","basic-month-table.vue"]]);const{date:aIe,disabledDate:cIe,parsedValue:TIe}=rD,EIe=et({date:aIe,disabledDate:cIe,parsedValue:TIe}),uIe=["aria-label"],gIe=["aria-selected","tabindex","onKeydown"],dIe={class:"cell"},OIe={key:1},hIe=Oe({__name:"basic-year-table",props:EIe,emits:["pick"],setup(t,{expose:e,emit:o}){const _=t,l=(p,C)=>{const m=xt(String(p)).locale(C).startOf("year"),b=m.endOf("year").dayOfYear();return Ea(b).map(N=>m.add(N,"day").toDate())},c=Ze("year-table"),{t:T,lang:E}=lo(),u=X(),d=X(),O=v(()=>Math.floor(_.date.year()/10)*10),h=()=>{var p;(p=d.value)==null||p.focus()},I=p=>{const C={},m=xt().locale(E.value);return C.disabled=_.disabledDate?l(p,E.value).every(_.disabledDate):!1,C.current=j_(_.parsedValue).findIndex(A=>A.year()===p)>=0,C.today=m.year()===p,C},S=p=>p===O.value&&_.date.year()<O.value&&_.date.year()>O.value+9||j_(_.date).findIndex(C=>C.year()===p)>=0,L=p=>{const m=p.target.closest("td");if(m&&m.textContent){if(Or(m,"disabled"))return;const A=m.textContent||m.innerText;o("pick",Number(A))}};return Fe(()=>_.date,async()=>{var p,C;(p=u.value)!=null&&p.contains(document.activeElement)&&(await Lt(),(C=d.value)==null||C.focus())}),e({focus:h}),(p,C)=>(B(),se("table",{role:"grid","aria-label":M(T)("el.datepicker.yearTablePrompt"),class:k(M(c).b()),onClick:L},[te("tbody",{ref_key:"tbodyRef",ref:u},[(B(),se(ht,null,oo(3,(m,A)=>te("tr",{key:A},[(B(),se(ht,null,oo(4,(b,N)=>(B(),se(ht,{key:A+"_"+N},[A*4+N<10?(B(),se("td",{key:0,ref_for:!0,ref:U=>S(M(O)+A*4+N)&&(d.value=U),class:k(["available",I(M(O)+A*4+N)]),"aria-selected":`${S(M(O)+A*4+N)}`,tabindex:S(M(O)+A*4+N)?0:-1,onKeydown:[So(Ct(L,["prevent","stop"]),["space"]),So(Ct(L,["prevent","stop"]),["enter"])]},[te("span",dIe,Qe(M(O)+A*4+N),1)],42,gIe)):(B(),se("td",OIe))],64))),64))])),64))],512)],10,uIe))}});var MIe=tt(hIe,[["__file","basic-year-table.vue"]]);const RIe=["onClick"],IIe=["aria-label"],SIe=["aria-label"],pIe=["aria-label"],LIe=["aria-label"],fIe=Oe({__name:"panel-date-pick",props:XRe,emits:["pick","set-picker-option","panel-change"],setup(t,{emit:e}){const o=t,_=(y,x,oe)=>!0,l=Ze("picker-panel"),c=Ze("date-picker"),T=Jc(),E=zs(),{t:u,lang:d}=lo(),O=lt("EP_PICKER_BASE"),h=lt(YS),{shortcuts:I,disabledDate:S,cellClassName:L,defaultTime:p}=O.props,C=Ao(O.props,"defaultValue"),m=X(),A=X(xt().locale(d.value)),b=X(!1);let N=!1;const U=v(()=>xt(p).locale(d.value)),P=v(()=>A.value.month()),G=v(()=>A.value.year()),w=X([]),F=X(null),V=X(null),W=y=>w.value.length>0?_(y,w.value,o.format||"HH:mm:ss"):!0,K=y=>p&&!Re.value&&!b.value&&!N?U.value.year(y.year()).month(y.month()).date(y.date()):be.value?y.millisecond(0):y.startOf("day"),ee=(y,...x)=>{if(!y)e("pick",y,...x);else if(rt(y)){const oe=y.map(K);e("pick",oe,...x)}else e("pick",K(y),...x);F.value=null,V.value=null,b.value=!1,N=!1},j=async(y,x)=>{if(Q.value==="date"){y=y;let oe=o.parsedValue?o.parsedValue.year(y.year()).month(y.month()).date(y.date()):y;W(oe)||(oe=w.value[0][0].year(y.year()).month(y.month()).date(y.date())),A.value=oe,ee(oe,be.value||x),o.type==="datetime"&&(await Lt(),St())}else Q.value==="week"?ee(y.date):Q.value==="dates"&&ee(y,!0)},J=y=>{const x=y?"add":"subtract";A.value=A.value[x](1,"month"),z("month")},ie=y=>{const x=A.value,oe=y?"add":"subtract";A.value=Y.value==="year"?x[oe](10,"year"):x[oe](1,"year"),z("year")},Y=X("date"),re=v(()=>{const y=u("el.datepicker.year");if(Y.value==="year"){const x=Math.floor(G.value/10)*10;return y?`${x} ${y} - ${x+9} ${y}`:`${x} - ${x+9}`}return`${G.value} ${y}`}),H=y=>{const x=At(y.value)?y.value():y.value;if(x){N=!0,ee(xt(x).locale(d.value));return}y.onClick&&y.onClick({attrs:T,slots:E,emit:e})},Q=v(()=>{const{type:y}=o;return["week","month","year","dates"].includes(y)?y:"date"}),ae=v(()=>Q.value==="date"?Y.value:Q.value),ge=v(()=>!!I.length),Se=async y=>{A.value=A.value.startOf("month").month(y),Q.value==="month"?ee(A.value,!1):(Y.value="date",["month","year","date","week"].includes(Q.value)&&(ee(A.value,!0),await Lt(),St())),z("month")},pe=async y=>{Q.value==="year"?(A.value=A.value.startOf("year").year(y),ee(A.value,!1)):(A.value=A.value.year(y),Y.value="month",["month","year","date","week"].includes(Q.value)&&(ee(A.value,!0),await Lt(),St())),z("year")},We=async y=>{Y.value=y,await Lt(),St()},be=v(()=>o.type==="datetime"||o.type==="datetimerange"),Me=v(()=>be.value||Q.value==="dates"),Ie=v(()=>S?o.parsedValue?rt(o.parsedValue)?S(o.parsedValue[0].toDate()):S(o.parsedValue.toDate()):!0:!1),Pe=()=>{if(Q.value==="dates")ee(o.parsedValue);else{let y=o.parsedValue;if(!y){const x=xt(p).locale(d.value),oe=Je();y=x.year(oe.year()).month(oe.month()).date(oe.date())}A.value=y,ee(y)}},Ae=v(()=>S?S(xt().locale(d.value).toDate()):!1),ke=()=>{const x=xt().locale(d.value).toDate();b.value=!0,(!S||!S(x))&&W(x)&&(A.value=xt().locale(d.value),ee(A.value))},ve=v(()=>o.timeFormat||nY(o.format)),Te=v(()=>o.dateFormat||iY(o.format)),Re=v(()=>{if(V.value)return V.value;if(!(!o.parsedValue&&!C.value))return(o.parsedValue||A.value).format(ve.value)}),Ue=v(()=>{if(F.value)return F.value;if(!(!o.parsedValue&&!C.value))return(o.parsedValue||A.value).format(Te.value)}),Ye=X(!1),De=()=>{Ye.value=!0},Xe=()=>{Ye.value=!1},Ke=y=>({hour:y.hour(),minute:y.minute(),second:y.second(),year:y.year(),month:y.month(),date:y.date()}),Be=(y,x,oe)=>{const{hour:Ee,minute:_e,second:ze}=Ke(y),_t=o.parsedValue?o.parsedValue.hour(Ee).minute(_e).second(ze):y;A.value=_t,ee(A.value,!0),oe||(Ye.value=x)},qe=y=>{const x=xt(y,ve.value).locale(d.value);if(x.isValid()&&W(x)){const{year:oe,month:Ee,date:_e}=Ke(A.value);A.value=x.year(oe).month(Ee).date(_e),V.value=null,Ye.value=!1,ee(A.value,!0)}},xe=y=>{const x=xt(y,Te.value).locale(d.value);if(x.isValid()){if(S&&S(x.toDate()))return;const{hour:oe,minute:Ee,second:_e}=Ke(A.value);A.value=x.hour(oe).minute(Ee).second(_e),F.value=null,ee(A.value,!0)}},Le=y=>xt.isDayjs(y)&&y.isValid()&&(S?!S(y.toDate()):!0),je=y=>Q.value==="dates"?y.map(x=>x.format(o.format)):y.format(o.format),He=y=>xt(y,o.format).locale(d.value),Je=()=>{const y=xt(C.value).locale(d.value);if(!C.value){const x=U.value;return xt().hour(x.hour()).minute(x.minute()).second(x.second()).locale(d.value)}return y},St=async()=>{var y;["week","month","year","date"].includes(Q.value)&&((y=m.value)==null||y.focus(),Q.value==="week"&&Nt(Rt.down))},Ot=y=>{const{code:x}=y;[Rt.up,Rt.down,Rt.left,Rt.right,Rt.home,Rt.end,Rt.pageUp,Rt.pageDown].includes(x)&&(Nt(x),y.stopPropagation(),y.preventDefault()),[Rt.enter,Rt.space,Rt.numpadEnter].includes(x)&&F.value===null&&V.value===null&&(y.preventDefault(),ee(A.value,!1))},Nt=y=>{var x;const{up:oe,down:Ee,left:_e,right:ze,home:_t,end:wt,pageUp:Ho,pageDown:_o}=Rt,Ko={year:{[oe]:-4,[Ee]:4,[_e]:-1,[ze]:1,offset:(io,go)=>io.setFullYear(io.getFullYear()+go)},month:{[oe]:-4,[Ee]:4,[_e]:-1,[ze]:1,offset:(io,go)=>io.setMonth(io.getMonth()+go)},week:{[oe]:-1,[Ee]:1,[_e]:-1,[ze]:1,offset:(io,go)=>io.setDate(io.getDate()+go*7)},date:{[oe]:-7,[Ee]:7,[_e]:-1,[ze]:1,[_t]:io=>-io.getDay(),[wt]:io=>-io.getDay()+6,[Ho]:io=>-new Date(io.getFullYear(),io.getMonth(),0).getDate(),[_o]:io=>new Date(io.getFullYear(),io.getMonth()+1,0).getDate(),offset:(io,go)=>io.setDate(io.getDate()+go)}},no=A.value.toDate();for(;Math.abs(A.value.diff(no,"year",!0))<1;){const io=Ko[ae.value];if(!io)return;if(io.offset(no,At(io[y])?io[y](no):(x=io[y])!=null?x:0),S&&S(no))break;const go=xt(no).locale(d.value);A.value=go,e("pick",go,!0);break}},z=y=>{e("panel-change",A.value.toDate(),y,Y.value)};return Fe(()=>Q.value,y=>{if(["month","year"].includes(y)){Y.value=y;return}Y.value="date"},{immediate:!0}),Fe(()=>Y.value,()=>{h==null||h.updatePopper()}),Fe(()=>C.value,y=>{y&&(A.value=Je())},{immediate:!0}),Fe(()=>o.parsedValue,y=>{if(y){if(Q.value==="dates"||Array.isArray(y))return;A.value=y}else A.value=Je()},{immediate:!0}),e("set-picker-option",["isValidValue",Le]),e("set-picker-option",["formatToString",je]),e("set-picker-option",["parseUserInput",He]),e("set-picker-option",["handleFocusPicker",St]),(y,x)=>(B(),se("div",{class:k([M(l).b(),M(c).b(),{"has-sidebar":y.$slots.sidebar||M(ge),"has-time":M(be)}])},[te("div",{class:k(M(l).e("body-wrapper"))},[ye(y.$slots,"sidebar",{class:k(M(l).e("sidebar"))}),M(ge)?(B(),se("div",{key:0,class:k(M(l).e("sidebar"))},[(B(!0),se(ht,null,oo(M(I),(oe,Ee)=>(B(),se("button",{key:Ee,type:"button",class:k(M(l).e("shortcut")),onClick:_e=>H(oe)},Qe(oe.text),11,RIe))),128))],2)):Ce("v-if",!0),te("div",{class:k(M(l).e("body"))},[M(be)?(B(),se("div",{key:0,class:k(M(c).e("time-header"))},[te("span",{class:k(M(c).e("editor-wrap"))},[ne(M(Ri),{placeholder:M(u)("el.datepicker.selectDate"),"model-value":M(Ue),size:"small","validate-event":!1,onInput:x[0]||(x[0]=oe=>F.value=oe),onChange:xe},null,8,["placeholder","model-value"])],2),yt((B(),se("span",{class:k(M(c).e("editor-wrap"))},[ne(M(Ri),{placeholder:M(u)("el.datepicker.selectTime"),"model-value":M(Re),size:"small","validate-event":!1,onFocus:De,onInput:x[1]||(x[1]=oe=>V.value=oe),onChange:qe},null,8,["placeholder","model-value"]),ne(M(BI),{visible:Ye.value,format:M(ve),"parsed-value":A.value,onPick:Be},null,8,["visible","format","parsed-value"])],2)),[[M(nl),Xe]])],2)):Ce("v-if",!0),yt(te("div",{class:k([M(c).e("header"),(Y.value==="year"||Y.value==="month")&&M(c).e("header--bordered")])},[te("span",{class:k(M(c).e("prev-btn"))},[te("button",{type:"button","aria-label":M(u)("el.datepicker.prevYear"),class:k(["d-arrow-left",M(l).e("icon-btn")]),onClick:x[2]||(x[2]=oe=>ie(!1))},[ne(M(Et),null,{default:de(()=>[ne(M(nu))]),_:1})],10,IIe),yt(te("button",{type:"button","aria-label":M(u)("el.datepicker.prevMonth"),class:k([M(l).e("icon-btn"),"arrow-left"]),onClick:x[3]||(x[3]=oe=>J(!1))},[ne(M(Et),null,{default:de(()=>[ne(M(La))]),_:1})],10,SIe),[[ao,Y.value==="date"]])],2),te("span",{role:"button",class:k(M(c).e("header-label")),"aria-live":"polite",tabindex:"0",onKeydown:x[4]||(x[4]=So(oe=>We("year"),["enter"])),onClick:x[5]||(x[5]=oe=>We("year"))},Qe(M(re)),35),yt(te("span",{role:"button","aria-live":"polite",tabindex:"0",class:k([M(c).e("header-label"),{active:Y.value==="month"}]),onKeydown:x[6]||(x[6]=So(oe=>We("month"),["enter"])),onClick:x[7]||(x[7]=oe=>We("month"))},Qe(M(u)(`el.datepicker.month${M(P)+1}`)),35),[[ao,Y.value==="date"]]),te("span",{class:k(M(c).e("next-btn"))},[yt(te("button",{type:"button","aria-label":M(u)("el.datepicker.nextMonth"),class:k([M(l).e("icon-btn"),"arrow-right"]),onClick:x[8]||(x[8]=oe=>J(!0))},[ne(M(Et),null,{default:de(()=>[ne(M(Ui))]),_:1})],10,pIe),[[ao,Y.value==="date"]]),te("button",{type:"button","aria-label":M(u)("el.datepicker.nextYear"),class:k([M(l).e("icon-btn"),"d-arrow-right"]),onClick:x[9]||(x[9]=oe=>ie(!0))},[ne(M(Et),null,{default:de(()=>[ne(M(ru))]),_:1})],10,LIe)],2)],2),[[ao,Y.value!=="time"]]),te("div",{class:k(M(l).e("content")),onKeydown:Ot},[Y.value==="date"?(B(),Ne(EN,{key:0,ref_key:"currentViewRef",ref:m,"selection-mode":M(Q),date:A.value,"parsed-value":y.parsedValue,"disabled-date":M(S),"cell-class-name":M(L),onPick:j},null,8,["selection-mode","date","parsed-value","disabled-date","cell-class-name"])):Ce("v-if",!0),Y.value==="year"?(B(),Ne(MIe,{key:1,ref_key:"currentViewRef",ref:m,date:A.value,"disabled-date":M(S),"parsed-value":y.parsedValue,onPick:pe},null,8,["date","disabled-date","parsed-value"])):Ce("v-if",!0),Y.value==="month"?(B(),Ne(uN,{key:2,ref_key:"currentViewRef",ref:m,date:A.value,"parsed-value":y.parsedValue,"disabled-date":M(S),onPick:Se},null,8,["date","parsed-value","disabled-date"])):Ce("v-if",!0)],34)],2)],2),yt(te("div",{class:k(M(l).e("footer"))},[yt(ne(M(Ws),{text:"",size:"small",class:k(M(l).e("link-btn")),disabled:M(Ae),onClick:ke},{default:de(()=>[qt(Qe(M(u)("el.datepicker.now")),1)]),_:1},8,["class","disabled"]),[[ao,M(Q)!=="dates"]]),ne(M(Ws),{plain:"",size:"small",class:k(M(l).e("link-btn")),disabled:M(Ie),onClick:Pe},{default:de(()=>[qt(Qe(M(u)("el.datepicker.confirm")),1)]),_:1},8,["class","disabled"])],2),[[ao,M(Me)&&Y.value==="date"]])],2))}});var mIe=tt(fIe,[["__file","panel-date-pick.vue"]]);const CIe=et({...JY,...eK}),AIe=t=>{const{emit:e}=Ht(),o=Jc(),_=zs();return c=>{const T=At(c.value)?c.value():c.value;if(T){e("pick",[xt(T[0]).locale(t.value),xt(T[1]).locale(t.value)]);return}c.onClick&&c.onClick({attrs:o,slots:_,emit:e})}},sK=(t,{defaultValue:e,leftDate:o,rightDate:_,unit:l,onParsedValueChanged:c})=>{const{emit:T}=Ht(),{pickerNs:E}=lt(nD),u=Ze("date-range-picker"),{t:d,lang:O}=lo(),h=AIe(O),I=X(),S=X(),L=X({endDate:null,selecting:!1}),p=b=>{L.value=b},C=(b=!1)=>{const N=M(I),U=M(S);cN([N,U])&&T("pick",[N,U],b)},m=b=>{L.value.selecting=b,b||(L.value.endDate=null)},A=()=>{const[b,N]=oK(M(e),{lang:M(O),unit:l,unlinkPanels:t.unlinkPanels});I.value=void 0,S.value=void 0,o.value=b,_.value=N};return Fe(e,b=>{b&&A()},{immediate:!0}),Fe(()=>t.parsedValue,b=>{if(rt(b)&&b.length===2){const[N,U]=b;I.value=N,o.value=N,S.value=U,c(M(I),M(S))}else A()},{immediate:!0}),{minDate:I,maxDate:S,rangeState:L,lang:O,ppNs:E,drpNs:u,handleChangeRange:p,handleRangeConfirm:C,handleShortcutClick:h,onSelect:m,t:d}},bIe=["onClick"],NIe=["aria-label"],PIe=["aria-label"],vIe=["disabled","aria-label"],DIe=["disabled","aria-label"],UIe=["disabled","aria-label"],yIe=["disabled","aria-label"],$Ie=["aria-label"],BIe=["aria-label"],qM="month",wIe=Oe({__name:"panel-date-range",props:CIe,emits:["pick","set-picker-option","calendar-change","panel-change"],setup(t,{emit:e}){const o=t,_=lt("EP_PICKER_BASE"),{disabledDate:l,cellClassName:c,format:T,defaultTime:E,clearable:u}=_.props,d=Ao(_.props,"shortcuts"),O=Ao(_.props,"defaultValue"),{lang:h}=lo(),I=X(xt().locale(h.value)),S=X(xt().locale(h.value).add(1,qM)),{minDate:L,maxDate:p,rangeState:C,ppNs:m,drpNs:A,handleChangeRange:b,handleRangeConfirm:N,handleShortcutClick:U,onSelect:P,t:G}=sK(o,{defaultValue:O,leftDate:I,rightDate:S,unit:qM,onParsedValueChanged:x}),w=X({min:null,max:null}),F=X({min:null,max:null}),V=v(()=>`${I.value.year()} ${G("el.datepicker.year")} ${G(`el.datepicker.month${I.value.month()+1}`)}`),W=v(()=>`${S.value.year()} ${G("el.datepicker.year")} ${G(`el.datepicker.month${S.value.month()+1}`)}`),K=v(()=>I.value.year()),ee=v(()=>I.value.month()),j=v(()=>S.value.year()),J=v(()=>S.value.month()),ie=v(()=>!!d.value.length),Y=v(()=>w.value.min!==null?w.value.min:L.value?L.value.format(ge.value):""),re=v(()=>w.value.max!==null?w.value.max:p.value||L.value?(p.value||L.value).format(ge.value):""),H=v(()=>F.value.min!==null?F.value.min:L.value?L.value.format(ae.value):""),Q=v(()=>F.value.max!==null?F.value.max:p.value||L.value?(p.value||L.value).format(ae.value):""),ae=v(()=>o.timeFormat||nY(T)),ge=v(()=>o.dateFormat||iY(T)),Se=oe=>cN(oe)&&(l?!l(oe[0].toDate())&&!l(oe[1].toDate()):!0),pe=()=>{I.value=I.value.subtract(1,"year"),o.unlinkPanels||(S.value=I.value.add(1,"month")),ve("year")},We=()=>{I.value=I.value.subtract(1,"month"),o.unlinkPanels||(S.value=I.value.add(1,"month")),ve("month")},be=()=>{o.unlinkPanels?S.value=S.value.add(1,"year"):(I.value=I.value.add(1,"year"),S.value=I.value.add(1,"month")),ve("year")},Me=()=>{o.unlinkPanels?S.value=S.value.add(1,"month"):(I.value=I.value.add(1,"month"),S.value=I.value.add(1,"month")),ve("month")},Ie=()=>{I.value=I.value.add(1,"year"),ve("year")},Pe=()=>{I.value=I.value.add(1,"month"),ve("month")},Ae=()=>{S.value=S.value.subtract(1,"year"),ve("year")},ke=()=>{S.value=S.value.subtract(1,"month"),ve("month")},ve=oe=>{e("panel-change",[I.value.toDate(),S.value.toDate()],oe)},Te=v(()=>{const oe=(ee.value+1)%12,Ee=ee.value+1>=12?1:0;return o.unlinkPanels&&new Date(K.value+Ee,oe)<new Date(j.value,J.value)}),Re=v(()=>o.unlinkPanels&&j.value*12+J.value-(K.value*12+ee.value+1)>=12),Ue=v(()=>!(L.value&&p.value&&!C.value.selecting&&cN([L.value,p.value]))),Ye=v(()=>o.type==="datetime"||o.type==="datetimerange"),De=(oe,Ee)=>{if(oe)return E?xt(E[Ee]||E).locale(h.value).year(oe.year()).month(oe.month()).date(oe.date()):oe},Xe=(oe,Ee=!0)=>{const _e=oe.minDate,ze=oe.maxDate,_t=De(_e,0),wt=De(ze,1);p.value===wt&&L.value===_t||(e("calendar-change",[_e.toDate(),ze&&ze.toDate()]),p.value=wt,L.value=_t,!(!Ee||Ye.value)&&N())},Ke=X(!1),Be=X(!1),qe=()=>{Ke.value=!1},xe=()=>{Be.value=!1},Le=(oe,Ee)=>{w.value[Ee]=oe;const _e=xt(oe,ge.value).locale(h.value);if(_e.isValid()){if(l&&l(_e.toDate()))return;Ee==="min"?(I.value=_e,L.value=(L.value||I.value).year(_e.year()).month(_e.month()).date(_e.date()),!o.unlinkPanels&&(!p.value||p.value.isBefore(L.value))&&(S.value=_e.add(1,"month"),p.value=L.value.add(1,"month"))):(S.value=_e,p.value=(p.value||S.value).year(_e.year()).month(_e.month()).date(_e.date()),!o.unlinkPanels&&(!L.value||L.value.isAfter(p.value))&&(I.value=_e.subtract(1,"month"),L.value=p.value.subtract(1,"month")))}},je=(oe,Ee)=>{w.value[Ee]=null},He=(oe,Ee)=>{F.value[Ee]=oe;const _e=xt(oe,ae.value).locale(h.value);_e.isValid()&&(Ee==="min"?(Ke.value=!0,L.value=(L.value||I.value).hour(_e.hour()).minute(_e.minute()).second(_e.second()),(!p.value||p.value.isBefore(L.value))&&(p.value=L.value)):(Be.value=!0,p.value=(p.value||S.value).hour(_e.hour()).minute(_e.minute()).second(_e.second()),S.value=p.value,p.value&&p.value.isBefore(L.value)&&(L.value=p.value)))},Je=(oe,Ee)=>{F.value[Ee]=null,Ee==="min"?(I.value=L.value,Ke.value=!1):(S.value=p.value,Be.value=!1)},St=(oe,Ee,_e)=>{F.value.min||(oe&&(I.value=oe,L.value=(L.value||I.value).hour(oe.hour()).minute(oe.minute()).second(oe.second())),_e||(Ke.value=Ee),(!p.value||p.value.isBefore(L.value))&&(p.value=L.value,S.value=oe))},Ot=(oe,Ee,_e)=>{F.value.max||(oe&&(S.value=oe,p.value=(p.value||S.value).hour(oe.hour()).minute(oe.minute()).second(oe.second())),_e||(Be.value=Ee),p.value&&p.value.isBefore(L.value)&&(L.value=p.value))},Nt=()=>{I.value=oK(M(O),{lang:M(h),unit:"month",unlinkPanels:o.unlinkPanels})[0],S.value=I.value.add(1,"month"),e("pick",null)},z=oe=>rt(oe)?oe.map(Ee=>Ee.format(T)):oe.format(T),y=oe=>rt(oe)?oe.map(Ee=>xt(Ee,T).locale(h.value)):xt(oe,T).locale(h.value);function x(oe,Ee){if(o.unlinkPanels&&Ee){const _e=(oe==null?void 0:oe.year())||0,ze=(oe==null?void 0:oe.month())||0,_t=Ee.year(),wt=Ee.month();S.value=_e===_t&&ze===wt?Ee.add(1,qM):Ee}else S.value=I.value.add(1,qM),Ee&&(S.value=S.value.hour(Ee.hour()).minute(Ee.minute()).second(Ee.second()))}return e("set-picker-option",["isValidValue",Se]),e("set-picker-option",["parseUserInput",y]),e("set-picker-option",["formatToString",z]),e("set-picker-option",["handleClear",Nt]),(oe,Ee)=>(B(),se("div",{class:k([M(m).b(),M(A).b(),{"has-sidebar":oe.$slots.sidebar||M(ie),"has-time":M(Ye)}])},[te("div",{class:k(M(m).e("body-wrapper"))},[ye(oe.$slots,"sidebar",{class:k(M(m).e("sidebar"))}),M(ie)?(B(),se("div",{key:0,class:k(M(m).e("sidebar"))},[(B(!0),se(ht,null,oo(M(d),(_e,ze)=>(B(),se("button",{key:ze,type:"button",class:k(M(m).e("shortcut")),onClick:_t=>M(U)(_e)},Qe(_e.text),11,bIe))),128))],2)):Ce("v-if",!0),te("div",{class:k(M(m).e("body"))},[M(Ye)?(B(),se("div",{key:0,class:k(M(A).e("time-header"))},[te("span",{class:k(M(A).e("editors-wrap"))},[te("span",{class:k(M(A).e("time-picker-wrap"))},[ne(M(Ri),{size:"small",disabled:M(C).selecting,placeholder:M(G)("el.datepicker.startDate"),class:k(M(A).e("editor")),"model-value":M(Y),"validate-event":!1,onInput:Ee[0]||(Ee[0]=_e=>Le(_e,"min")),onChange:Ee[1]||(Ee[1]=_e=>je(_e,"min"))},null,8,["disabled","placeholder","class","model-value"])],2),yt((B(),se("span",{class:k(M(A).e("time-picker-wrap"))},[ne(M(Ri),{size:"small",class:k(M(A).e("editor")),disabled:M(C).selecting,placeholder:M(G)("el.datepicker.startTime"),"model-value":M(H),"validate-event":!1,onFocus:Ee[2]||(Ee[2]=_e=>Ke.value=!0),onInput:Ee[3]||(Ee[3]=_e=>He(_e,"min")),onChange:Ee[4]||(Ee[4]=_e=>Je(_e,"min"))},null,8,["class","disabled","placeholder","model-value"]),ne(M(BI),{visible:Ke.value,format:M(ae),"datetime-role":"start","parsed-value":I.value,onPick:St},null,8,["visible","format","parsed-value"])],2)),[[M(nl),qe]])],2),te("span",null,[ne(M(Et),null,{default:de(()=>[ne(M(Ui))]),_:1})]),te("span",{class:k([M(A).e("editors-wrap"),"is-right"])},[te("span",{class:k(M(A).e("time-picker-wrap"))},[ne(M(Ri),{size:"small",class:k(M(A).e("editor")),disabled:M(C).selecting,placeholder:M(G)("el.datepicker.endDate"),"model-value":M(re),readonly:!M(L),"validate-event":!1,onInput:Ee[5]||(Ee[5]=_e=>Le(_e,"max")),onChange:Ee[6]||(Ee[6]=_e=>je(_e,"max"))},null,8,["class","disabled","placeholder","model-value","readonly"])],2),yt((B(),se("span",{class:k(M(A).e("time-picker-wrap"))},[ne(M(Ri),{size:"small",class:k(M(A).e("editor")),disabled:M(C).selecting,placeholder:M(G)("el.datepicker.endTime"),"model-value":M(Q),readonly:!M(L),"validate-event":!1,onFocus:Ee[7]||(Ee[7]=_e=>M(L)&&(Be.value=!0)),onInput:Ee[8]||(Ee[8]=_e=>He(_e,"max")),onChange:Ee[9]||(Ee[9]=_e=>Je(_e,"max"))},null,8,["class","disabled","placeholder","model-value","readonly"]),ne(M(BI),{"datetime-role":"end",visible:Be.value,format:M(ae),"parsed-value":S.value,onPick:Ot},null,8,["visible","format","parsed-value"])],2)),[[M(nl),xe]])],2)],2)):Ce("v-if",!0),te("div",{class:k([[M(m).e("content"),M(A).e("content")],"is-left"])},[te("div",{class:k(M(A).e("header"))},[te("button",{type:"button",class:k([M(m).e("icon-btn"),"d-arrow-left"]),"aria-label":M(G)("el.datepicker.prevYear"),onClick:pe},[ne(M(Et),null,{default:de(()=>[ne(M(nu))]),_:1})],10,NIe),te("button",{type:"button",class:k([M(m).e("icon-btn"),"arrow-left"]),"aria-label":M(G)("el.datepicker.prevMonth"),onClick:We},[ne(M(Et),null,{default:de(()=>[ne(M(La))]),_:1})],10,PIe),oe.unlinkPanels?(B(),se("button",{key:0,type:"button",disabled:!M(Re),class:k([[M(m).e("icon-btn"),{"is-disabled":!M(Re)}],"d-arrow-right"]),"aria-label":M(G)("el.datepicker.nextYear"),onClick:Ie},[ne(M(Et),null,{default:de(()=>[ne(M(ru))]),_:1})],10,vIe)):Ce("v-if",!0),oe.unlinkPanels?(B(),se("button",{key:1,type:"button",disabled:!M(Te),class:k([[M(m).e("icon-btn"),{"is-disabled":!M(Te)}],"arrow-right"]),"aria-label":M(G)("el.datepicker.nextMonth"),onClick:Pe},[ne(M(Et),null,{default:de(()=>[ne(M(Ui))]),_:1})],10,DIe)):Ce("v-if",!0),te("div",null,Qe(M(V)),1)],2),ne(EN,{"selection-mode":"range",date:I.value,"min-date":M(L),"max-date":M(p),"range-state":M(C),"disabled-date":M(l),"cell-class-name":M(c),onChangerange:M(b),onPick:Xe,onSelect:M(P)},null,8,["date","min-date","max-date","range-state","disabled-date","cell-class-name","onChangerange","onSelect"])],2),te("div",{class:k([[M(m).e("content"),M(A).e("content")],"is-right"])},[te("div",{class:k(M(A).e("header"))},[oe.unlinkPanels?(B(),se("button",{key:0,type:"button",disabled:!M(Re),class:k([[M(m).e("icon-btn"),{"is-disabled":!M(Re)}],"d-arrow-left"]),"aria-label":M(G)("el.datepicker.prevYear"),onClick:Ae},[ne(M(Et),null,{default:de(()=>[ne(M(nu))]),_:1})],10,UIe)):Ce("v-if",!0),oe.unlinkPanels?(B(),se("button",{key:1,type:"button",disabled:!M(Te),class:k([[M(m).e("icon-btn"),{"is-disabled":!M(Te)}],"arrow-left"]),"aria-label":M(G)("el.datepicker.prevMonth"),onClick:ke},[ne(M(Et),null,{default:de(()=>[ne(M(La))]),_:1})],10,yIe)):Ce("v-if",!0),te("button",{type:"button","aria-label":M(G)("el.datepicker.nextYear"),class:k([M(m).e("icon-btn"),"d-arrow-right"]),onClick:be},[ne(M(Et),null,{default:de(()=>[ne(M(ru))]),_:1})],10,$Ie),te("button",{type:"button",class:k([M(m).e("icon-btn"),"arrow-right"]),"aria-label":M(G)("el.datepicker.nextMonth"),onClick:Me},[ne(M(Et),null,{default:de(()=>[ne(M(Ui))]),_:1})],10,BIe),te("div",null,Qe(M(W)),1)],2),ne(EN,{"selection-mode":"range",date:S.value,"min-date":M(L),"max-date":M(p),"range-state":M(C),"disabled-date":M(l),"cell-class-name":M(c),onChangerange:M(b),onPick:Xe,onSelect:M(P)},null,8,["date","min-date","max-date","range-state","disabled-date","cell-class-name","onChangerange","onSelect"])],2)],2)],2),M(Ye)?(B(),se("div",{key:0,class:k(M(m).e("footer"))},[M(u)?(B(),Ne(M(Ws),{key:0,text:"",size:"small",class:k(M(m).e("link-btn")),onClick:Nt},{default:de(()=>[qt(Qe(M(G)("el.datepicker.clear")),1)]),_:1},8,["class"])):Ce("v-if",!0),ne(M(Ws),{plain:"",size:"small",class:k(M(m).e("link-btn")),disabled:M(Ue),onClick:Ee[10]||(Ee[10]=_e=>M(N)(!1))},{default:de(()=>[qt(Qe(M(G)("el.datepicker.confirm")),1)]),_:1},8,["class","disabled"])],2)):Ce("v-if",!0)],2))}});var GIe=tt(wIe,[["__file","panel-date-range.vue"]]);const kIe=et({...eK}),HIe=["pick","set-picker-option","calendar-change"],xIe=({unlinkPanels:t,leftDate:e,rightDate:o})=>{const{t:_}=lo(),l=()=>{e.value=e.value.subtract(1,"year"),t.value||(o.value=o.value.subtract(1,"year"))},c=()=>{t.value||(e.value=e.value.add(1,"year")),o.value=o.value.add(1,"year")},T=()=>{e.value=e.value.add(1,"year")},E=()=>{o.value=o.value.subtract(1,"year")},u=v(()=>`${e.value.year()} ${_("el.datepicker.year")}`),d=v(()=>`${o.value.year()} ${_("el.datepicker.year")}`),O=v(()=>e.value.year()),h=v(()=>o.value.year()===e.value.year()?e.value.year()+1:o.value.year());return{leftPrevYear:l,rightNextYear:c,leftNextYear:T,rightPrevYear:E,leftLabel:u,rightLabel:d,leftYear:O,rightYear:h}},FIe=["onClick"],VIe=["disabled"],WIe=["disabled"],QM="year",XIe=Oe({name:"DatePickerMonthRange"}),YIe=Oe({...XIe,props:kIe,emits:HIe,setup(t,{emit:e}){const o=t,{lang:_}=lo(),l=lt("EP_PICKER_BASE"),{shortcuts:c,disabledDate:T,format:E}=l.props,u=Ao(l.props,"defaultValue"),d=X(xt().locale(_.value)),O=X(xt().locale(_.value).add(1,QM)),{minDate:h,maxDate:I,rangeState:S,ppNs:L,drpNs:p,handleChangeRange:C,handleRangeConfirm:m,handleShortcutClick:A,onSelect:b}=sK(o,{defaultValue:u,leftDate:d,rightDate:O,unit:QM,onParsedValueChanged:ie}),N=v(()=>!!c.length),{leftPrevYear:U,rightNextYear:P,leftNextYear:G,rightPrevYear:w,leftLabel:F,rightLabel:V,leftYear:W,rightYear:K}=xIe({unlinkPanels:Ao(o,"unlinkPanels"),leftDate:d,rightDate:O}),ee=v(()=>o.unlinkPanels&&K.value>W.value+1),j=(Y,re=!0)=>{const H=Y.minDate,Q=Y.maxDate;I.value===Q&&h.value===H||(e("calendar-change",[H.toDate(),Q&&Q.toDate()]),I.value=Q,h.value=H,re&&m())},J=Y=>Y.map(re=>re.format(E));function ie(Y,re){if(o.unlinkPanels&&re){const H=(Y==null?void 0:Y.year())||0,Q=re.year();O.value=H===Q?re.add(1,QM):re}else O.value=d.value.add(1,QM)}return e("set-picker-option",["formatToString",J]),(Y,re)=>(B(),se("div",{class:k([M(L).b(),M(p).b(),{"has-sidebar":!!Y.$slots.sidebar||M(N)}])},[te("div",{class:k(M(L).e("body-wrapper"))},[ye(Y.$slots,"sidebar",{class:k(M(L).e("sidebar"))}),M(N)?(B(),se("div",{key:0,class:k(M(L).e("sidebar"))},[(B(!0),se(ht,null,oo(M(c),(H,Q)=>(B(),se("button",{key:Q,type:"button",class:k(M(L).e("shortcut")),onClick:ae=>M(A)(H)},Qe(H.text),11,FIe))),128))],2)):Ce("v-if",!0),te("div",{class:k(M(L).e("body"))},[te("div",{class:k([[M(L).e("content"),M(p).e("content")],"is-left"])},[te("div",{class:k(M(p).e("header"))},[te("button",{type:"button",class:k([M(L).e("icon-btn"),"d-arrow-left"]),onClick:re[0]||(re[0]=(...H)=>M(U)&&M(U)(...H))},[ne(M(Et),null,{default:de(()=>[ne(M(nu))]),_:1})],2),Y.unlinkPanels?(B(),se("button",{key:0,type:"button",disabled:!M(ee),class:k([[M(L).e("icon-btn"),{[M(L).is("disabled")]:!M(ee)}],"d-arrow-right"]),onClick:re[1]||(re[1]=(...H)=>M(G)&&M(G)(...H))},[ne(M(Et),null,{default:de(()=>[ne(M(ru))]),_:1})],10,VIe)):Ce("v-if",!0),te("div",null,Qe(M(F)),1)],2),ne(uN,{"selection-mode":"range",date:d.value,"min-date":M(h),"max-date":M(I),"range-state":M(S),"disabled-date":M(T),onChangerange:M(C),onPick:j,onSelect:M(b)},null,8,["date","min-date","max-date","range-state","disabled-date","onChangerange","onSelect"])],2),te("div",{class:k([[M(L).e("content"),M(p).e("content")],"is-right"])},[te("div",{class:k(M(p).e("header"))},[Y.unlinkPanels?(B(),se("button",{key:0,type:"button",disabled:!M(ee),class:k([[M(L).e("icon-btn"),{"is-disabled":!M(ee)}],"d-arrow-left"]),onClick:re[2]||(re[2]=(...H)=>M(w)&&M(w)(...H))},[ne(M(Et),null,{default:de(()=>[ne(M(nu))]),_:1})],10,WIe)):Ce("v-if",!0),te("button",{type:"button",class:k([M(L).e("icon-btn"),"d-arrow-right"]),onClick:re[3]||(re[3]=(...H)=>M(P)&&M(P)(...H))},[ne(M(Et),null,{default:de(()=>[ne(M(ru))]),_:1})],2),te("div",null,Qe(M(V)),1)],2),ne(uN,{"selection-mode":"range",date:O.value,"min-date":M(h),"max-date":M(I),"range-state":M(S),"disabled-date":M(T),onChangerange:M(C),onPick:j,onSelect:M(b)},null,8,["date","min-date","max-date","range-state","disabled-date","onChangerange","onSelect"])],2)],2)],2)],2))}});var KIe=tt(YIe,[["__file","panel-month-range.vue"]]);const zIe=function(t){switch(t){case"daterange":case"datetimerange":return GIe;case"monthrange":return KIe;default:return mIe}};xt.extend(SY);xt.extend(DRe);xt.extend(oD);xt.extend(yRe);xt.extend(BRe);xt.extend(GRe);xt.extend(HRe);xt.extend(FRe);var ZIe=Oe({name:"ElDatePicker",install:null,props:VRe,emits:["update:modelValue"],setup(t,{expose:e,emit:o,slots:_}){const l=Ze("picker-panel");Jt("ElPopperOptions",Eo(Ao(t,"popperOptions"))),Jt(nD,{slots:_,pickerNs:l});const c=X();e({focus:(u=!0)=>{var d;(d=c.value)==null||d.focus(u)},handleOpen:()=>{var u;(u=c.value)==null||u.handleOpen()},handleClose:()=>{var u;(u=c.value)==null||u.handleClose()}});const E=u=>{o("update:modelValue",u)};return()=>{var u;const d=(u=t.format)!=null?u:bde[t.type]||gE,O=zIe(t.type);return ne(lY,Yt(t,{format:d,type:t.type,ref:c,"onUpdate:modelValue":E}),{default:h=>ne(O,h,null),"range-separator":_["range-separator"]})}}});const PR=ZIe;PR.install=t=>{t.component(PR.name,PR)};const jIe=PR,_D=Symbol("elDescriptions");var Ng=Oe({name:"ElDescriptionsCell",props:{cell:{type:Object},tag:{type:String,default:"td"},type:{type:String}},setup(){return{descriptions:lt(_D,{})}},render(){var t,e,o,_,l,c,T;const E=sce(this.cell),u=(((t=this.cell)==null?void 0:t.dirs)||[]).map(U=>{const{dir:P,arg:G,modifiers:w,value:F}=U;return[P,F,G,w]}),{border:d,direction:O}=this.descriptions,h=O==="vertical",I=((_=(o=(e=this.cell)==null?void 0:e.children)==null?void 0:o.label)==null?void 0:_.call(o))||E.label,S=(T=(c=(l=this.cell)==null?void 0:l.children)==null?void 0:c.default)==null?void 0:T.call(c),L=E.span,p=E.align?`is-${E.align}`:"",C=E.labelAlign?`is-${E.labelAlign}`:p,m=E.className,A=E.labelClassName,b={width:hs(E.width),minWidth:hs(E.minWidth)},N=Ze("descriptions");switch(this.type){case"label":return yt(pt(this.tag,{style:b,class:[N.e("cell"),N.e("label"),N.is("bordered-label",d),N.is("vertical-label",h),C,A],colSpan:h?L:1},I),u);case"content":return yt(pt(this.tag,{style:b,class:[N.e("cell"),N.e("content"),N.is("bordered-content",d),N.is("vertical-content",h),p,m],colSpan:h?L:L*2-1},S),u);default:return yt(pt("td",{style:b,class:[N.e("cell"),p],colSpan:L},[ws(I)?void 0:pt("span",{class:[N.e("label"),A]},I),pt("span",{class:[N.e("content"),m]},S)]),u)}}});const qIe=et({row:{type:me(Array),default:()=>[]}}),QIe={key:1},JIe=Oe({name:"ElDescriptionsRow"}),eSe=Oe({...JIe,props:qIe,setup(t){const e=lt(_D,{});return(o,_)=>M(e).direction==="vertical"?(B(),se(ht,{key:0},[te("tr",null,[(B(!0),se(ht,null,oo(o.row,(l,c)=>(B(),Ne(M(Ng),{key:`tr1-${c}`,cell:l,tag:"th",type:"label"},null,8,["cell"]))),128))]),te("tr",null,[(B(!0),se(ht,null,oo(o.row,(l,c)=>(B(),Ne(M(Ng),{key:`tr2-${c}`,cell:l,tag:"td",type:"content"},null,8,["cell"]))),128))])],64)):(B(),se("tr",QIe,[(B(!0),se(ht,null,oo(o.row,(l,c)=>(B(),se(ht,{key:`tr3-${c}`},[M(e).border?(B(),se(ht,{key:0},[ne(M(Ng),{cell:l,tag:"td",type:"label"},null,8,["cell"]),ne(M(Ng),{cell:l,tag:"td",type:"content"},null,8,["cell"])],64)):(B(),Ne(M(Ng),{key:1,cell:l,tag:"td",type:"both"},null,8,["cell"]))],64))),128))]))}});var tSe=tt(eSe,[["__file","descriptions-row.vue"]]);const oSe=et({border:{type:Boolean,default:!1},column:{type:Number,default:3},direction:{type:String,values:["horizontal","vertical"],default:"horizontal"},size:Ys,title:{type:String,default:""},extra:{type:String,default:""}}),sSe=Oe({name:"ElDescriptions"}),iSe=Oe({...sSe,props:oSe,setup(t){const e=t,o=Ze("descriptions"),_=Ds(),l=zs();Jt(_D,e);const c=v(()=>[o.b(),o.m(_.value)]),T=(u,d,O,h=!1)=>(u.props||(u.props={}),d>O&&(u.props.span=O),h&&(u.props.span=d),u),E=()=>{if(!l.default)return[];const u=Ta(l.default()).filter(S=>{var L;return((L=S==null?void 0:S.type)==null?void 0:L.name)==="ElDescriptionsItem"}),d=[];let O=[],h=e.column,I=0;return u.forEach((S,L)=>{var p;const C=((p=S.props)==null?void 0:p.span)||1;if(L<u.length-1&&(I+=C>h?h:C),L===u.length-1){const m=e.column-I%e.column;O.push(T(S,m,h,!0)),d.push(O);return}C<h?(h-=C,O.push(S)):(O.push(T(S,C,h)),d.push(O),h=e.column,O=[])}),d};return(u,d)=>(B(),se("div",{class:k(M(c))},[u.title||u.extra||u.$slots.title||u.$slots.extra?(B(),se("div",{key:0,class:k(M(o).e("header"))},[te("div",{class:k(M(o).e("title"))},[ye(u.$slots,"title",{},()=>[qt(Qe(u.title),1)])],2),te("div",{class:k(M(o).e("extra"))},[ye(u.$slots,"extra",{},()=>[qt(Qe(u.extra),1)])],2)],2)):Ce("v-if",!0),te("div",{class:k(M(o).e("body"))},[te("table",{class:k([M(o).e("table"),M(o).is("bordered",u.border)])},[te("tbody",null,[(B(!0),se(ht,null,oo(E(),(O,h)=>(B(),Ne(tSe,{key:h,row:O},null,8,["row"]))),128))])],2)],2)],2))}});var nSe=tt(iSe,[["__file","description.vue"]]);const rSe=et({label:{type:String,default:""},span:{type:Number,default:1},width:{type:[String,Number],default:""},minWidth:{type:[String,Number],default:""},align:{type:String,default:"left"},labelAlign:{type:String,default:""},className:{type:String,default:""},labelClassName:{type:String,default:""}}),iK=Oe({name:"ElDescriptionsItem",props:rSe}),_Se=Vt(nSe,{DescriptionsItem:iK}),lSe=ss(iK),aSe=et({mask:{type:Boolean,default:!0},customMaskEvent:{type:Boolean,default:!1},overlayClass:{type:me([String,Array,Object])},zIndex:{type:me([String,Number])}}),cSe={click:t=>t instanceof MouseEvent},TSe="overlay";var ESe=Oe({name:"ElOverlay",props:aSe,emits:cSe,setup(t,{slots:e,emit:o}){const _=Ze(TSe),l=u=>{o("click",u)},{onClick:c,onMousedown:T,onMouseup:E}=kv(t.customMaskEvent?void 0:l);return()=>t.mask?ne("div",{class:[_.b(),t.overlayClass],style:{zIndex:t.zIndex},onClick:c,onMousedown:T,onMouseup:E},[ye(e,"default")],yn.STYLE|yn.CLASS|yn.PROPS,["onClick","onMouseup","onMousedown"]):pt("div",{class:t.overlayClass,style:{zIndex:t.zIndex,position:"fixed",top:"0px",right:"0px",bottom:"0px",left:"0px"}},[ye(e,"default")])}});const lD=ESe,nK=Symbol("dialogInjectionKey"),rK=et({center:Boolean,alignCenter:Boolean,closeIcon:{type:Lo},customClass:{type:String,default:""},draggable:Boolean,fullscreen:Boolean,showClose:{type:Boolean,default:!0},title:{type:String,default:""},ariaLevel:{type:String,default:"2"}}),uSe={close:()=>!0},gSe=["aria-level"],dSe=["aria-label"],OSe=["id"],hSe=Oe({name:"ElDialogContent"}),MSe=Oe({...hSe,props:rK,emits:uSe,setup(t){const e=t,{t:o}=lo(),{Close:_}=Dv,{dialogRef:l,headerRef:c,bodyId:T,ns:E,style:u}=lt(nK),{focusTrapRef:d}=lt(Jv),O=v(()=>[E.b(),E.is("fullscreen",e.fullscreen),E.is("draggable",e.draggable),E.is("align-center",e.alignCenter),{[E.m("center")]:e.center},e.customClass]),h=$S(d,l),I=v(()=>e.draggable);return JX(l,c,I),(S,L)=>(B(),se("div",{ref:M(h),class:k(M(O)),style:dt(M(u)),tabindex:"-1"},[te("header",{ref_key:"headerRef",ref:c,class:k(M(E).e("header"))},[ye(S.$slots,"header",{},()=>[te("span",{role:"heading","aria-level":S.ariaLevel,class:k(M(E).e("title"))},Qe(S.title),11,gSe)]),S.showClose?(B(),se("button",{key:0,"aria-label":M(o)("el.dialog.close"),class:k(M(E).e("headerbtn")),type:"button",onClick:L[0]||(L[0]=p=>S.$emit("close"))},[ne(M(Et),{class:k(M(E).e("close"))},{default:de(()=>[(B(),Ne(Kt(S.closeIcon||M(_))))]),_:1},8,["class"])],10,dSe)):Ce("v-if",!0)],2),te("div",{id:M(T),class:k(M(E).e("body"))},[ye(S.$slots,"default")],10,OSe),S.$slots.footer?(B(),se("footer",{key:0,class:k(M(E).e("footer"))},[ye(S.$slots,"footer")],2)):Ce("v-if",!0)],6))}});var RSe=tt(MSe,[["__file","dialog-content.vue"]]);const _K=et({...rK,appendToBody:Boolean,appendTo:{type:me(String),default:"body"},beforeClose:{type:me(Function)},destroyOnClose:Boolean,closeOnClickModal:{type:Boolean,default:!0},closeOnPressEscape:{type:Boolean,default:!0},lockScroll:{type:Boolean,default:!0},modal:{type:Boolean,default:!0},openDelay:{type:Number,default:0},closeDelay:{type:Number,default:0},top:{type:String},modelValue:Boolean,modalClass:String,width:{type:[String,Number]},zIndex:{type:Number},trapFocus:{type:Boolean,default:!1},headerAriaLevel:{type:String,default:"2"}}),lK={open:()=>!0,opened:()=>!0,close:()=>!0,closed:()=>!0,[Xt]:t=>Ss(t),openAutoFocus:()=>!0,closeAutoFocus:()=>!0},aK=(t,e)=>{var o;const l=Ht().emit,{nextZIndex:c}=rT();let T="";const E=rn(),u=rn(),d=X(!1),O=X(!1),h=X(!1),I=X((o=t.zIndex)!=null?o:c());let S,L;const p=VS("namespace",td),C=v(()=>{const J={},ie=`--${p.value}-dialog`;return t.fullscreen||(t.top&&(J[`${ie}-margin-top`]=t.top),t.width&&(J[`${ie}-width`]=hs(t.width))),J}),m=v(()=>t.alignCenter?{display:"flex"}:{});function A(){l("opened")}function b(){l("closed"),l(Xt,!1),t.destroyOnClose&&(h.value=!1)}function N(){l("close")}function U(){L==null||L(),S==null||S(),t.openDelay&&t.openDelay>0?{stop:S}=Xc(()=>F(),t.openDelay):F()}function P(){S==null||S(),L==null||L(),t.closeDelay&&t.closeDelay>0?{stop:L}=Xc(()=>V(),t.closeDelay):V()}function G(){function J(ie){ie||(O.value=!0,d.value=!1)}t.beforeClose?t.beforeClose(J):P()}function w(){t.closeOnClickModal&&G()}function F(){ro&&(d.value=!0)}function V(){d.value=!1}function W(){l("openAutoFocus")}function K(){l("closeAutoFocus")}function ee(J){var ie;((ie=J.detail)==null?void 0:ie.focusReason)==="pointer"&&J.preventDefault()}t.lockScroll&&Gv(d);function j(){t.closeOnPressEscape&&G()}return Fe(()=>t.modelValue,J=>{J?(O.value=!1,U(),h.value=!0,I.value=vX(t.zIndex)?c():I.value++,Lt(()=>{l("open"),e.value&&(e.value.scrollTop=0)})):d.value&&P()}),Fe(()=>t.fullscreen,J=>{e.value&&(J?(T=e.value.style.transform,e.value.style.transform=""):e.value.style.transform=T)}),Bt(()=>{t.modelValue&&(d.value=!0,h.value=!0,U())}),{afterEnter:A,afterLeave:b,beforeLeave:N,handleClose:G,onModalClick:w,close:P,doClose:V,onOpenAutoFocus:W,onCloseAutoFocus:K,onCloseRequested:j,onFocusoutPrevented:ee,titleId:E,bodyId:u,closed:O,style:C,overlayDialogStyle:m,rendered:h,visible:d,zIndex:I}},ISe=["aria-label","aria-labelledby","aria-describedby"],SSe=Oe({name:"ElDialog",inheritAttrs:!1}),pSe=Oe({...SSe,props:_K,emits:lK,setup(t,{expose:e}){const o=t,_=zs();u_({scope:"el-dialog",from:"the title slot",replacement:"the header slot",version:"3.0.0",ref:"https://element-plus.org/en-US/component/dialog.html#slots"},v(()=>!!_.title)),u_({scope:"el-dialog",from:"custom-class",replacement:"class",version:"2.3.0",ref:"https://element-plus.org/en-US/component/dialog.html#attributes",type:"Attribute"},v(()=>!!o.customClass));const l=Ze("dialog"),c=X(),T=X(),E=X(),{visible:u,titleId:d,bodyId:O,style:h,overlayDialogStyle:I,rendered:S,zIndex:L,afterEnter:p,afterLeave:C,beforeLeave:m,handleClose:A,onModalClick:b,onOpenAutoFocus:N,onCloseAutoFocus:U,onCloseRequested:P,onFocusoutPrevented:G}=aK(o,c);Jt(nK,{dialogRef:c,headerRef:T,bodyId:O,ns:l,rendered:S,style:h});const w=kv(b),F=v(()=>o.draggable&&!o.fullscreen);return e({visible:u,dialogContentRef:E}),(V,W)=>(B(),Ne(Mu,{to:V.appendTo,disabled:V.appendTo!=="body"?!1:!V.appendToBody},[ne(Ns,{name:"dialog-fade",onAfterEnter:M(p),onAfterLeave:M(C),onBeforeLeave:M(m),persisted:""},{default:de(()=>[yt(ne(M(lD),{"custom-mask-event":"",mask:V.modal,"overlay-class":V.modalClass,"z-index":M(L)},{default:de(()=>[te("div",{role:"dialog","aria-modal":"true","aria-label":V.title||void 0,"aria-labelledby":V.title?void 0:M(d),"aria-describedby":M(O),class:k(`${M(l).namespace.value}-overlay-dialog`),style:dt(M(I)),onClick:W[0]||(W[0]=(...K)=>M(w).onClick&&M(w).onClick(...K)),onMousedown:W[1]||(W[1]=(...K)=>M(w).onMousedown&&M(w).onMousedown(...K)),onMouseup:W[2]||(W[2]=(...K)=>M(w).onMouseup&&M(w).onMouseup(...K))},[ne(M(PO),{loop:"",trapped:M(u),"focus-start-el":"container",onFocusAfterTrapped:M(N),onFocusAfterReleased:M(U),onFocusoutPrevented:M(G),onReleaseRequested:M(P)},{default:de(()=>[M(S)?(B(),Ne(RSe,Yt({key:0,ref_key:"dialogContentRef",ref:E},V.$attrs,{"custom-class":V.customClass,center:V.center,"align-center":V.alignCenter,"close-icon":V.closeIcon,draggable:M(F),fullscreen:V.fullscreen,"show-close":V.showClose,title:V.title,"aria-level":V.headerAriaLevel,onClose:M(A)}),da({header:de(()=>[V.$slots.title?ye(V.$slots,"title",{key:1}):ye(V.$slots,"header",{key:0,close:M(A),titleId:M(d),titleClass:M(l).e("title")})]),default:de(()=>[ye(V.$slots,"default")]),_:2},[V.$slots.footer?{name:"footer",fn:de(()=>[ye(V.$slots,"footer")])}:void 0]),1040,["custom-class","center","align-center","close-icon","draggable","fullscreen","show-close","title","aria-level","onClose"])):Ce("v-if",!0)]),_:3},8,["trapped","onFocusAfterTrapped","onFocusAfterReleased","onFocusoutPrevented","onReleaseRequested"])],46,ISe)]),_:3},8,["mask","overlay-class","z-index"]),[[ao,M(u)]])]),_:3},8,["onAfterEnter","onAfterLeave","onBeforeLeave"])],8,["to","disabled"]))}});var LSe=tt(pSe,[["__file","dialog.vue"]]);const fSe=Vt(LSe),mSe=et({direction:{type:String,values:["horizontal","vertical"],default:"horizontal"},contentPosition:{type:String,values:["left","center","right"],default:"center"},borderStyle:{type:me(String),default:"solid"}}),CSe=Oe({name:"ElDivider"}),ASe=Oe({...CSe,props:mSe,setup(t){const e=t,o=Ze("divider"),_=v(()=>o.cssVar({"border-style":e.borderStyle}));return(l,c)=>(B(),se("div",{class:k([M(o).b(),M(o).m(l.direction)]),style:dt(M(_)),role:"separator"},[l.$slots.default&&l.direction!=="vertical"?(B(),se("div",{key:0,class:k([M(o).e("text"),M(o).is(l.contentPosition)])},[ye(l.$slots,"default")],2)):Ce("v-if",!0)],6))}});var bSe=tt(ASe,[["__file","divider.vue"]]);const cK=Vt(bSe),NSe=et({..._K,direction:{type:String,default:"rtl",values:["ltr","rtl","ttb","btt"]},size:{type:[String,Number],default:"30%"},withHeader:{type:Boolean,default:!0},modalFade:{type:Boolean,default:!0},headerAriaLevel:{type:String,default:"2"}}),PSe=lK,vSe=Oe({name:"ElDrawer",components:{ElOverlay:lD,ElFocusTrap:PO,ElIcon:Et,Close:Rr},inheritAttrs:!1,props:NSe,emits:PSe,setup(t,{slots:e}){u_({scope:"el-drawer",from:"the title slot",replacement:"the header slot",version:"3.0.0",ref:"https://element-plus.org/en-US/component/drawer.html#slots"},v(()=>!!e.title)),u_({scope:"el-drawer",from:"custom-class",replacement:"class",version:"2.3.0",ref:"https://element-plus.org/en-US/component/drawer.html#attributes",type:"Attribute"},v(()=>!!t.customClass));const o=X(),_=X(),l=Ze("drawer"),{t:c}=lo(),T=v(()=>t.direction==="rtl"||t.direction==="ltr"),E=v(()=>hs(t.size));return{...aK(t,o),drawerRef:o,focusStartRef:_,isHorizontal:T,drawerSize:E,ns:l,t:c}}}),DSe=["aria-label","aria-labelledby","aria-describedby"],USe=["id","aria-level"],ySe=["aria-label"],$Se=["id"];function BSe(t,e,o,_,l,c){const T=gt("close"),E=gt("el-icon"),u=gt("el-focus-trap"),d=gt("el-overlay");return B(),Ne(Mu,{to:"body",disabled:!t.appendToBody},[ne(Ns,{name:t.ns.b("fade"),onAfterEnter:t.afterEnter,onAfterLeave:t.afterLeave,onBeforeLeave:t.beforeLeave,persisted:""},{default:de(()=>[yt(ne(d,{mask:t.modal,"overlay-class":t.modalClass,"z-index":t.zIndex,onClick:t.onModalClick},{default:de(()=>[ne(u,{loop:"",trapped:t.visible,"focus-trap-el":t.drawerRef,"focus-start-el":t.focusStartRef,onReleaseRequested:t.onCloseRequested},{default:de(()=>[te("div",Yt({ref:"drawerRef","aria-modal":"true","aria-label":t.title||void 0,"aria-labelledby":t.title?void 0:t.titleId,"aria-describedby":t.bodyId},t.$attrs,{class:[t.ns.b(),t.direction,t.visible&&"open",t.customClass],style:t.isHorizontal?"width: "+t.drawerSize:"height: "+t.drawerSize,role:"dialog",onClick:e[1]||(e[1]=Ct(()=>{},["stop"]))}),[te("span",{ref:"focusStartRef",class:k(t.ns.e("sr-focus")),tabindex:"-1"},null,2),t.withHeader?(B(),se("header",{key:0,class:k(t.ns.e("header"))},[t.$slots.title?ye(t.$slots,"title",{key:1},()=>[Ce(" DEPRECATED SLOT ")]):ye(t.$slots,"header",{key:0,close:t.handleClose,titleId:t.titleId,titleClass:t.ns.e("title")},()=>[t.$slots.title?Ce("v-if",!0):(B(),se("span",{key:0,id:t.titleId,role:"heading","aria-level":t.headerAriaLevel,class:k(t.ns.e("title"))},Qe(t.title),11,USe))]),t.showClose?(B(),se("button",{key:2,"aria-label":t.t("el.drawer.close"),class:k(t.ns.e("close-btn")),type:"button",onClick:e[0]||(e[0]=(...O)=>t.handleClose&&t.handleClose(...O))},[ne(E,{class:k(t.ns.e("close"))},{default:de(()=>[ne(T)]),_:1},8,["class"])],10,ySe)):Ce("v-if",!0)],2)):Ce("v-if",!0),t.rendered?(B(),se("div",{key:1,id:t.bodyId,class:k(t.ns.e("body"))},[ye(t.$slots,"default")],10,$Se)):Ce("v-if",!0),t.$slots.footer?(B(),se("div",{key:2,class:k(t.ns.e("footer"))},[ye(t.$slots,"footer")],2)):Ce("v-if",!0)],16,DSe)]),_:3},8,["trapped","focus-trap-el","focus-start-el","onReleaseRequested"])]),_:3},8,["mask","overlay-class","z-index","onClick"]),[[ao,t.visible]])]),_:3},8,["name","onAfterEnter","onAfterLeave","onBeforeLeave"])],8,["disabled"])}var wSe=tt(vSe,[["render",BSe],["__file","drawer.vue"]]);const GSe=Vt(wSe),kSe=Oe({inheritAttrs:!1});function HSe(t,e,o,_,l,c){return ye(t.$slots,"default")}var xSe=tt(kSe,[["render",HSe],["__file","collection.vue"]]);const FSe=Oe({name:"ElCollectionItem",inheritAttrs:!1});function VSe(t,e,o,_,l,c){return ye(t.$slots,"default")}var WSe=tt(FSe,[["render",VSe],["__file","collection-item.vue"]]);const TK="data-el-collection-item",EK=t=>{const e=`El${t}Collection`,o=`${e}Item`,_=Symbol(e),l=Symbol(o),c={...xSe,name:e,setup(){const E=X(null),u=new Map;Jt(_,{itemMap:u,getItems:()=>{const O=M(E);if(!O)return[];const h=Array.from(O.querySelectorAll(`[${TK}]`));return[...u.values()].sort((S,L)=>h.indexOf(S.ref)-h.indexOf(L.ref))},collectionRef:E})}},T={...WSe,name:o,setup(E,{attrs:u}){const d=X(null),O=lt(_,void 0);Jt(l,{collectionItemRef:d}),Bt(()=>{const h=M(d);h&&O.itemMap.set(h,{ref:h,...u})}),Do(()=>{const h=M(d);O.itemMap.delete(h)})}};return{COLLECTION_INJECTION_KEY:_,COLLECTION_ITEM_INJECTION_KEY:l,ElCollection:c,ElCollectionItem:T}},XSe=et({style:{type:me([String,Array,Object])},currentTabId:{type:me(String)},defaultCurrentTabId:String,loop:Boolean,dir:{type:String,values:["ltr","rtl"],default:"ltr"},orientation:{type:me(String)},onBlur:Function,onFocus:Function,onMousedown:Function}),{ElCollection:YSe,ElCollectionItem:KSe,COLLECTION_INJECTION_KEY:aD,COLLECTION_ITEM_INJECTION_KEY:zSe}=EK("RovingFocusGroup"),cD=Symbol("elRovingFocusGroup"),uK=Symbol("elRovingFocusGroupItem"),ZSe={ArrowLeft:"prev",ArrowUp:"prev",ArrowRight:"next",ArrowDown:"next",PageUp:"first",Home:"first",PageDown:"last",End:"last"},jSe=(t,e)=>{if(e!=="rtl")return t;switch(t){case Rt.right:return Rt.left;case Rt.left:return Rt.right;default:return t}},qSe=(t,e,o)=>{const _=jSe(t.key,o);if(!(e==="vertical"&&[Rt.left,Rt.right].includes(_))&&!(e==="horizontal"&&[Rt.up,Rt.down].includes(_)))return ZSe[_]},QSe=(t,e)=>t.map((o,_)=>t[(_+e)%t.length]),TD=t=>{const{activeElement:e}=document;for(const o of t)if(o===e||(o.focus(),e!==document.activeElement))return},tH="currentTabIdChange",oH="rovingFocusGroup.entryFocus",JSe={bubbles:!1,cancelable:!0},epe=Oe({name:"ElRovingFocusGroupImpl",inheritAttrs:!1,props:XSe,emits:[tH,"entryFocus"],setup(t,{emit:e}){var o;const _=X((o=t.currentTabId||t.defaultCurrentTabId)!=null?o:null),l=X(!1),c=X(!1),T=X(null),{getItems:E}=lt(aD,void 0),u=v(()=>[{outline:"none"},t.style]),d=p=>{e(tH,p)},O=()=>{l.value=!0},h=ls(p=>{var C;(C=t.onMousedown)==null||C.call(t,p)},()=>{c.value=!0}),I=ls(p=>{var C;(C=t.onFocus)==null||C.call(t,p)},p=>{const C=!M(c),{target:m,currentTarget:A}=p;if(m===A&&C&&!M(l)){const b=new Event(oH,JSe);if(A==null||A.dispatchEvent(b),!b.defaultPrevented){const N=E().filter(F=>F.focusable),U=N.find(F=>F.active),P=N.find(F=>F.id===M(_)),w=[U,P,...N].filter(Boolean).map(F=>F.ref);TD(w)}}c.value=!1}),S=ls(p=>{var C;(C=t.onBlur)==null||C.call(t,p)},()=>{l.value=!1}),L=(...p)=>{e("entryFocus",...p)};Jt(cD,{currentTabbedId:hu(_),loop:Ao(t,"loop"),tabIndex:v(()=>M(l)?-1:0),rovingFocusGroupRef:T,rovingFocusGroupRootStyle:u,orientation:Ao(t,"orientation"),dir:Ao(t,"dir"),onItemFocus:d,onItemShiftTab:O,onBlur:S,onFocus:I,onMousedown:h}),Fe(()=>t.currentTabId,p=>{_.value=p??null}),Yo(T,oH,L)}});function tpe(t,e,o,_,l,c){return ye(t.$slots,"default")}var ope=tt(epe,[["render",tpe],["__file","roving-focus-group-impl.vue"]]);const spe=Oe({name:"ElRovingFocusGroup",components:{ElFocusGroupCollection:YSe,ElRovingFocusGroupImpl:ope}});function ipe(t,e,o,_,l,c){const T=gt("el-roving-focus-group-impl"),E=gt("el-focus-group-collection");return B(),Ne(E,null,{default:de(()=>[ne(T,wn(iO(t.$attrs)),{default:de(()=>[ye(t.$slots,"default")]),_:3},16)]),_:3})}var npe=tt(spe,[["render",ipe],["__file","roving-focus-group.vue"]]);const rpe=Oe({components:{ElRovingFocusCollectionItem:KSe},props:{focusable:{type:Boolean,default:!0},active:{type:Boolean,default:!1}},emits:["mousedown","focus","keydown"],setup(t,{emit:e}){const{currentTabbedId:o,loop:_,onItemFocus:l,onItemShiftTab:c}=lt(cD,void 0),{getItems:T}=lt(aD,void 0),E=rn(),u=X(null),d=ls(S=>{e("mousedown",S)},S=>{t.focusable?l(M(E)):S.preventDefault()}),O=ls(S=>{e("focus",S)},()=>{l(M(E))}),h=ls(S=>{e("keydown",S)},S=>{const{key:L,shiftKey:p,target:C,currentTarget:m}=S;if(L===Rt.tab&&p){c();return}if(C!==m)return;const A=qSe(S);if(A){S.preventDefault();let N=T().filter(U=>U.focusable).map(U=>U.ref);switch(A){case"last":{N.reverse();break}case"prev":case"next":{A==="prev"&&N.reverse();const U=N.indexOf(m);N=_.value?QSe(N,U+1):N.slice(U+1);break}}Lt(()=>{TD(N)})}}),I=v(()=>o.value===M(E));return Jt(uK,{rovingFocusGroupItemRef:u,tabIndex:v(()=>M(I)?0:-1),handleMousedown:d,handleFocus:O,handleKeydown:h}),{id:E,handleKeydown:h,handleFocus:O,handleMousedown:d}}});function _pe(t,e,o,_,l,c){const T=gt("el-roving-focus-collection-item");return B(),Ne(T,{id:t.id,focusable:t.focusable,active:t.active},{default:de(()=>[ye(t.$slots,"default")]),_:3},8,["id","focusable","active"])}var lpe=tt(rpe,[["render",_pe],["__file","roving-focus-item.vue"]]);const vR=et({trigger:Vd.trigger,effect:{...Zs.effect,default:"light"},type:{type:me(String)},placement:{type:me(String),default:"bottom"},popperOptions:{type:me(Object),default:()=>({})},id:String,size:{type:String,default:""},splitButton:Boolean,hideOnClick:{type:Boolean,default:!0},loop:{type:Boolean,default:!0},showTimeout:{type:Number,default:150},hideTimeout:{type:Number,default:150},tabindex:{type:me([Number,String]),default:0},maxHeight:{type:me([Number,String]),default:""},popperClass:{type:String,default:""},disabled:{type:Boolean,default:!1},role:{type:String,default:"menu"},buttonProps:{type:me(Object)},teleported:Zs.teleported}),gK=et({command:{type:[Object,String,Number],default:()=>({})},disabled:Boolean,divided:Boolean,textValue:String,icon:{type:Lo}}),ape=et({onKeydown:{type:me(Function)}}),cpe=[Rt.down,Rt.pageDown,Rt.home],dK=[Rt.up,Rt.pageUp,Rt.end],Tpe=[...cpe,...dK],{ElCollection:Epe,ElCollectionItem:upe,COLLECTION_INJECTION_KEY:gpe,COLLECTION_ITEM_INJECTION_KEY:dpe}=EK("Dropdown"),ZS=Symbol("elDropdown"),{ButtonGroup:Ope}=Ws,hpe=Oe({name:"ElDropdown",components:{ElButton:Ws,ElButtonGroup:Ope,ElScrollbar:ul,ElDropdownCollection:Epe,ElTooltip:wi,ElRovingFocusGroup:npe,ElOnlyChild:H3,ElIcon:Et,ArrowDown:Tl},props:vR,emits:["visible-change","click","command"],setup(t,{emit:e}){const o=Ht(),_=Ze("dropdown"),{t:l}=lo(),c=X(),T=X(),E=X(null),u=X(null),d=X(null),O=X(null),h=X(!1),I=[Rt.enter,Rt.space,Rt.down],S=v(()=>({maxHeight:hs(t.maxHeight)})),L=v(()=>[_.m(U.value)]),p=v(()=>Wc(t.trigger)),C=rn().value,m=v(()=>t.id||C);Fe([c,p],([Y,re],[H])=>{var Q,ae,ge;(Q=H==null?void 0:H.$el)!=null&&Q.removeEventListener&&H.$el.removeEventListener("pointerenter",G),(ae=Y==null?void 0:Y.$el)!=null&&ae.removeEventListener&&Y.$el.removeEventListener("pointerenter",G),(ge=Y==null?void 0:Y.$el)!=null&&ge.addEventListener&&re.includes("hover")&&Y.$el.addEventListener("pointerenter",G)},{immediate:!0}),Do(()=>{var Y,re;(re=(Y=c.value)==null?void 0:Y.$el)!=null&&re.removeEventListener&&c.value.$el.removeEventListener("pointerenter",G)});function A(){b()}function b(){var Y;(Y=E.value)==null||Y.onClose()}function N(){var Y;(Y=E.value)==null||Y.onOpen()}const U=Ds();function P(...Y){e("command",...Y)}function G(){var Y,re;(re=(Y=c.value)==null?void 0:Y.$el)==null||re.focus()}function w(){}function F(){const Y=M(u);p.value.includes("hover")&&(Y==null||Y.focus()),O.value=null}function V(Y){O.value=Y}function W(Y){h.value||(Y.preventDefault(),Y.stopImmediatePropagation())}function K(){e("visible-change",!0)}function ee(Y){(Y==null?void 0:Y.type)==="keydown"&&u.value.focus()}function j(){e("visible-change",!1)}return Jt(ZS,{contentRef:u,role:v(()=>t.role),triggerId:m,isUsingKeyboard:h,onItemEnter:w,onItemLeave:F}),Jt("elDropdown",{instance:o,dropdownSize:U,handleClick:A,commandHandler:P,trigger:Ao(t,"trigger"),hideOnClick:Ao(t,"hideOnClick")}),{t:l,ns:_,scrollbar:d,wrapStyle:S,dropdownTriggerKls:L,dropdownSize:U,triggerId:m,triggerKeys:I,currentTabId:O,handleCurrentTabIdChange:V,handlerMainButtonClick:Y=>{e("click",Y)},handleEntryFocus:W,handleClose:b,handleOpen:N,handleBeforeShowTooltip:K,handleShowTooltip:ee,handleBeforeHideTooltip:j,onFocusAfterTrapped:Y=>{var re,H;Y.preventDefault(),(H=(re=u.value)==null?void 0:re.focus)==null||H.call(re,{preventScroll:!0})},popperRef:E,contentRef:u,triggeringElementRef:c,referenceElementRef:T}}});function Mpe(t,e,o,_,l,c){var T;const E=gt("el-dropdown-collection"),u=gt("el-roving-focus-group"),d=gt("el-scrollbar"),O=gt("el-only-child"),h=gt("el-tooltip"),I=gt("el-button"),S=gt("arrow-down"),L=gt("el-icon"),p=gt("el-button-group");return B(),se("div",{class:k([t.ns.b(),t.ns.is("disabled",t.disabled)])},[ne(h,{ref:"popperRef",role:t.role,effect:t.effect,"fallback-placements":["bottom","top"],"popper-options":t.popperOptions,"gpu-acceleration":!1,"hide-after":t.trigger==="hover"?t.hideTimeout:0,"manual-mode":!0,placement:t.placement,"popper-class":[t.ns.e("popper"),t.popperClass],"reference-element":(T=t.referenceElementRef)==null?void 0:T.$el,trigger:t.trigger,"trigger-keys":t.triggerKeys,"trigger-target-el":t.contentRef,"show-after":t.trigger==="hover"?t.showTimeout:0,"stop-popper-mouse-event":!1,"virtual-ref":t.triggeringElementRef,"virtual-triggering":t.splitButton,disabled:t.disabled,transition:`${t.ns.namespace.value}-zoom-in-top`,teleported:t.teleported,pure:"",persistent:"",onBeforeShow:t.handleBeforeShowTooltip,onShow:t.handleShowTooltip,onBeforeHide:t.handleBeforeHideTooltip},da({content:de(()=>[ne(d,{ref:"scrollbar","wrap-style":t.wrapStyle,tag:"div","view-class":t.ns.e("list")},{default:de(()=>[ne(u,{loop:t.loop,"current-tab-id":t.currentTabId,orientation:"horizontal",onCurrentTabIdChange:t.handleCurrentTabIdChange,onEntryFocus:t.handleEntryFocus},{default:de(()=>[ne(E,null,{default:de(()=>[ye(t.$slots,"dropdown")]),_:3})]),_:3},8,["loop","current-tab-id","onCurrentTabIdChange","onEntryFocus"])]),_:3},8,["wrap-style","view-class"])]),_:2},[t.splitButton?void 0:{name:"default",fn:de(()=>[ne(O,{id:t.triggerId,ref:"triggeringElementRef",role:"button",tabindex:t.tabindex},{default:de(()=>[ye(t.$slots,"default")]),_:3},8,["id","tabindex"])])}]),1032,["role","effect","popper-options","hide-after","placement","popper-class","reference-element","trigger","trigger-keys","trigger-target-el","show-after","virtual-ref","virtual-triggering","disabled","transition","teleported","onBeforeShow","onShow","onBeforeHide"]),t.splitButton?(B(),Ne(p,{key:0},{default:de(()=>[ne(I,Yt({ref:"referenceElementRef"},t.buttonProps,{size:t.dropdownSize,type:t.type,disabled:t.disabled,tabindex:t.tabindex,onClick:t.handlerMainButtonClick}),{default:de(()=>[ye(t.$slots,"default")]),_:3},16,["size","type","disabled","tabindex","onClick"]),ne(I,Yt({id:t.triggerId,ref:"triggeringElementRef"},t.buttonProps,{role:"button",size:t.dropdownSize,type:t.type,class:t.ns.e("caret-button"),disabled:t.disabled,tabindex:t.tabindex,"aria-label":t.t("el.dropdown.toggleDropdown")}),{default:de(()=>[ne(L,{class:k(t.ns.e("icon"))},{default:de(()=>[ne(S)]),_:1},8,["class"])]),_:1},16,["id","size","type","class","disabled","tabindex","aria-label"])]),_:3})):Ce("v-if",!0)],2)}var Rpe=tt(hpe,[["render",Mpe],["__file","dropdown.vue"]]);const Ipe=Oe({name:"DropdownItemImpl",components:{ElIcon:Et},props:gK,emits:["pointermove","pointerleave","click","clickimpl"],setup(t,{emit:e}){const o=Ze("dropdown"),{role:_}=lt(ZS,void 0),{collectionItemRef:l}=lt(dpe,void 0),{collectionItemRef:c}=lt(zSe,void 0),{rovingFocusGroupItemRef:T,tabIndex:E,handleFocus:u,handleKeydown:d,handleMousedown:O}=lt(uK,void 0),h=$S(l,c,T),I=v(()=>_.value==="menu"?"menuitem":_.value==="navigation"?"link":"button"),S=ls(L=>{const{code:p}=L;if(p===Rt.enter||p===Rt.space)return L.preventDefault(),L.stopImmediatePropagation(),e("clickimpl",L),!0},d);return{ns:o,itemRef:h,dataset:{[TK]:""},role:I,tabIndex:E,handleFocus:u,handleKeydown:S,handleMousedown:O}}}),Spe=["aria-disabled","tabindex","role"];function ppe(t,e,o,_,l,c){const T=gt("el-icon");return B(),se(ht,null,[t.divided?(B(),se("li",Yt({key:0,role:"separator",class:t.ns.bem("menu","item","divided")},t.$attrs),null,16)):Ce("v-if",!0),te("li",Yt({ref:t.itemRef},{...t.dataset,...t.$attrs},{"aria-disabled":t.disabled,class:[t.ns.be("menu","item"),t.ns.is("disabled",t.disabled)],tabindex:t.tabIndex,role:t.role,onClick:e[0]||(e[0]=E=>t.$emit("clickimpl",E)),onFocus:e[1]||(e[1]=(...E)=>t.handleFocus&&t.handleFocus(...E)),onKeydown:e[2]||(e[2]=Ct((...E)=>t.handleKeydown&&t.handleKeydown(...E),["self"])),onMousedown:e[3]||(e[3]=(...E)=>t.handleMousedown&&t.handleMousedown(...E)),onPointermove:e[4]||(e[4]=E=>t.$emit("pointermove",E)),onPointerleave:e[5]||(e[5]=E=>t.$emit("pointerleave",E))}),[t.icon?(B(),Ne(T,{key:0},{default:de(()=>[(B(),Ne(Kt(t.icon)))]),_:1})):Ce("v-if",!0),ye(t.$slots,"default")],16,Spe)],64)}var Lpe=tt(Ipe,[["render",ppe],["__file","dropdown-item-impl.vue"]]);const OK=()=>{const t=lt("elDropdown",{}),e=v(()=>t==null?void 0:t.dropdownSize);return{elDropdown:t,_elDropdownSize:e}},fpe=Oe({name:"ElDropdownItem",components:{ElDropdownCollectionItem:upe,ElRovingFocusItem:lpe,ElDropdownItemImpl:Lpe},inheritAttrs:!1,props:gK,emits:["pointermove","pointerleave","click"],setup(t,{emit:e,attrs:o}){const{elDropdown:_}=OK(),l=Ht(),c=X(null),T=v(()=>{var S,L;return(L=(S=M(c))==null?void 0:S.textContent)!=null?L:""}),{onItemEnter:E,onItemLeave:u}=lt(ZS,void 0),d=ls(S=>(e("pointermove",S),S.defaultPrevented),wG(S=>{if(t.disabled){u(S);return}const L=S.currentTarget;L===document.activeElement||L.contains(document.activeElement)||(E(S),S.defaultPrevented||L==null||L.focus())})),O=ls(S=>(e("pointerleave",S),S.defaultPrevented),wG(S=>{u(S)})),h=ls(S=>{if(!t.disabled)return e("click",S),S.type!=="keydown"&&S.defaultPrevented},S=>{var L,p,C;if(t.disabled){S.stopImmediatePropagation();return}(L=_==null?void 0:_.hideOnClick)!=null&&L.value&&((p=_.handleClick)==null||p.call(_)),(C=_.commandHandler)==null||C.call(_,t.command,l,S)}),I=v(()=>({...t,...o}));return{handleClick:h,handlePointerMove:d,handlePointerLeave:O,textContent:T,propsAndAttrs:I}}});function mpe(t,e,o,_,l,c){var T;const E=gt("el-dropdown-item-impl"),u=gt("el-roving-focus-item"),d=gt("el-dropdown-collection-item");return B(),Ne(d,{disabled:t.disabled,"text-value":(T=t.textValue)!=null?T:t.textContent},{default:de(()=>[ne(u,{focusable:!t.disabled},{default:de(()=>[ne(E,Yt(t.propsAndAttrs,{onPointerleave:t.handlePointerLeave,onPointermove:t.handlePointerMove,onClickimpl:t.handleClick}),{default:de(()=>[ye(t.$slots,"default")]),_:3},16,["onPointerleave","onPointermove","onClickimpl"])]),_:3},8,["focusable"])]),_:3},8,["disabled","text-value"])}var hK=tt(fpe,[["render",mpe],["__file","dropdown-item.vue"]]);const Cpe=Oe({name:"ElDropdownMenu",props:ape,setup(t){const e=Ze("dropdown"),{_elDropdownSize:o}=OK(),_=o.value,{focusTrapRef:l,onKeydown:c}=lt(Jv,void 0),{contentRef:T,role:E,triggerId:u}=lt(ZS,void 0),{collectionRef:d,getItems:O}=lt(gpe,void 0),{rovingFocusGroupRef:h,rovingFocusGroupRootStyle:I,tabIndex:S,onBlur:L,onFocus:p,onMousedown:C}=lt(cD,void 0),{collectionRef:m}=lt(aD,void 0),A=v(()=>[e.b("menu"),e.bm("menu",_==null?void 0:_.value)]),b=$S(T,d,l,h,m),N=ls(P=>{var G;(G=t.onKeydown)==null||G.call(t,P)},P=>{const{currentTarget:G,code:w,target:F}=P;if(G.contains(F),Rt.tab===w&&P.stopImmediatePropagation(),P.preventDefault(),F!==M(T)||!Tpe.includes(w))return;const W=O().filter(K=>!K.disabled).map(K=>K.ref);dK.includes(w)&&W.reverse(),TD(W)});return{size:_,rovingFocusGroupRootStyle:I,tabIndex:S,dropdownKls:A,role:E,triggerId:u,dropdownListWrapperRef:b,handleKeydown:P=>{N(P),c(P)},onBlur:L,onFocus:p,onMousedown:C}}}),Ape=["role","aria-labelledby"];function bpe(t,e,o,_,l,c){return B(),se("ul",{ref:t.dropdownListWrapperRef,class:k(t.dropdownKls),style:dt(t.rovingFocusGroupRootStyle),tabindex:-1,role:t.role,"aria-labelledby":t.triggerId,onBlur:e[0]||(e[0]=(...T)=>t.onBlur&&t.onBlur(...T)),onFocus:e[1]||(e[1]=(...T)=>t.onFocus&&t.onFocus(...T)),onKeydown:e[2]||(e[2]=Ct((...T)=>t.handleKeydown&&t.handleKeydown(...T),["self"])),onMousedown:e[3]||(e[3]=Ct((...T)=>t.onMousedown&&t.onMousedown(...T),["self"]))},[ye(t.$slots,"default")],46,Ape)}var MK=tt(Cpe,[["render",bpe],["__file","dropdown-menu.vue"]]);const Npe=Vt(Rpe,{DropdownItem:hK,DropdownMenu:MK}),Ppe=ss(hK),vpe=ss(MK),Dpe={viewBox:"0 0 79 86",version:"1.1",xmlns:"http://www.w3.org/2000/svg","xmlns:xlink":"http://www.w3.org/1999/xlink"},Upe=["id"],ype=["stop-color"],$pe=["stop-color"],Bpe=["id"],wpe=["stop-color"],Gpe=["stop-color"],kpe=["id"],Hpe={id:"Illustrations",stroke:"none","stroke-width":"1",fill:"none","fill-rule":"evenodd"},xpe={id:"B-type",transform:"translate(-1268.000000, -535.000000)"},Fpe={id:"Group-2",transform:"translate(1268.000000, 535.000000)"},Vpe=["fill"],Wpe=["fill"],Xpe={id:"Group-Copy",transform:"translate(34.500000, 31.500000) scale(-1, 1) rotate(-25.000000) translate(-34.500000, -31.500000) translate(7.000000, 10.000000)"},Ype=["fill"],Kpe=["fill"],zpe=["fill"],Zpe=["fill"],jpe=["fill"],qpe={id:"Rectangle-Copy-17",transform:"translate(53.000000, 45.000000)"},Qpe=["fill","xlink:href"],Jpe=["fill","mask"],eLe=["fill"],tLe=Oe({name:"ImgEmpty"}),oLe=Oe({...tLe,setup(t){const e=Ze("empty"),o=rn();return(_,l)=>(B(),se("svg",Dpe,[te("defs",null,[te("linearGradient",{id:`linearGradient-1-${M(o)}`,x1:"38.8503086%",y1:"0%",x2:"61.1496914%",y2:"100%"},[te("stop",{"stop-color":`var(${M(e).cssVarBlockName("fill-color-1")})`,offset:"0%"},null,8,ype),te("stop",{"stop-color":`var(${M(e).cssVarBlockName("fill-color-4")})`,offset:"100%"},null,8,$pe)],8,Upe),te("linearGradient",{id:`linearGradient-2-${M(o)}`,x1:"0%",y1:"9.5%",x2:"100%",y2:"90.5%"},[te("stop",{"stop-color":`var(${M(e).cssVarBlockName("fill-color-1")})`,offset:"0%"},null,8,wpe),te("stop",{"stop-color":`var(${M(e).cssVarBlockName("fill-color-6")})`,offset:"100%"},null,8,Gpe)],8,Bpe),te("rect",{id:`path-3-${M(o)}`,x:"0",y:"0",width:"17",height:"36"},null,8,kpe)]),te("g",Hpe,[te("g",xpe,[te("g",Fpe,[te("path",{id:"Oval-Copy-2",d:"M39.5,86 C61.3152476,86 79,83.9106622 79,81.3333333 C79,78.7560045 57.3152476,78 35.5,78 C13.6847524,78 0,78.7560045 0,81.3333333 C0,83.9106622 17.6847524,86 39.5,86 Z",fill:`var(${M(e).cssVarBlockName("fill-color-3")})`},null,8,Vpe),te("polygon",{id:"Rectangle-Copy-14",fill:`var(${M(e).cssVarBlockName("fill-color-7")})`,transform:"translate(27.500000, 51.500000) scale(1, -1) translate(-27.500000, -51.500000) ",points:"13 58 53 58 42 45 2 45"},null,8,Wpe),te("g",Xpe,[te("polygon",{id:"Rectangle-Copy-10",fill:`var(${M(e).cssVarBlockName("fill-color-7")})`,transform:"translate(11.500000, 5.000000) scale(1, -1) translate(-11.500000, -5.000000) ",points:"2.84078316e-14 3 18 3 23 7 5 7"},null,8,Ype),te("polygon",{id:"Rectangle-Copy-11",fill:`var(${M(e).cssVarBlockName("fill-color-5")})`,points:"-3.69149156e-15 7 38 7 38 43 -3.69149156e-15 43"},null,8,Kpe),te("rect",{id:"Rectangle-Copy-12",fill:`url(#linearGradient-1-${M(o)})`,transform:"translate(46.500000, 25.000000) scale(-1, 1) translate(-46.500000, -25.000000) ",x:"38",y:"7",width:"17",height:"36"},null,8,zpe),te("polygon",{id:"Rectangle-Copy-13",fill:`var(${M(e).cssVarBlockName("fill-color-2")})`,transform:"translate(39.500000, 3.500000) scale(-1, 1) translate(-39.500000, -3.500000) ",points:"24 7 41 7 55 -3.63806207e-12 38 -3.63806207e-12"},null,8,Zpe)]),te("rect",{id:"Rectangle-Copy-15",fill:`url(#linearGradient-2-${M(o)})`,x:"13",y:"45",width:"40",height:"36"},null,8,jpe),te("g",qpe,[te("use",{id:"Mask",fill:`var(${M(e).cssVarBlockName("fill-color-8")})`,transform:"translate(8.500000, 18.000000) scale(-1, 1) translate(-8.500000, -18.000000) ","xlink:href":`#path-3-${M(o)}`},null,8,Qpe),te("polygon",{id:"Rectangle-Copy",fill:`var(${M(e).cssVarBlockName("fill-color-9")})`,mask:`url(#mask-4-${M(o)})`,transform:"translate(12.000000, 9.000000) scale(-1, 1) translate(-12.000000, -9.000000) ",points:"7 0 24 0 20 18 7 16.5"},null,8,Jpe)]),te("polygon",{id:"Rectangle-Copy-18",fill:`var(${M(e).cssVarBlockName("fill-color-2")})`,transform:"translate(66.000000, 51.500000) scale(-1, 1) translate(-66.000000, -51.500000) ",points:"62 45 79 45 70 58 53 58"},null,8,eLe)])])])]))}});var sLe=tt(oLe,[["__file","img-empty.vue"]]);const iLe=et({image:{type:String,default:""},imageSize:Number,description:{type:String,default:""}}),nLe=["src"],rLe={key:1},_Le=Oe({name:"ElEmpty"}),lLe=Oe({..._Le,props:iLe,setup(t){const e=t,{t:o}=lo(),_=Ze("empty"),l=v(()=>e.description||o("el.table.emptyText")),c=v(()=>({width:hs(e.imageSize)}));return(T,E)=>(B(),se("div",{class:k(M(_).b())},[te("div",{class:k(M(_).e("image")),style:dt(M(c))},[T.image?(B(),se("img",{key:0,src:T.image,ondragstart:"return false"},null,8,nLe)):ye(T.$slots,"image",{key:1},()=>[ne(sLe)])],6),te("div",{class:k(M(_).e("description"))},[T.$slots.description?ye(T.$slots,"description",{key:0}):(B(),se("p",rLe,Qe(M(l)),1))],2),T.$slots.default?(B(),se("div",{key:0,class:k(M(_).e("bottom"))},[ye(T.$slots,"default")],2)):Ce("v-if",!0)],2))}});var aLe=tt(lLe,[["__file","empty.vue"]]);const RK=Vt(aLe),cLe=et({urlList:{type:me(Array),default:()=>Qo([])},zIndex:{type:Number},initialIndex:{type:Number,default:0},infinite:{type:Boolean,default:!0},hideOnClickModal:Boolean,teleported:Boolean,closeOnPressEscape:{type:Boolean,default:!0},zoomRate:{type:Number,default:1.2},minScale:{type:Number,default:.2},maxScale:{type:Number,default:7},crossorigin:{type:me(String),default:"anonymous"}}),TLe={close:()=>!0,switch:t=>mt(t),rotate:t=>mt(t)},ELe=["src","crossorigin"],uLe=Oe({name:"ElImageViewer"}),gLe=Oe({...uLe,props:cLe,emits:TLe,setup(t,{expose:e,emit:o}){const _=t,l={CONTAIN:{name:"contain",icon:z_(dae)},ORIGINAL:{name:"original",icon:z_($ae)}},{t:c}=lo(),T=Ze("image-viewer"),{nextZIndex:E}=rT(),u=X(),d=X([]),O=jN(),h=X(!0),I=X(_.crossorigin),S=X(_.initialIndex),L=mo(l.CONTAIN),p=X({scale:1,deg:0,offsetX:0,offsetY:0,enableTransition:!1}),C=v(()=>{const{urlList:Q}=_;return Q.length<=1}),m=v(()=>S.value===0),A=v(()=>S.value===_.urlList.length-1),b=v(()=>_.urlList[S.value]),N=v(()=>[T.e("btn"),T.e("prev"),T.is("disabled",!_.infinite&&m.value)]),U=v(()=>[T.e("btn"),T.e("next"),T.is("disabled",!_.infinite&&A.value)]),P=v(()=>{const{scale:Q,deg:ae,offsetX:ge,offsetY:Se,enableTransition:pe}=p.value;let We=ge/Q,be=Se/Q;switch(ae%360){case 90:case-270:[We,be]=[be,-We];break;case 180:case-180:[We,be]=[-We,-be];break;case 270:case-90:[We,be]=[-be,We];break}const Me={transform:`scale(${Q}) rotate(${ae}deg) translate(${We}px, ${be}px)`,transition:pe?"transform .3s":""};return L.value.name===l.CONTAIN.name&&(Me.maxWidth=Me.maxHeight="100%"),Me}),G=v(()=>mt(_.zIndex)?_.zIndex:E());function w(){V(),o("close")}function F(){const Q=$c(ge=>{switch(ge.code){case Rt.esc:_.closeOnPressEscape&&w();break;case Rt.space:J();break;case Rt.left:Y();break;case Rt.up:H("zoomIn");break;case Rt.right:re();break;case Rt.down:H("zoomOut");break}}),ae=$c(ge=>{const Se=ge.deltaY||ge.deltaX;H(Se<0?"zoomIn":"zoomOut",{zoomRate:_.zoomRate,enableTransition:!1})});O.run(()=>{Yo(document,"keydown",Q),Yo(document,"wheel",ae)})}function V(){O.stop()}function W(){h.value=!1}function K(Q){h.value=!1,Q.target.alt=c("el.image.error")}function ee(Q){if(h.value||Q.button!==0||!u.value)return;p.value.enableTransition=!1;const{offsetX:ae,offsetY:ge}=p.value,Se=Q.pageX,pe=Q.pageY,We=$c(Me=>{p.value={...p.value,offsetX:ae+Me.pageX-Se,offsetY:ge+Me.pageY-pe}}),be=Yo(document,"mousemove",We);Yo(document,"mouseup",()=>{be()}),Q.preventDefault()}function j(){p.value={scale:1,deg:0,offsetX:0,offsetY:0,enableTransition:!1}}function J(){if(h.value)return;const Q=iu(l),ae=Object.values(l),ge=L.value.name,pe=(ae.findIndex(We=>We.name===ge)+1)%Q.length;L.value=l[Q[pe]],j()}function ie(Q){const ae=_.urlList.length;S.value=(Q+ae)%ae}function Y(){m.value&&!_.infinite||ie(S.value-1)}function re(){A.value&&!_.infinite||ie(S.value+1)}function H(Q,ae={}){if(h.value)return;const{minScale:ge,maxScale:Se}=_,{zoomRate:pe,rotateDeg:We,enableTransition:be}={zoomRate:_.zoomRate,rotateDeg:90,enableTransition:!0,...ae};switch(Q){case"zoomOut":p.value.scale>ge&&(p.value.scale=Number.parseFloat((p.value.scale/pe).toFixed(3)));break;case"zoomIn":p.value.scale<Se&&(p.value.scale=Number.parseFloat((p.value.scale*pe).toFixed(3)));break;case"clockwise":p.value.deg+=We,o("rotate",p.value.deg);break;case"anticlockwise":p.value.deg-=We,o("rotate",p.value.deg);break}p.value.enableTransition=be}return Fe(b,()=>{Lt(()=>{const Q=d.value[0];Q!=null&&Q.complete||(h.value=!0)})}),Fe(S,Q=>{j(),o("switch",Q)}),Bt(()=>{var Q,ae;F(),(ae=(Q=u.value)==null?void 0:Q.focus)==null||ae.call(Q)}),e({setActiveItem:ie}),(Q,ae)=>(B(),Ne(Mu,{to:"body",disabled:!Q.teleported},[ne(Ns,{name:"viewer-fade",appear:""},{default:de(()=>[te("div",{ref_key:"wrapper",ref:u,tabindex:-1,class:k(M(T).e("wrapper")),style:dt({zIndex:M(G)})},[te("div",{class:k(M(T).e("mask")),onClick:ae[0]||(ae[0]=Ct(ge=>Q.hideOnClickModal&&w(),["self"]))},null,2),Ce(" CLOSE "),te("span",{class:k([M(T).e("btn"),M(T).e("close")]),onClick:w},[ne(M(Et),null,{default:de(()=>[ne(M(Rr))]),_:1})],2),Ce(" ARROW "),M(C)?Ce("v-if",!0):(B(),se(ht,{key:0},[te("span",{class:k(M(N)),onClick:Y},[ne(M(Et),null,{default:de(()=>[ne(M(La))]),_:1})],2),te("span",{class:k(M(U)),onClick:re},[ne(M(Et),null,{default:de(()=>[ne(M(Ui))]),_:1})],2)],64)),Ce(" ACTIONS "),te("div",{class:k([M(T).e("btn"),M(T).e("actions")])},[te("div",{class:k(M(T).e("actions__inner"))},[ne(M(Et),{onClick:ae[1]||(ae[1]=ge=>H("zoomOut"))},{default:de(()=>[ne(M(qae))]),_:1}),ne(M(Et),{onClick:ae[2]||(ae[2]=ge=>H("zoomIn"))},{default:de(()=>[ne(M(ZX))]),_:1}),te("i",{class:k(M(T).e("actions__divider"))},null,2),ne(M(Et),{onClick:J},{default:de(()=>[(B(),Ne(Kt(M(L).icon)))]),_:1}),te("i",{class:k(M(T).e("actions__divider"))},null,2),ne(M(Et),{onClick:ae[3]||(ae[3]=ge=>H("anticlockwise"))},{default:de(()=>[ne(M(vae))]),_:1}),ne(M(Et),{onClick:ae[4]||(ae[4]=ge=>H("clockwise"))},{default:de(()=>[ne(M(Uae))]),_:1})],2)],2),Ce(" CANVAS "),te("div",{class:k(M(T).e("canvas"))},[(B(!0),se(ht,null,oo(Q.urlList,(ge,Se)=>yt((B(),se("img",{ref_for:!0,ref:pe=>d.value[Se]=pe,key:ge,src:ge,style:dt(M(P)),class:k(M(T).e("img")),crossorigin:I.value,onLoad:W,onError:K,onMousedown:ee},null,46,ELe)),[[ao,Se===S.value]])),128))],2),ye(Q.$slots,"default")],6)]),_:3})],8,["disabled"]))}});var dLe=tt(gLe,[["__file","image-viewer.vue"]]);const IK=Vt(dLe),OLe=et({hideOnClickModal:Boolean,src:{type:String,default:""},fit:{type:String,values:["","contain","cover","fill","none","scale-down"],default:""},loading:{type:String,values:["eager","lazy"]},lazy:Boolean,scrollContainer:{type:me([String,Object])},previewSrcList:{type:me(Array),default:()=>Qo([])},previewTeleported:Boolean,zIndex:{type:Number},initialIndex:{type:Number,default:0},infinite:{type:Boolean,default:!0},closeOnPressEscape:{type:Boolean,default:!0},zoomRate:{type:Number,default:1.2},minScale:{type:Number,default:.2},maxScale:{type:Number,default:7},crossorigin:{type:me(String),default:"anonymous"}}),hLe={load:t=>t instanceof Event,error:t=>t instanceof Event,switch:t=>mt(t),close:()=>!0,show:()=>!0},MLe=["src","loading","crossorigin"],RLe={key:0},ILe=Oe({name:"ElImage",inheritAttrs:!1}),SLe=Oe({...ILe,props:OLe,emits:hLe,setup(t,{emit:e}){const o=t;let _="";const{t:l}=lo(),c=Ze("image"),T=Jc(),E=Bv(),u=X(),d=X(o.crossorigin),O=X(!1),h=X(!0),I=X(!1),S=X(),L=X(),p=ro&&"loading"in HTMLImageElement.prototype;let C,m;const A=v(()=>[c.e("inner"),U.value&&c.e("preview"),h.value&&c.is("loading")]),b=v(()=>T.style),N=v(()=>{const{fit:H}=o;return ro&&H?{objectFit:H}:{}}),U=v(()=>{const{previewSrcList:H}=o;return Array.isArray(H)&&H.length>0}),P=v(()=>{const{previewSrcList:H,initialIndex:Q}=o;let ae=Q;return Q>H.length-1&&(ae=0),ae}),G=v(()=>o.loading==="eager"?!1:!p&&o.loading==="lazy"||o.lazy),w=()=>{ro&&(h.value=!0,O.value=!1,u.value=o.src)};function F(H){h.value=!1,O.value=!1,e("load",H)}function V(H){h.value=!1,O.value=!0,e("error",H)}function W(){Ble(S.value,L.value)&&(w(),j())}const K=wX(W,200,!0);async function ee(){var H;if(!ro)return;await Lt();const{scrollContainer:Q}=o;zn(Q)?L.value=Q:vt(Q)&&Q!==""?L.value=(H=document.querySelector(Q))!=null?H:void 0:S.value&&(L.value=Av(S.value)),L.value&&(C=Yo(L,"scroll",K),setTimeout(()=>W(),100))}function j(){!ro||!L.value||!K||(C==null||C(),L.value=void 0)}function J(H){if(H.ctrlKey){if(H.deltaY<0)return H.preventDefault(),!1;if(H.deltaY>0)return H.preventDefault(),!1}}function ie(){U.value&&(m=Yo("wheel",J,{passive:!1}),_=document.body.style.overflow,document.body.style.overflow="hidden",I.value=!0,e("show"))}function Y(){m==null||m(),document.body.style.overflow=_,I.value=!1,e("close")}function re(H){e("switch",H)}return Fe(()=>o.src,()=>{G.value?(h.value=!0,O.value=!1,j(),ee()):w()}),Bt(()=>{G.value?ee():w()}),(H,Q)=>(B(),se("div",{ref_key:"container",ref:S,class:k([M(c).b(),H.$attrs.class]),style:dt(M(b))},[O.value?ye(H.$slots,"error",{key:0},()=>[te("div",{class:k(M(c).e("error"))},Qe(M(l)("el.image.error")),3)]):(B(),se(ht,{key:1},[u.value!==void 0?(B(),se("img",Yt({key:0},M(E),{src:u.value,loading:H.loading,style:M(N),class:M(A),crossorigin:d.value,onClick:ie,onLoad:F,onError:V}),null,16,MLe)):Ce("v-if",!0),h.value?(B(),se("div",{key:1,class:k(M(c).e("wrapper"))},[ye(H.$slots,"placeholder",{},()=>[te("div",{class:k(M(c).e("placeholder"))},null,2)])],2)):Ce("v-if",!0)],64)),M(U)?(B(),se(ht,{key:2},[I.value?(B(),Ne(M(IK),{key:0,"z-index":H.zIndex,"initial-index":M(P),infinite:H.infinite,"zoom-rate":H.zoomRate,"min-scale":H.minScale,"max-scale":H.maxScale,"url-list":H.previewSrcList,"hide-on-click-modal":H.hideOnClickModal,teleported:H.previewTeleported,"close-on-press-escape":H.closeOnPressEscape,onClose:Y,onSwitch:re},{default:de(()=>[H.$slots.viewer?(B(),se("div",RLe,[ye(H.$slots,"viewer")])):Ce("v-if",!0)]),_:3},8,["z-index","initial-index","infinite","zoom-rate","min-scale","max-scale","url-list","hide-on-click-modal","teleported","close-on-press-escape"])):Ce("v-if",!0)],64)):Ce("v-if",!0)],6))}});var pLe=tt(SLe,[["__file","image.vue"]]);const LLe=Vt(pLe),fLe=et({id:{type:String,default:void 0},step:{type:Number,default:1},stepStrictly:Boolean,max:{type:Number,default:Number.POSITIVE_INFINITY},min:{type:Number,default:Number.NEGATIVE_INFINITY},modelValue:Number,readonly:Boolean,disabled:Boolean,size:Ys,controls:{type:Boolean,default:!0},controlsPosition:{type:String,default:"",values:["","right"]},valueOnClear:{type:[String,Number,null],validator:t=>t===null||mt(t)||["min","max"].includes(t),default:null},name:String,label:String,placeholder:String,precision:{type:Number,validator:t=>t>=0&&t===Number.parseInt(`${t}`,10)},validateEvent:{type:Boolean,default:!0}}),mLe={[Vo]:(t,e)=>e!==t,blur:t=>t instanceof FocusEvent,focus:t=>t instanceof FocusEvent,[yi]:t=>mt(t)||ws(t),[Xt]:t=>mt(t)||ws(t)},CLe=["aria-label","onKeydown"],ALe=["aria-label","onKeydown"],bLe=Oe({name:"ElInputNumber"}),NLe=Oe({...bLe,props:fLe,emits:mLe,setup(t,{expose:e,emit:o}){const _=t,{t:l}=lo(),c=Ze("input-number"),T=X(),E=Eo({currentValue:_.modelValue,userInput:null}),{formItem:u}=Gi(),d=v(()=>mt(_.modelValue)&&_.modelValue<=_.min),O=v(()=>mt(_.modelValue)&&_.modelValue>=_.max),h=v(()=>{const j=m(_.step);return bs(_.precision)?Math.max(m(_.modelValue),j):(j>_.precision,_.precision)}),I=v(()=>_.controls&&_.controlsPosition==="right"),S=Ds(),L=_n(),p=v(()=>{if(E.userInput!==null)return E.userInput;let j=E.currentValue;if(ws(j))return"";if(mt(j)){if(Number.isNaN(j))return"";bs(_.precision)||(j=j.toFixed(_.precision))}return j}),C=(j,J)=>{if(bs(J)&&(J=h.value),J===0)return Math.round(j);let ie=String(j);const Y=ie.indexOf(".");if(Y===-1||!ie.replace(".","").split("")[Y+J])return j;const Q=ie.length;return ie.charAt(Q-1)==="5"&&(ie=`${ie.slice(0,Math.max(0,Q-1))}6`),Number.parseFloat(Number(ie).toFixed(J))},m=j=>{if(ws(j))return 0;const J=j.toString(),ie=J.indexOf(".");let Y=0;return ie!==-1&&(Y=J.length-ie-1),Y},A=(j,J=1)=>mt(j)?C(j+_.step*J):E.currentValue,b=()=>{if(_.readonly||L.value||O.value)return;const j=Number(p.value)||0,J=A(j);P(J),o(yi,E.currentValue),ee()},N=()=>{if(_.readonly||L.value||d.value)return;const j=Number(p.value)||0,J=A(j,-1);P(J),o(yi,E.currentValue),ee()},U=(j,J)=>{const{max:ie,min:Y,step:re,precision:H,stepStrictly:Q,valueOnClear:ae}=_;ie<Y&&vs("InputNumber","min should not be greater than max.");let ge=Number(j);if(ws(j)||Number.isNaN(ge))return null;if(j===""){if(ae===null)return null;ge=vt(ae)?{min:Y,max:ie}[ae]:ae}return Q&&(ge=C(Math.round(ge/re)*re,H)),bs(H)||(ge=C(ge,H)),(ge>ie||ge<Y)&&(ge=ge>ie?ie:Y,J&&o(Xt,ge)),ge},P=(j,J=!0)=>{var ie;const Y=E.currentValue,re=U(j);if(!J){o(Xt,re);return}Y!==re&&(E.userInput=null,o(Xt,re),o(Vo,re,Y),_.validateEvent&&((ie=u==null?void 0:u.validate)==null||ie.call(u,"change").catch(H=>void 0)),E.currentValue=re)},G=j=>{E.userInput=j;const J=j===""?null:Number(j);o(yi,J),P(J,!1)},w=j=>{const J=j!==""?Number(j):"";(mt(J)&&!Number.isNaN(J)||j==="")&&P(J),ee(),E.userInput=null},F=()=>{var j,J;(J=(j=T.value)==null?void 0:j.focus)==null||J.call(j)},V=()=>{var j,J;(J=(j=T.value)==null?void 0:j.blur)==null||J.call(j)},W=j=>{o("focus",j)},K=j=>{var J;E.userInput=null,o("blur",j),_.validateEvent&&((J=u==null?void 0:u.validate)==null||J.call(u,"blur").catch(ie=>void 0))},ee=()=>{E.currentValue!==_.modelValue&&(E.currentValue=_.modelValue)};return Fe(()=>_.modelValue,(j,J)=>{const ie=U(j,!0);E.userInput===null&&ie!==J&&(E.currentValue=ie)},{immediate:!0}),Bt(()=>{var j;const{min:J,max:ie,modelValue:Y}=_,re=(j=T.value)==null?void 0:j.input;if(re.setAttribute("role","spinbutton"),Number.isFinite(ie)?re.setAttribute("aria-valuemax",String(ie)):re.removeAttribute("aria-valuemax"),Number.isFinite(J)?re.setAttribute("aria-valuemin",String(J)):re.removeAttribute("aria-valuemin"),re.setAttribute("aria-valuenow",E.currentValue||E.currentValue===0?String(E.currentValue):""),re.setAttribute("aria-disabled",String(L.value)),!mt(Y)&&Y!=null){let H=Number(Y);Number.isNaN(H)&&(H=null),o(Xt,H)}}),_l(()=>{var j,J;const ie=(j=T.value)==null?void 0:j.input;ie==null||ie.setAttribute("aria-valuenow",`${(J=E.currentValue)!=null?J:""}`)}),e({focus:F,blur:V}),(j,J)=>(B(),se("div",{class:k([M(c).b(),M(c).m(M(S)),M(c).is("disabled",M(L)),M(c).is("without-controls",!j.controls),M(c).is("controls-right",M(I))]),onDragstart:J[1]||(J[1]=Ct(()=>{},["prevent"]))},[j.controls?yt((B(),se("span",{key:0,role:"button","aria-label":M(l)("el.inputNumber.decrease"),class:k([M(c).e("decrease"),M(c).is("disabled",M(d))]),onKeydown:So(N,["enter"])},[ne(M(Et),null,{default:de(()=>[M(I)?(B(),Ne(M(Tl),{key:0})):(B(),Ne(M(Sae),{key:1}))]),_:1})],42,CLe)),[[M($I),N]]):Ce("v-if",!0),j.controls?yt((B(),se("span",{key:1,role:"button","aria-label":M(l)("el.inputNumber.increase"),class:k([M(c).e("increase"),M(c).is("disabled",M(O))]),onKeydown:So(b,["enter"])},[ne(M(Et),null,{default:de(()=>[M(I)?(B(),Ne(M(bv),{key:0})):(B(),Ne(M(KX),{key:1}))]),_:1})],42,ALe)),[[M($I),b]]):Ce("v-if",!0),ne(M(Ri),{id:j.id,ref_key:"input",ref:T,type:"number",step:j.step,"model-value":M(p),placeholder:j.placeholder,readonly:j.readonly,disabled:M(L),size:M(S),max:j.max,min:j.min,name:j.name,label:j.label,"validate-event":!1,onWheel:J[0]||(J[0]=Ct(()=>{},["prevent"])),onKeydown:[So(Ct(b,["prevent"]),["up"]),So(Ct(N,["prevent"]),["down"])],onBlur:K,onFocus:W,onInput:G,onChange:w},null,8,["id","step","model-value","placeholder","readonly","disabled","size","max","min","name","label","onKeydown"])],34))}});var PLe=tt(NLe,[["__file","input-number.vue"]]);const SK=Vt(PLe),vLe=et({type:{type:String,values:["primary","success","warning","info","danger","default"],default:"default"},underline:{type:Boolean,default:!0},disabled:{type:Boolean,default:!1},href:{type:String,default:""},target:{type:String,default:"_self"},icon:{type:Lo}}),DLe={click:t=>t instanceof MouseEvent},ULe=["href","target"],yLe=Oe({name:"ElLink"}),$Le=Oe({...yLe,props:vLe,emits:DLe,setup(t,{emit:e}){const o=t,_=Ze("link"),l=v(()=>[_.b(),_.m(o.type),_.is("disabled",o.disabled),_.is("underline",o.underline&&!o.disabled)]);function c(T){o.disabled||e("click",T)}return(T,E)=>(B(),se("a",{class:k(M(l)),href:T.disabled||!T.href?void 0:T.href,target:T.disabled||!T.href?void 0:T.target,onClick:c},[T.icon?(B(),Ne(M(Et),{key:0},{default:de(()=>[(B(),Ne(Kt(T.icon)))]),_:1})):Ce("v-if",!0),T.$slots.default?(B(),se("span",{key:1,class:k(M(_).e("inner"))},[ye(T.$slots,"default")],2)):Ce("v-if",!0),T.$slots.icon?ye(T.$slots,"icon",{key:2}):Ce("v-if",!0)],10,ULe))}});var BLe=tt($Le,[["__file","link.vue"]]);const wLe=Vt(BLe);let GLe=class{constructor(e,o){this.parent=e,this.domNode=o,this.subIndex=0,this.subIndex=0,this.init()}init(){this.subMenuItems=this.domNode.querySelectorAll("li"),this.addListeners()}gotoSubIndex(e){e===this.subMenuItems.length?e=0:e<0&&(e=this.subMenuItems.length-1),this.subMenuItems[e].focus(),this.subIndex=e}addListeners(){const e=this.parent.domNode;Array.prototype.forEach.call(this.subMenuItems,o=>{o.addEventListener("keydown",_=>{let l=!1;switch(_.code){case Rt.down:{this.gotoSubIndex(this.subIndex+1),l=!0;break}case Rt.up:{this.gotoSubIndex(this.subIndex-1),l=!0;break}case Rt.tab:{MR(e,"mouseleave");break}case Rt.enter:case Rt.space:{l=!0,_.currentTarget.click();break}}return l&&(_.preventDefault(),_.stopPropagation()),!1})})}},kLe=class{constructor(e,o){this.domNode=e,this.submenu=null,this.submenu=null,this.init(o)}init(e){this.domNode.setAttribute("tabindex","0");const o=this.domNode.querySelector(`.${e}-menu`);o&&(this.submenu=new GLe(this,o)),this.addListeners()}addListeners(){this.domNode.addEventListener("keydown",e=>{let o=!1;switch(e.code){case Rt.down:{MR(e.currentTarget,"mouseenter"),this.submenu&&this.submenu.gotoSubIndex(0),o=!0;break}case Rt.up:{MR(e.currentTarget,"mouseenter"),this.submenu&&this.submenu.gotoSubIndex(this.submenu.subMenuItems.length-1),o=!0;break}case Rt.tab:{MR(e.currentTarget,"mouseleave");break}case Rt.enter:case Rt.space:{o=!0,e.currentTarget.click();break}}o&&e.preventDefault()})}},HLe=class{constructor(e,o){this.domNode=e,this.init(o)}init(e){const o=this.domNode.childNodes;Array.from(o).forEach(_=>{_.nodeType===1&&new kLe(_,e)})}};const xLe=Oe({name:"ElMenuCollapseTransition",setup(){const t=Ze("menu");return{listeners:{onBeforeEnter:o=>o.style.opacity="0.2",onEnter(o,_){r_(o,`${t.namespace.value}-opacity-transition`),o.style.opacity="1",_()},onAfterEnter(o){tn(o,`${t.namespace.value}-opacity-transition`),o.style.opacity=""},onBeforeLeave(o){o.dataset||(o.dataset={}),Or(o,t.m("collapse"))?(tn(o,t.m("collapse")),o.dataset.oldOverflow=o.style.overflow,o.dataset.scrollWidth=o.clientWidth.toString(),r_(o,t.m("collapse"))):(r_(o,t.m("collapse")),o.dataset.oldOverflow=o.style.overflow,o.dataset.scrollWidth=o.clientWidth.toString(),tn(o,t.m("collapse"))),o.style.width=`${o.scrollWidth}px`,o.style.overflow="hidden"},onLeave(o){r_(o,"horizontal-collapse-transition"),o.style.width=`${o.dataset.scrollWidth}px`}}}}});function FLe(t,e,o,_,l,c){return B(),Ne(Ns,Yt({mode:"out-in"},t.listeners),{default:de(()=>[ye(t.$slots,"default")]),_:3},16)}var VLe=tt(xLe,[["render",FLe],["__file","menu-collapse-transition.vue"]]);function pK(t,e){const o=v(()=>{let l=t.parent;const c=[e.value];for(;l.type.name!=="ElMenu";)l.props.index&&c.unshift(l.props.index),l=l.parent;return c});return{parentMenu:v(()=>{let l=t.parent;for(;l&&!["ElMenu","ElSubMenu"].includes(l.type.name);)l=l.parent;return l}),indexPath:o}}function WLe(t){return v(()=>{const o=t.backgroundColor;return o?new J3(o).shade(20).toString():""})}const LK=(t,e)=>{const o=Ze("menu");return v(()=>o.cssVarBlock({"text-color":t.textColor||"","hover-text-color":t.textColor||"","bg-color":t.backgroundColor||"","hover-bg-color":WLe(t).value||"","active-color":t.activeTextColor||"",level:`${e}`}))},XLe=et({index:{type:String,required:!0},showTimeout:Number,hideTimeout:Number,popperClass:String,disabled:Boolean,popperAppendToBody:{type:Boolean,default:void 0},teleported:{type:Boolean,default:void 0},popperOffset:Number,expandCloseIcon:{type:Lo},expandOpenIcon:{type:Lo},collapseCloseIcon:{type:Lo},collapseOpenIcon:{type:Lo}}),JM="ElSubMenu";var ED=Oe({name:JM,props:XLe,setup(t,{slots:e,expose:o}){u_({from:"popper-append-to-body",replacement:"teleported",scope:JM,version:"2.3.0",ref:"https://element-plus.org/en-US/component/menu.html#submenu-attributes"},v(()=>t.popperAppendToBody!==void 0));const _=Ht(),{indexPath:l,parentMenu:c}=pK(_,v(()=>t.index)),T=Ze("menu"),E=Ze("sub-menu"),u=lt("rootMenu");u||vs(JM,"can not inject root menu");const d=lt(`subMenu:${c.value.uid}`);d||vs(JM,"can not inject sub menu");const O=X({}),h=X({});let I;const S=X(!1),L=X(),p=X(null),C=v(()=>w.value==="horizontal"&&A.value?"bottom-start":"right-start"),m=v(()=>w.value==="horizontal"&&A.value||w.value==="vertical"&&!u.props.collapse?t.expandCloseIcon&&t.expandOpenIcon?P.value?t.expandOpenIcon:t.expandCloseIcon:Tl:t.collapseCloseIcon&&t.collapseOpenIcon?P.value?t.collapseOpenIcon:t.collapseCloseIcon:Ui),A=v(()=>d.level===0),b=v(()=>{var Q;const ae=(Q=t.teleported)!=null?Q:t.popperAppendToBody;return ae===void 0?A.value:ae}),N=v(()=>u.props.collapse?`${T.namespace.value}-zoom-in-left`:`${T.namespace.value}-zoom-in-top`),U=v(()=>w.value==="horizontal"&&A.value?["bottom-start","bottom-end","top-start","top-end","right-start","left-start"]:["right-start","right","right-end","left-start","bottom-start","bottom-end","top-start","top-end"]),P=v(()=>u.openedMenus.includes(t.index)),G=v(()=>{let Q=!1;return Object.values(O.value).forEach(ae=>{ae.active&&(Q=!0)}),Object.values(h.value).forEach(ae=>{ae.active&&(Q=!0)}),Q}),w=v(()=>u.props.mode),F=Eo({index:t.index,indexPath:l,active:G}),V=LK(u.props,d.level+1),W=v(()=>{var Q;return(Q=t.popperOffset)!=null?Q:u.props.popperOffset}),K=v(()=>{var Q;return(Q=t.popperClass)!=null?Q:u.props.popperClass}),ee=v(()=>{var Q;return(Q=t.showTimeout)!=null?Q:u.props.showTimeout}),j=v(()=>{var Q;return(Q=t.hideTimeout)!=null?Q:u.props.hideTimeout}),J=()=>{var Q,ae,ge;return(ge=(ae=(Q=p.value)==null?void 0:Q.popperRef)==null?void 0:ae.popperInstanceRef)==null?void 0:ge.destroy()},ie=Q=>{Q||J()},Y=()=>{u.props.menuTrigger==="hover"&&u.props.mode==="horizontal"||u.props.collapse&&u.props.mode==="vertical"||t.disabled||u.handleSubMenuClick({index:t.index,indexPath:l.value,active:G.value})},re=(Q,ae=ee.value)=>{var ge;if(Q.type!=="focus"){if(u.props.menuTrigger==="click"&&u.props.mode==="horizontal"||!u.props.collapse&&u.props.mode==="vertical"||t.disabled){d.mouseInChild.value=!0;return}d.mouseInChild.value=!0,I==null||I(),{stop:I}=Xc(()=>{u.openMenu(t.index,l.value)},ae),b.value&&((ge=c.value.vnode.el)==null||ge.dispatchEvent(new MouseEvent("mouseenter")))}},H=(Q=!1)=>{var ae;if(u.props.menuTrigger==="click"&&u.props.mode==="horizontal"||!u.props.collapse&&u.props.mode==="vertical"){d.mouseInChild.value=!1;return}I==null||I(),d.mouseInChild.value=!1,{stop:I}=Xc(()=>!S.value&&u.closeMenu(t.index,l.value),j.value),b.value&&Q&&((ae=d.handleMouseleave)==null||ae.call(d,!0))};Fe(()=>u.props.collapse,Q=>ie(!!Q));{const Q=ge=>{h.value[ge.index]=ge},ae=ge=>{delete h.value[ge.index]};Jt(`subMenu:${_.uid}`,{addSubMenu:Q,removeSubMenu:ae,handleMouseleave:H,mouseInChild:S,level:d.level+1})}return o({opened:P}),Bt(()=>{u.addSubMenu(F),d.addSubMenu(F)}),Do(()=>{d.removeSubMenu(F),u.removeSubMenu(F)}),()=>{var Q;const ae=[(Q=e.title)==null?void 0:Q.call(e),pt(Et,{class:E.e("icon-arrow"),style:{transform:P.value?t.expandCloseIcon&&t.expandOpenIcon||t.collapseCloseIcon&&t.collapseOpenIcon&&u.props.collapse?"none":"rotateZ(180deg)":"none"}},{default:()=>vt(m.value)?pt(_.appContext.components[m.value]):pt(m.value)})],ge=u.isMenuPopup?pt(wi,{ref:p,visible:P.value,effect:"light",pure:!0,offset:W.value,showArrow:!1,persistent:!0,popperClass:K.value,placement:C.value,teleported:b.value,fallbackPlacements:U.value,transition:N.value,gpuAcceleration:!1},{content:()=>{var Se;return pt("div",{class:[T.m(w.value),T.m("popup-container"),K.value],onMouseenter:pe=>re(pe,100),onMouseleave:()=>H(!0),onFocus:pe=>re(pe,100)},[pt("ul",{class:[T.b(),T.m("popup"),T.m(`popup-${C.value}`)],style:V.value},[(Se=e.default)==null?void 0:Se.call(e)])])},default:()=>pt("div",{class:E.e("title"),onClick:Y},ae)}):pt(ht,{},[pt("div",{class:E.e("title"),ref:L,onClick:Y},ae),pt(zS,{},{default:()=>{var Se;return yt(pt("ul",{role:"menu",class:[T.b(),T.m("inline")],style:V.value},[(Se=e.default)==null?void 0:Se.call(e)]),[[ao,P.value]])}})]);return pt("li",{class:[E.b(),E.is("active",G.value),E.is("opened",P.value),E.is("disabled",t.disabled)],role:"menuitem",ariaHaspopup:!0,ariaExpanded:P.value,onMouseenter:re,onMouseleave:()=>H(),onFocus:re},[ge])}}});const YLe=et({mode:{type:String,values:["horizontal","vertical"],default:"vertical"},defaultActive:{type:String,default:""},defaultOpeneds:{type:me(Array),default:()=>Qo([])},uniqueOpened:Boolean,router:Boolean,menuTrigger:{type:String,values:["hover","click"],default:"hover"},collapse:Boolean,backgroundColor:String,textColor:String,activeTextColor:String,closeOnClickOutside:Boolean,collapseTransition:{type:Boolean,default:!0},ellipsis:{type:Boolean,default:!0},popperOffset:{type:Number,default:6},ellipsisIcon:{type:Lo,default:()=>fae},popperEffect:{type:String,values:["dark","light"],default:"dark"},popperClass:String,showTimeout:{type:Number,default:300},hideTimeout:{type:Number,default:300}}),eA=t=>Array.isArray(t)&&t.every(e=>vt(e)),KLe={close:(t,e)=>vt(t)&&eA(e),open:(t,e)=>vt(t)&&eA(e),select:(t,e,o,_)=>vt(t)&&eA(e)&&Zt(o)&&(_===void 0||_ instanceof Promise)};var zLe=Oe({name:"ElMenu",props:YLe,emits:KLe,setup(t,{emit:e,slots:o,expose:_}){const l=Ht(),c=l.appContext.config.globalProperties.$router,T=X(),E=Ze("menu"),u=Ze("sub-menu"),d=X(-1),O=X(t.defaultOpeneds&&!t.collapse?t.defaultOpeneds.slice(0):[]),h=X(t.defaultActive),I=X({}),S=X({}),L=v(()=>t.mode==="horizontal"||t.mode==="vertical"&&t.collapse),p=()=>{const ee=h.value&&I.value[h.value];if(!ee||t.mode==="horizontal"||t.collapse)return;ee.indexPath.forEach(J=>{const ie=S.value[J];ie&&C(J,ie.indexPath)})},C=(ee,j)=>{O.value.includes(ee)||(t.uniqueOpened&&(O.value=O.value.filter(J=>j.includes(J))),O.value.push(ee),e("open",ee,j))},m=ee=>{const j=O.value.indexOf(ee);j!==-1&&O.value.splice(j,1)},A=(ee,j)=>{m(ee),e("close",ee,j)},b=({index:ee,indexPath:j})=>{O.value.includes(ee)?A(ee,j):C(ee,j)},N=ee=>{(t.mode==="horizontal"||t.collapse)&&(O.value=[]);const{index:j,indexPath:J}=ee;if(!(ws(j)||ws(J)))if(t.router&&c){const ie=ee.route||j,Y=c.push(ie).then(re=>(re||(h.value=j),re));e("select",j,J,{index:j,indexPath:J,route:ie},Y)}else h.value=j,e("select",j,J,{index:j,indexPath:J})},U=ee=>{const j=I.value,J=j[ee]||h.value&&j[h.value]||j[t.defaultActive];J?h.value=J.index:h.value=ee},P=()=>{var ee,j;if(!T.value)return-1;const J=Array.from((j=(ee=T.value)==null?void 0:ee.childNodes)!=null?j:[]).filter(ge=>ge.nodeName!=="#comment"&&(ge.nodeName!=="#text"||ge.nodeValue)),ie=64,Y=Number.parseInt(getComputedStyle(T.value).paddingLeft,10),re=Number.parseInt(getComputedStyle(T.value).paddingRight,10),H=T.value.clientWidth-Y-re;let Q=0,ae=0;return J.forEach((ge,Se)=>{Q+=ge.offsetWidth||0,Q<=H-ie&&(ae=Se+1)}),ae===J.length?-1:ae},G=ee=>S.value[ee].indexPath,w=(ee,j=33.34)=>{let J;return()=>{J&&clearTimeout(J),J=setTimeout(()=>{ee()},j)}};let F=!0;const V=()=>{const ee=()=>{d.value=-1,Lt(()=>{d.value=P()})};F?ee():w(ee)(),F=!1};Fe(()=>t.defaultActive,ee=>{I.value[ee]||(h.value=""),U(ee)}),Fe(()=>t.collapse,ee=>{ee&&(O.value=[])}),Fe(I.value,p);let W;qs(()=>{t.mode==="horizontal"&&t.ellipsis?W=Rs(T,V).stop:W==null||W()});const K=X(!1);{const ee=Y=>{S.value[Y.index]=Y},j=Y=>{delete S.value[Y.index]};Jt("rootMenu",Eo({props:t,openedMenus:O,items:I,subMenus:S,activeIndex:h,isMenuPopup:L,addMenuItem:Y=>{I.value[Y.index]=Y},removeMenuItem:Y=>{delete I.value[Y.index]},addSubMenu:ee,removeSubMenu:j,openMenu:C,closeMenu:A,handleMenuItemClick:N,handleSubMenuClick:b})),Jt(`subMenu:${l.uid}`,{addSubMenu:ee,removeSubMenu:j,mouseInChild:K,level:0})}return Bt(()=>{t.mode==="horizontal"&&new HLe(l.vnode.el,E.namespace.value)}),_({open:j=>{const{indexPath:J}=S.value[j];J.forEach(ie=>C(ie,J))},close:m,handleResize:V}),()=>{var ee,j;let J=(j=(ee=o.default)==null?void 0:ee.call(o))!=null?j:[];const ie=[];if(t.mode==="horizontal"&&T.value){const Q=Ta(J),ae=d.value===-1?Q:Q.slice(0,d.value),ge=d.value===-1?[]:Q.slice(d.value);ge!=null&&ge.length&&t.ellipsis&&(J=ae,ie.push(pt(ED,{index:"sub-menu-more",class:u.e("hide-arrow"),popperOffset:t.popperOffset},{title:()=>pt(Et,{class:u.e("icon-more")},{default:()=>pt(t.ellipsisIcon)}),default:()=>ge})))}const Y=LK(t,0),re=t.closeOnClickOutside?[[nl,()=>{O.value.length&&(K.value||(O.value.forEach(Q=>e("close",Q,G(Q))),O.value=[]))}]]:[],H=yt(pt("ul",{key:String(t.collapse),role:"menubar",ref:T,style:Y.value,class:{[E.b()]:!0,[E.m(t.mode)]:!0,[E.m("collapse")]:t.collapse}},[...J,...ie]),re);return t.collapseTransition&&t.mode==="vertical"?pt(VLe,()=>H):H}}});const ZLe=et({index:{type:me([String,null]),default:null},route:{type:me([String,Object])},disabled:Boolean}),jLe={click:t=>vt(t.index)&&Array.isArray(t.indexPath)},tA="ElMenuItem",qLe=Oe({name:tA,components:{ElTooltip:wi},props:ZLe,emits:jLe,setup(t,{emit:e}){const o=Ht(),_=lt("rootMenu"),l=Ze("menu"),c=Ze("menu-item");_||vs(tA,"can not inject root menu");const{parentMenu:T,indexPath:E}=pK(o,Ao(t,"index")),u=lt(`subMenu:${T.value.uid}`);u||vs(tA,"can not inject sub menu");const d=v(()=>t.index===_.activeIndex),O=Eo({index:t.index,indexPath:E,active:d}),h=()=>{t.disabled||(_.handleMenuItemClick({index:t.index,indexPath:E.value,route:t.route}),e("click",O))};return Bt(()=>{u.addSubMenu(O),_.addMenuItem(O)}),Do(()=>{u.removeSubMenu(O),_.removeMenuItem(O)}),{parentMenu:T,rootMenu:_,active:d,nsMenu:l,nsMenuItem:c,handleClick:h}}});function QLe(t,e,o,_,l,c){const T=gt("el-tooltip");return B(),se("li",{class:k([t.nsMenuItem.b(),t.nsMenuItem.is("active",t.active),t.nsMenuItem.is("disabled",t.disabled)]),role:"menuitem",tabindex:"-1",onClick:e[0]||(e[0]=(...E)=>t.handleClick&&t.handleClick(...E))},[t.parentMenu.type.name==="ElMenu"&&t.rootMenu.props.collapse&&t.$slots.title?(B(),Ne(T,{key:0,effect:t.rootMenu.props.popperEffect,placement:"right","fallback-placements":["left"],persistent:""},{content:de(()=>[ye(t.$slots,"title")]),default:de(()=>[te("div",{class:k(t.nsMenu.be("tooltip","trigger"))},[ye(t.$slots,"default")],2)]),_:3},8,["effect"])):(B(),se(ht,{key:1},[ye(t.$slots,"default"),ye(t.$slots,"title")],64))],2)}var fK=tt(qLe,[["render",QLe],["__file","menu-item.vue"]]);const JLe={title:String},efe="ElMenuItemGroup",tfe=Oe({name:efe,props:JLe,setup(){return{ns:Ze("menu-item-group")}}});function ofe(t,e,o,_,l,c){return B(),se("li",{class:k(t.ns.b())},[te("div",{class:k(t.ns.e("title"))},[t.$slots.title?ye(t.$slots,"title",{key:1}):(B(),se(ht,{key:0},[qt(Qe(t.title),1)],64))],2),te("ul",null,[ye(t.$slots,"default")])],2)}var mK=tt(tfe,[["render",ofe],["__file","menu-item-group.vue"]]);const sfe=Vt(zLe,{MenuItem:fK,MenuItemGroup:mK,SubMenu:ED}),ife=ss(fK),nfe=ss(mK),rfe=ss(ED),_fe=et({icon:{type:Lo,default:()=>zle},title:String,content:{type:String,default:""}}),lfe={back:()=>!0},afe=["aria-label"],cfe=Oe({name:"ElPageHeader"}),Tfe=Oe({...cfe,props:_fe,emits:lfe,setup(t,{emit:e}){const o=zs(),{t:_}=lo(),l=Ze("page-header"),c=v(()=>[l.b(),{[l.m("has-breadcrumb")]:!!o.breadcrumb,[l.m("has-extra")]:!!o.extra,[l.is("contentful")]:!!o.default}]);function T(){e("back")}return(E,u)=>(B(),se("div",{class:k(M(c))},[E.$slots.breadcrumb?(B(),se("div",{key:0,class:k(M(l).e("breadcrumb"))},[ye(E.$slots,"breadcrumb")],2)):Ce("v-if",!0),te("div",{class:k(M(l).e("header"))},[te("div",{class:k(M(l).e("left"))},[te("div",{class:k(M(l).e("back")),role:"button",tabindex:"0",onClick:T},[E.icon||E.$slots.icon?(B(),se("div",{key:0,"aria-label":E.title||M(_)("el.pageHeader.title"),class:k(M(l).e("icon"))},[ye(E.$slots,"icon",{},()=>[E.icon?(B(),Ne(M(Et),{key:0},{default:de(()=>[(B(),Ne(Kt(E.icon)))]),_:1})):Ce("v-if",!0)])],10,afe)):Ce("v-if",!0),te("div",{class:k(M(l).e("title"))},[ye(E.$slots,"title",{},()=>[qt(Qe(E.title||M(_)("el.pageHeader.title")),1)])],2)],2),ne(M(cK),{direction:"vertical"}),te("div",{class:k(M(l).e("content"))},[ye(E.$slots,"content",{},()=>[qt(Qe(E.content),1)])],2)],2),E.$slots.extra?(B(),se("div",{key:0,class:k(M(l).e("extra"))},[ye(E.$slots,"extra")],2)):Ce("v-if",!0)],2),E.$slots.default?(B(),se("div",{key:1,class:k(M(l).e("main"))},[ye(E.$slots,"default")],2)):Ce("v-if",!0)],2))}});var Efe=tt(Tfe,[["__file","page-header.vue"]]);const ufe=Vt(Efe),CK=Symbol("elPaginationKey"),gfe=et({disabled:Boolean,currentPage:{type:Number,default:1},prevText:{type:String},prevIcon:{type:Lo}}),dfe={click:t=>t instanceof MouseEvent},Ofe=["disabled","aria-label","aria-disabled"],hfe={key:0},Mfe=Oe({name:"ElPaginationPrev"}),Rfe=Oe({...Mfe,props:gfe,emits:dfe,setup(t){const e=t,{t:o}=lo(),_=v(()=>e.disabled||e.currentPage<=1);return(l,c)=>(B(),se("button",{type:"button",class:"btn-prev",disabled:M(_),"aria-label":l.prevText||M(o)("el.pagination.prev"),"aria-disabled":M(_),onClick:c[0]||(c[0]=T=>l.$emit("click",T))},[l.prevText?(B(),se("span",hfe,Qe(l.prevText),1)):(B(),Ne(M(Et),{key:1},{default:de(()=>[(B(),Ne(Kt(l.prevIcon)))]),_:1}))],8,Ofe))}});var Ife=tt(Rfe,[["__file","prev.vue"]]);const Sfe=et({disabled:Boolean,currentPage:{type:Number,default:1},pageCount:{type:Number,default:50},nextText:{type:String},nextIcon:{type:Lo}}),pfe=["disabled","aria-label","aria-disabled"],Lfe={key:0},ffe=Oe({name:"ElPaginationNext"}),mfe=Oe({...ffe,props:Sfe,emits:["click"],setup(t){const e=t,{t:o}=lo(),_=v(()=>e.disabled||e.currentPage===e.pageCount||e.pageCount===0);return(l,c)=>(B(),se("button",{type:"button",class:"btn-next",disabled:M(_),"aria-label":l.nextText||M(o)("el.pagination.next"),"aria-disabled":M(_),onClick:c[0]||(c[0]=T=>l.$emit("click",T))},[l.nextText?(B(),se("span",Lfe,Qe(l.nextText),1)):(B(),Ne(M(Et),{key:1},{default:de(()=>[(B(),Ne(Kt(l.nextIcon)))]),_:1}))],8,pfe))}});var Cfe=tt(mfe,[["__file","next.vue"]]);const AK=Symbol("ElSelectGroup"),vO=Symbol("ElSelect");function Afe(t,e){const o=lt(vO),_=lt(AK,{disabled:!1}),l=v(()=>o.props.multiple?O(o.props.modelValue,t.value):ui(t.value,o.props.modelValue)),c=v(()=>{if(o.props.multiple){const S=o.props.modelValue||[];return!l.value&&S.length>=o.props.multipleLimit&&o.props.multipleLimit>0}else return!1}),T=v(()=>t.label||(Zt(t.value)?"":t.value)),E=v(()=>t.value||t.label||""),u=v(()=>t.disabled||e.groupDisabled||c.value),d=Ht(),O=(S=[],L)=>{if(Zt(t.value)){const p=o.props.valueKey;return S&&S.some(C=>Mo(ds(C,p))===ds(L,p))}else return S&&S.includes(L)},h=()=>{!t.disabled&&!_.disabled&&(o.states.hoveringIndex=o.optionsArray.indexOf(d.proxy))},I=S=>{const L=new RegExp(Cv(S),"i");e.visible=L.test(T.value)||t.created};return Fe(()=>T.value,()=>{!t.created&&!o.props.remote&&o.setSelected()}),Fe(()=>t.value,(S,L)=>{const{remote:p,valueKey:C}=o.props;if(ui(S,L)||(o.onOptionDestroy(L,d.proxy),o.onOptionCreate(d.proxy)),!t.created&&!p){if(C&&Zt(S)&&Zt(L)&&S[C]===L[C])return;o.setSelected()}}),Fe(()=>_.disabled,()=>{e.groupDisabled=_.disabled},{immediate:!0}),{select:o,currentLabel:T,currentValue:E,itemSelected:l,isDisabled:u,hoverItem:h,updateOption:I}}const bfe=Oe({name:"ElOption",componentName:"ElOption",props:{value:{required:!0,type:[String,Number,Boolean,Object]},label:[String,Number],created:Boolean,disabled:Boolean},setup(t){const e=Ze("select"),o=rn(),_=v(()=>[e.be("dropdown","item"),e.is("disabled",M(E)),e.is("selected",M(T)),e.is("hovering",M(I))]),l=Eo({index:-1,groupDisabled:!1,visible:!0,hover:!1}),{currentLabel:c,itemSelected:T,isDisabled:E,select:u,hoverItem:d,updateOption:O}=Afe(t,l),{visible:h,hover:I}=Xs(l),S=Ht().proxy;u.onOptionCreate(S),Do(()=>{const p=S.value,{selected:C}=u.states,A=(u.props.multiple?C:[C]).some(b=>b.value===S.value);Lt(()=>{u.states.cachedOptions.get(p)===S&&!A&&u.states.cachedOptions.delete(p)}),u.onOptionDestroy(p,S)});function L(){t.disabled!==!0&&l.groupDisabled!==!0&&u.handleOptionSelect(S)}return{ns:e,id:o,containerKls:_,currentLabel:c,itemSelected:T,isDisabled:E,select:u,hoverItem:d,updateOption:O,visible:h,hover:I,selectOptionClick:L,states:l}}}),Nfe=["id","aria-disabled","aria-selected"];function Pfe(t,e,o,_,l,c){return yt((B(),se("li",{id:t.id,class:k(t.containerKls),role:"option","aria-disabled":t.isDisabled||void 0,"aria-selected":t.itemSelected,onMouseenter:e[0]||(e[0]=(...T)=>t.hoverItem&&t.hoverItem(...T)),onClick:e[1]||(e[1]=Ct((...T)=>t.selectOptionClick&&t.selectOptionClick(...T),["stop"]))},[ye(t.$slots,"default",{},()=>[te("span",null,Qe(t.currentLabel),1)])],42,Nfe)),[[ao,t.visible]])}var uD=tt(bfe,[["render",Pfe],["__file","option.vue"]]);const vfe=Oe({name:"ElSelectDropdown",componentName:"ElSelectDropdown",setup(){const t=lt(vO),e=Ze("select"),o=v(()=>t.props.popperClass),_=v(()=>t.props.multiple),l=v(()=>t.props.fitInputWidth),c=X("");function T(){var E;c.value=`${(E=t.selectRef)==null?void 0:E.offsetWidth}px`}return Bt(()=>{T(),Rs(t.selectRef,T)}),{ns:e,minWidth:c,popperClass:o,isMultiple:_,isFitInputWidth:l}}});function Dfe(t,e,o,_,l,c){return B(),se("div",{class:k([t.ns.b("dropdown"),t.ns.is("multiple",t.isMultiple),t.popperClass]),style:dt({[t.isFitInputWidth?"width":"minWidth"]:t.minWidth})},[t.$slots.header?(B(),se("div",{key:0,class:k(t.ns.be("dropdown","header"))},[ye(t.$slots,"header")],2)):Ce("v-if",!0),ye(t.$slots,"default"),t.$slots.footer?(B(),se("div",{key:1,class:k(t.ns.be("dropdown","footer"))},[ye(t.$slots,"footer")],2)):Ce("v-if",!0)],6)}var Ufe=tt(vfe,[["render",Dfe],["__file","select-dropdown.vue"]]);function bK(t){const e=X(!1);return{handleCompositionStart:()=>{e.value=!0},handleCompositionUpdate:c=>{const T=c.target.value,E=T[T.length-1]||"";e.value=!$v(E)},handleCompositionEnd:c=>{e.value&&(e.value=!1,At(t)&&t(c))}}}const yfe=11,$fe=(t,e)=>{const{t:o}=lo(),_=rn(),l=Ze("select"),c=Ze("input"),T=Eo({inputValue:"",options:new Map,cachedOptions:new Map,disabledOptions:new Map,optionValues:[],selected:t.multiple?[]:{},selectionWidth:0,calculatorWidth:0,selectedLabel:"",hoveringIndex:-1,previousQuery:null,inputHovering:!1,menuVisibleOnFocus:!1,isBeforeHide:!1});u_({from:"suffixTransition",replacement:"override style scheme",version:"2.3.0",scope:"props",ref:"https://element-plus.org/en-US/component/select.html#select-attributes"},v(()=>t.suffixTransition===!1));const E=X(null),u=X(null),d=X(null),O=X(null),h=X(null),I=X(null),S=X(null),L=X(null),p=X(null),C=X(null),m=X(null),{wrapperRef:A,isFocused:b,handleFocus:N,handleBlur:U}=xS(h,{afterFocus(){t.automaticDropdown&&!P.value&&(P.value=!0,T.menuVisibleOnFocus=!0)},beforeBlur(ce){var Ge,It;return((Ge=d.value)==null?void 0:Ge.isFocusInsideContent(ce))||((It=O.value)==null?void 0:It.isFocusInsideContent(ce))},afterBlur(){P.value=!1,T.menuVisibleOnFocus=!1}}),P=X(!1),G=X(),{form:w,formItem:F}=Gi(),{inputId:V}=I_(t,{formItemContext:F}),W=v(()=>t.disabled||(w==null?void 0:w.disabled)),K=v(()=>t.multiple?rt(t.modelValue)&&t.modelValue.length>0:t.modelValue!==void 0&&t.modelValue!==null&&t.modelValue!==""),ee=v(()=>t.clearable&&!W.value&&T.inputHovering&&K.value),j=v(()=>t.remote&&t.filterable&&!t.remoteShowSuffix?"":t.suffixIcon),J=v(()=>l.is("reverse",j.value&&P.value&&t.suffixTransition)),ie=v(()=>(F==null?void 0:F.validateState)||""),Y=v(()=>yv[ie.value]),re=v(()=>t.remote?300:0),H=v(()=>t.loading?t.loadingText||o("el.select.loading"):t.remote&&!T.inputValue&&T.options.size===0?!1:t.filterable&&T.inputValue&&T.options.size>0&&Q.value===0?t.noMatchText||o("el.select.noMatch"):T.options.size===0?t.noDataText||o("el.select.noData"):null),Q=v(()=>ae.value.filter(ce=>ce.visible).length),ae=v(()=>{const ce=Array.from(T.options.values()),Ge=[];return T.optionValues.forEach(It=>{const bt=ce.findIndex(wo=>wo.value===It);bt>-1&&Ge.push(ce[bt])}),Ge.length>=ce.length?Ge:ce}),ge=v(()=>Array.from(T.cachedOptions.values())),Se=v(()=>{const ce=ae.value.filter(Ge=>!Ge.created).some(Ge=>Ge.currentLabel===T.inputValue);return t.filterable&&t.allowCreate&&T.inputValue!==""&&!ce}),pe=()=>{t.filterable&&At(t.filterMethod)||t.filterable&&t.remote&&At(t.remoteMethod)||ae.value.forEach(ce=>{ce.updateOption(T.inputValue)})},We=Ds(),be=v(()=>["small"].includes(We.value)?"small":"default"),Me=v({get(){return P.value&&H.value!==!1},set(ce){P.value=ce}}),Ie=v(()=>rt(t.modelValue)?t.modelValue.length===0&&!T.inputValue:t.filterable?!T.inputValue:!0),Pe=v(()=>{var ce;const Ge=(ce=t.placeholder)!=null?ce:o("el.select.placeholder");return t.multiple||!K.value?Ge:T.selectedLabel});Fe(()=>t.modelValue,(ce,Ge)=>{t.multiple&&t.filterable&&!t.reserveKeyword&&(T.inputValue="",Ae("")),ve(),!ui(ce,Ge)&&t.validateEvent&&(F==null||F.validate("change").catch(It=>void 0))},{flush:"post",deep:!0}),Fe(()=>P.value,ce=>{ce?Ae(T.inputValue):(T.inputValue="",T.previousQuery=null,T.isBeforeHide=!0),e("visible-change",ce)}),Fe(()=>T.options.entries(),()=>{var ce;if(!ro)return;const Ge=((ce=E.value)==null?void 0:ce.querySelectorAll("input"))||[];(!t.filterable&&!t.defaultFirstOption&&!bs(t.modelValue)||!Array.from(Ge).includes(document.activeElement))&&ve(),t.defaultFirstOption&&(t.filterable||t.remote)&&Q.value&&ke()},{flush:"post"}),Fe(()=>T.hoveringIndex,ce=>{mt(ce)&&ce>-1?G.value=ae.value[ce]||{}:G.value={},ae.value.forEach(Ge=>{Ge.hover=G.value===Ge})}),qs(()=>{T.isBeforeHide||pe()});const Ae=ce=>{T.previousQuery!==ce&&(T.previousQuery=ce,t.filterable&&At(t.filterMethod)?t.filterMethod(ce):t.filterable&&t.remote&&At(t.remoteMethod)&&t.remoteMethod(ce),t.defaultFirstOption&&(t.filterable||t.remote)&&Q.value?Lt(ke):Lt(Re))},ke=()=>{const ce=ae.value.filter(bt=>bt.visible&&!bt.disabled&&!bt.states.groupDisabled),Ge=ce.find(bt=>bt.created),It=ce[0];T.hoveringIndex=Ot(ae.value,Ge||It)},ve=()=>{if(t.multiple)T.selectedLabel="";else{const Ge=Te(t.modelValue);T.selectedLabel=Ge.currentLabel,T.selected=Ge;return}const ce=[];rt(t.modelValue)&&t.modelValue.forEach(Ge=>{ce.push(Te(Ge))}),T.selected=ce},Te=ce=>{let Ge;const It=oR(ce).toLowerCase()==="object",bt=oR(ce).toLowerCase()==="null",wo=oR(ce).toLowerCase()==="undefined";for(let Ls=T.cachedOptions.size-1;Ls>=0;Ls--){const ei=ge.value[Ls];if(It?ds(ei.value,t.valueKey)===ds(ce,t.valueKey):ei.value===ce){Ge={value:ce,currentLabel:ei.currentLabel,isDisabled:ei.isDisabled};break}}if(Ge)return Ge;const Wo=It?ce.label:!bt&&!wo?ce:"";return{value:ce,currentLabel:Wo}},Re=()=>{t.multiple?T.selected.length>0?T.hoveringIndex=Math.min(...T.selected.map(ce=>ae.value.findIndex(Ge=>go(Ge)===go(ce)))):T.hoveringIndex=-1:T.hoveringIndex=ae.value.findIndex(ce=>go(ce)===go(T.selected))},Ue=()=>{T.selectionWidth=u.value.getBoundingClientRect().width},Ye=()=>{T.calculatorWidth=I.value.getBoundingClientRect().width},De=()=>{var ce,Ge;(Ge=(ce=d.value)==null?void 0:ce.updatePopper)==null||Ge.call(ce)},Xe=()=>{var ce,Ge;(Ge=(ce=O.value)==null?void 0:ce.updatePopper)==null||Ge.call(ce)},Ke=()=>{Ae(T.inputValue)},Be=ce=>{if(T.inputValue=ce.target.value,T.inputValue.length>0&&!P.value&&(P.value=!0),t.remote)qe();else return Ke()},qe=nn(()=>{Ke()},re.value),xe=ce=>{ui(t.modelValue,ce)||e(Vo,ce)},Le=ce=>PX(ce,Ge=>!T.disabledOptions.has(Ge)),je=ce=>{if(t.multiple&&ce.code!==Rt.delete&&ce.target.value.length<=0){const Ge=t.modelValue.slice(),It=Le(Ge);if(It<0)return;Ge.splice(It,1),e(Xt,Ge),xe(Ge)}},He=(ce,Ge)=>{const It=T.selected.indexOf(Ge);if(It>-1&&!W.value){const bt=t.modelValue.slice();bt.splice(It,1),e(Xt,bt),xe(bt),e("remove-tag",Ge.value)}ce.stopPropagation(),_t()},Je=ce=>{ce.stopPropagation();const Ge=t.multiple?[]:"";if(!vt(Ge))for(const It of T.selected)It.isDisabled&&Ge.push(It.value);e(Xt,Ge),xe(Ge),T.hoveringIndex=-1,P.value=!1,e("clear"),_t()},St=ce=>{if(t.multiple){const Ge=(t.modelValue||[]).slice(),It=Ot(Ge,ce.value);It>-1?Ge.splice(It,1):(t.multipleLimit<=0||Ge.length<t.multipleLimit)&&Ge.push(ce.value),e(Xt,Ge),xe(Ge),ce.created&&Ae(""),t.filterable&&!t.reserveKeyword&&(T.inputValue="")}else e(Xt,ce.value),xe(ce.value),P.value=!1;_t(),!P.value&&Lt(()=>{Nt(ce)})},Ot=(ce=[],Ge)=>{if(!Zt(Ge))return ce.indexOf(Ge);const It=t.valueKey;let bt=-1;return ce.some((wo,Wo)=>Mo(ds(wo,It))===ds(Ge,It)?(bt=Wo,!0):!1),bt},Nt=ce=>{var Ge,It,bt,wo,Wo;const ps=rt(ce)?ce[0]:ce;let Ls=null;if(ps!=null&&ps.value){const ei=ae.value.filter(L_=>L_.value===ps.value);ei.length>0&&(Ls=ei[0].$el)}if(d.value&&Ls){const ei=(wo=(bt=(It=(Ge=d.value)==null?void 0:Ge.popperRef)==null?void 0:It.contentRef)==null?void 0:bt.querySelector)==null?void 0:wo.call(bt,`.${l.be("dropdown","wrap")}`);ei&&WX(ei,Ls)}(Wo=m.value)==null||Wo.handleScroll()},z=ce=>{T.options.set(ce.value,ce),T.cachedOptions.set(ce.value,ce),ce.disabled&&T.disabledOptions.set(ce.value,ce)},y=(ce,Ge)=>{T.options.get(ce)===Ge&&T.options.delete(ce)},{handleCompositionStart:x,handleCompositionUpdate:oe,handleCompositionEnd:Ee}=bK(ce=>Be(ce)),_e=v(()=>{var ce,Ge;return(Ge=(ce=d.value)==null?void 0:ce.popperRef)==null?void 0:Ge.contentRef}),ze=()=>{Lt(()=>Nt(T.selected))},_t=()=>{var ce;(ce=h.value)==null||ce.focus()},wt=()=>{_o()},Ho=ce=>{Je(ce)},_o=ce=>{if(P.value=!1,b.value){const Ge=new FocusEvent("focus",ce);Lt(()=>U(Ge))}},Ko=()=>{T.inputValue.length>0?T.inputValue="":P.value=!1},no=()=>{W.value||(T.menuVisibleOnFocus?T.menuVisibleOnFocus=!1:P.value=!P.value)},io=()=>{P.value?ae.value[T.hoveringIndex]&&St(ae.value[T.hoveringIndex]):no()},go=ce=>Zt(ce.value)?ds(ce.value,t.valueKey):ce.value,zo=v(()=>ae.value.filter(ce=>ce.visible).every(ce=>ce.disabled)),q=v(()=>t.multiple?t.collapseTags?T.selected.slice(0,t.maxCollapseTags):T.selected:[]),ue=v(()=>t.multiple?t.collapseTags?T.selected.slice(t.maxCollapseTags):[]:[]),D=ce=>{if(!P.value){P.value=!0;return}if(!(T.options.size===0||Q.value===0)&&!zo.value){ce==="next"?(T.hoveringIndex++,T.hoveringIndex===T.options.size&&(T.hoveringIndex=0)):ce==="prev"&&(T.hoveringIndex--,T.hoveringIndex<0&&(T.hoveringIndex=T.options.size-1));const Ge=ae.value[T.hoveringIndex];(Ge.disabled===!0||Ge.states.groupDisabled===!0||!Ge.visible)&&D(ce),Lt(()=>Nt(G.value))}},Z=v(()=>({maxWidth:`${T.selectionWidth}px`})),he=v(()=>({width:`${Math.max(T.calculatorWidth,yfe)}px`}));return t.multiple&&!rt(t.modelValue)&&e(Xt,[]),!t.multiple&&rt(t.modelValue)&&e(Xt,""),Rs(u,Ue),Rs(I,Ye),Rs(p,De),Rs(C,Xe),Bt(()=>{ve()}),{inputId:V,contentId:_,nsSelect:l,nsInput:c,states:T,isFocused:b,expanded:P,optionsArray:ae,hoverOption:G,selectSize:We,filteredOptionsCount:Q,resetCalculatorWidth:Ye,updateTooltip:De,updateTagTooltip:Xe,debouncedOnInputChange:qe,onInput:Be,deletePrevTag:je,deleteTag:He,deleteSelected:Je,handleOptionSelect:St,scrollToOption:Nt,hasModelValue:K,shouldShowPlaceholder:Ie,currentPlaceholder:Pe,showClose:ee,iconComponent:j,iconReverse:J,validateState:ie,validateIcon:Y,showNewOption:Se,updateOptions:pe,collapseTagSize:be,setSelected:ve,selectDisabled:W,emptyText:H,handleCompositionStart:x,handleCompositionUpdate:oe,handleCompositionEnd:Ee,onOptionCreate:z,onOptionDestroy:y,handleMenuEnter:ze,handleFocus:N,focus:_t,blur:wt,handleBlur:U,handleClearClick:Ho,handleClickOutside:_o,handleEsc:Ko,toggleMenu:no,selectOption:io,getValueKey:go,navigateOptions:D,dropdownMenuVisible:Me,showTagList:q,collapseTagList:ue,tagStyle:Z,inputStyle:he,popperRef:_e,inputRef:h,tooltipRef:d,tagTooltipRef:O,calculatorRef:I,prefixRef:S,suffixRef:L,selectRef:E,wrapperRef:A,selectionRef:u,scrollbarRef:m,menuRef:p,tagMenuRef:C}};var Bfe=Oe({name:"ElOptions",setup(t,{slots:e}){const o=lt(vO);let _=[];return()=>{var l,c;const T=(l=e.default)==null?void 0:l.call(e),E=[];function u(d){rt(d)&&d.forEach(O=>{var h,I,S,L;const p=(h=(O==null?void 0:O.type)||{})==null?void 0:h.name;p==="ElOptionGroup"?u(!vt(O.children)&&!rt(O.children)&&At((I=O.children)==null?void 0:I.default)?(S=O.children)==null?void 0:S.default():O.children):p==="ElOption"?E.push((L=O.props)==null?void 0:L.value):rt(O.children)&&u(O.children)})}return T.length&&u((c=T[0])==null?void 0:c.children),ui(E,_)||(_=E,o&&(o.states.optionValues=E)),T}}});const wfe=et({name:String,id:String,modelValue:{type:[Array,String,Number,Boolean,Object],default:void 0},autocomplete:{type:String,default:"off"},automaticDropdown:Boolean,size:Ys,effect:{type:me(String),default:"light"},disabled:Boolean,clearable:Boolean,filterable:Boolean,allowCreate:Boolean,loading:Boolean,popperClass:{type:String,default:""},popperOptions:{type:me(Object),default:()=>({})},remote:Boolean,loadingText:String,noMatchText:String,noDataText:String,remoteMethod:Function,filterMethod:Function,multiple:Boolean,multipleLimit:{type:Number,default:0},placeholder:{type:String},defaultFirstOption:Boolean,reserveKeyword:{type:Boolean,default:!0},valueKey:{type:String,default:"value"},collapseTags:Boolean,collapseTagsTooltip:Boolean,maxCollapseTags:{type:Number,default:1},teleported:Zs.teleported,persistent:{type:Boolean,default:!0},clearIcon:{type:Lo,default:va},fitInputWidth:Boolean,suffixIcon:{type:Lo,default:Tl},tagType:{...KS.type,default:"info"},validateEvent:{type:Boolean,default:!0},remoteShowSuffix:Boolean,suffixTransition:{type:Boolean,default:!0},placement:{type:me(String),values:tT,default:"bottom-start"},ariaLabel:{type:String,default:void 0}}),sH="ElSelect",Gfe=Oe({name:sH,componentName:sH,components:{ElInput:Ri,ElSelectMenu:Ufe,ElOption:uD,ElOptions:Bfe,ElTag:Wd,ElScrollbar:ul,ElTooltip:wi,ElIcon:Et},directives:{ClickOutside:nl},props:wfe,emits:[Xt,Vo,"remove-tag","clear","visible-change","focus","blur"],setup(t,{emit:e}){const o=$fe(t,e);return Jt(vO,Eo({props:t,states:o.states,optionsArray:o.optionsArray,handleOptionSelect:o.handleOptionSelect,onOptionCreate:o.onOptionCreate,onOptionDestroy:o.onOptionDestroy,selectRef:o.selectRef,setSelected:o.setSelected})),{...o}}}),kfe=["id","disabled","autocomplete","readonly","aria-activedescendant","aria-controls","aria-expanded","aria-label"],Hfe=["textContent"];function xfe(t,e,o,_,l,c){const T=gt("el-tag"),E=gt("el-tooltip"),u=gt("el-icon"),d=gt("el-option"),O=gt("el-options"),h=gt("el-scrollbar"),I=gt("el-select-menu"),S=oS("click-outside");return yt((B(),se("div",{ref:"selectRef",class:k([t.nsSelect.b(),t.nsSelect.m(t.selectSize)]),onMouseenter:e[15]||(e[15]=L=>t.states.inputHovering=!0),onMouseleave:e[16]||(e[16]=L=>t.states.inputHovering=!1),onClick:e[17]||(e[17]=Ct((...L)=>t.toggleMenu&&t.toggleMenu(...L),["stop"]))},[ne(E,{ref:"tooltipRef",visible:t.dropdownMenuVisible,placement:t.placement,teleported:t.teleported,"popper-class":[t.nsSelect.e("popper"),t.popperClass],"popper-options":t.popperOptions,"fallback-placements":["bottom-start","top-start","right","left"],effect:t.effect,pure:"",trigger:"click",transition:`${t.nsSelect.namespace.value}-zoom-in-top`,"stop-popper-mouse-event":!1,"gpu-acceleration":!1,persistent:t.persistent,onBeforeShow:t.handleMenuEnter,onHide:e[14]||(e[14]=L=>t.states.isBeforeHide=!1)},{default:de(()=>{var L;return[te("div",{ref:"wrapperRef",class:k([t.nsSelect.e("wrapper"),t.nsSelect.is("focused",t.isFocused),t.nsSelect.is("hovering",t.states.inputHovering),t.nsSelect.is("filterable",t.filterable),t.nsSelect.is("disabled",t.selectDisabled)])},[t.$slots.prefix?(B(),se("div",{key:0,ref:"prefixRef",class:k(t.nsSelect.e("prefix"))},[ye(t.$slots,"prefix")],2)):Ce("v-if",!0),te("div",{ref:"selectionRef",class:k([t.nsSelect.e("selection"),t.nsSelect.is("near",t.multiple&&!t.$slots.prefix&&!!t.states.selected.length)])},[t.multiple?ye(t.$slots,"tag",{key:0},()=>[(B(!0),se(ht,null,oo(t.showTagList,p=>(B(),se("div",{key:t.getValueKey(p),class:k(t.nsSelect.e("selected-item"))},[ne(T,{closable:!t.selectDisabled&&!p.isDisabled,size:t.collapseTagSize,type:t.tagType,"disable-transitions":"",style:dt(t.tagStyle),onClose:C=>t.deleteTag(C,p)},{default:de(()=>[te("span",{class:k(t.nsSelect.e("tags-text"))},Qe(p.currentLabel),3)]),_:2},1032,["closable","size","type","style","onClose"])],2))),128)),t.collapseTags&&t.states.selected.length>t.maxCollapseTags?(B(),Ne(E,{key:0,ref:"tagTooltipRef",disabled:!t.collapseTagsTooltip,"fallback-placements":["bottom","top","right","left"],effect:t.effect,placement:"bottom",teleported:t.teleported},{default:de(()=>[te("div",{class:k(t.nsSelect.e("selected-item"))},[ne(T,{closable:!1,size:t.collapseTagSize,type:t.tagType,"disable-transitions":"",style:dt(t.tagStyle)},{default:de(()=>[te("span",{class:k(t.nsSelect.e("tags-text"))}," + "+Qe(t.states.selected.length-t.maxCollapseTags),3)]),_:1},8,["size","type","style"])],2)]),content:de(()=>[te("div",{ref:"tagMenuRef",class:k(t.nsSelect.e("selection"))},[(B(!0),se(ht,null,oo(t.collapseTagList,p=>(B(),se("div",{key:t.getValueKey(p),class:k(t.nsSelect.e("selected-item"))},[ne(T,{class:"in-tooltip",closable:!t.selectDisabled&&!p.isDisabled,size:t.collapseTagSize,type:t.tagType,"disable-transitions":"",onClose:C=>t.deleteTag(C,p)},{default:de(()=>[te("span",{class:k(t.nsSelect.e("tags-text"))},Qe(p.currentLabel),3)]),_:2},1032,["closable","size","type","onClose"])],2))),128))],2)]),_:1},8,["disabled","effect","teleported"])):Ce("v-if",!0)]):Ce("v-if",!0),t.selectDisabled?Ce("v-if",!0):(B(),se("div",{key:1,class:k([t.nsSelect.e("selected-item"),t.nsSelect.e("input-wrapper"),t.nsSelect.is("hidden",!t.filterable)])},[yt(te("input",{id:t.inputId,ref:"inputRef","onUpdate:modelValue":e[0]||(e[0]=p=>t.states.inputValue=p),type:"text",class:k([t.nsSelect.e("input"),t.nsSelect.is(t.selectSize)]),disabled:t.selectDisabled,autocomplete:t.autocomplete,style:dt(t.inputStyle),role:"combobox",readonly:!t.filterable,spellcheck:"false","aria-activedescendant":((L=t.hoverOption)==null?void 0:L.id)||"","aria-controls":t.contentId,"aria-expanded":t.dropdownMenuVisible,"aria-label":t.ariaLabel,"aria-autocomplete":"none","aria-haspopup":"listbox",onFocus:e[1]||(e[1]=(...p)=>t.handleFocus&&t.handleFocus(...p)),onBlur:e[2]||(e[2]=(...p)=>t.handleBlur&&t.handleBlur(...p)),onKeydown:[e[3]||(e[3]=So(Ct(p=>t.navigateOptions("next"),["prevent"]),["down"])),e[4]||(e[4]=So(Ct(p=>t.navigateOptions("prev"),["prevent"]),["up"])),e[5]||(e[5]=So((...p)=>t.handleEsc&&t.handleEsc(...p),["esc"])),e[6]||(e[6]=So(Ct((...p)=>t.selectOption&&t.selectOption(...p),["stop","prevent"]),["enter"])),e[7]||(e[7]=So(Ct((...p)=>t.deletePrevTag&&t.deletePrevTag(...p),["stop"]),["delete"])),e[8]||(e[8]=So(p=>t.expanded=!1,["tab"]))],onCompositionstart:e[9]||(e[9]=(...p)=>t.handleCompositionStart&&t.handleCompositionStart(...p)),onCompositionupdate:e[10]||(e[10]=(...p)=>t.handleCompositionUpdate&&t.handleCompositionUpdate(...p)),onCompositionend:e[11]||(e[11]=(...p)=>t.handleCompositionEnd&&t.handleCompositionEnd(...p)),onInput:e[12]||(e[12]=(...p)=>t.onInput&&t.onInput(...p)),onClick:e[13]||(e[13]=Ct(()=>{},["stop"]))},null,46,kfe),[[MP,t.states.inputValue]]),t.filterable?(B(),se("span",{key:0,ref:"calculatorRef","aria-hidden":"true",class:k(t.nsSelect.e("input-calculator")),textContent:Qe(t.states.inputValue)},null,10,Hfe)):Ce("v-if",!0)],2)),t.shouldShowPlaceholder?(B(),se("div",{key:2,class:k([t.nsSelect.e("selected-item"),t.nsSelect.e("placeholder"),t.nsSelect.is("transparent",!t.hasModelValue||t.expanded&&!t.states.inputValue)])},[te("span",null,Qe(t.currentPlaceholder),1)],2)):Ce("v-if",!0)],2),te("div",{ref:"suffixRef",class:k(t.nsSelect.e("suffix"))},[t.iconComponent&&!t.showClose?(B(),Ne(u,{key:0,class:k([t.nsSelect.e("caret"),t.nsSelect.e("icon"),t.iconReverse])},{default:de(()=>[(B(),Ne(Kt(t.iconComponent)))]),_:1},8,["class"])):Ce("v-if",!0),t.showClose&&t.clearIcon?(B(),Ne(u,{key:1,class:k([t.nsSelect.e("caret"),t.nsSelect.e("icon")]),onClick:t.handleClearClick},{default:de(()=>[(B(),Ne(Kt(t.clearIcon)))]),_:1},8,["class","onClick"])):Ce("v-if",!0),t.validateState&&t.validateIcon?(B(),Ne(u,{key:2,class:k([t.nsInput.e("icon"),t.nsInput.e("validateIcon")])},{default:de(()=>[(B(),Ne(Kt(t.validateIcon)))]),_:1},8,["class"])):Ce("v-if",!0)],2)],2)]}),content:de(()=>[ne(I,{ref:"menuRef"},{default:de(()=>[t.$slots.header?(B(),se("div",{key:0,class:k(t.nsSelect.be("dropdown","header"))},[ye(t.$slots,"header")],2)):Ce("v-if",!0),yt(ne(h,{id:t.contentId,ref:"scrollbarRef",tag:"ul","wrap-class":t.nsSelect.be("dropdown","wrap"),"view-class":t.nsSelect.be("dropdown","list"),class:k([t.nsSelect.is("empty",t.filteredOptionsCount===0)]),role:"listbox","aria-label":t.ariaLabel,"aria-orientation":"vertical"},{default:de(()=>[t.showNewOption?(B(),Ne(d,{key:0,value:t.states.inputValue,created:!0},null,8,["value"])):Ce("v-if",!0),ne(O,null,{default:de(()=>[ye(t.$slots,"default")]),_:3})]),_:3},8,["id","wrap-class","view-class","class","aria-label"]),[[ao,t.states.options.size>0&&!t.loading]]),t.loading||t.filteredOptionsCount===0?ye(t.$slots,"empty",{key:1},()=>[te("p",{class:k(t.nsSelect.be("dropdown","empty"))},Qe(t.emptyText),3)]):Ce("v-if",!0),t.$slots.footer?(B(),se("div",{key:2,class:k(t.nsSelect.be("dropdown","footer"))},[ye(t.$slots,"footer")],2)):Ce("v-if",!0)]),_:3},512)]),_:3},8,["visible","placement","teleported","popper-class","popper-options","effect","transition","persistent","onBeforeShow"])],34)),[[S,t.handleClickOutside,t.popperRef]])}var Ffe=tt(Gfe,[["render",xfe],["__file","select.vue"]]);const Vfe=Oe({name:"ElOptionGroup",componentName:"ElOptionGroup",props:{label:String,disabled:Boolean},setup(t){const e=Ze("select"),o=X(null),_=Ht(),l=X([]);Jt(AK,Eo({...Xs(t)}));const c=v(()=>l.value.some(u=>u.visible===!0)),T=u=>{const d=[];return rt(u.children)&&u.children.forEach(O=>{var h;O.type&&O.type.name==="ElOption"&&O.component&&O.component.proxy?d.push(O.component.proxy):(h=O.children)!=null&&h.length&&d.push(...T(O))}),d},E=()=>{l.value=T(_.subTree)};return Bt(()=>{E()}),kX(o,E,{attributes:!0,subtree:!0,childList:!0}),{groupRef:o,visible:c,ns:e}}});function Wfe(t,e,o,_,l,c){return yt((B(),se("ul",{ref:"groupRef",class:k(t.ns.be("group","wrap"))},[te("li",{class:k(t.ns.be("group","title"))},Qe(t.label),3),te("li",null,[te("ul",{class:k(t.ns.b("group"))},[ye(t.$slots,"default")],2)])],2)),[[ao,t.visible]])}var NK=tt(Vfe,[["render",Wfe],["__file","option-group.vue"]]);const Zc=Vt(Ffe,{Option:uD,OptionGroup:NK}),wI=ss(uD),Xfe=ss(NK),gD=()=>lt(CK,{}),Yfe=et({pageSize:{type:Number,required:!0},pageSizes:{type:me(Array),default:()=>Qo([10,20,30,40,50,100])},popperClass:{type:String},disabled:Boolean,teleported:Boolean,size:{type:String,values:R_}}),Kfe=Oe({name:"ElPaginationSizes"}),zfe=Oe({...Kfe,props:Yfe,emits:["page-size-change"],setup(t,{emit:e}){const o=t,{t:_}=lo(),l=Ze("pagination"),c=gD(),T=X(o.pageSize);Fe(()=>o.pageSizes,(d,O)=>{if(!ui(d,O)&&Array.isArray(d)){const h=d.includes(o.pageSize)?o.pageSize:o.pageSizes[0];e("page-size-change",h)}}),Fe(()=>o.pageSize,d=>{T.value=d});const E=v(()=>o.pageSizes);function u(d){var O;d!==T.value&&(T.value=d,(O=c.handleSizeChange)==null||O.call(c,Number(d)))}return(d,O)=>(B(),se("span",{class:k(M(l).e("sizes"))},[ne(M(Zc),{"model-value":T.value,disabled:d.disabled,"popper-class":d.popperClass,size:d.size,teleported:d.teleported,"validate-event":!1,onChange:u},{default:de(()=>[(B(!0),se(ht,null,oo(M(E),h=>(B(),Ne(M(wI),{key:h,value:h,label:h+M(_)("el.pagination.pagesize")},null,8,["value","label"]))),128))]),_:1},8,["model-value","disabled","popper-class","size","teleported"])],2))}});var Zfe=tt(zfe,[["__file","sizes.vue"]]);const jfe=et({size:{type:String,values:R_}}),qfe=["disabled"],Qfe=Oe({name:"ElPaginationJumper"}),Jfe=Oe({...Qfe,props:jfe,setup(t){const{t:e}=lo(),o=Ze("pagination"),{pageCount:_,disabled:l,currentPage:c,changeEvent:T}=gD(),E=X(),u=v(()=>{var h;return(h=E.value)!=null?h:c==null?void 0:c.value});function d(h){E.value=h?+h:""}function O(h){h=Math.trunc(+h),T==null||T(h),E.value=void 0}return(h,I)=>(B(),se("span",{class:k(M(o).e("jump")),disabled:M(l)},[te("span",{class:k([M(o).e("goto")])},Qe(M(e)("el.pagination.goto")),3),ne(M(Ri),{size:h.size,class:k([M(o).e("editor"),M(o).is("in-pagination")]),min:1,max:M(_),disabled:M(l),"model-value":M(u),"validate-event":!1,label:M(e)("el.pagination.page"),type:"number","onUpdate:modelValue":d,onChange:O},null,8,["size","class","max","disabled","model-value","label"]),te("span",{class:k([M(o).e("classifier")])},Qe(M(e)("el.pagination.pageClassifier")),3)],10,qfe))}});var eme=tt(Jfe,[["__file","jumper.vue"]]);const tme=et({total:{type:Number,default:1e3}}),ome=["disabled"],sme=Oe({name:"ElPaginationTotal"}),ime=Oe({...sme,props:tme,setup(t){const{t:e}=lo(),o=Ze("pagination"),{disabled:_}=gD();return(l,c)=>(B(),se("span",{class:k(M(o).e("total")),disabled:M(_)},Qe(M(e)("el.pagination.total",{total:l.total})),11,ome))}});var nme=tt(ime,[["__file","total.vue"]]);const rme=et({currentPage:{type:Number,default:1},pageCount:{type:Number,required:!0},pagerCount:{type:Number,default:7},disabled:Boolean}),_me=["onKeyup"],lme=["aria-current","aria-label","tabindex"],ame=["tabindex","aria-label"],cme=["aria-current","aria-label","tabindex"],Tme=["tabindex","aria-label"],Eme=["aria-current","aria-label","tabindex"],ume=Oe({name:"ElPaginationPager"}),gme=Oe({...ume,props:rme,emits:["change"],setup(t,{emit:e}){const o=t,_=Ze("pager"),l=Ze("icon"),{t:c}=lo(),T=X(!1),E=X(!1),u=X(!1),d=X(!1),O=X(!1),h=X(!1),I=v(()=>{const N=o.pagerCount,U=(N-1)/2,P=Number(o.currentPage),G=Number(o.pageCount);let w=!1,F=!1;G>N&&(P>N-U&&(w=!0),P<G-U&&(F=!0));const V=[];if(w&&!F){const W=G-(N-2);for(let K=W;K<G;K++)V.push(K)}else if(!w&&F)for(let W=2;W<N;W++)V.push(W);else if(w&&F){const W=Math.floor(N/2)-1;for(let K=P-W;K<=P+W;K++)V.push(K)}else for(let W=2;W<G;W++)V.push(W);return V}),S=v(()=>["more","btn-quickprev",l.b(),_.is("disabled",o.disabled)]),L=v(()=>["more","btn-quicknext",l.b(),_.is("disabled",o.disabled)]),p=v(()=>o.disabled?-1:0);qs(()=>{const N=(o.pagerCount-1)/2;T.value=!1,E.value=!1,o.pageCount>o.pagerCount&&(o.currentPage>o.pagerCount-N&&(T.value=!0),o.currentPage<o.pageCount-N&&(E.value=!0))});function C(N=!1){o.disabled||(N?u.value=!0:d.value=!0)}function m(N=!1){N?O.value=!0:h.value=!0}function A(N){const U=N.target;if(U.tagName.toLowerCase()==="li"&&Array.from(U.classList).includes("number")){const P=Number(U.textContent);P!==o.currentPage&&e("change",P)}else U.tagName.toLowerCase()==="li"&&Array.from(U.classList).includes("more")&&b(N)}function b(N){const U=N.target;if(U.tagName.toLowerCase()==="ul"||o.disabled)return;let P=Number(U.textContent);const G=o.pageCount,w=o.currentPage,F=o.pagerCount-2;U.className.includes("more")&&(U.className.includes("quickprev")?P=w-F:U.className.includes("quicknext")&&(P=w+F)),Number.isNaN(+P)||(P<1&&(P=1),P>G&&(P=G)),P!==w&&e("change",P)}return(N,U)=>(B(),se("ul",{class:k(M(_).b()),onClick:b,onKeyup:So(A,["enter"])},[N.pageCount>0?(B(),se("li",{key:0,class:k([[M(_).is("active",N.currentPage===1),M(_).is("disabled",N.disabled)],"number"]),"aria-current":N.currentPage===1,"aria-label":M(c)("el.pagination.currentPage",{pager:1}),tabindex:M(p)}," 1 ",10,lme)):Ce("v-if",!0),T.value?(B(),se("li",{key:1,class:k(M(S)),tabindex:M(p),"aria-label":M(c)("el.pagination.prevPages",{pager:N.pagerCount-2}),onMouseenter:U[0]||(U[0]=P=>C(!0)),onMouseleave:U[1]||(U[1]=P=>u.value=!1),onFocus:U[2]||(U[2]=P=>m(!0)),onBlur:U[3]||(U[3]=P=>O.value=!1)},[(u.value||O.value)&&!N.disabled?(B(),Ne(M(nu),{key:0})):(B(),Ne(M(QG),{key:1}))],42,ame)):Ce("v-if",!0),(B(!0),se(ht,null,oo(M(I),P=>(B(),se("li",{key:P,class:k([[M(_).is("active",N.currentPage===P),M(_).is("disabled",N.disabled)],"number"]),"aria-current":N.currentPage===P,"aria-label":M(c)("el.pagination.currentPage",{pager:P}),tabindex:M(p)},Qe(P),11,cme))),128)),E.value?(B(),se("li",{key:2,class:k(M(L)),tabindex:M(p),"aria-label":M(c)("el.pagination.nextPages",{pager:N.pagerCount-2}),onMouseenter:U[4]||(U[4]=P=>C()),onMouseleave:U[5]||(U[5]=P=>d.value=!1),onFocus:U[6]||(U[6]=P=>m()),onBlur:U[7]||(U[7]=P=>h.value=!1)},[(d.value||h.value)&&!N.disabled?(B(),Ne(M(ru),{key:0})):(B(),Ne(M(QG),{key:1}))],42,Tme)):Ce("v-if",!0),N.pageCount>1?(B(),se("li",{key:3,class:k([[M(_).is("active",N.currentPage===N.pageCount),M(_).is("disabled",N.disabled)],"number"]),"aria-current":N.currentPage===N.pageCount,"aria-label":M(c)("el.pagination.currentPage",{pager:N.pageCount}),tabindex:M(p)},Qe(N.pageCount),11,Eme)):Ce("v-if",!0)],42,_me))}});var dme=tt(gme,[["__file","pager.vue"]]);const Ai=t=>typeof t!="number",Ome=et({pageSize:Number,defaultPageSize:Number,total:Number,pageCount:Number,pagerCount:{type:Number,validator:t=>mt(t)&&Math.trunc(t)===t&&t>4&&t<22&&t%2===1,default:7},currentPage:Number,defaultCurrentPage:Number,layout:{type:String,default:["prev","pager","next","jumper","->","total"].join(", ")},pageSizes:{type:me(Array),default:()=>Qo([10,20,30,40,50,100])},popperClass:{type:String,default:""},prevText:{type:String,default:""},prevIcon:{type:Lo,default:()=>La},nextText:{type:String,default:""},nextIcon:{type:Lo,default:()=>Ui},teleported:{type:Boolean,default:!0},small:Boolean,background:Boolean,disabled:Boolean,hideOnSinglePage:Boolean}),hme={"update:current-page":t=>mt(t),"update:page-size":t=>mt(t),"size-change":t=>mt(t),change:(t,e)=>mt(t)&&mt(e),"current-change":t=>mt(t),"prev-click":t=>mt(t),"next-click":t=>mt(t)},iH="ElPagination";var Mme=Oe({name:iH,props:Ome,emits:hme,setup(t,{emit:e,slots:o}){const{t:_}=lo(),l=Ze("pagination"),c=Ht().vnode.props||{},T="onUpdate:currentPage"in c||"onUpdate:current-page"in c||"onCurrentChange"in c,E="onUpdate:pageSize"in c||"onUpdate:page-size"in c||"onSizeChange"in c,u=v(()=>{if(Ai(t.total)&&Ai(t.pageCount)||!Ai(t.currentPage)&&!T)return!1;if(t.layout.includes("sizes")){if(Ai(t.pageCount)){if(!Ai(t.total)&&!Ai(t.pageSize)&&!E)return!1}else if(!E)return!1}return!0}),d=X(Ai(t.defaultPageSize)?10:t.defaultPageSize),O=X(Ai(t.defaultCurrentPage)?1:t.defaultCurrentPage),h=v({get(){return Ai(t.pageSize)?d.value:t.pageSize},set(b){Ai(t.pageSize)&&(d.value=b),E&&(e("update:page-size",b),e("size-change",b))}}),I=v(()=>{let b=0;return Ai(t.pageCount)?Ai(t.total)||(b=Math.max(1,Math.ceil(t.total/h.value))):b=t.pageCount,b}),S=v({get(){return Ai(t.currentPage)?O.value:t.currentPage},set(b){let N=b;b<1?N=1:b>I.value&&(N=I.value),Ai(t.currentPage)&&(O.value=N),T&&(e("update:current-page",N),e("current-change",N))}});Fe(I,b=>{S.value>b&&(S.value=b)}),Fe([S,h],b=>{e("change",...b)},{flush:"post"});function L(b){S.value=b}function p(b){h.value=b;const N=I.value;S.value>N&&(S.value=N)}function C(){t.disabled||(S.value-=1,e("prev-click",S.value))}function m(){t.disabled||(S.value+=1,e("next-click",S.value))}function A(b,N){b&&(b.props||(b.props={}),b.props.class=[b.props.class,N].join(" "))}return Jt(CK,{pageCount:I,disabled:v(()=>t.disabled),currentPage:S,changeEvent:L,handleSizeChange:p}),()=>{var b,N;if(!u.value)return _("el.pagination.deprecationWarning"),null;if(!t.layout||t.hideOnSinglePage&&I.value<=1)return null;const U=[],P=[],G=pt("div",{class:l.e("rightwrapper")},P),w={prev:pt(Ife,{disabled:t.disabled,currentPage:S.value,prevText:t.prevText,prevIcon:t.prevIcon,onClick:C}),jumper:pt(eme,{size:t.small?"small":"default"}),pager:pt(dme,{currentPage:S.value,pageCount:I.value,pagerCount:t.pagerCount,onChange:L,disabled:t.disabled}),next:pt(Cfe,{disabled:t.disabled,currentPage:S.value,pageCount:I.value,nextText:t.nextText,nextIcon:t.nextIcon,onClick:m}),sizes:pt(Zfe,{pageSize:h.value,pageSizes:t.pageSizes,popperClass:t.popperClass,disabled:t.disabled,teleported:t.teleported,size:t.small?"small":"default"}),slot:(N=(b=o==null?void 0:o.default)==null?void 0:b.call(o))!=null?N:null,total:pt(nme,{total:Ai(t.total)?0:t.total})},F=t.layout.split(",").map(W=>W.trim());let V=!1;return F.forEach(W=>{if(W==="->"){V=!0;return}V?P.push(w[W]):U.push(w[W])}),A(U[0],l.is("first")),A(U[U.length-1],l.is("last")),V&&P.length>0&&(A(P[0],l.is("first")),A(P[P.length-1],l.is("last")),U.push(G)),pt("div",{class:[l.b(),l.is("background",t.background),{[l.m("small")]:t.small}]},U)}}});const Rme=Vt(Mme),Ime=et({title:String,confirmButtonText:String,cancelButtonText:String,confirmButtonType:{type:String,values:Kb,default:"primary"},cancelButtonType:{type:String,values:Kb,default:"text"},icon:{type:Lo,default:()=>Nae},iconColor:{type:String,default:"#f90"},hideIcon:{type:Boolean,default:!1},hideAfter:{type:Number,default:200},teleported:Zs.teleported,persistent:Zs.persistent,width:{type:[String,Number],default:150}}),Sme={confirm:t=>t instanceof MouseEvent,cancel:t=>t instanceof MouseEvent},pme=Oe({name:"ElPopconfirm"}),Lme=Oe({...pme,props:Ime,emits:Sme,setup(t,{emit:e}){const o=t,{t:_}=lo(),l=Ze("popconfirm"),c=X(),T=()=>{var I,S;(S=(I=c.value)==null?void 0:I.onClose)==null||S.call(I)},E=v(()=>({width:hs(o.width)})),u=I=>{e("confirm",I),T()},d=I=>{e("cancel",I),T()},O=v(()=>o.confirmButtonText||_("el.popconfirm.confirmButtonText")),h=v(()=>o.cancelButtonText||_("el.popconfirm.cancelButtonText"));return(I,S)=>(B(),Ne(M(wi),Yt({ref_key:"tooltipRef",ref:c,trigger:"click",effect:"light"},I.$attrs,{"popper-class":`${M(l).namespace.value}-popover`,"popper-style":M(E),teleported:I.teleported,"fallback-placements":["bottom","top","right","left"],"hide-after":I.hideAfter,persistent:I.persistent}),{content:de(()=>[te("div",{class:k(M(l).b())},[te("div",{class:k(M(l).e("main"))},[!I.hideIcon&&I.icon?(B(),Ne(M(Et),{key:0,class:k(M(l).e("icon")),style:dt({color:I.iconColor})},{default:de(()=>[(B(),Ne(Kt(I.icon)))]),_:1},8,["class","style"])):Ce("v-if",!0),qt(" "+Qe(I.title),1)],2),te("div",{class:k(M(l).e("action"))},[ne(M(Ws),{size:"small",type:I.cancelButtonType==="text"?"":I.cancelButtonType,text:I.cancelButtonType==="text",onClick:d},{default:de(()=>[qt(Qe(M(h)),1)]),_:1},8,["type","text"]),ne(M(Ws),{size:"small",type:I.confirmButtonType==="text"?"":I.confirmButtonType,text:I.confirmButtonType==="text",onClick:u},{default:de(()=>[qt(Qe(M(O)),1)]),_:1},8,["type","text"])],2)],2)]),default:de(()=>[I.$slots.reference?ye(I.$slots,"reference",{key:0}):Ce("v-if",!0)]),_:3},16,["popper-class","popper-style","teleported","hide-after","persistent"]))}});var fme=tt(Lme,[["__file","popconfirm.vue"]]);const mme=Vt(fme),Cme=et({trigger:Vd.trigger,placement:vR.placement,disabled:Vd.disabled,visible:Zs.visible,transition:Zs.transition,popperOptions:vR.popperOptions,tabindex:vR.tabindex,content:Zs.content,popperStyle:Zs.popperStyle,popperClass:Zs.popperClass,enterable:{...Zs.enterable,default:!0},effect:{...Zs.effect,default:"light"},teleported:Zs.teleported,title:String,width:{type:[String,Number],default:150},offset:{type:Number,default:void 0},showAfter:{type:Number,default:0},hideAfter:{type:Number,default:200},autoClose:{type:Number,default:0},showArrow:{type:Boolean,default:!0},persistent:{type:Boolean,default:!0},"onUpdate:visible":{type:Function}}),Ame={"update:visible":t=>Ss(t),"before-enter":()=>!0,"before-leave":()=>!0,"after-enter":()=>!0,"after-leave":()=>!0},bme="onUpdate:visible",Nme=Oe({name:"ElPopover"}),Pme=Oe({...Nme,props:Cme,emits:Ame,setup(t,{expose:e,emit:o}){const _=t,l=v(()=>_[bme]),c=Ze("popover"),T=X(),E=v(()=>{var C;return(C=M(T))==null?void 0:C.popperRef}),u=v(()=>[{width:hs(_.width)},_.popperStyle]),d=v(()=>[c.b(),_.popperClass,{[c.m("plain")]:!!_.content}]),O=v(()=>_.transition===`${c.namespace.value}-fade-in-linear`),h=()=>{var C;(C=T.value)==null||C.hide()},I=()=>{o("before-enter")},S=()=>{o("before-leave")},L=()=>{o("after-enter")},p=()=>{o("update:visible",!1),o("after-leave")};return e({popperRef:E,hide:h}),(C,m)=>(B(),Ne(M(wi),Yt({ref_key:"tooltipRef",ref:T},C.$attrs,{trigger:C.trigger,placement:C.placement,disabled:C.disabled,visible:C.visible,transition:C.transition,"popper-options":C.popperOptions,tabindex:C.tabindex,content:C.content,offset:C.offset,"show-after":C.showAfter,"hide-after":C.hideAfter,"auto-close":C.autoClose,"show-arrow":C.showArrow,"aria-label":C.title,effect:C.effect,enterable:C.enterable,"popper-class":M(d),"popper-style":M(u),teleported:C.teleported,persistent:C.persistent,"gpu-acceleration":M(O),"onUpdate:visible":M(l),onBeforeShow:I,onBeforeHide:S,onShow:L,onHide:p}),{content:de(()=>[C.title?(B(),se("div",{key:0,class:k(M(c).e("title")),role:"title"},Qe(C.title),3)):Ce("v-if",!0),ye(C.$slots,"default",{},()=>[qt(Qe(C.content),1)])]),default:de(()=>[C.$slots.reference?ye(C.$slots,"reference",{key:0}):Ce("v-if",!0)]),_:3},16,["trigger","placement","disabled","visible","transition","popper-options","tabindex","content","offset","show-after","hide-after","auto-close","show-arrow","aria-label","effect","enterable","popper-class","popper-style","teleported","persistent","gpu-acceleration","onUpdate:visible"]))}});var vme=tt(Pme,[["__file","popover.vue"]]);const nH=(t,e)=>{const o=e.arg||e.value,_=o==null?void 0:o.popperRef;_&&(_.triggerRef=t)};var Dme={mounted(t,e){nH(t,e)},updated(t,e){nH(t,e)}};const Ume="popover",PK=Jae(Dme,Ume),yme=Vt(vme,{directive:PK}),$me=et({type:{type:String,default:"line",values:["line","circle","dashboard"]},percentage:{type:Number,default:0,validator:t=>t>=0&&t<=100},status:{type:String,default:"",values:["","success","exception","warning"]},indeterminate:{type:Boolean,default:!1},duration:{type:Number,default:3},strokeWidth:{type:Number,default:6},strokeLinecap:{type:me(String),default:"round"},textInside:{type:Boolean,default:!1},width:{type:Number,default:126},showText:{type:Boolean,default:!0},color:{type:me([String,Array,Function]),default:""},striped:Boolean,stripedFlow:Boolean,format:{type:me(Function),default:t=>`${t}%`}}),Bme=["aria-valuenow"],wme={viewBox:"0 0 100 100"},Gme=["d","stroke","stroke-linecap","stroke-width"],kme=["d","stroke","opacity","stroke-linecap","stroke-width"],Hme={key:0},xme=Oe({name:"ElProgress"}),Fme=Oe({...xme,props:$me,setup(t){const e=t,o={success:"#13ce66",exception:"#ff4949",warning:"#e6a23c",default:"#20a0ff"},_=Ze("progress"),l=v(()=>({width:`${e.percentage}%`,animationDuration:`${e.duration}s`,backgroundColor:A(e.percentage)})),c=v(()=>(e.strokeWidth/e.width*100).toFixed(1)),T=v(()=>["circle","dashboard"].includes(e.type)?Number.parseInt(`${50-Number.parseFloat(c.value)/2}`,10):0),E=v(()=>{const b=T.value,N=e.type==="dashboard";return`
- M 50 50
- m 0 ${N?"":"-"}${b}
- a ${b} ${b} 0 1 1 0 ${N?"-":""}${b*2}
- a ${b} ${b} 0 1 1 0 ${N?"":"-"}${b*2}
- `}),u=v(()=>2*Math.PI*T.value),d=v(()=>e.type==="dashboard"?.75:1),O=v(()=>`${-1*u.value*(1-d.value)/2}px`),h=v(()=>({strokeDasharray:`${u.value*d.value}px, ${u.value}px`,strokeDashoffset:O.value})),I=v(()=>({strokeDasharray:`${u.value*d.value*(e.percentage/100)}px, ${u.value}px`,strokeDashoffset:O.value,transition:"stroke-dasharray 0.6s ease 0s, stroke 0.6s ease, opacity ease 0.6s"})),S=v(()=>{let b;return e.color?b=A(e.percentage):b=o[e.status]||o.default,b}),L=v(()=>e.status==="warning"?yS:e.type==="line"?e.status==="success"?Nv:va:e.status==="success"?mO:Rr),p=v(()=>e.type==="line"?12+e.strokeWidth*.4:e.width*.111111+2),C=v(()=>e.format(e.percentage));function m(b){const N=100/b.length;return b.map((P,G)=>vt(P)?{color:P,percentage:(G+1)*N}:P).sort((P,G)=>P.percentage-G.percentage)}const A=b=>{var N;const{color:U}=e;if(At(U))return U(b);if(vt(U))return U;{const P=m(U);for(const G of P)if(G.percentage>b)return G.color;return(N=P[P.length-1])==null?void 0:N.color}};return(b,N)=>(B(),se("div",{class:k([M(_).b(),M(_).m(b.type),M(_).is(b.status),{[M(_).m("without-text")]:!b.showText,[M(_).m("text-inside")]:b.textInside}]),role:"progressbar","aria-valuenow":b.percentage,"aria-valuemin":"0","aria-valuemax":"100"},[b.type==="line"?(B(),se("div",{key:0,class:k(M(_).b("bar"))},[te("div",{class:k(M(_).be("bar","outer")),style:dt({height:`${b.strokeWidth}px`})},[te("div",{class:k([M(_).be("bar","inner"),{[M(_).bem("bar","inner","indeterminate")]:b.indeterminate},{[M(_).bem("bar","inner","striped")]:b.striped},{[M(_).bem("bar","inner","striped-flow")]:b.stripedFlow}]),style:dt(M(l))},[(b.showText||b.$slots.default)&&b.textInside?(B(),se("div",{key:0,class:k(M(_).be("bar","innerText"))},[ye(b.$slots,"default",{percentage:b.percentage},()=>[te("span",null,Qe(M(C)),1)])],2)):Ce("v-if",!0)],6)],6)],2)):(B(),se("div",{key:1,class:k(M(_).b("circle")),style:dt({height:`${b.width}px`,width:`${b.width}px`})},[(B(),se("svg",wme,[te("path",{class:k(M(_).be("circle","track")),d:M(E),stroke:`var(${M(_).cssVarName("fill-color-light")}, #e5e9f2)`,"stroke-linecap":b.strokeLinecap,"stroke-width":M(c),fill:"none",style:dt(M(h))},null,14,Gme),te("path",{class:k(M(_).be("circle","path")),d:M(E),stroke:M(S),fill:"none",opacity:b.percentage?1:0,"stroke-linecap":b.strokeLinecap,"stroke-width":M(c),style:dt(M(I))},null,14,kme)]))],6)),(b.showText||b.$slots.default)&&!b.textInside?(B(),se("div",{key:2,class:k(M(_).e("text")),style:dt({fontSize:`${M(p)}px`})},[ye(b.$slots,"default",{percentage:b.percentage},()=>[b.status?(B(),Ne(M(Et),{key:1},{default:de(()=>[(B(),Ne(Kt(M(L))))]),_:1})):(B(),se("span",Hme,Qe(M(C)),1))])],6)):Ce("v-if",!0)],10,Bme))}});var Vme=tt(Fme,[["__file","progress.vue"]]);const vK=Vt(Vme),Wme=et({modelValue:{type:Number,default:0},id:{type:String,default:void 0},lowThreshold:{type:Number,default:2},highThreshold:{type:Number,default:4},max:{type:Number,default:5},colors:{type:me([Array,Object]),default:()=>Qo(["","",""])},voidColor:{type:String,default:""},disabledVoidColor:{type:String,default:""},icons:{type:me([Array,Object]),default:()=>[xM,xM,xM]},voidIcon:{type:Lo,default:()=>Wae},disabledVoidIcon:{type:Lo,default:()=>xM},disabled:Boolean,allowHalf:Boolean,showText:Boolean,showScore:Boolean,textColor:{type:String,default:""},texts:{type:me(Array),default:()=>Qo(["Extremely bad","Disappointed","Fair","Satisfied","Surprise"])},scoreTemplate:{type:String,default:"{value}"},size:Ys,label:{type:String,default:void 0},clearable:{type:Boolean,default:!1}}),Xme={[Vo]:t=>mt(t),[Xt]:t=>mt(t)},Yme=["id","aria-label","aria-labelledby","aria-valuenow","aria-valuetext","aria-valuemax"],Kme=["onMousemove","onClick"],zme=Oe({name:"ElRate"}),Zme=Oe({...zme,props:Wme,emits:Xme,setup(t,{expose:e,emit:o}){const _=t;function l(ie,Y){const re=ae=>Zt(ae),H=Object.keys(Y).map(ae=>+ae).filter(ae=>{const ge=Y[ae];return(re(ge)?ge.excluded:!1)?ie<ae:ie<=ae}).sort((ae,ge)=>ae-ge),Q=Y[H[0]];return re(Q)&&Q.value||Q}const c=lt(_T,void 0),T=lt(d_,void 0),E=Ds(),u=Ze("rate"),{inputId:d,isLabeledByFormItem:O}=I_(_,{formItemContext:T}),h=X(_.modelValue),I=X(-1),S=X(!0),L=v(()=>[u.b(),u.m(E.value)]),p=v(()=>_.disabled||(c==null?void 0:c.disabled)),C=v(()=>u.cssVarBlock({"void-color":_.voidColor,"disabled-void-color":_.disabledVoidColor,"fill-color":N.value})),m=v(()=>{let ie="";return _.showScore?ie=_.scoreTemplate.replace(/\{\s*value\s*\}/,p.value?`${_.modelValue}`:`${h.value}`):_.showText&&(ie=_.texts[Math.ceil(h.value)-1]),ie}),A=v(()=>_.modelValue*100-Math.floor(_.modelValue)*100),b=v(()=>rt(_.colors)?{[_.lowThreshold]:_.colors[0],[_.highThreshold]:{value:_.colors[1],excluded:!0},[_.max]:_.colors[2]}:_.colors),N=v(()=>{const ie=l(h.value,b.value);return Zt(ie)?"":ie}),U=v(()=>{let ie="";return p.value?ie=`${A.value}%`:_.allowHalf&&(ie="50%"),{color:N.value,width:ie}}),P=v(()=>{let ie=rt(_.icons)?[..._.icons]:{..._.icons};return ie=z_(ie),rt(ie)?{[_.lowThreshold]:ie[0],[_.highThreshold]:{value:ie[1],excluded:!0},[_.max]:ie[2]}:ie}),G=v(()=>l(_.modelValue,P.value)),w=v(()=>p.value?vt(_.disabledVoidIcon)?_.disabledVoidIcon:z_(_.disabledVoidIcon):vt(_.voidIcon)?_.voidIcon:z_(_.voidIcon)),F=v(()=>l(h.value,P.value));function V(ie){const Y=p.value&&A.value>0&&ie-1<_.modelValue&&ie>_.modelValue,re=_.allowHalf&&S.value&&ie-.5<=h.value&&ie>h.value;return Y||re}function W(ie){_.clearable&&ie===_.modelValue&&(ie=0),o(Xt,ie),_.modelValue!==ie&&o("change",ie)}function K(ie){p.value||(_.allowHalf&&S.value?W(h.value):W(ie))}function ee(ie){if(p.value)return;let Y=h.value;const re=ie.code;return re===Rt.up||re===Rt.right?(_.allowHalf?Y+=.5:Y+=1,ie.stopPropagation(),ie.preventDefault()):(re===Rt.left||re===Rt.down)&&(_.allowHalf?Y-=.5:Y-=1,ie.stopPropagation(),ie.preventDefault()),Y=Y<0?0:Y,Y=Y>_.max?_.max:Y,o(Xt,Y),o("change",Y),Y}function j(ie,Y){if(!p.value){if(_.allowHalf&&Y){let re=Y.target;Or(re,u.e("item"))&&(re=re.querySelector(`.${u.e("icon")}`)),(re.clientWidth===0||Or(re,u.e("decimal")))&&(re=re.parentNode),S.value=Y.offsetX*2<=re.clientWidth,h.value=S.value?ie-.5:ie}else h.value=ie;I.value=ie}}function J(){p.value||(_.allowHalf&&(S.value=_.modelValue!==Math.floor(_.modelValue)),h.value=_.modelValue,I.value=-1)}return Fe(()=>_.modelValue,ie=>{h.value=ie,S.value=_.modelValue!==Math.floor(_.modelValue)}),_.modelValue||o(Xt,0),e({setCurrentValue:j,resetCurrentValue:J}),(ie,Y)=>{var re;return B(),se("div",{id:M(d),class:k([M(L),M(u).is("disabled",M(p))]),role:"slider","aria-label":M(O)?void 0:ie.label||"rating","aria-labelledby":M(O)?(re=M(T))==null?void 0:re.labelId:void 0,"aria-valuenow":h.value,"aria-valuetext":M(m)||void 0,"aria-valuemin":"0","aria-valuemax":ie.max,tabindex:"0",style:dt(M(C)),onKeydown:ee},[(B(!0),se(ht,null,oo(ie.max,(H,Q)=>(B(),se("span",{key:Q,class:k(M(u).e("item")),onMousemove:ae=>j(H,ae),onMouseleave:J,onClick:ae=>K(H)},[ne(M(Et),{class:k([M(u).e("icon"),{hover:I.value===H},M(u).is("active",H<=h.value)])},{default:de(()=>[V(H)?Ce("v-if",!0):(B(),se(ht,{key:0},[yt((B(),Ne(Kt(M(F)),null,null,512)),[[ao,H<=h.value]]),yt((B(),Ne(Kt(M(w)),null,null,512)),[[ao,!(H<=h.value)]])],64)),V(H)?(B(),se(ht,{key:1},[(B(),Ne(Kt(M(w)),{class:k([M(u).em("decimal","box")])},null,8,["class"])),ne(M(Et),{style:dt(M(U)),class:k([M(u).e("icon"),M(u).e("decimal")])},{default:de(()=>[(B(),Ne(Kt(M(G))))]),_:1},8,["style","class"])],64)):Ce("v-if",!0)]),_:2},1032,["class"])],42,Kme))),128)),ie.showText||ie.showScore?(B(),se("span",{key:0,class:k(M(u).e("text")),style:dt({color:ie.textColor})},Qe(M(m)),7)):Ce("v-if",!0)],46,Yme)}}});var jme=tt(Zme,[["__file","rate.vue"]]);const qme=Vt(jme),pE={success:"icon-success",warning:"icon-warning",error:"icon-error",info:"icon-info"},rH={[pE.success]:oae,[pE.warning]:yS,[pE.error]:Pv,[pE.info]:vv},Qme=et({title:{type:String,default:""},subTitle:{type:String,default:""},icon:{type:String,values:["success","warning","info","error"],default:"info"}}),Jme=Oe({name:"ElResult"}),eCe=Oe({...Jme,props:Qme,setup(t){const e=t,o=Ze("result"),_=v(()=>{const l=e.icon,c=l&&pE[l]?pE[l]:"icon-info",T=rH[c]||rH["icon-info"];return{class:c,component:T}});return(l,c)=>(B(),se("div",{class:k(M(o).b())},[te("div",{class:k(M(o).e("icon"))},[ye(l.$slots,"icon",{},()=>[M(_).component?(B(),Ne(Kt(M(_).component),{key:0,class:k(M(_).class)},null,8,["class"])):Ce("v-if",!0)])],2),l.title||l.$slots.title?(B(),se("div",{key:0,class:k(M(o).e("title"))},[ye(l.$slots,"title",{},()=>[te("p",null,Qe(l.title),1)])],2)):Ce("v-if",!0),l.subTitle||l.$slots["sub-title"]?(B(),se("div",{key:1,class:k(M(o).e("subtitle"))},[ye(l.$slots,"sub-title",{},()=>[te("p",null,Qe(l.subTitle),1)])],2)):Ce("v-if",!0),l.$slots.extra?(B(),se("div",{key:2,class:k(M(o).e("extra"))},[ye(l.$slots,"extra")],2)):Ce("v-if",!0)],2))}});var tCe=tt(eCe,[["__file","result.vue"]]);const oCe=Vt(tCe);var _H=Number.isNaN||function(e){return typeof e=="number"&&e!==e};function sCe(t,e){return!!(t===e||_H(t)&&_H(e))}function iCe(t,e){if(t.length!==e.length)return!1;for(var o=0;o<t.length;o++)if(!sCe(t[o],e[o]))return!1;return!0}function nCe(t,e){e===void 0&&(e=iCe);var o=null;function _(){for(var l=[],c=0;c<arguments.length;c++)l[c]=arguments[c];if(o&&o.lastThis===this&&e(l,o.lastArgs))return o.lastResult;var T=t.apply(this,l);return o={lastResult:T,lastArgs:l,lastThis:this},T}return _.clear=function(){o=null},_}const DK=()=>{const e=Ht().proxy.$props;return v(()=>{const o=(_,l,c)=>({});return e.perfMode?vS(o):nCe(o)})},gN=50,GI="itemRendered",kI="scroll",LE="forward",HI="backward",kn="auto",jS="smart",Yd="start",__="center",Kd="end",Tu="horizontal",dD="vertical",rCe="ltr",GE="rtl",zd="negative",OD="positive-ascending",hD="positive-descending",_Ce={[Tu]:"left",[dD]:"top"},lCe=20,aCe={[Tu]:"deltaX",[dD]:"deltaY"},cCe=({atEndEdge:t,atStartEdge:e,layout:o},_)=>{let l,c=0;const T=u=>u<0&&e.value||u>0&&t.value;return{hasReachedEdge:T,onWheel:u=>{BS(l);const d=u[aCe[o.value]];T(c)&&T(c+d)||(c+=d,xX()||u.preventDefault(),l=_u(()=>{_(c),c=0}))}}},dN=mr({type:me([Number,Function]),required:!0}),ON=mr({type:Number}),hN=mr({type:Number,default:2}),TCe=mr({type:String,values:["ltr","rtl"],default:"ltr"}),MN=mr({type:Number,default:0}),xI=mr({type:Number,required:!0}),UK=mr({type:String,values:["horizontal","vertical"],default:dD}),yK=et({className:{type:String,default:""},containerElement:{type:me([String,Object]),default:"div"},data:{type:me(Array),default:()=>Qo([])},direction:TCe,height:{type:[String,Number],required:!0},innerElement:{type:[String,Object],default:"div"},style:{type:me([Object,String,Array])},useIsScrolling:{type:Boolean,default:!1},width:{type:[Number,String],required:!1},perfMode:{type:Boolean,default:!0},scrollbarAlwaysOn:{type:Boolean,default:!1}}),$K=et({cache:hN,estimatedItemSize:ON,layout:UK,initScrollOffset:MN,total:xI,itemSize:dN,...yK}),RN={type:Number,default:6},BK={type:Number,default:0},wK={type:Number,default:2},wc=et({columnCache:hN,columnWidth:dN,estimatedColumnWidth:ON,estimatedRowHeight:ON,initScrollLeft:MN,initScrollTop:MN,itemKey:{type:me(Function),default:({columnIndex:t,rowIndex:e})=>`${e}:${t}`},rowCache:hN,rowHeight:dN,totalColumn:xI,totalRow:xI,hScrollbarSize:RN,vScrollbarSize:RN,scrollbarStartGap:BK,scrollbarEndGap:wK,role:String,...yK}),GK=et({alwaysOn:Boolean,class:String,layout:UK,total:xI,ratio:{type:Number,required:!0},clientSize:{type:Number,required:!0},scrollFrom:{type:Number,required:!0},scrollbarSize:RN,startGap:BK,endGap:wK,visible:Boolean}),Nc=(t,e)=>t<e?LE:HI,Zd=t=>t===rCe||t===GE||t===Tu,lH=t=>t===GE;let lE=null;function FI(t=!1){if(lE===null||t){const e=document.createElement("div"),o=e.style;o.width="50px",o.height="50px",o.overflow="scroll",o.direction="rtl";const _=document.createElement("div"),l=_.style;return l.width="100px",l.height="100px",e.appendChild(_),document.body.appendChild(e),e.scrollLeft>0?lE=hD:(e.scrollLeft=1,e.scrollLeft===0?lE=zd:lE=OD),document.body.removeChild(e),lE}return lE}function ECe({move:t,size:e,bar:o},_){const l={},c=`translate${o.axis}(${t}px)`;return l[o.size]=e,l.transform=c,l.msTransform=c,l.webkitTransform=c,_==="horizontal"?l.height="100%":l.width="100%",l}const IN=Oe({name:"ElVirtualScrollBar",props:GK,emits:["scroll","start-move","stop-move"],setup(t,{emit:e}){const o=v(()=>t.startGap+t.endGap),_=Ze("virtual-scrollbar"),l=Ze("scrollbar"),c=X(),T=X();let E=null,u=null;const d=Eo({isDragging:!1,traveled:0}),O=v(()=>$3[t.layout]),h=v(()=>t.clientSize-M(o)),I=v(()=>({position:"absolute",width:`${Tu===t.layout?h.value:t.scrollbarSize}px`,height:`${Tu===t.layout?t.scrollbarSize:h.value}px`,[_Ce[t.layout]]:"2px",right:"2px",bottom:"2px",borderRadius:"4px"})),S=v(()=>{const P=t.ratio,G=t.clientSize;if(P>=100)return Number.POSITIVE_INFINITY;if(P>=50)return P*G/100;const w=G/3;return Math.floor(Math.min(Math.max(P*G,lCe),w))}),L=v(()=>{if(!Number.isFinite(S.value))return{display:"none"};const P=`${S.value}px`;return ECe({bar:O.value,size:P,move:d.traveled},t.layout)}),p=v(()=>Math.floor(t.clientSize-S.value-M(o))),C=()=>{window.addEventListener("mousemove",N),window.addEventListener("mouseup",b);const P=M(T);P&&(u=document.onselectstart,document.onselectstart=()=>!1,P.addEventListener("touchmove",N),P.addEventListener("touchend",b))},m=()=>{window.removeEventListener("mousemove",N),window.removeEventListener("mouseup",b),document.onselectstart=u,u=null;const P=M(T);P&&(P.removeEventListener("touchmove",N),P.removeEventListener("touchend",b))},A=P=>{P.stopImmediatePropagation(),!(P.ctrlKey||[1,2].includes(P.button))&&(d.isDragging=!0,d[O.value.axis]=P.currentTarget[O.value.offset]-(P[O.value.client]-P.currentTarget.getBoundingClientRect()[O.value.direction]),e("start-move"),C())},b=()=>{d.isDragging=!1,d[O.value.axis]=0,e("stop-move"),m()},N=P=>{const{isDragging:G}=d;if(!G||!T.value||!c.value)return;const w=d[O.value.axis];if(!w)return;BS(E);const F=(c.value.getBoundingClientRect()[O.value.direction]-P[O.value.client])*-1,V=T.value[O.value.offset]-w,W=F-V;E=_u(()=>{d.traveled=Math.max(t.startGap,Math.min(W,p.value)),e("scroll",W,p.value)})},U=P=>{const G=Math.abs(P.target.getBoundingClientRect()[O.value.direction]-P[O.value.client]),w=T.value[O.value.offset]/2,F=G-w;d.traveled=Math.max(0,Math.min(F,p.value)),e("scroll",F,p.value)};return Fe(()=>t.scrollFrom,P=>{d.isDragging||(d.traveled=Math.ceil(P*p.value))}),Do(()=>{m()}),()=>pt("div",{role:"presentation",ref:c,class:[_.b(),t.class,(t.alwaysOn||d.isDragging)&&"always-on"],style:I.value,onMousedown:Ct(U,["stop","prevent"]),onTouchstartPrevent:A},pt("div",{ref:T,class:l.e("thumb"),style:L.value,onMousedown:A},[]))}}),kK=({name:t,getOffset:e,getItemSize:o,getItemOffset:_,getEstimatedTotalSize:l,getStartIndexForOffset:c,getStopIndexForStartIndex:T,initCache:E,clearCache:u,validateProps:d})=>Oe({name:t??"ElVirtualList",props:$K,emits:[GI,kI],setup(O,{emit:h,expose:I}){d(O);const S=Ht(),L=Ze("vl"),p=X(E(O,S)),C=DK(),m=X(),A=X(),b=X(),N=X({isScrolling:!1,scrollDir:"forward",scrollOffset:mt(O.initScrollOffset)?O.initScrollOffset:0,updateRequested:!1,isScrollbarDragging:!1,scrollbarAlwaysOn:O.scrollbarAlwaysOn}),U=v(()=>{const{total:Se,cache:pe}=O,{isScrolling:We,scrollDir:be,scrollOffset:Me}=M(N);if(Se===0)return[0,0,0,0];const Ie=c(O,Me,M(p)),Pe=T(O,Ie,Me,M(p)),Ae=!We||be===HI?Math.max(1,pe):1,ke=!We||be===LE?Math.max(1,pe):1;return[Math.max(0,Ie-Ae),Math.max(0,Math.min(Se-1,Pe+ke)),Ie,Pe]}),P=v(()=>l(O,M(p))),G=v(()=>Zd(O.layout)),w=v(()=>[{position:"relative",[`overflow-${G.value?"x":"y"}`]:"scroll",WebkitOverflowScrolling:"touch",willChange:"transform"},{direction:O.direction,height:mt(O.height)?`${O.height}px`:O.height,width:mt(O.width)?`${O.width}px`:O.width},O.style]),F=v(()=>{const Se=M(P),pe=M(G);return{height:pe?"100%":`${Se}px`,pointerEvents:M(N).isScrolling?"none":void 0,width:pe?`${Se}px`:"100%"}}),V=v(()=>G.value?O.width:O.height),{onWheel:W}=cCe({atStartEdge:v(()=>N.value.scrollOffset<=0),atEndEdge:v(()=>N.value.scrollOffset>=P.value),layout:v(()=>O.layout)},Se=>{var pe,We;(We=(pe=b.value).onMouseUp)==null||We.call(pe),Y(Math.min(N.value.scrollOffset+Se,P.value-V.value))}),K=()=>{const{total:Se}=O;if(Se>0){const[Me,Ie,Pe,Ae]=M(U);h(GI,Me,Ie,Pe,Ae)}const{scrollDir:pe,scrollOffset:We,updateRequested:be}=M(N);h(kI,pe,We,be)},ee=Se=>{const{clientHeight:pe,scrollHeight:We,scrollTop:be}=Se.currentTarget,Me=M(N);if(Me.scrollOffset===be)return;const Ie=Math.max(0,Math.min(be,We-pe));N.value={...Me,isScrolling:!0,scrollDir:Nc(Me.scrollOffset,Ie),scrollOffset:Ie,updateRequested:!1},Lt(Q)},j=Se=>{const{clientWidth:pe,scrollLeft:We,scrollWidth:be}=Se.currentTarget,Me=M(N);if(Me.scrollOffset===We)return;const{direction:Ie}=O;let Pe=We;if(Ie===GE)switch(FI()){case zd:{Pe=-We;break}case hD:{Pe=be-pe-We;break}}Pe=Math.max(0,Math.min(Pe,be-pe)),N.value={...Me,isScrolling:!0,scrollDir:Nc(Me.scrollOffset,Pe),scrollOffset:Pe,updateRequested:!1},Lt(Q)},J=Se=>{M(G)?j(Se):ee(Se),K()},ie=(Se,pe)=>{const We=(P.value-V.value)/pe*Se;Y(Math.min(P.value-V.value,We))},Y=Se=>{Se=Math.max(Se,0),Se!==M(N).scrollOffset&&(N.value={...M(N),scrollOffset:Se,scrollDir:Nc(M(N).scrollOffset,Se),updateRequested:!0},Lt(Q))},re=(Se,pe=kn)=>{const{scrollOffset:We}=M(N);Se=Math.max(0,Math.min(Se,O.total-1)),Y(e(O,Se,pe,We,M(p)))},H=Se=>{const{direction:pe,itemSize:We,layout:be}=O,Me=C.value(u&&We,u&&be,u&&pe);let Ie;if(so(Me,String(Se)))Ie=Me[Se];else{const Pe=_(O,Se,M(p)),Ae=o(O,Se,M(p)),ke=M(G),ve=pe===GE,Te=ke?Pe:0;Me[Se]=Ie={position:"absolute",left:ve?void 0:`${Te}px`,right:ve?`${Te}px`:void 0,top:ke?0:`${Pe}px`,height:ke?"100%":`${Ae}px`,width:ke?`${Ae}px`:"100%"}}return Ie},Q=()=>{N.value.isScrolling=!1,Lt(()=>{C.value(-1,null,null)})},ae=()=>{const Se=m.value;Se&&(Se.scrollTop=0)};Bt(()=>{if(!ro)return;const{initScrollOffset:Se}=O,pe=M(m);mt(Se)&&pe&&(M(G)?pe.scrollLeft=Se:pe.scrollTop=Se),K()}),_l(()=>{const{direction:Se,layout:pe}=O,{scrollOffset:We,updateRequested:be}=M(N),Me=M(m);if(be&&Me)if(pe===Tu)if(Se===GE)switch(FI()){case zd:{Me.scrollLeft=-We;break}case OD:{Me.scrollLeft=We;break}default:{const{clientWidth:Ie,scrollWidth:Pe}=Me;Me.scrollLeft=Pe-Ie-We;break}}else Me.scrollLeft=We;else Me.scrollTop=We});const ge={ns:L,clientSize:V,estimatedTotalSize:P,windowStyle:w,windowRef:m,innerRef:A,innerStyle:F,itemsToRender:U,scrollbarRef:b,states:N,getItemStyle:H,onScroll:J,onScrollbarScroll:ie,onWheel:W,scrollTo:Y,scrollToItem:re,resetScrollTop:ae};return I({windowRef:m,innerRef:A,getItemStyleCache:C,scrollTo:Y,scrollToItem:re,resetScrollTop:ae,states:N}),ge},render(O){var h;const{$slots:I,className:S,clientSize:L,containerElement:p,data:C,getItemStyle:m,innerElement:A,itemsToRender:b,innerStyle:N,layout:U,total:P,onScroll:G,onScrollbarScroll:w,onWheel:F,states:V,useIsScrolling:W,windowStyle:K,ns:ee}=O,[j,J]=b,ie=Kt(p),Y=Kt(A),re=[];if(P>0)for(let ge=j;ge<=J;ge++)re.push((h=I.default)==null?void 0:h.call(I,{data:C,key:ge,index:ge,isScrolling:W?V.isScrolling:void 0,style:m(ge)}));const H=[pt(Y,{style:N,ref:"innerRef"},vt(Y)?re:{default:()=>re})],Q=pt(IN,{ref:"scrollbarRef",clientSize:L,layout:U,onScroll:w,ratio:L*100/this.estimatedTotalSize,scrollFrom:V.scrollOffset/(this.estimatedTotalSize-L),total:P}),ae=pt(ie,{class:[ee.e("window"),S],style:K,onScroll:G,onWheel:F,ref:"windowRef",key:0},vt(ie)?[H]:{default:()=>[H]});return pt("div",{key:0,class:[ee.e("wrapper"),V.scrollbarAlwaysOn?"always-on":""]},[ae,Q])}}),HK=kK({name:"ElFixedSizeList",getItemOffset:({itemSize:t},e)=>e*t,getItemSize:({itemSize:t})=>t,getEstimatedTotalSize:({total:t,itemSize:e})=>e*t,getOffset:({height:t,total:e,itemSize:o,layout:_,width:l},c,T,E)=>{const u=Zd(_)?l:t,d=Math.max(0,e*o-u),O=Math.min(d,c*o),h=Math.max(0,(c+1)*o-u);switch(T===jS&&(E>=h-u&&E<=O+u?T=kn:T=__),T){case Yd:return O;case Kd:return h;case __:{const I=Math.round(h+(O-h)/2);return I<Math.ceil(u/2)?0:I>d+Math.floor(u/2)?d:I}case kn:default:return E>=h&&E<=O?E:E<h?h:O}},getStartIndexForOffset:({total:t,itemSize:e},o)=>Math.max(0,Math.min(t-1,Math.floor(o/e))),getStopIndexForStartIndex:({height:t,total:e,itemSize:o,layout:_,width:l},c,T)=>{const E=c*o,u=Zd(_)?l:t,d=Math.ceil((u+T-E)/o);return Math.max(0,Math.min(e-1,c+d-1))},initCache(){},clearCache:!0,validateProps(){}}),fE=(t,e,o)=>{const{itemSize:_}=t,{items:l,lastVisitedIndex:c}=o;if(e>c){let T=0;if(c>=0){const E=l[c];T=E.offset+E.size}for(let E=c+1;E<=e;E++){const u=_(E);l[E]={offset:T,size:u},T+=u}o.lastVisitedIndex=e}return l[e]},uCe=(t,e,o)=>{const{items:_,lastVisitedIndex:l}=e;return(l>0?_[l].offset:0)>=o?xK(t,e,0,l,o):gCe(t,e,Math.max(0,l),o)},xK=(t,e,o,_,l)=>{for(;o<=_;){const c=o+Math.floor((_-o)/2),T=fE(t,c,e).offset;if(T===l)return c;T<l?o=c+1:T>l&&(_=c-1)}return Math.max(0,o-1)},gCe=(t,e,o,_)=>{const{total:l}=t;let c=1;for(;o<l&&fE(t,o,e).offset<_;)o+=c,c*=2;return xK(t,e,Math.floor(o/2),Math.min(o,l-1),_)},aH=({total:t},{items:e,estimatedItemSize:o,lastVisitedIndex:_})=>{let l=0;if(_>=t&&(_=t-1),_>=0){const E=e[_];l=E.offset+E.size}const T=(t-_-1)*o;return l+T},dCe=kK({name:"ElDynamicSizeList",getItemOffset:(t,e,o)=>fE(t,e,o).offset,getItemSize:(t,e,{items:o})=>o[e].size,getEstimatedTotalSize:aH,getOffset:(t,e,o,_,l)=>{const{height:c,layout:T,width:E}=t,u=Zd(T)?E:c,d=fE(t,e,l),O=aH(t,l),h=Math.max(0,Math.min(O-u,d.offset)),I=Math.max(0,d.offset-u+d.size);switch(o===jS&&(_>=I-u&&_<=h+u?o=kn:o=__),o){case Yd:return h;case Kd:return I;case __:return Math.round(I+(h-I)/2);case kn:default:return _>=I&&_<=h?_:_<I?I:h}},getStartIndexForOffset:(t,e,o)=>uCe(t,o,e),getStopIndexForStartIndex:(t,e,o,_)=>{const{height:l,total:c,layout:T,width:E}=t,u=Zd(T)?E:l,d=fE(t,e,_),O=o+u;let h=d.offset+d.size,I=e;for(;I<c-1&&h<O;)I++,h+=fE(t,I,_).size;return I},initCache({estimatedItemSize:t=gN},e){const o={items:{},estimatedItemSize:t,lastVisitedIndex:-1};return o.clearCacheAfterIndex=(_,l=!0)=>{var c,T;o.lastVisitedIndex=Math.min(o.lastVisitedIndex,_-1),(c=e.exposed)==null||c.getItemStyleCache(-1),l&&((T=e.proxy)==null||T.$forceUpdate())},o},clearCache:!1,validateProps:({itemSize:t})=>{}}),OCe=({atXEndEdge:t,atXStartEdge:e,atYEndEdge:o,atYStartEdge:_},l)=>{let c=null,T=0,E=0;const u=(O,h)=>{const I=O<=0&&e.value||O>=0&&t.value,S=h<=0&&_.value||h>=0&&o.value;return I&&S};return{hasReachedEdge:u,onWheel:O=>{BS(c);let h=O.deltaX,I=O.deltaY;Math.abs(h)>Math.abs(I)?I=0:h=0,O.shiftKey&&I!==0&&(h=I,I=0),!(u(T,E)&&u(T+h,E+I))&&(T+=h,E+=I,O.preventDefault(),c=_u(()=>{l(T,E),T=0,E=0}))}}},FK=({name:t,clearCache:e,getColumnPosition:o,getColumnStartIndexForOffset:_,getColumnStopIndexForStartIndex:l,getEstimatedTotalHeight:c,getEstimatedTotalWidth:T,getColumnOffset:E,getRowOffset:u,getRowPosition:d,getRowStartIndexForOffset:O,getRowStopIndexForStartIndex:h,initCache:I,injectToInstance:S,validateProps:L})=>Oe({name:t??"ElVirtualList",props:wc,emits:[GI,kI],setup(p,{emit:C,expose:m,slots:A}){const b=Ze("vl");L(p);const N=Ht(),U=X(I(p,N));S==null||S(N,U);const P=X(),G=X(),w=X(),F=X(null),V=X({isScrolling:!1,scrollLeft:mt(p.initScrollLeft)?p.initScrollLeft:0,scrollTop:mt(p.initScrollTop)?p.initScrollTop:0,updateRequested:!1,xAxisScrollDir:LE,yAxisScrollDir:LE}),W=DK(),K=v(()=>Number.parseInt(`${p.height}`,10)),ee=v(()=>Number.parseInt(`${p.width}`,10)),j=v(()=>{const{totalColumn:De,totalRow:Xe,columnCache:Ke}=p,{isScrolling:Be,xAxisScrollDir:qe,scrollLeft:xe}=M(V);if(De===0||Xe===0)return[0,0,0,0];const Le=_(p,xe,M(U)),je=l(p,Le,xe,M(U)),He=!Be||qe===HI?Math.max(1,Ke):1,Je=!Be||qe===LE?Math.max(1,Ke):1;return[Math.max(0,Le-He),Math.max(0,Math.min(De-1,je+Je)),Le,je]}),J=v(()=>{const{totalColumn:De,totalRow:Xe,rowCache:Ke}=p,{isScrolling:Be,yAxisScrollDir:qe,scrollTop:xe}=M(V);if(De===0||Xe===0)return[0,0,0,0];const Le=O(p,xe,M(U)),je=h(p,Le,xe,M(U)),He=!Be||qe===HI?Math.max(1,Ke):1,Je=!Be||qe===LE?Math.max(1,Ke):1;return[Math.max(0,Le-He),Math.max(0,Math.min(Xe-1,je+Je)),Le,je]}),ie=v(()=>c(p,M(U))),Y=v(()=>T(p,M(U))),re=v(()=>{var De;return[{position:"relative",overflow:"hidden",WebkitOverflowScrolling:"touch",willChange:"transform"},{direction:p.direction,height:mt(p.height)?`${p.height}px`:p.height,width:mt(p.width)?`${p.width}px`:p.width},(De=p.style)!=null?De:{}]}),H=v(()=>{const De=`${M(Y)}px`;return{height:`${M(ie)}px`,pointerEvents:M(V).isScrolling?"none":void 0,width:De}}),Q=()=>{const{totalColumn:De,totalRow:Xe}=p;if(De>0&&Xe>0){const[je,He,Je,St]=M(j),[Ot,Nt,z,y]=M(J);C(GI,{columnCacheStart:je,columnCacheEnd:He,rowCacheStart:Ot,rowCacheEnd:Nt,columnVisibleStart:Je,columnVisibleEnd:St,rowVisibleStart:z,rowVisibleEnd:y})}const{scrollLeft:Ke,scrollTop:Be,updateRequested:qe,xAxisScrollDir:xe,yAxisScrollDir:Le}=M(V);C(kI,{xAxisScrollDir:xe,scrollLeft:Ke,yAxisScrollDir:Le,scrollTop:Be,updateRequested:qe})},ae=De=>{const{clientHeight:Xe,clientWidth:Ke,scrollHeight:Be,scrollLeft:qe,scrollTop:xe,scrollWidth:Le}=De.currentTarget,je=M(V);if(je.scrollTop===xe&&je.scrollLeft===qe)return;let He=qe;if(lH(p.direction))switch(FI()){case zd:He=-qe;break;case hD:He=Le-Ke-qe;break}V.value={...je,isScrolling:!0,scrollLeft:He,scrollTop:Math.max(0,Math.min(xe,Be-Xe)),updateRequested:!0,xAxisScrollDir:Nc(je.scrollLeft,He),yAxisScrollDir:Nc(je.scrollTop,xe)},Lt(()=>Ie()),Pe(),Q()},ge=(De,Xe)=>{const Ke=M(K),Be=(ie.value-Ke)/Xe*De;We({scrollTop:Math.min(ie.value-Ke,Be)})},Se=(De,Xe)=>{const Ke=M(ee),Be=(Y.value-Ke)/Xe*De;We({scrollLeft:Math.min(Y.value-Ke,Be)})},{onWheel:pe}=OCe({atXStartEdge:v(()=>V.value.scrollLeft<=0),atXEndEdge:v(()=>V.value.scrollLeft>=Y.value-M(ee)),atYStartEdge:v(()=>V.value.scrollTop<=0),atYEndEdge:v(()=>V.value.scrollTop>=ie.value-M(K))},(De,Xe)=>{var Ke,Be,qe,xe;(Be=(Ke=G.value)==null?void 0:Ke.onMouseUp)==null||Be.call(Ke),(xe=(qe=w.value)==null?void 0:qe.onMouseUp)==null||xe.call(qe);const Le=M(ee),je=M(K);We({scrollLeft:Math.min(V.value.scrollLeft+De,Y.value-Le),scrollTop:Math.min(V.value.scrollTop+Xe,ie.value-je)})}),We=({scrollLeft:De=V.value.scrollLeft,scrollTop:Xe=V.value.scrollTop})=>{De=Math.max(De,0),Xe=Math.max(Xe,0);const Ke=M(V);Xe===Ke.scrollTop&&De===Ke.scrollLeft||(V.value={...Ke,xAxisScrollDir:Nc(Ke.scrollLeft,De),yAxisScrollDir:Nc(Ke.scrollTop,Xe),scrollLeft:De,scrollTop:Xe,updateRequested:!0},Lt(()=>Ie()),Pe(),Q())},be=(De=0,Xe=0,Ke=kn)=>{const Be=M(V);Xe=Math.max(0,Math.min(Xe,p.totalColumn-1)),De=Math.max(0,Math.min(De,p.totalRow-1));const qe=VX(b.namespace.value),xe=M(U),Le=c(p,xe),je=T(p,xe);We({scrollLeft:E(p,Xe,Ke,Be.scrollLeft,xe,je>p.width?qe:0),scrollTop:u(p,De,Ke,Be.scrollTop,xe,Le>p.height?qe:0)})},Me=(De,Xe)=>{const{columnWidth:Ke,direction:Be,rowHeight:qe}=p,xe=W.value(e&&Ke,e&&qe,e&&Be),Le=`${De},${Xe}`;if(so(xe,Le))return xe[Le];{const[,je]=o(p,Xe,M(U)),He=M(U),Je=lH(Be),[St,Ot]=d(p,De,He),[Nt]=o(p,Xe,He);return xe[Le]={position:"absolute",left:Je?void 0:`${je}px`,right:Je?`${je}px`:void 0,top:`${Ot}px`,height:`${St}px`,width:`${Nt}px`},xe[Le]}},Ie=()=>{V.value.isScrolling=!1,Lt(()=>{W.value(-1,null,null)})};Bt(()=>{if(!ro)return;const{initScrollLeft:De,initScrollTop:Xe}=p,Ke=M(P);Ke&&(mt(De)&&(Ke.scrollLeft=De),mt(Xe)&&(Ke.scrollTop=Xe)),Q()});const Pe=()=>{const{direction:De}=p,{scrollLeft:Xe,scrollTop:Ke,updateRequested:Be}=M(V),qe=M(P);if(Be&&qe){if(De===GE)switch(FI()){case zd:{qe.scrollLeft=-Xe;break}case OD:{qe.scrollLeft=Xe;break}default:{const{clientWidth:xe,scrollWidth:Le}=qe;qe.scrollLeft=Le-xe-Xe;break}}else qe.scrollLeft=Math.max(0,Xe);qe.scrollTop=Math.max(0,Ke)}},{resetAfterColumnIndex:Ae,resetAfterRowIndex:ke,resetAfter:ve}=N.proxy;m({windowRef:P,innerRef:F,getItemStyleCache:W,scrollTo:We,scrollToItem:be,states:V,resetAfterColumnIndex:Ae,resetAfterRowIndex:ke,resetAfter:ve});const Te=()=>{const{scrollbarAlwaysOn:De,scrollbarStartGap:Xe,scrollbarEndGap:Ke,totalColumn:Be,totalRow:qe}=p,xe=M(ee),Le=M(K),je=M(Y),He=M(ie),{scrollLeft:Je,scrollTop:St}=M(V),Ot=pt(IN,{ref:G,alwaysOn:De,startGap:Xe,endGap:Ke,class:b.e("horizontal"),clientSize:xe,layout:"horizontal",onScroll:Se,ratio:xe*100/je,scrollFrom:Je/(je-xe),total:qe,visible:!0}),Nt=pt(IN,{ref:w,alwaysOn:De,startGap:Xe,endGap:Ke,class:b.e("vertical"),clientSize:Le,layout:"vertical",onScroll:ge,ratio:Le*100/He,scrollFrom:St/(He-Le),total:Be,visible:!0});return{horizontalScrollbar:Ot,verticalScrollbar:Nt}},Re=()=>{var De;const[Xe,Ke]=M(j),[Be,qe]=M(J),{data:xe,totalColumn:Le,totalRow:je,useIsScrolling:He,itemKey:Je}=p,St=[];if(je>0&&Le>0)for(let Ot=Be;Ot<=qe;Ot++)for(let Nt=Xe;Nt<=Ke;Nt++)St.push((De=A.default)==null?void 0:De.call(A,{columnIndex:Nt,data:xe,key:Je({columnIndex:Nt,data:xe,rowIndex:Ot}),isScrolling:He?M(V).isScrolling:void 0,style:Me(Ot,Nt),rowIndex:Ot}));return St},Ue=()=>{const De=Kt(p.innerElement),Xe=Re();return[pt(De,{style:M(H),ref:F},vt(De)?Xe:{default:()=>Xe})]};return()=>{const De=Kt(p.containerElement),{horizontalScrollbar:Xe,verticalScrollbar:Ke}=Te(),Be=Ue();return pt("div",{key:0,class:b.e("wrapper"),role:p.role},[pt(De,{class:p.className,style:M(re),onScroll:ae,onWheel:pe,ref:P},vt(De)?Be:{default:()=>Be}),Xe,Ke])}}}),hCe=FK({name:"ElFixedSizeGrid",getColumnPosition:({columnWidth:t},e)=>[t,e*t],getRowPosition:({rowHeight:t},e)=>[t,e*t],getEstimatedTotalHeight:({totalRow:t,rowHeight:e})=>e*t,getEstimatedTotalWidth:({totalColumn:t,columnWidth:e})=>e*t,getColumnOffset:({totalColumn:t,columnWidth:e,width:o},_,l,c,T,E)=>{o=Number(o);const u=Math.max(0,t*e-o),d=Math.min(u,_*e),O=Math.max(0,_*e-o+E+e);switch(l==="smart"&&(c>=O-o&&c<=d+o?l=kn:l=__),l){case Yd:return d;case Kd:return O;case __:{const h=Math.round(O+(d-O)/2);return h<Math.ceil(o/2)?0:h>u+Math.floor(o/2)?u:h}case kn:default:return c>=O&&c<=d?c:O>d||c<O?O:d}},getRowOffset:({rowHeight:t,height:e,totalRow:o},_,l,c,T,E)=>{e=Number(e);const u=Math.max(0,o*t-e),d=Math.min(u,_*t),O=Math.max(0,_*t-e+E+t);switch(l===jS&&(c>=O-e&&c<=d+e?l=kn:l=__),l){case Yd:return d;case Kd:return O;case __:{const h=Math.round(O+(d-O)/2);return h<Math.ceil(e/2)?0:h>u+Math.floor(e/2)?u:h}case kn:default:return c>=O&&c<=d?c:O>d||c<O?O:d}},getColumnStartIndexForOffset:({columnWidth:t,totalColumn:e},o)=>Math.max(0,Math.min(e-1,Math.floor(o/t))),getColumnStopIndexForStartIndex:({columnWidth:t,totalColumn:e,width:o},_,l)=>{const c=_*t,T=Math.ceil((o+l-c)/t);return Math.max(0,Math.min(e-1,_+T-1))},getRowStartIndexForOffset:({rowHeight:t,totalRow:e},o)=>Math.max(0,Math.min(e-1,Math.floor(o/t))),getRowStopIndexForStartIndex:({rowHeight:t,totalRow:e,height:o},_,l)=>{const c=_*t,T=Math.ceil((o+l-c)/t);return Math.max(0,Math.min(e-1,_+T-1))},initCache:()=>{},clearCache:!0,validateProps:({columnWidth:t,rowHeight:e})=>{}}),{max:VI,min:VK,floor:WK}=Math,MCe={column:"columnWidth",row:"rowHeight"},SN={column:"lastVisitedColumnIndex",row:"lastVisitedRowIndex"},W_=(t,e,o,_)=>{const[l,c,T]=[o[_],t[MCe[_]],o[SN[_]]];if(e>T){let E=0;if(T>=0){const u=l[T];E=u.offset+u.size}for(let u=T+1;u<=e;u++){const d=c(u);l[u]={offset:E,size:d},E+=d}o[SN[_]]=e}return l[e]},XK=(t,e,o,_,l,c)=>{for(;o<=_;){const T=o+WK((_-o)/2),E=W_(t,T,e,c).offset;if(E===l)return T;E<l?o=T+1:_=T-1}return VI(0,o-1)},RCe=(t,e,o,_,l)=>{const c=l==="column"?t.totalColumn:t.totalRow;let T=1;for(;o<c&&W_(t,o,e,l).offset<_;)o+=T,T*=2;return XK(t,e,WK(o/2),VK(o,c-1),_,l)},cH=(t,e,o,_)=>{const[l,c]=[e[_],e[SN[_]]];return(c>0?l[c].offset:0)>=o?XK(t,e,0,c,o,_):RCe(t,e,VI(0,c),o,_)},YK=({totalRow:t},{estimatedRowHeight:e,lastVisitedRowIndex:o,row:_})=>{let l=0;if(o>=t&&(o=t-1),o>=0){const E=_[o];l=E.offset+E.size}const T=(t-o-1)*e;return l+T},KK=({totalColumn:t},{column:e,estimatedColumnWidth:o,lastVisitedColumnIndex:_})=>{let l=0;if(_>t&&(_=t-1),_>=0){const E=e[_];l=E.offset+E.size}const T=(t-_-1)*o;return l+T},ICe={column:KK,row:YK},TH=(t,e,o,_,l,c,T)=>{const[E,u]=[c==="row"?t.height:t.width,ICe[c]],d=W_(t,e,l,c),O=u(t,l),h=VI(0,VK(O-E,d.offset)),I=VI(0,d.offset-E+T+d.size);switch(o===jS&&(_>=I-E&&_<=h+E?o=kn:o=__),o){case Yd:return h;case Kd:return I;case __:return Math.round(I+(h-I)/2);case kn:default:return _>=I&&_<=h?_:I>h||_<I?I:h}},SCe=FK({name:"ElDynamicSizeGrid",getColumnPosition:(t,e,o)=>{const _=W_(t,e,o,"column");return[_.size,_.offset]},getRowPosition:(t,e,o)=>{const _=W_(t,e,o,"row");return[_.size,_.offset]},getColumnOffset:(t,e,o,_,l,c)=>TH(t,e,o,_,l,"column",c),getRowOffset:(t,e,o,_,l,c)=>TH(t,e,o,_,l,"row",c),getColumnStartIndexForOffset:(t,e,o)=>cH(t,o,e,"column"),getColumnStopIndexForStartIndex:(t,e,o,_)=>{const l=W_(t,e,_,"column"),c=o+t.width;let T=l.offset+l.size,E=e;for(;E<t.totalColumn-1&&T<c;)E++,T+=W_(t,e,_,"column").size;return E},getEstimatedTotalHeight:YK,getEstimatedTotalWidth:KK,getRowStartIndexForOffset:(t,e,o)=>cH(t,o,e,"row"),getRowStopIndexForStartIndex:(t,e,o,_)=>{const{totalRow:l,height:c}=t,T=W_(t,e,_,"row"),E=o+c;let u=T.size+T.offset,d=e;for(;d<l-1&&u<E;)d++,u+=W_(t,d,_,"row").size;return d},injectToInstance:(t,e)=>{const o=({columnIndex:c,rowIndex:T},E)=>{var u,d;E=bs(E)?!0:E,mt(c)&&(e.value.lastVisitedColumnIndex=Math.min(e.value.lastVisitedColumnIndex,c-1)),mt(T)&&(e.value.lastVisitedRowIndex=Math.min(e.value.lastVisitedRowIndex,T-1)),(u=t.exposed)==null||u.getItemStyleCache.value(-1,null,null),E&&((d=t.proxy)==null||d.$forceUpdate())},_=(c,T)=>{o({columnIndex:c},T)},l=(c,T)=>{o({rowIndex:c},T)};Object.assign(t.proxy,{resetAfterColumnIndex:_,resetAfterRowIndex:l,resetAfter:o})},initCache:({estimatedColumnWidth:t=gN,estimatedRowHeight:e=gN})=>({column:{},estimatedColumnWidth:t,estimatedRowHeight:e,lastVisitedColumnIndex:-1,lastVisitedRowIndex:-1,row:{}}),clearCache:!1,validateProps:({columnWidth:t,rowHeight:e})=>{}}),pCe=Oe({props:{item:{type:Object,required:!0},style:Object,height:Number},setup(){return{ns:Ze("select")}}});function LCe(t,e,o,_,l,c){return t.item.isTitle?(B(),se("div",{key:0,class:k(t.ns.be("group","title")),style:dt([t.style,{lineHeight:`${t.height}px`}])},Qe(t.item.label),7)):(B(),se("div",{key:1,class:k(t.ns.be("group","split")),style:dt(t.style)},[te("span",{class:k(t.ns.be("group","split-dash")),style:dt({top:`${t.height/2}px`})},null,6)],6))}var fCe=tt(pCe,[["render",LCe],["__file","group-item.vue"]]);function mCe(t,{emit:e}){return{hoverItem:()=>{t.disabled||e("hover",t.index)},selectOptionClick:()=>{t.disabled||e("select",t.item,t.index)}}}const zK={label:"label",value:"value",disabled:"disabled",options:"options"};function qS(t){const e=v(()=>({...zK,...t.props}));return{aliasProps:e,getLabel:T=>ds(T,e.value.label),getValue:T=>ds(T,e.value.value),getDisabled:T=>ds(T,e.value.disabled),getOptions:T=>ds(T,e.value.options)}}const CCe=et({allowCreate:Boolean,autocomplete:{type:me(String),default:"none"},automaticDropdown:Boolean,clearable:Boolean,clearIcon:{type:Lo,default:va},effect:{type:me(String),default:"light"},collapseTags:Boolean,collapseTagsTooltip:{type:Boolean,default:!1},maxCollapseTags:{type:Number,default:1},defaultFirstOption:Boolean,disabled:Boolean,estimatedOptionHeight:{type:Number,default:void 0},filterable:Boolean,filterMethod:Function,height:{type:Number,default:274},itemHeight:{type:Number,default:34},id:String,loading:Boolean,loadingText:String,modelValue:{type:me([Array,String,Number,Boolean,Object])},multiple:Boolean,multipleLimit:{type:Number,default:0},name:String,noDataText:String,noMatchText:String,remoteMethod:Function,reserveKeyword:{type:Boolean,default:!0},options:{type:me(Array),required:!0},placeholder:{type:String},teleported:Zs.teleported,persistent:{type:Boolean,default:!0},popperClass:{type:String,default:""},popperOptions:{type:me(Object),default:()=>({})},remote:Boolean,size:Ys,props:{type:me(Object),default:()=>zK},valueKey:{type:String,default:"value"},scrollbarAlwaysOn:{type:Boolean,default:!1},validateEvent:{type:Boolean,default:!0},placement:{type:me(String),values:tT,default:"bottom-start"},tagType:{...KS.type,default:"info"},ariaLabel:{type:String,default:void 0}}),ACe=et({data:Array,disabled:Boolean,hovering:Boolean,item:{type:me(Object),required:!0},index:Number,style:Object,selected:Boolean,created:Boolean}),MD=Symbol("ElSelectV2Injection"),bCe=Oe({props:ACe,emits:["select","hover"],setup(t,{emit:e}){const o=lt(MD),_=Ze("select"),{hoverItem:l,selectOptionClick:c}=mCe(t,{emit:e}),{getLabel:T}=qS(o.props);return{ns:_,hoverItem:l,selectOptionClick:c,getLabel:T}}}),NCe=["aria-selected"];function PCe(t,e,o,_,l,c){return B(),se("li",{"aria-selected":t.selected,style:dt(t.style),class:k([t.ns.be("dropdown","item"),t.ns.is("selected",t.selected),t.ns.is("disabled",t.disabled),t.ns.is("created",t.created),t.ns.is("hovering",t.hovering)]),onMouseenter:e[0]||(e[0]=(...T)=>t.hoverItem&&t.hoverItem(...T)),onClick:e[1]||(e[1]=Ct((...T)=>t.selectOptionClick&&t.selectOptionClick(...T),["stop"]))},[ye(t.$slots,"default",{item:t.item,index:t.index,disabled:t.disabled},()=>[te("span",null,Qe(t.getLabel(t.item)),1)])],46,NCe)}var vCe=tt(bCe,[["render",PCe],["__file","option-item.vue"]]),DCe=Oe({name:"ElSelectDropdown",props:{data:{type:Array,required:!0},hoveringIndex:Number,width:Number},setup(t,{slots:e,expose:o}){const _=lt(MD),l=Ze("select"),{getLabel:c,getValue:T,getDisabled:E}=qS(_.props),u=X([]),d=X(),O=v(()=>t.data.length);Fe(()=>O.value,()=>{var W,K;(K=(W=_.tooltipRef.value).updatePopper)==null||K.call(W)});const h=v(()=>bs(_.props.estimatedOptionHeight)),I=v(()=>h.value?{itemSize:_.props.itemHeight}:{estimatedSize:_.props.estimatedOptionHeight,itemSize:W=>u.value[W]}),S=(W=[],K)=>{const{props:{valueKey:ee}}=_;return Zt(K)?W&&W.some(j=>Mo(ds(j,ee))===ds(K,ee)):W.includes(K)},L=(W,K)=>{if(Zt(K)){const{valueKey:ee}=_.props;return ds(W,ee)===ds(K,ee)}else return W===K},p=(W,K)=>_.props.multiple?S(W,T(K)):L(W,T(K)),C=(W,K)=>{const{disabled:ee,multiple:j,multipleLimit:J}=_.props;return ee||!K&&(j?J>0&&W.length>=J:!1)},m=W=>t.hoveringIndex===W;o({listRef:d,isSized:h,isItemDisabled:C,isItemHovering:m,isItemSelected:p,scrollToItem:W=>{const K=d.value;K&&K.scrollToItem(W)},resetScrollTop:()=>{const W=d.value;W&&W.resetScrollTop()}});const N=W=>{const{index:K,data:ee,style:j}=W,J=M(h),{itemSize:ie,estimatedSize:Y}=M(I),{modelValue:re}=_.props,{onSelect:H,onHover:Q}=_,ae=ee[K];if(ae.type==="Group")return ne(fCe,{item:ae,style:j,height:J?ie:Y},null);const ge=p(re,ae),Se=C(re,ge),pe=m(K);return ne(vCe,Yt(W,{selected:ge,disabled:E(ae)||Se,created:!!ae.created,hovering:pe,item:ae,onSelect:H,onHover:Q}),{default:We=>{var be;return((be=e.default)==null?void 0:be.call(e,We))||ne("span",null,[c(ae)])}})},{onKeyboardNavigate:U,onKeyboardSelect:P}=_,G=()=>{U("forward")},w=()=>{U("backward")},F=()=>{_.expanded=!1},V=W=>{const{code:K}=W,{tab:ee,esc:j,down:J,up:ie,enter:Y}=Rt;switch(K!==ee&&(W.preventDefault(),W.stopPropagation()),K){case ee:case j:{F();break}case J:{G();break}case ie:{w();break}case Y:{P();break}}};return()=>{var W;const{data:K,width:ee}=t,{height:j,multiple:J,scrollbarAlwaysOn:ie}=_.props;if(K.length===0)return ne("div",{class:l.b("dropdown"),style:{width:`${ee}px`}},[(W=e.empty)==null?void 0:W.call(e)]);const Y=M(h)?HK:dCe;return ne("div",{class:[l.b("dropdown"),l.is("multiple",J)]},[ne(Y,Yt({ref:d},M(I),{className:l.be("dropdown","list"),scrollbarAlwaysOn:ie,data:K,height:j,width:ee,total:K.length,onKeydown:V}),{default:re=>ne(N,re,null)})])}}});function UCe(t,e){const{aliasProps:o,getLabel:_,getValue:l}=qS(t),c=X(0),T=X(null),E=v(()=>t.allowCreate&&t.filterable);function u(S){const L=p=>l(p)===S;return t.options&&t.options.some(L)||e.createdOptions.some(L)}function d(S){E.value&&(t.multiple&&S.created?c.value++:T.value=S)}function O(S){if(E.value)if(S&&S.length>0){if(u(S))return;const L={[o.value.value]:S,[o.value.label]:S,created:!0,[o.value.disabled]:!1};e.createdOptions.length>=c.value?e.createdOptions[c.value]=L:e.createdOptions.push(L)}else if(t.multiple)e.createdOptions.length=c.value;else{const L=T.value;e.createdOptions.length=0,L&&L.created&&e.createdOptions.push(L)}}function h(S){if(!E.value||!S||!S.created||S.created&&t.reserveKeyword&&e.inputValue===_(S))return;const L=e.createdOptions.findIndex(p=>l(p)===l(S));~L&&(e.createdOptions.splice(L,1),c.value--)}function I(){E.value&&(e.createdOptions.length=0,c.value=0)}return{createNewOption:O,removeNewOption:h,selectNewOption:d,clearAllNewOption:I}}const yCe=11,$Ce=(t,e)=>{const{t:o}=lo(),_=Ze("select"),l=Ze("input"),{form:c,formItem:T}=Gi(),{inputId:E}=I_(t,{formItemContext:T}),{getLabel:u,getValue:d,getDisabled:O,getOptions:h}=qS(t),I=Eo({inputValue:"",cachedOptions:[],createdOptions:[],hoveringIndex:-1,inputHovering:!1,selectionWidth:0,calculatorWidth:0,previousQuery:null,previousValue:void 0,selectedLabel:"",menuVisibleOnFocus:!1,isBeforeHide:!1}),S=X(-1),L=X(-1),p=X(null),C=X(null),m=X(null),A=X(null),b=X(null),N=X(null),U=X(null),P=X(null),G=X(null),w=X(null),{wrapperRef:F,isFocused:V,handleFocus:W,handleBlur:K}=xS(b,{afterFocus(){t.automaticDropdown&&!J.value&&(J.value=!0,I.menuVisibleOnFocus=!0)},beforeBlur(nt){var jt,to;return((jt=m.value)==null?void 0:jt.isFocusInsideContent(nt))||((to=A.value)==null?void 0:to.isFocusInsideContent(nt))},afterBlur(){J.value=!1,I.menuVisibleOnFocus=!1}}),ee=X([]),j=X([]),J=X(!1),ie=v(()=>t.disabled||(c==null?void 0:c.disabled)),Y=v(()=>{const nt=j.value.length*t.itemHeight;return nt>t.height?t.height:nt}),re=v(()=>t.multiple?rt(t.modelValue)&&t.modelValue.length>0:t.modelValue!==void 0&&t.modelValue!==null&&t.modelValue!==""),H=v(()=>t.clearable&&!ie.value&&I.inputHovering&&re.value),Q=v(()=>t.remote&&t.filterable?"":Tl),ae=v(()=>Q.value&&_.is("reverse",J.value)),ge=v(()=>(T==null?void 0:T.validateState)||""),Se=v(()=>yv[ge.value]),pe=v(()=>t.remote?300:0),We=v(()=>t.loading?t.loadingText||o("el.select.loading"):t.remote&&!I.inputValue&&ee.value.length===0?!1:t.filterable&&I.inputValue&&ee.value.length>0&&j.value.length===0?t.noMatchText||o("el.select.noMatch"):ee.value.length===0?t.noDataText||o("el.select.noData"):null),be=nt=>{const jt=to=>{if(t.filterable&&At(t.filterMethod)||t.filterable&&t.remote&&At(t.remoteMethod))return!0;const co=new RegExp(Cv(nt),"i");return nt?co.test(u(to)||""):!0};return t.loading?[]:[...I.createdOptions,...t.options].reduce((to,co)=>{const Qn=h(co);if(rt(Qn)){const f_=Qn.filter(jt);f_.length>0&&to.push({label:u(co),isTitle:!0,type:"Group"},...f_,{type:"Group"})}else(t.remote||jt(co))&&to.push(co);return to},[])},Me=()=>{ee.value=be(""),j.value=be(I.inputValue)},Ie=v(()=>{const nt=new Map;return j.value.forEach((jt,to)=>{nt.set(_t(d(jt)),{option:jt,index:to})}),nt}),Pe=v(()=>j.value.every(nt=>O(nt))),Ae=Ds(),ke=v(()=>Ae.value==="small"?"small":"default"),ve=()=>{var nt;L.value=((nt=p.value)==null?void 0:nt.offsetWidth)||200},Te=v(()=>({maxWidth:`${I.selectionWidth}px`})),Re=v(()=>({width:`${Math.max(I.calculatorWidth,yCe)}px`})),Ue=v(()=>rt(t.modelValue)?t.modelValue.length===0&&!I.inputValue:t.filterable?!I.inputValue:!0),Ye=v(()=>{var nt;const jt=(nt=t.placeholder)!=null?nt:o("el.select.placeholder");return t.multiple||!re.value?jt:I.selectedLabel}),De=v(()=>{var nt,jt;return(jt=(nt=m.value)==null?void 0:nt.popperRef)==null?void 0:jt.contentRef}),Xe=v(()=>{if(t.multiple){const nt=t.modelValue.length;if(t.modelValue.length>0&&Ie.value.has(t.modelValue[nt-1])){const{index:jt}=Ie.value.get(t.modelValue[nt-1]);return jt}}else if(t.modelValue&&Ie.value.has(t.modelValue)){const{index:nt}=Ie.value.get(t.modelValue);return nt}return-1}),Ke=v({get(){return J.value&&We.value!==!1},set(nt){J.value=nt}}),Be=v(()=>t.multiple?t.collapseTags?I.cachedOptions.slice(0,t.maxCollapseTags):I.cachedOptions:[]),qe=v(()=>t.multiple?t.collapseTags?I.cachedOptions.slice(t.maxCollapseTags):[]:[]),{createNewOption:xe,removeNewOption:Le,selectNewOption:je,clearAllNewOption:He}=UCe(t,I),{handleCompositionStart:Je,handleCompositionUpdate:St,handleCompositionEnd:Ot}=bK(nt=>wo(nt)),Nt=()=>{ie.value||(I.menuVisibleOnFocus?I.menuVisibleOnFocus=!1:J.value=!J.value)},z=()=>{xe(I.inputValue),x(I.inputValue)},y=nn(z,pe.value),x=nt=>{I.previousQuery!==nt&&(I.previousQuery=nt,t.filterable&&At(t.filterMethod)?t.filterMethod(nt):t.filterable&&t.remote&&At(t.remoteMethod)&&t.remoteMethod(nt),t.defaultFirstOption&&(t.filterable||t.remote)&&j.value.length?Lt(oe):Lt(bt))},oe=()=>{const nt=j.value.filter(co=>!co.disabled&&co.type!=="Group"),jt=nt.find(co=>co.created),to=nt[0];I.hoveringIndex=ze(j.value,jt||to)},Ee=nt=>{ui(t.modelValue,nt)||e(Vo,nt)},_e=nt=>{e(Xt,nt),Ee(nt),I.previousValue=String(nt)},ze=(nt=[],jt)=>{if(!Zt(jt))return nt.indexOf(jt);const to=t.valueKey;let co=-1;return nt.some((Qn,f_)=>ds(Qn,to)===ds(jt,to)?(co=f_,!0):!1),co},_t=nt=>Zt(nt)?ds(nt,t.valueKey):nt,wt=()=>{ve()},Ho=()=>{I.selectionWidth=C.value.getBoundingClientRect().width},_o=()=>{I.calculatorWidth=N.value.getBoundingClientRect().width},Ko=()=>{var nt,jt;(jt=(nt=m.value)==null?void 0:nt.updatePopper)==null||jt.call(nt)},no=()=>{var nt,jt;(jt=(nt=A.value)==null?void 0:nt.updatePopper)==null||jt.call(nt)},io=(nt,jt)=>{if(t.multiple){let to=t.modelValue.slice();const co=ze(to,d(nt));co>-1?(to=[...to.slice(0,co),...to.slice(co+1)],I.cachedOptions.splice(co,1),Le(nt)):(t.multipleLimit<=0||to.length<t.multipleLimit)&&(to=[...to,d(nt)],I.cachedOptions.push(nt),je(nt)),_e(to),nt.created&&x(""),t.filterable&&!t.reserveKeyword&&(I.inputValue="")}else S.value=jt,I.selectedLabel=u(nt),_e(d(nt)),J.value=!1,je(nt),nt.created||He();zo()},go=(nt,jt)=>{let to=t.modelValue.slice();const co=ze(to,d(jt));co>-1&&!ie.value&&(to=[...t.modelValue.slice(0,co),...t.modelValue.slice(co+1)],I.cachedOptions.splice(co,1),_e(to),e("remove-tag",d(jt)),Le(jt)),nt.stopPropagation(),zo()},zo=()=>{var nt;(nt=b.value)==null||nt.focus()},q=()=>{var nt;(nt=b.value)==null||nt.blur()},ue=()=>{I.inputValue.length>0?I.inputValue="":J.value=!1},D=nt=>PX(nt,jt=>!I.cachedOptions.some(to=>d(to)===jt&&O(to))),Z=nt=>{if(t.multiple&&nt.code!==Rt.delete&&I.inputValue.length===0){nt.preventDefault();const jt=t.modelValue.slice(),to=D(jt);if(to<0)return;jt.splice(to,1);const co=I.cachedOptions[to];I.cachedOptions.splice(to,1),Le(co),_e(jt)}},he=()=>{let nt;rt(t.modelValue)?nt=[]:nt=void 0,t.multiple?I.cachedOptions=[]:I.selectedLabel="",J.value=!1,_e(nt),e("clear"),He(),zo()},ce=(nt,jt=void 0)=>{const to=j.value;if(!["forward","backward"].includes(nt)||ie.value||to.length<=0||Pe.value)return;if(!J.value)return Nt();jt===void 0&&(jt=I.hoveringIndex);let co=-1;nt==="forward"?(co=jt+1,co>=to.length&&(co=0)):nt==="backward"&&(co=jt-1,(co<0||co>=to.length)&&(co=to.length-1));const Qn=to[co];if(O(Qn)||Qn.type==="Group")return ce(nt,co);I.hoveringIndex=co,Ls(co)},Ge=()=>{if(J.value)~I.hoveringIndex&&j.value[I.hoveringIndex]&&io(j.value[I.hoveringIndex],I.hoveringIndex);else return Nt()},It=nt=>{I.hoveringIndex=nt},bt=()=>{t.multiple?t.modelValue.length>0?I.hoveringIndex=Math.min(...t.modelValue.map(nt=>j.value.findIndex(jt=>d(jt)===nt))):I.hoveringIndex=-1:I.hoveringIndex=j.value.findIndex(nt=>_t(nt)===_t(t.modelValue))},wo=nt=>{if(I.inputValue=nt.target.value,I.inputValue.length>0&&!J.value&&(J.value=!0),t.remote)y();else return z()},Wo=nt=>{if(J.value=!1,V.value){const jt=new FocusEvent("focus",nt);K(jt)}},ps=()=>Lt(()=>{~Xe.value&&Ls(I.hoveringIndex)}),Ls=nt=>{G.value.scrollToItem(nt)},ei=nt=>{const jt=_t(nt);if(Ie.value.has(jt)){const{option:to}=Ie.value.get(jt);return to}return{value:nt,label:nt}},L_=()=>{if(t.multiple)if(t.modelValue.length>0){I.cachedOptions.length=0,I.previousValue=t.modelValue.toString();for(const nt of t.modelValue){const jt=ei(nt);I.cachedOptions.push(jt)}}else I.cachedOptions=[],I.previousValue=void 0;else if(re.value){I.previousValue=t.modelValue;const nt=j.value,jt=nt.findIndex(to=>_t(d(to))===_t(t.modelValue));~jt?I.selectedLabel=u(nt[jt]):I.selectedLabel=_t(t.modelValue)}else I.selectedLabel="",I.previousValue=void 0;He(),ve()};return Fe(J,nt=>{nt?x(""):(I.inputValue="",I.previousQuery=null,I.isBeforeHide=!0,xe("")),e("visible-change",nt)}),Fe(()=>t.modelValue,(nt,jt)=>{var to;(!nt||nt.toString()!==I.previousValue)&&L_(),!ui(nt,jt)&&t.validateEvent&&((to=T==null?void 0:T.validate)==null||to.call(T,"change").catch(co=>void 0))},{deep:!0}),Fe(()=>t.options,()=>{const nt=b.value;(!nt||nt&&document.activeElement!==nt)&&L_()},{deep:!0}),Fe(()=>j.value,()=>G.value&&Lt(G.value.resetScrollTop)),qs(()=>{I.isBeforeHide||Me()}),Bt(()=>{L_()}),Rs(p,wt),Rs(C,Ho),Rs(N,_o),Rs(G,Ko),Rs(w,no),{inputId:E,collapseTagSize:ke,currentPlaceholder:Ye,expanded:J,emptyText:We,popupHeight:Y,debounce:pe,allOptions:ee,filteredOptions:j,iconComponent:Q,iconReverse:ae,tagStyle:Te,inputStyle:Re,popperSize:L,dropdownMenuVisible:Ke,hasModelValue:re,shouldShowPlaceholder:Ue,selectDisabled:ie,selectSize:Ae,showClearBtn:H,states:I,isFocused:V,nsSelect:_,nsInput:l,calculatorRef:N,inputRef:b,menuRef:G,tagMenuRef:w,tooltipRef:m,tagTooltipRef:A,selectRef:p,wrapperRef:F,selectionRef:C,prefixRef:U,suffixRef:P,popperRef:De,validateState:ge,validateIcon:Se,showTagList:Be,collapseTagList:qe,debouncedOnInputChange:y,deleteTag:go,getLabel:u,getValue:d,getDisabled:O,getValueKey:_t,handleBlur:K,handleClear:he,handleClickOutside:Wo,handleDel:Z,handleEsc:ue,handleFocus:W,focus:zo,blur:q,handleMenuEnter:ps,handleResize:wt,resetSelectionWidth:Ho,resetCalculatorWidth:_o,updateTooltip:Ko,updateTagTooltip:no,updateOptions:Me,toggleMenu:Nt,scrollTo:Ls,onInput:wo,onKeyboardNavigate:ce,onKeyboardSelect:Ge,onSelect:io,onHover:It,handleCompositionStart:Je,handleCompositionEnd:Ot,handleCompositionUpdate:St}},BCe=Oe({name:"ElSelectV2",components:{ElSelectMenu:DCe,ElTag:Wd,ElTooltip:wi,ElIcon:Et},directives:{ClickOutside:nl},props:CCe,emits:[Xt,Vo,"remove-tag","clear","visible-change","focus","blur"],setup(t,{emit:e}){const o=v(()=>{const{modelValue:l,multiple:c}=t,T=c?[]:void 0;return rt(l)?c?l:T:c?T:l}),_=$Ce(Eo({...Xs(t),modelValue:o}),e);return Jt(MD,{props:Eo({...Xs(t),height:_.popupHeight,modelValue:o}),tooltipRef:_.tooltipRef,onSelect:_.onSelect,onHover:_.onHover,onKeyboardNavigate:_.onKeyboardNavigate,onKeyboardSelect:_.onKeyboardSelect}),{..._,modelValue:o}}}),wCe=["id","autocomplete","aria-expanded","aria-label","disabled","readonly","name","unselectable"],GCe=["textContent"];function kCe(t,e,o,_,l,c){const T=gt("el-tag"),E=gt("el-tooltip"),u=gt("el-icon"),d=gt("el-select-menu"),O=oS("click-outside");return yt((B(),se("div",{ref:"selectRef",class:k([t.nsSelect.b(),t.nsSelect.m(t.selectSize)]),onMouseenter:e[14]||(e[14]=h=>t.states.inputHovering=!0),onMouseleave:e[15]||(e[15]=h=>t.states.inputHovering=!1),onClick:e[16]||(e[16]=Ct((...h)=>t.toggleMenu&&t.toggleMenu(...h),["stop"]))},[ne(E,{ref:"tooltipRef",visible:t.dropdownMenuVisible,teleported:t.teleported,"popper-class":[t.nsSelect.e("popper"),t.popperClass],"gpu-acceleration":!1,"stop-popper-mouse-event":!1,"popper-options":t.popperOptions,"fallback-placements":["bottom-start","top-start","right","left"],effect:t.effect,placement:t.placement,pure:"",transition:`${t.nsSelect.namespace.value}-zoom-in-top`,trigger:"click",persistent:t.persistent,onBeforeShow:t.handleMenuEnter,onHide:e[13]||(e[13]=h=>t.states.isBeforeHide=!1)},{default:de(()=>[te("div",{ref:"wrapperRef",class:k([t.nsSelect.e("wrapper"),t.nsSelect.is("focused",t.isFocused),t.nsSelect.is("hovering",t.states.inputHovering),t.nsSelect.is("filterable",t.filterable),t.nsSelect.is("disabled",t.selectDisabled)])},[t.$slots.prefix?(B(),se("div",{key:0,ref:"prefixRef",class:k(t.nsSelect.e("prefix"))},[ye(t.$slots,"prefix")],2)):Ce("v-if",!0),te("div",{ref:"selectionRef",class:k([t.nsSelect.e("selection"),t.nsSelect.is("near",t.multiple&&!t.$slots.prefix&&!!t.modelValue.length)])},[t.multiple?ye(t.$slots,"tag",{key:0},()=>[(B(!0),se(ht,null,oo(t.showTagList,h=>(B(),se("div",{key:t.getValueKey(t.getValue(h)),class:k(t.nsSelect.e("selected-item"))},[ne(T,{closable:!t.selectDisabled&&!t.getDisabled(h),size:t.collapseTagSize,type:t.tagType,"disable-transitions":"",style:dt(t.tagStyle),onClose:I=>t.deleteTag(I,h)},{default:de(()=>[te("span",{class:k(t.nsSelect.e("tags-text"))},Qe(t.getLabel(h)),3)]),_:2},1032,["closable","size","type","style","onClose"])],2))),128)),t.collapseTags&&t.modelValue.length>t.maxCollapseTags?(B(),Ne(E,{key:0,ref:"tagTooltipRef",disabled:!t.collapseTagsTooltip,"fallback-placements":["bottom","top","right","left"],effect:t.effect,placement:"bottom",teleported:t.teleported},{default:de(()=>[te("div",{class:k(t.nsSelect.e("selected-item"))},[ne(T,{closable:!1,size:t.collapseTagSize,type:t.tagType,style:dt(t.tagStyle),"disable-transitions":""},{default:de(()=>[te("span",{class:k(t.nsSelect.e("tags-text"))}," + "+Qe(t.modelValue.length-t.maxCollapseTags),3)]),_:1},8,["size","type","style"])],2)]),content:de(()=>[te("div",{ref:"tagMenuRef",class:k(t.nsSelect.e("selection"))},[(B(!0),se(ht,null,oo(t.collapseTagList,h=>(B(),se("div",{key:t.getValueKey(t.getValue(h)),class:k(t.nsSelect.e("selected-item"))},[ne(T,{class:"in-tooltip",closable:!t.selectDisabled&&!t.getDisabled(h),size:t.collapseTagSize,type:t.tagType,"disable-transitions":"",onClose:I=>t.deleteTag(I,h)},{default:de(()=>[te("span",{class:k(t.nsSelect.e("tags-text"))},Qe(t.getLabel(h)),3)]),_:2},1032,["closable","size","type","onClose"])],2))),128))],2)]),_:1},8,["disabled","effect","teleported"])):Ce("v-if",!0)]):Ce("v-if",!0),t.selectDisabled?Ce("v-if",!0):(B(),se("div",{key:1,class:k([t.nsSelect.e("selected-item"),t.nsSelect.e("input-wrapper"),t.nsSelect.is("hidden",!t.filterable)])},[yt(te("input",{id:t.inputId,ref:"inputRef","onUpdate:modelValue":e[0]||(e[0]=h=>t.states.inputValue=h),style:dt(t.inputStyle),autocomplete:t.autocomplete,"aria-autocomplete":"list","aria-haspopup":"listbox",autocapitalize:"off","aria-expanded":t.expanded,"aria-label":t.ariaLabel,class:k([t.nsSelect.e("input"),t.nsSelect.is(t.selectSize)]),disabled:t.selectDisabled,role:"combobox",readonly:!t.filterable,spellcheck:"false",type:"text",name:t.name,unselectable:t.expanded?"on":void 0,onFocus:e[1]||(e[1]=(...h)=>t.handleFocus&&t.handleFocus(...h)),onBlur:e[2]||(e[2]=(...h)=>t.handleBlur&&t.handleBlur(...h)),onInput:e[3]||(e[3]=(...h)=>t.onInput&&t.onInput(...h)),onCompositionstart:e[4]||(e[4]=(...h)=>t.handleCompositionStart&&t.handleCompositionStart(...h)),onCompositionupdate:e[5]||(e[5]=(...h)=>t.handleCompositionUpdate&&t.handleCompositionUpdate(...h)),onCompositionend:e[6]||(e[6]=(...h)=>t.handleCompositionEnd&&t.handleCompositionEnd(...h)),onKeydown:[e[7]||(e[7]=So(Ct(h=>t.onKeyboardNavigate("backward"),["stop","prevent"]),["up"])),e[8]||(e[8]=So(Ct(h=>t.onKeyboardNavigate("forward"),["stop","prevent"]),["down"])),e[9]||(e[9]=So(Ct((...h)=>t.onKeyboardSelect&&t.onKeyboardSelect(...h),["stop","prevent"]),["enter"])),e[10]||(e[10]=So(Ct((...h)=>t.handleEsc&&t.handleEsc(...h),["stop","prevent"]),["esc"])),e[11]||(e[11]=So(Ct((...h)=>t.handleDel&&t.handleDel(...h),["stop"]),["delete"]))],onClick:e[12]||(e[12]=Ct(()=>{},["stop"]))},null,46,wCe),[[MP,t.states.inputValue]]),t.filterable?(B(),se("span",{key:0,ref:"calculatorRef","aria-hidden":"true",class:k(t.nsSelect.e("input-calculator")),textContent:Qe(t.states.inputValue)},null,10,GCe)):Ce("v-if",!0)],2)),t.shouldShowPlaceholder?(B(),se("div",{key:2,class:k([t.nsSelect.e("selected-item"),t.nsSelect.e("placeholder"),t.nsSelect.is("transparent",!t.hasModelValue||t.expanded&&!t.states.inputValue)])},[te("span",null,Qe(t.currentPlaceholder),1)],2)):Ce("v-if",!0)],2),te("div",{ref:"suffixRef",class:k(t.nsSelect.e("suffix"))},[t.iconComponent?yt((B(),Ne(u,{key:0,class:k([t.nsSelect.e("caret"),t.nsInput.e("icon"),t.iconReverse])},{default:de(()=>[(B(),Ne(Kt(t.iconComponent)))]),_:1},8,["class"])),[[ao,!t.showClearBtn]]):Ce("v-if",!0),t.showClearBtn&&t.clearIcon?(B(),Ne(u,{key:1,class:k([t.nsSelect.e("caret"),t.nsInput.e("icon")]),onClick:Ct(t.handleClear,["prevent","stop"])},{default:de(()=>[(B(),Ne(Kt(t.clearIcon)))]),_:1},8,["class","onClick"])):Ce("v-if",!0),t.validateState&&t.validateIcon?(B(),Ne(u,{key:2,class:k([t.nsInput.e("icon"),t.nsInput.e("validateIcon")])},{default:de(()=>[(B(),Ne(Kt(t.validateIcon)))]),_:1},8,["class"])):Ce("v-if",!0)],2)],2)]),content:de(()=>[ne(d,{ref:"menuRef",data:t.filteredOptions,width:t.popperSize,"hovering-index":t.states.hoveringIndex,"scrollbar-always-on":t.scrollbarAlwaysOn},{default:de(h=>[ye(t.$slots,"default",wn(iO(h)))]),empty:de(()=>[ye(t.$slots,"empty",{},()=>[te("p",{class:k(t.nsSelect.be("dropdown","empty"))},Qe(t.emptyText?t.emptyText:""),3)])]),_:3},8,["data","width","hovering-index","scrollbar-always-on"])]),_:3},8,["visible","teleported","popper-class","popper-options","effect","placement","transition","persistent","onBeforeShow"])],34)),[[O,t.handleClickOutside,t.popperRef]])}var DR=tt(BCe,[["render",kCe],["__file","select.vue"]]);DR.install=t=>{t.component(DR.name,DR)};const HCe=DR,xCe=HCe,FCe=et({animated:{type:Boolean,default:!1},count:{type:Number,default:1},rows:{type:Number,default:3},loading:{type:Boolean,default:!0},throttle:{type:Number}}),VCe=et({variant:{type:String,values:["circle","rect","h1","h3","text","caption","p","image","button"],default:"text"}}),WCe=Oe({name:"ElSkeletonItem"}),XCe=Oe({...WCe,props:VCe,setup(t){const e=Ze("skeleton");return(o,_)=>(B(),se("div",{class:k([M(e).e("item"),M(e).e(o.variant)])},[o.variant==="image"?(B(),Ne(M(Cae),{key:0})):Ce("v-if",!0)],2))}});var WI=tt(XCe,[["__file","skeleton-item.vue"]]);const YCe=Oe({name:"ElSkeleton"}),KCe=Oe({...YCe,props:FCe,setup(t,{expose:e}){const o=t,_=Ze("skeleton"),l=Oce(Ao(o,"loading"),o.throttle);return e({uiLoading:l}),(c,T)=>M(l)?(B(),se("div",Yt({key:0,class:[M(_).b(),M(_).is("animated",c.animated)]},c.$attrs),[(B(!0),se(ht,null,oo(c.count,E=>(B(),se(ht,{key:E},[c.loading?ye(c.$slots,"template",{key:E},()=>[ne(WI,{class:k(M(_).is("first")),variant:"p"},null,8,["class"]),(B(!0),se(ht,null,oo(c.rows,u=>(B(),Ne(WI,{key:u,class:k([M(_).e("paragraph"),M(_).is("last",u===c.rows&&c.rows>1)]),variant:"p"},null,8,["class"]))),128))]):Ce("v-if",!0)],64))),128))],16)):ye(c.$slots,"default",wn(Yt({key:1},c.$attrs)))}});var zCe=tt(KCe,[["__file","skeleton.vue"]]);const ZCe=Vt(zCe,{SkeletonItem:WI}),jCe=ss(WI),ZK=Symbol("sliderContextKey"),qCe=et({modelValue:{type:me([Number,Array]),default:0},id:{type:String,default:void 0},min:{type:Number,default:0},max:{type:Number,default:100},step:{type:Number,default:1},showInput:Boolean,showInputControls:{type:Boolean,default:!0},size:Ys,inputSize:Ys,showStops:Boolean,showTooltip:{type:Boolean,default:!0},formatTooltip:{type:me(Function),default:void 0},disabled:Boolean,range:Boolean,vertical:Boolean,height:String,debounce:{type:Number,default:300},label:{type:String,default:void 0},rangeStartLabel:{type:String,default:void 0},rangeEndLabel:{type:String,default:void 0},formatValueText:{type:me(Function),default:void 0},tooltipClass:{type:String,default:void 0},placement:{type:String,values:tT,default:"top"},marks:{type:me(Object)},validateEvent:{type:Boolean,default:!0}}),oA=t=>mt(t)||rt(t)&&t.every(mt),QCe={[Xt]:oA,[yi]:oA,[Vo]:oA},JCe=(t,e,o)=>{const _=X();return Bt(async()=>{t.range?(Array.isArray(t.modelValue)?(e.firstValue=Math.max(t.min,t.modelValue[0]),e.secondValue=Math.min(t.max,t.modelValue[1])):(e.firstValue=t.min,e.secondValue=t.max),e.oldValue=[e.firstValue,e.secondValue]):(typeof t.modelValue!="number"||Number.isNaN(t.modelValue)?e.firstValue=t.min:e.firstValue=Math.min(t.max,Math.max(t.min,t.modelValue)),e.oldValue=e.firstValue),Yo(window,"resize",o),await Lt(),o()}),{sliderWrapper:_}},eAe=t=>v(()=>t.marks?Object.keys(t.marks).map(Number.parseFloat).sort((o,_)=>o-_).filter(o=>o<=t.max&&o>=t.min).map(o=>({point:o,position:(o-t.min)*100/(t.max-t.min),mark:t.marks[o]})):[]),tAe=(t,e,o)=>{const{form:_,formItem:l}=Gi(),c=mo(),T=X(),E=X(),u={firstButton:T,secondButton:E},d=v(()=>t.disabled||(_==null?void 0:_.disabled)||!1),O=v(()=>Math.min(e.firstValue,e.secondValue)),h=v(()=>Math.max(e.firstValue,e.secondValue)),I=v(()=>t.range?`${100*(h.value-O.value)/(t.max-t.min)}%`:`${100*(e.firstValue-t.min)/(t.max-t.min)}%`),S=v(()=>t.range?`${100*(O.value-t.min)/(t.max-t.min)}%`:"0%"),L=v(()=>t.vertical?{height:t.height}:{}),p=v(()=>t.vertical?{height:I.value,bottom:S.value}:{width:I.value,left:S.value}),C=()=>{c.value&&(e.sliderSize=c.value[`client${t.vertical?"Height":"Width"}`])},m=W=>{const K=t.min+W*(t.max-t.min)/100;if(!t.range)return T;let ee;return Math.abs(O.value-K)<Math.abs(h.value-K)?ee=e.firstValue<e.secondValue?"firstButton":"secondButton":ee=e.firstValue>e.secondValue?"firstButton":"secondButton",u[ee]},A=W=>{const K=m(W);return K.value.setPosition(W),K},b=W=>{e.firstValue=W,U(t.range?[O.value,h.value]:W)},N=W=>{e.secondValue=W,t.range&&U([O.value,h.value])},U=W=>{o(Xt,W),o(yi,W)},P=async()=>{await Lt(),o(Vo,t.range?[O.value,h.value]:t.modelValue)},G=W=>{var K,ee,j,J,ie,Y;if(d.value||e.dragging)return;C();let re=0;if(t.vertical){const H=(j=(ee=(K=W.touches)==null?void 0:K.item(0))==null?void 0:ee.clientY)!=null?j:W.clientY;re=(c.value.getBoundingClientRect().bottom-H)/e.sliderSize*100}else{const H=(Y=(ie=(J=W.touches)==null?void 0:J.item(0))==null?void 0:ie.clientX)!=null?Y:W.clientX,Q=c.value.getBoundingClientRect().left;re=(H-Q)/e.sliderSize*100}if(!(re<0||re>100))return A(re)};return{elFormItem:l,slider:c,firstButton:T,secondButton:E,sliderDisabled:d,minValue:O,maxValue:h,runwayStyle:L,barStyle:p,resetSize:C,setPosition:A,emitChange:P,onSliderWrapperPrevent:W=>{var K,ee;((K=u.firstButton.value)!=null&&K.dragging||(ee=u.secondButton.value)!=null&&ee.dragging)&&W.preventDefault()},onSliderClick:W=>{G(W)&&P()},onSliderDown:async W=>{const K=G(W);K&&(await Lt(),K.value.onButtonDown(W))},setFirstValue:b,setSecondValue:N}},{left:oAe,down:sAe,right:iAe,up:nAe,home:rAe,end:_Ae,pageUp:lAe,pageDown:aAe}=Rt,cAe=(t,e,o)=>{const _=X(),l=X(!1),c=v(()=>e.value instanceof Function),T=v(()=>c.value&&e.value(t.modelValue)||t.modelValue),E=nn(()=>{o.value&&(l.value=!0)},50),u=nn(()=>{o.value&&(l.value=!1)},50);return{tooltip:_,tooltipVisible:l,formatValue:T,displayTooltip:E,hideTooltip:u}},TAe=(t,e,o)=>{const{disabled:_,min:l,max:c,step:T,showTooltip:E,precision:u,sliderSize:d,formatTooltip:O,emitChange:h,resetSize:I,updateDragging:S}=lt(ZK),{tooltip:L,tooltipVisible:p,formatValue:C,displayTooltip:m,hideTooltip:A}=cAe(t,O,E),b=X(),N=v(()=>`${(t.modelValue-l.value)/(c.value-l.value)*100}%`),U=v(()=>t.vertical?{bottom:N.value}:{left:N.value}),P=()=>{e.hovering=!0,m()},G=()=>{e.hovering=!1,e.dragging||A()},w=ge=>{_.value||(ge.preventDefault(),re(ge),window.addEventListener("mousemove",H),window.addEventListener("touchmove",H),window.addEventListener("mouseup",Q),window.addEventListener("touchend",Q),window.addEventListener("contextmenu",Q),b.value.focus())},F=ge=>{_.value||(e.newPosition=Number.parseFloat(N.value)+ge/(c.value-l.value)*100,ae(e.newPosition),h())},V=()=>{F(-T.value)},W=()=>{F(T.value)},K=()=>{F(-T.value*4)},ee=()=>{F(T.value*4)},j=()=>{_.value||(ae(0),h())},J=()=>{_.value||(ae(100),h())},ie=ge=>{let Se=!0;[oAe,sAe].includes(ge.key)?V():[iAe,nAe].includes(ge.key)?W():ge.key===rAe?j():ge.key===_Ae?J():ge.key===aAe?K():ge.key===lAe?ee():Se=!1,Se&&ge.preventDefault()},Y=ge=>{let Se,pe;return ge.type.startsWith("touch")?(pe=ge.touches[0].clientY,Se=ge.touches[0].clientX):(pe=ge.clientY,Se=ge.clientX),{clientX:Se,clientY:pe}},re=ge=>{e.dragging=!0,e.isClick=!0;const{clientX:Se,clientY:pe}=Y(ge);t.vertical?e.startY=pe:e.startX=Se,e.startPosition=Number.parseFloat(N.value),e.newPosition=e.startPosition},H=ge=>{if(e.dragging){e.isClick=!1,m(),I();let Se;const{clientX:pe,clientY:We}=Y(ge);t.vertical?(e.currentY=We,Se=(e.startY-e.currentY)/d.value*100):(e.currentX=pe,Se=(e.currentX-e.startX)/d.value*100),e.newPosition=e.startPosition+Se,ae(e.newPosition)}},Q=()=>{e.dragging&&(setTimeout(()=>{e.dragging=!1,e.hovering||A(),e.isClick||ae(e.newPosition),h()},0),window.removeEventListener("mousemove",H),window.removeEventListener("touchmove",H),window.removeEventListener("mouseup",Q),window.removeEventListener("touchend",Q),window.removeEventListener("contextmenu",Q))},ae=async ge=>{if(ge===null||Number.isNaN(+ge))return;ge<0?ge=0:ge>100&&(ge=100);const Se=100/((c.value-l.value)/T.value);let We=Math.round(ge/Se)*Se*(c.value-l.value)*.01+l.value;We=Number.parseFloat(We.toFixed(u.value)),We!==t.modelValue&&o(Xt,We),!e.dragging&&t.modelValue!==e.oldValue&&(e.oldValue=t.modelValue),await Lt(),e.dragging&&m(),L.value.updatePopper()};return Fe(()=>e.dragging,ge=>{S(ge)}),{disabled:_,button:b,tooltip:L,tooltipVisible:p,showTooltip:E,wrapperStyle:U,formatValue:C,handleMouseEnter:P,handleMouseLeave:G,onButtonDown:w,onKeyDown:ie,setPosition:ae}},EAe=(t,e,o,_)=>({stops:v(()=>{if(!t.showStops||t.min>t.max)return[];if(t.step===0)return[];const T=(t.max-t.min)/t.step,E=100*t.step/(t.max-t.min),u=Array.from({length:T-1}).map((d,O)=>(O+1)*E);return t.range?u.filter(d=>d<100*(o.value-t.min)/(t.max-t.min)||d>100*(_.value-t.min)/(t.max-t.min)):u.filter(d=>d>100*(e.firstValue-t.min)/(t.max-t.min))}),getStopStyle:T=>t.vertical?{bottom:`${T}%`}:{left:`${T}%`}}),uAe=(t,e,o,_,l,c)=>{const T=d=>{l(Xt,d),l(yi,d)},E=()=>t.range?![o.value,_.value].every((d,O)=>d===e.oldValue[O]):t.modelValue!==e.oldValue,u=()=>{var d,O;t.min>t.max&&vs("Slider","min should not be greater than max.");const h=t.modelValue;t.range&&Array.isArray(h)?h[1]<t.min?T([t.min,t.min]):h[0]>t.max?T([t.max,t.max]):h[0]<t.min?T([t.min,h[1]]):h[1]>t.max?T([h[0],t.max]):(e.firstValue=h[0],e.secondValue=h[1],E()&&(t.validateEvent&&((d=c==null?void 0:c.validate)==null||d.call(c,"change").catch(I=>void 0)),e.oldValue=h.slice())):!t.range&&typeof h=="number"&&!Number.isNaN(h)&&(h<t.min?T(t.min):h>t.max?T(t.max):(e.firstValue=h,E()&&(t.validateEvent&&((O=c==null?void 0:c.validate)==null||O.call(c,"change").catch(I=>void 0)),e.oldValue=h)))};u(),Fe(()=>e.dragging,d=>{d||u()}),Fe(()=>t.modelValue,(d,O)=>{e.dragging||Array.isArray(d)&&Array.isArray(O)&&d.every((h,I)=>h===O[I])&&e.firstValue===d[0]&&e.secondValue===d[1]||u()},{deep:!0}),Fe(()=>[t.min,t.max],()=>{u()})},gAe=et({modelValue:{type:Number,default:0},vertical:Boolean,tooltipClass:String,placement:{type:String,values:tT,default:"top"}}),dAe={[Xt]:t=>mt(t)},OAe=["tabindex"],hAe=Oe({name:"ElSliderButton"}),MAe=Oe({...hAe,props:gAe,emits:dAe,setup(t,{expose:e,emit:o}){const _=t,l=Ze("slider"),c=Eo({hovering:!1,dragging:!1,isClick:!1,startX:0,currentX:0,startY:0,currentY:0,startPosition:0,newPosition:0,oldValue:_.modelValue}),{disabled:T,button:E,tooltip:u,showTooltip:d,tooltipVisible:O,wrapperStyle:h,formatValue:I,handleMouseEnter:S,handleMouseLeave:L,onButtonDown:p,onKeyDown:C,setPosition:m}=TAe(_,c,o),{hovering:A,dragging:b}=Xs(c);return e({onButtonDown:p,onKeyDown:C,setPosition:m,hovering:A,dragging:b}),(N,U)=>(B(),se("div",{ref_key:"button",ref:E,class:k([M(l).e("button-wrapper"),{hover:M(A),dragging:M(b)}]),style:dt(M(h)),tabindex:M(T)?-1:0,onMouseenter:U[0]||(U[0]=(...P)=>M(S)&&M(S)(...P)),onMouseleave:U[1]||(U[1]=(...P)=>M(L)&&M(L)(...P)),onMousedown:U[2]||(U[2]=(...P)=>M(p)&&M(p)(...P)),onTouchstart:U[3]||(U[3]=(...P)=>M(p)&&M(p)(...P)),onFocus:U[4]||(U[4]=(...P)=>M(S)&&M(S)(...P)),onBlur:U[5]||(U[5]=(...P)=>M(L)&&M(L)(...P)),onKeydown:U[6]||(U[6]=(...P)=>M(C)&&M(C)(...P))},[ne(M(wi),{ref_key:"tooltip",ref:u,visible:M(O),placement:N.placement,"fallback-placements":["top","bottom","right","left"],"stop-popper-mouse-event":!1,"popper-class":N.tooltipClass,disabled:!M(d),persistent:""},{content:de(()=>[te("span",null,Qe(M(I)),1)]),default:de(()=>[te("div",{class:k([M(l).e("button"),{hover:M(A),dragging:M(b)}])},null,2)]),_:1},8,["visible","placement","popper-class","disabled"])],46,OAe))}});var EH=tt(MAe,[["__file","button.vue"]]);const RAe=et({mark:{type:me([String,Object]),default:void 0}});var IAe=Oe({name:"ElSliderMarker",props:RAe,setup(t){const e=Ze("slider"),o=v(()=>vt(t.mark)?t.mark:t.mark.label),_=v(()=>vt(t.mark)?void 0:t.mark.style);return()=>pt("div",{class:e.e("marks-text"),style:_.value},o.value)}});const SAe=["id","role","aria-label","aria-labelledby"],pAe={key:1},LAe=Oe({name:"ElSlider"}),fAe=Oe({...LAe,props:qCe,emits:QCe,setup(t,{expose:e,emit:o}){const _=t,l=Ze("slider"),{t:c}=lo(),T=Eo({firstValue:0,secondValue:0,oldValue:0,dragging:!1,sliderSize:1}),{elFormItem:E,slider:u,firstButton:d,secondButton:O,sliderDisabled:h,minValue:I,maxValue:S,runwayStyle:L,barStyle:p,resetSize:C,emitChange:m,onSliderWrapperPrevent:A,onSliderClick:b,onSliderDown:N,setFirstValue:U,setSecondValue:P}=tAe(_,T,o),{stops:G,getStopStyle:w}=EAe(_,T,I,S),{inputId:F,isLabeledByFormItem:V}=I_(_,{formItemContext:E}),W=Ds(),K=v(()=>_.inputSize||W.value),ee=v(()=>_.label||c("el.slider.defaultLabel",{min:_.min,max:_.max})),j=v(()=>_.range?_.rangeStartLabel||c("el.slider.defaultRangeStartLabel"):ee.value),J=v(()=>_.formatValueText?_.formatValueText(ge.value):`${ge.value}`),ie=v(()=>_.rangeEndLabel||c("el.slider.defaultRangeEndLabel")),Y=v(()=>_.formatValueText?_.formatValueText(Se.value):`${Se.value}`),re=v(()=>[l.b(),l.m(W.value),l.is("vertical",_.vertical),{[l.m("with-input")]:_.showInput}]),H=eAe(_);uAe(_,T,I,S,o,E);const Q=v(()=>{const be=[_.min,_.max,_.step].map(Me=>{const Ie=`${Me}`.split(".")[1];return Ie?Ie.length:0});return Math.max.apply(null,be)}),{sliderWrapper:ae}=JCe(_,T,C),{firstValue:ge,secondValue:Se,sliderSize:pe}=Xs(T),We=be=>{T.dragging=be};return Jt(ZK,{...Xs(_),sliderSize:pe,disabled:h,precision:Q,emitChange:m,resetSize:C,updateDragging:We}),e({onSliderClick:b}),(be,Me)=>{var Ie,Pe;return B(),se("div",{id:be.range?M(F):void 0,ref_key:"sliderWrapper",ref:ae,class:k(M(re)),role:be.range?"group":void 0,"aria-label":be.range&&!M(V)?M(ee):void 0,"aria-labelledby":be.range&&M(V)?(Ie=M(E))==null?void 0:Ie.labelId:void 0,onTouchstart:Me[2]||(Me[2]=(...Ae)=>M(A)&&M(A)(...Ae)),onTouchmove:Me[3]||(Me[3]=(...Ae)=>M(A)&&M(A)(...Ae))},[te("div",{ref_key:"slider",ref:u,class:k([M(l).e("runway"),{"show-input":be.showInput&&!be.range},M(l).is("disabled",M(h))]),style:dt(M(L)),onMousedown:Me[0]||(Me[0]=(...Ae)=>M(N)&&M(N)(...Ae)),onTouchstart:Me[1]||(Me[1]=(...Ae)=>M(N)&&M(N)(...Ae))},[te("div",{class:k(M(l).e("bar")),style:dt(M(p))},null,6),ne(EH,{id:be.range?void 0:M(F),ref_key:"firstButton",ref:d,"model-value":M(ge),vertical:be.vertical,"tooltip-class":be.tooltipClass,placement:be.placement,role:"slider","aria-label":be.range||!M(V)?M(j):void 0,"aria-labelledby":!be.range&&M(V)?(Pe=M(E))==null?void 0:Pe.labelId:void 0,"aria-valuemin":be.min,"aria-valuemax":be.range?M(Se):be.max,"aria-valuenow":M(ge),"aria-valuetext":M(J),"aria-orientation":be.vertical?"vertical":"horizontal","aria-disabled":M(h),"onUpdate:modelValue":M(U)},null,8,["id","model-value","vertical","tooltip-class","placement","aria-label","aria-labelledby","aria-valuemin","aria-valuemax","aria-valuenow","aria-valuetext","aria-orientation","aria-disabled","onUpdate:modelValue"]),be.range?(B(),Ne(EH,{key:0,ref_key:"secondButton",ref:O,"model-value":M(Se),vertical:be.vertical,"tooltip-class":be.tooltipClass,placement:be.placement,role:"slider","aria-label":M(ie),"aria-valuemin":M(ge),"aria-valuemax":be.max,"aria-valuenow":M(Se),"aria-valuetext":M(Y),"aria-orientation":be.vertical?"vertical":"horizontal","aria-disabled":M(h),"onUpdate:modelValue":M(P)},null,8,["model-value","vertical","tooltip-class","placement","aria-label","aria-valuemin","aria-valuemax","aria-valuenow","aria-valuetext","aria-orientation","aria-disabled","onUpdate:modelValue"])):Ce("v-if",!0),be.showStops?(B(),se("div",pAe,[(B(!0),se(ht,null,oo(M(G),(Ae,ke)=>(B(),se("div",{key:ke,class:k(M(l).e("stop")),style:dt(M(w)(Ae))},null,6))),128))])):Ce("v-if",!0),M(H).length>0?(B(),se(ht,{key:2},[te("div",null,[(B(!0),se(ht,null,oo(M(H),(Ae,ke)=>(B(),se("div",{key:ke,style:dt(M(w)(Ae.position)),class:k([M(l).e("stop"),M(l).e("marks-stop")])},null,6))),128))]),te("div",{class:k(M(l).e("marks"))},[(B(!0),se(ht,null,oo(M(H),(Ae,ke)=>(B(),Ne(M(IAe),{key:ke,mark:Ae.mark,style:dt(M(w)(Ae.position))},null,8,["mark","style"]))),128))],2)],64)):Ce("v-if",!0)],38),be.showInput&&!be.range?(B(),Ne(M(SK),{key:0,ref:"input","model-value":M(ge),class:k(M(l).e("input")),step:be.step,disabled:M(h),controls:be.showInputControls,min:be.min,max:be.max,debounce:be.debounce,size:M(K),"onUpdate:modelValue":M(U),onChange:M(m)},null,8,["model-value","class","step","disabled","controls","min","max","debounce","size","onUpdate:modelValue","onChange"])):Ce("v-if",!0)],42,SAe)}}});var mAe=tt(fAe,[["__file","slider.vue"]]);const CAe=Vt(mAe),AAe=et({prefixCls:{type:String}}),uH=Oe({name:"ElSpaceItem",props:AAe,setup(t,{slots:e}){const o=Ze("space"),_=v(()=>`${t.prefixCls||o.b()}__item`);return()=>pt("div",{class:_.value},ye(e,"default"))}}),gH={small:8,default:12,large:16};function bAe(t){const e=Ze("space"),o=v(()=>[e.b(),e.m(t.direction),t.class]),_=X(0),l=X(0),c=v(()=>{const E=t.wrap||t.fill?{flexWrap:"wrap",marginBottom:`-${l.value}px`}:{},u={alignItems:t.alignment};return[E,u,t.style]}),T=v(()=>{const E={paddingBottom:`${l.value}px`,marginRight:`${_.value}px`},u=t.fill?{flexGrow:1,minWidth:`${t.fillRatio}%`}:{};return[E,u]});return qs(()=>{const{size:E="small",wrap:u,direction:d,fill:O}=t;if(rt(E)){const[h=0,I=0]=E;_.value=h,l.value=I}else{let h;mt(E)?h=E:h=gH[E||"small"]||gH.small,(u||O)&&d==="horizontal"?_.value=l.value=h:d==="horizontal"?(_.value=h,l.value=0):(l.value=h,_.value=0)}}),{classes:o,containerStyle:c,itemStyle:T}}const NAe=et({direction:{type:String,values:["horizontal","vertical"],default:"horizontal"},class:{type:me([String,Object,Array]),default:""},style:{type:me([String,Array,Object]),default:""},alignment:{type:me(String),default:"center"},prefixCls:{type:String},spacer:{type:me([Object,String,Number,Array]),default:null,validator:t=>Fo(t)||mt(t)||vt(t)},wrap:Boolean,fill:Boolean,fillRatio:{type:Number,default:100},size:{type:[String,Array,Number],values:R_,validator:t=>mt(t)||rt(t)&&t.length===2&&t.every(mt)}}),PAe=Oe({name:"ElSpace",props:NAe,setup(t,{slots:e}){const{classes:o,containerStyle:_,itemStyle:l}=bAe(t);function c(T,E="",u=[]){const{prefixCls:d}=t;return T.forEach((O,h)=>{Bb(O)?rt(O.children)&&O.children.forEach((I,S)=>{Bb(I)&&rt(I.children)?c(I.children,`${E+S}-`,u):u.push(ne(uH,{style:l.value,prefixCls:d,key:`nested-${E+S}`},{default:()=>[I]},yn.PROPS|yn.STYLE,["style","prefixCls"]))}):oce(O)&&u.push(ne(uH,{style:l.value,prefixCls:d,key:`LoopKey${E+h}`},{default:()=>[O]},yn.PROPS|yn.STYLE,["style","prefixCls"]))}),u}return()=>{var T;const{spacer:E,direction:u}=t,d=ye(e,"default",{key:0},()=>[]);if(((T=d.children)!=null?T:[]).length===0)return null;if(rt(d.children)){let O=c(d.children);if(E){const h=O.length-1;O=O.reduce((I,S,L)=>{const p=[...I,S];return L!==h&&p.push(ne("span",{style:[l.value,u==="vertical"?"width: 100%":null],key:L},[Fo(E)?E:qt(E,yn.TEXT)],yn.STYLE)),p},[])}return ne("div",{class:o.value,style:_.value},O,yn.STYLE|yn.CLASS)}return d.children}}}),vAe=Vt(PAe),DAe=et({decimalSeparator:{type:String,default:"."},groupSeparator:{type:String,default:","},precision:{type:Number,default:0},formatter:Function,value:{type:me([Number,Object]),default:0},prefix:String,suffix:String,title:String,valueStyle:{type:me([String,Object,Array])}}),UAe=Oe({name:"ElStatistic"}),yAe=Oe({...UAe,props:DAe,setup(t,{expose:e}){const o=t,_=Ze("statistic"),l=v(()=>{const{value:c,formatter:T,precision:E,decimalSeparator:u,groupSeparator:d}=o;if(At(T))return T(c);if(!mt(c))return c;let[O,h=""]=String(c).split(".");return h=h.padEnd(E,"0").slice(0,E>0?E:0),O=O.replace(/\B(?=(\d{3})+(?!\d))/g,d),[O,h].join(h?u:"")});return e({displayValue:l}),(c,T)=>(B(),se("div",{class:k(M(_).b())},[c.$slots.title||c.title?(B(),se("div",{key:0,class:k(M(_).e("head"))},[ye(c.$slots,"title",{},()=>[qt(Qe(c.title),1)])],2)):Ce("v-if",!0),te("div",{class:k(M(_).e("content"))},[c.$slots.prefix||c.prefix?(B(),se("div",{key:0,class:k(M(_).e("prefix"))},[ye(c.$slots,"prefix",{},()=>[te("span",null,Qe(c.prefix),1)])],2)):Ce("v-if",!0),te("span",{class:k(M(_).e("number")),style:dt(c.valueStyle)},Qe(M(l)),7),c.$slots.suffix||c.suffix?(B(),se("div",{key:1,class:k(M(_).e("suffix"))},[ye(c.$slots,"suffix",{},()=>[te("span",null,Qe(c.suffix),1)])],2)):Ce("v-if",!0)],2)],2))}});var $Ae=tt(yAe,[["__file","statistic.vue"]]);const jK=Vt($Ae),BAe=et({format:{type:String,default:"HH:mm:ss"},prefix:String,suffix:String,title:String,value:{type:me([Number,Object]),default:0},valueStyle:{type:me([String,Object,Array])}}),wAe={finish:()=>!0,[Vo]:t=>mt(t)},GAe=[["Y",1e3*60*60*24*365],["M",1e3*60*60*24*30],["D",1e3*60*60*24],["H",1e3*60*60],["m",1e3*60],["s",1e3],["S",1]],dH=t=>mt(t)?new Date(t).getTime():t.valueOf(),OH=(t,e)=>{let o=t;const _=/\[([^\]]*)]/g;return GAe.reduce((c,[T,E])=>{const u=new RegExp(`${T}+(?![^\\[\\]]*\\])`,"g");if(u.test(c)){const d=Math.floor(o/E);return o-=d*E,c.replace(u,O=>String(d).padStart(O.length,"0"))}return c},e).replace(_,"$1")},kAe=Oe({name:"ElCountdown"}),HAe=Oe({...kAe,props:BAe,emits:wAe,setup(t,{expose:e,emit:o}){const _=t;let l;const c=X(dH(_.value)-Date.now()),T=v(()=>OH(c.value,_.format)),E=O=>OH(O,_.format),u=()=>{l&&(BS(l),l=void 0)},d=()=>{const O=dH(_.value),h=()=>{let I=O-Date.now();o("change",I),I<=0?(I=0,u(),o("finish")):l=_u(h),c.value=I};l=_u(h)};return Fe(()=>[_.value,_.format],()=>{u(),d()},{immediate:!0}),Do(()=>{u()}),e({displayValue:T}),(O,h)=>(B(),Ne(M(jK),{value:c.value,title:O.title,prefix:O.prefix,suffix:O.suffix,"value-style":O.valueStyle,formatter:E},da({_:2},[oo(O.$slots,(I,S)=>({name:S,fn:de(()=>[ye(O.$slots,S)])}))]),1032,["value","title","prefix","suffix","value-style"]))}});var xAe=tt(HAe,[["__file","countdown.vue"]]);const FAe=Vt(xAe),VAe=et({space:{type:[Number,String],default:""},active:{type:Number,default:0},direction:{type:String,default:"horizontal",values:["horizontal","vertical"]},alignCenter:{type:Boolean},simple:{type:Boolean},finishStatus:{type:String,values:["wait","process","finish","error","success"],default:"finish"},processStatus:{type:String,values:["wait","process","finish","error","success"],default:"process"}}),WAe={[Vo]:(t,e)=>[t,e].every(mt)},XAe=Oe({name:"ElSteps"}),YAe=Oe({...XAe,props:VAe,emits:WAe,setup(t,{emit:e}){const o=t,_=Ze("steps"),{children:l,addChild:c,removeChild:T}=Yv(Ht(),"ElStep");return Fe(l,()=>{l.value.forEach((E,u)=>{E.setIndex(u)})}),Jt("ElSteps",{props:o,steps:l,addStep:c,removeStep:T}),Fe(()=>o.active,(E,u)=>{e(Vo,E,u)}),(E,u)=>(B(),se("div",{class:k([M(_).b(),M(_).m(E.simple?"simple":E.direction)])},[ye(E.$slots,"default")],2))}});var KAe=tt(YAe,[["__file","steps.vue"]]);const zAe=et({title:{type:String,default:""},icon:{type:Lo},description:{type:String,default:""},status:{type:String,values:["","wait","process","finish","error","success"],default:""}}),ZAe=Oe({name:"ElStep"}),jAe=Oe({...ZAe,props:zAe,setup(t){const e=t,o=Ze("step"),_=X(-1),l=X({}),c=X(""),T=lt("ElSteps"),E=Ht();Bt(()=>{Fe([()=>T.props.active,()=>T.props.processStatus,()=>T.props.finishStatus],([P])=>{N(P)},{immediate:!0})}),Do(()=>{T.removeStep(U.uid)});const u=v(()=>e.status||c.value),d=v(()=>{const P=T.steps.value[_.value-1];return P?P.currentStatus:"wait"}),O=v(()=>T.props.alignCenter),h=v(()=>T.props.direction==="vertical"),I=v(()=>T.props.simple),S=v(()=>T.steps.value.length),L=v(()=>{var P;return((P=T.steps.value[S.value-1])==null?void 0:P.uid)===(E==null?void 0:E.uid)}),p=v(()=>I.value?"":T.props.space),C=v(()=>[o.b(),o.is(I.value?"simple":T.props.direction),o.is("flex",L.value&&!p.value&&!O.value),o.is("center",O.value&&!h.value&&!I.value)]),m=v(()=>{const P={flexBasis:mt(p.value)?`${p.value}px`:p.value?p.value:`${100/(S.value-(O.value?0:1))}%`};return h.value||L.value&&(P.maxWidth=`${100/S.value}%`),P}),A=P=>{_.value=P},b=P=>{const G=P==="wait",w={transitionDelay:`${G?"-":""}${150*_.value}ms`},F=P===T.props.processStatus||G?0:100;w.borderWidth=F&&!I.value?"1px":0,w[T.props.direction==="vertical"?"height":"width"]=`${F}%`,l.value=w},N=P=>{P>_.value?c.value=T.props.finishStatus:P===_.value&&d.value!=="error"?c.value=T.props.processStatus:c.value="wait";const G=T.steps.value[_.value-1];G&&G.calcProgress(c.value)},U=Eo({uid:E.uid,currentStatus:u,setIndex:A,calcProgress:b});return T.addStep(U),(P,G)=>(B(),se("div",{style:dt(M(m)),class:k(M(C))},[Ce(" icon & line "),te("div",{class:k([M(o).e("head"),M(o).is(M(u))])},[M(I)?Ce("v-if",!0):(B(),se("div",{key:0,class:k(M(o).e("line"))},[te("i",{class:k(M(o).e("line-inner")),style:dt(l.value)},null,6)],2)),te("div",{class:k([M(o).e("icon"),M(o).is(P.icon||P.$slots.icon?"icon":"text")])},[ye(P.$slots,"icon",{},()=>[P.icon?(B(),Ne(M(Et),{key:0,class:k(M(o).e("icon-inner"))},{default:de(()=>[(B(),Ne(Kt(P.icon)))]),_:1},8,["class"])):M(u)==="success"?(B(),Ne(M(Et),{key:1,class:k([M(o).e("icon-inner"),M(o).is("status")])},{default:de(()=>[ne(M(mO))]),_:1},8,["class"])):M(u)==="error"?(B(),Ne(M(Et),{key:2,class:k([M(o).e("icon-inner"),M(o).is("status")])},{default:de(()=>[ne(M(Rr))]),_:1},8,["class"])):M(I)?Ce("v-if",!0):(B(),se("div",{key:3,class:k(M(o).e("icon-inner"))},Qe(_.value+1),3))])],2)],2),Ce(" title & description "),te("div",{class:k(M(o).e("main"))},[te("div",{class:k([M(o).e("title"),M(o).is(M(u))])},[ye(P.$slots,"title",{},()=>[qt(Qe(P.title),1)])],2),M(I)?(B(),se("div",{key:0,class:k(M(o).e("arrow"))},null,2)):(B(),se("div",{key:1,class:k([M(o).e("description"),M(o).is(M(u))])},[ye(P.$slots,"description",{},()=>[qt(Qe(P.description),1)])],2))],2)],6))}});var qK=tt(jAe,[["__file","item.vue"]]);const qAe=Vt(KAe,{Step:qK}),QAe=ss(qK),JAe=et({modelValue:{type:[Boolean,String,Number],default:!1},disabled:{type:Boolean,default:!1},loading:{type:Boolean,default:!1},size:{type:String,validator:QX},width:{type:[String,Number],default:""},inlinePrompt:{type:Boolean,default:!1},inactiveActionIcon:{type:Lo},activeActionIcon:{type:Lo},activeIcon:{type:Lo},inactiveIcon:{type:Lo},activeText:{type:String,default:""},inactiveText:{type:String,default:""},activeValue:{type:[Boolean,String,Number],default:!0},inactiveValue:{type:[Boolean,String,Number],default:!1},activeColor:{type:String,default:""},inactiveColor:{type:String,default:""},borderColor:{type:String,default:""},name:{type:String,default:""},validateEvent:{type:Boolean,default:!0},beforeChange:{type:me(Function)},id:String,tabindex:{type:[String,Number]},value:{type:[Boolean,String,Number],default:!1},label:{type:String,default:void 0}}),ebe={[Xt]:t=>Ss(t)||vt(t)||mt(t),[Vo]:t=>Ss(t)||vt(t)||mt(t),[yi]:t=>Ss(t)||vt(t)||mt(t)},tbe=["onClick"],obe=["id","aria-checked","aria-disabled","aria-label","name","true-value","false-value","disabled","tabindex","onKeydown"],sbe=["aria-hidden"],ibe=["aria-hidden"],nbe=["aria-hidden"],pN="ElSwitch",rbe=Oe({name:pN}),_be=Oe({...rbe,props:JAe,emits:ebe,setup(t,{expose:e,emit:o}){const _=t,l=Ht(),{formItem:c}=Gi(),T=Ds(),E=Ze("switch");(w=>{w.forEach(F=>{u_({from:F[0],replacement:F[1],scope:pN,version:"2.3.0",ref:"https://element-plus.org/en-US/component/switch.html#attributes",type:"Attribute"},v(()=>{var V;return!!((V=l.vnode.props)!=null&&V[F[2]])}))})})([['"value"','"model-value" or "v-model"',"value"],['"active-color"',"CSS var `--el-switch-on-color`","activeColor"],['"inactive-color"',"CSS var `--el-switch-off-color`","inactiveColor"],['"border-color"',"CSS var `--el-switch-border-color`","borderColor"]]);const{inputId:d}=I_(_,{formItemContext:c}),O=_n(v(()=>_.loading)),h=X(_.modelValue!==!1),I=X(),S=X(),L=v(()=>[E.b(),E.m(T.value),E.is("disabled",O.value),E.is("checked",b.value)]),p=v(()=>[E.e("label"),E.em("label","left"),E.is("active",!b.value)]),C=v(()=>[E.e("label"),E.em("label","right"),E.is("active",b.value)]),m=v(()=>({width:hs(_.width)}));Fe(()=>_.modelValue,()=>{h.value=!0}),Fe(()=>_.value,()=>{h.value=!1});const A=v(()=>h.value?_.modelValue:_.value),b=v(()=>A.value===_.activeValue);[_.activeValue,_.inactiveValue].includes(A.value)||(o(Xt,_.inactiveValue),o(Vo,_.inactiveValue),o(yi,_.inactiveValue)),Fe(b,w=>{var F;I.value.checked=w,_.validateEvent&&((F=c==null?void 0:c.validate)==null||F.call(c,"change").catch(V=>void 0))});const N=()=>{const w=b.value?_.inactiveValue:_.activeValue;o(Xt,w),o(Vo,w),o(yi,w),Lt(()=>{I.value.checked=b.value})},U=()=>{if(O.value)return;const{beforeChange:w}=_;if(!w){N();return}const F=w();[ad(F),Ss(F)].includes(!0)||vs(pN,"beforeChange must return type `Promise<boolean>` or `boolean`"),ad(F)?F.then(W=>{W&&N()}).catch(W=>{}):F&&N()},P=v(()=>E.cssVarBlock({..._.activeColor?{"on-color":_.activeColor}:null,..._.inactiveColor?{"off-color":_.inactiveColor}:null,..._.borderColor?{"border-color":_.borderColor}:null})),G=()=>{var w,F;(F=(w=I.value)==null?void 0:w.focus)==null||F.call(w)};return Bt(()=>{I.value.checked=b.value}),e({focus:G,checked:b}),(w,F)=>(B(),se("div",{class:k(M(L)),style:dt(M(P)),onClick:Ct(U,["prevent"])},[te("input",{id:M(d),ref_key:"input",ref:I,class:k(M(E).e("input")),type:"checkbox",role:"switch","aria-checked":M(b),"aria-disabled":M(O),"aria-label":w.label,name:w.name,"true-value":w.activeValue,"false-value":w.inactiveValue,disabled:M(O),tabindex:w.tabindex,onChange:N,onKeydown:So(U,["enter"])},null,42,obe),!w.inlinePrompt&&(w.inactiveIcon||w.inactiveText)?(B(),se("span",{key:0,class:k(M(p))},[w.inactiveIcon?(B(),Ne(M(Et),{key:0},{default:de(()=>[(B(),Ne(Kt(w.inactiveIcon)))]),_:1})):Ce("v-if",!0),!w.inactiveIcon&&w.inactiveText?(B(),se("span",{key:1,"aria-hidden":M(b)},Qe(w.inactiveText),9,sbe)):Ce("v-if",!0)],2)):Ce("v-if",!0),te("span",{ref_key:"core",ref:S,class:k(M(E).e("core")),style:dt(M(m))},[w.inlinePrompt?(B(),se("div",{key:0,class:k(M(E).e("inner"))},[w.activeIcon||w.inactiveIcon?(B(),Ne(M(Et),{key:0,class:k(M(E).is("icon"))},{default:de(()=>[(B(),Ne(Kt(M(b)?w.activeIcon:w.inactiveIcon)))]),_:1},8,["class"])):w.activeText||w.inactiveText?(B(),se("span",{key:1,class:k(M(E).is("text")),"aria-hidden":!M(b)},Qe(M(b)?w.activeText:w.inactiveText),11,ibe)):Ce("v-if",!0)],2)):Ce("v-if",!0),te("div",{class:k(M(E).e("action"))},[w.loading?(B(),Ne(M(Et),{key:0,class:k(M(E).is("loading"))},{default:de(()=>[ne(M(Da))]),_:1},8,["class"])):M(b)?ye(w.$slots,"active-action",{key:1},()=>[w.activeActionIcon?(B(),Ne(M(Et),{key:0},{default:de(()=>[(B(),Ne(Kt(w.activeActionIcon)))]),_:1})):Ce("v-if",!0)]):M(b)?Ce("v-if",!0):ye(w.$slots,"inactive-action",{key:2},()=>[w.inactiveActionIcon?(B(),Ne(M(Et),{key:0},{default:de(()=>[(B(),Ne(Kt(w.inactiveActionIcon)))]),_:1})):Ce("v-if",!0)])],2)],6),!w.inlinePrompt&&(w.activeIcon||w.activeText)?(B(),se("span",{key:1,class:k(M(C))},[w.activeIcon?(B(),Ne(M(Et),{key:0},{default:de(()=>[(B(),Ne(Kt(w.activeIcon)))]),_:1})):Ce("v-if",!0),!w.activeIcon&&w.activeText?(B(),se("span",{key:1,"aria-hidden":!M(b)},Qe(w.activeText),9,nbe)):Ce("v-if",!0)],2)):Ce("v-if",!0)],14,tbe))}});var lbe=tt(_be,[["__file","switch.vue"]]);const abe=Vt(lbe);function cbe(t){const e=Ht(),o=X(!1),_=X([]);return{updateExpandRows:()=>{const u=t.data.value||[],d=t.rowKey.value;if(o.value)_.value=u.slice();else if(d){const O=mc(_.value,d);_.value=u.reduce((h,I)=>{const S=ci(I,d);return O[S]&&h.push(I),h},[])}else _.value=[]},toggleRowExpansion:(u,d)=>{od(_.value,u,d)&&e.emit("expand-change",u,_.value.slice())},setExpandRowKeys:u=>{e.store.assertRowKey();const d=t.data.value||[],O=t.rowKey.value,h=mc(d,O);_.value=u.reduce((I,S)=>{const L=h[S];return L&&I.push(L.row),I},[])},isRowExpanded:u=>{const d=t.rowKey.value;return d?!!mc(_.value,d)[ci(u,d)]:_.value.includes(u)},states:{expandRows:_,defaultExpandAll:o}}}function Tbe(t){const e=Ht(),o=X(null),_=X(null),l=d=>{e.store.assertRowKey(),o.value=d,T(d)},c=()=>{o.value=null},T=d=>{const{data:O,rowKey:h}=t;let I=null;h.value&&(I=(M(O)||[]).find(S=>ci(S,h.value)===d)),_.value=I,e.emit("current-change",_.value,null)};return{setCurrentRowKey:l,restoreCurrentRowKey:c,setCurrentRowByKey:T,updateCurrentRow:d=>{const O=_.value;if(d&&d!==O){_.value=d,e.emit("current-change",_.value,O);return}!d&&O&&(_.value=null,e.emit("current-change",null,O))},updateCurrentRowData:()=>{const d=t.rowKey.value,O=t.data.value||[],h=_.value;if(!O.includes(h)&&h){if(d){const I=ci(h,d);T(I)}else _.value=null;_.value===null&&e.emit("current-change",null,h)}else o.value&&(T(o.value),c())},states:{_currentRowKey:o,currentRow:_}}}function Ebe(t){const e=X([]),o=X({}),_=X(16),l=X(!1),c=X({}),T=X("hasChildren"),E=X("children"),u=Ht(),d=v(()=>{if(!t.rowKey.value)return{};const m=t.data.value||[];return h(m)}),O=v(()=>{const m=t.rowKey.value,A=Object.keys(c.value),b={};return A.length&&A.forEach(N=>{if(c.value[N].length){const U={children:[]};c.value[N].forEach(P=>{const G=ci(P,m);U.children.push(G),P[T.value]&&!b[G]&&(b[G]={children:[]})}),b[N]=U}}),b}),h=m=>{const A=t.rowKey.value,b={};return uTe(m,(N,U,P)=>{const G=ci(N,A);Array.isArray(U)?b[G]={children:U.map(w=>ci(w,A)),level:P}:l.value&&(b[G]={children:[],lazy:!0,level:P})},E.value,T.value),b},I=(m=!1,A=(b=>(b=u.store)==null?void 0:b.states.defaultExpandAll.value)())=>{var b;const N=d.value,U=O.value,P=Object.keys(N),G={};if(P.length){const w=M(o),F=[],V=(K,ee)=>{if(m)return e.value?A||e.value.includes(ee):!!(A||K!=null&&K.expanded);{const j=A||e.value&&e.value.includes(ee);return!!(K!=null&&K.expanded||j)}};P.forEach(K=>{const ee=w[K],j={...N[K]};if(j.expanded=V(ee,K),j.lazy){const{loaded:J=!1,loading:ie=!1}=ee||{};j.loaded=!!J,j.loading=!!ie,F.push(K)}G[K]=j});const W=Object.keys(U);l.value&&W.length&&F.length&&W.forEach(K=>{const ee=w[K],j=U[K].children;if(F.includes(K)){if(G[K].children.length!==0)throw new Error("[ElTable]children must be an empty array.");G[K].children=j}else{const{loaded:J=!1,loading:ie=!1}=ee||{};G[K]={lazy:!0,loaded:!!J,loading:!!ie,expanded:V(ee,K),children:j,level:""}}})}o.value=G,(b=u.store)==null||b.updateTableScrollY()};Fe(()=>e.value,()=>{I(!0)}),Fe(()=>d.value,()=>{I()}),Fe(()=>O.value,()=>{I()});const S=m=>{e.value=m,I()},L=(m,A)=>{u.store.assertRowKey();const b=t.rowKey.value,N=ci(m,b),U=N&&o.value[N];if(N&&U&&"expanded"in U){const P=U.expanded;A=typeof A>"u"?!U.expanded:A,o.value[N].expanded=A,P!==A&&u.emit("expand-change",m,A),u.store.updateTableScrollY()}},p=m=>{u.store.assertRowKey();const A=t.rowKey.value,b=ci(m,A),N=o.value[b];l.value&&N&&"loaded"in N&&!N.loaded?C(m,b,N):L(m,void 0)},C=(m,A,b)=>{const{load:N}=u.props;N&&!o.value[A].loaded&&(o.value[A].loading=!0,N(m,b,U=>{if(!Array.isArray(U))throw new TypeError("[ElTable] data must be an array");o.value[A].loading=!1,o.value[A].loaded=!0,o.value[A].expanded=!0,U.length&&(c.value[A]=U),u.emit("expand-change",m,!0)}))};return{loadData:C,loadOrToggle:p,toggleTreeExpansion:L,updateTreeExpandKeys:S,updateTreeData:I,normalize:h,states:{expandRowKeys:e,treeData:o,indent:_,lazy:l,lazyTreeNodeMap:c,lazyColumnIdentifier:T,childrenColumnName:E}}}const ube=(t,e)=>{const o=e.sortingColumn;return!o||typeof o.sortable=="string"?t:lTe(t,e.sortProp,e.sortOrder,o.sortMethod,o.sortBy)},UR=t=>{const e=[];return t.forEach(o=>{o.children&&o.children.length>0?e.push.apply(e,UR(o.children)):e.push(o)}),e};function gbe(){var t;const e=Ht(),{size:o}=Xs((t=e.proxy)==null?void 0:t.$props),_=X(null),l=X([]),c=X([]),T=X(!1),E=X([]),u=X([]),d=X([]),O=X([]),h=X([]),I=X([]),S=X([]),L=X([]),p=[],C=X(0),m=X(0),A=X(0),b=X(!1),N=X([]),U=X(!1),P=X(!1),G=X(null),w=X({}),F=X(null),V=X(null),W=X(null),K=X(null),ee=X(null);Fe(l,()=>e.state&&Y(!1),{deep:!0});const j=()=>{if(!_.value)throw new Error("[ElTable] prop row-key is required")},J=z=>{var y;(y=z.children)==null||y.forEach(x=>{x.fixed=z.fixed,J(x)})},ie=()=>{E.value.forEach(Ee=>{J(Ee)}),O.value=E.value.filter(Ee=>Ee.fixed===!0||Ee.fixed==="left"),h.value=E.value.filter(Ee=>Ee.fixed==="right"),O.value.length>0&&E.value[0]&&E.value[0].type==="selection"&&!E.value[0].fixed&&(E.value[0].fixed=!0,O.value.unshift(E.value[0]));const z=E.value.filter(Ee=>!Ee.fixed);u.value=[].concat(O.value).concat(z).concat(h.value);const y=UR(z),x=UR(O.value),oe=UR(h.value);C.value=y.length,m.value=x.length,A.value=oe.length,d.value=[].concat(x).concat(y).concat(oe),T.value=O.value.length>0||h.value.length>0},Y=(z,y=!1)=>{z&&ie(),y?e.state.doLayout():e.state.debouncedUpdateLayout()},re=z=>N.value.includes(z),H=()=>{b.value=!1,N.value.length&&(N.value=[],e.emit("selection-change",[]))},Q=()=>{let z;if(_.value){z=[];const y=mc(N.value,_.value),x=mc(l.value,_.value);for(const oe in y)so(y,oe)&&!x[oe]&&z.push(y[oe].row)}else z=N.value.filter(y=>!l.value.includes(y));if(z.length){const y=N.value.filter(x=>!z.includes(x));N.value=y,e.emit("selection-change",y.slice())}},ae=()=>(N.value||[]).slice(),ge=(z,y=void 0,x=!0)=>{if(od(N.value,z,y)){const Ee=(N.value||[]).slice();x&&e.emit("select",Ee,z),e.emit("selection-change",Ee)}},Se=()=>{var z,y;const x=P.value?!b.value:!(b.value||N.value.length);b.value=x;let oe=!1,Ee=0;const _e=(y=(z=e==null?void 0:e.store)==null?void 0:z.states)==null?void 0:y.rowKey.value;l.value.forEach((ze,_t)=>{const wt=_t+Ee;G.value?G.value.call(null,ze,wt)&&od(N.value,ze,x)&&(oe=!0):od(N.value,ze,x)&&(oe=!0),Ee+=be(ci(ze,_e))}),oe&&e.emit("selection-change",N.value?N.value.slice():[]),e.emit("select-all",N.value)},pe=()=>{const z=mc(N.value,_.value);l.value.forEach(y=>{const x=ci(y,_.value),oe=z[x];oe&&(N.value[oe.index]=y)})},We=()=>{var z,y,x;if(((z=l.value)==null?void 0:z.length)===0){b.value=!1;return}let oe;_.value&&(oe=mc(N.value,_.value));const Ee=function(wt){return oe?!!oe[ci(wt,_.value)]:N.value.includes(wt)};let _e=!0,ze=0,_t=0;for(let wt=0,Ho=(l.value||[]).length;wt<Ho;wt++){const _o=(x=(y=e==null?void 0:e.store)==null?void 0:y.states)==null?void 0:x.rowKey.value,Ko=wt+_t,no=l.value[wt],io=G.value&&G.value.call(null,no,Ko);if(Ee(no))ze++;else if(!G.value||io){_e=!1;break}_t+=be(ci(no,_o))}ze===0&&(_e=!1),b.value=_e},be=z=>{var y;if(!e||!e.store)return 0;const{treeData:x}=e.store.states;let oe=0;const Ee=(y=x.value[z])==null?void 0:y.children;return Ee&&(oe+=Ee.length,Ee.forEach(_e=>{oe+=be(_e)})),oe},Me=(z,y)=>{Array.isArray(z)||(z=[z]);const x={};return z.forEach(oe=>{w.value[oe.id]=y,x[oe.columnKey||oe.id]=y}),x},Ie=(z,y,x)=>{V.value&&V.value!==z&&(V.value.order=null),V.value=z,W.value=y,K.value=x},Pe=()=>{let z=M(c);Object.keys(w.value).forEach(y=>{const x=w.value[y];if(!x||x.length===0)return;const oe=L3({columns:d.value},y);oe&&oe.filterMethod&&(z=z.filter(Ee=>x.some(_e=>oe.filterMethod.call(null,_e,Ee,oe))))}),F.value=z},Ae=()=>{l.value=ube(F.value,{sortingColumn:V.value,sortProp:W.value,sortOrder:K.value})},ke=(z=void 0)=>{z&&z.filter||Pe(),Ae()},ve=z=>{const{tableHeaderRef:y}=e.refs;if(!y)return;const x=Object.assign({},y.filterPanels),oe=Object.keys(x);if(oe.length)if(typeof z=="string"&&(z=[z]),Array.isArray(z)){const Ee=z.map(_e=>aTe({columns:d.value},_e));oe.forEach(_e=>{const ze=Ee.find(_t=>_t.id===_e);ze&&(ze.filteredValue=[])}),e.store.commit("filterChange",{column:Ee,values:[],silent:!0,multi:!0})}else oe.forEach(Ee=>{const _e=d.value.find(ze=>ze.id===Ee);_e&&(_e.filteredValue=[])}),w.value={},e.store.commit("filterChange",{column:{},values:[],silent:!0})},Te=()=>{V.value&&(Ie(null,null,null),e.store.commit("changeSortCondition",{silent:!0}))},{setExpandRowKeys:Re,toggleRowExpansion:Ue,updateExpandRows:Ye,states:De,isRowExpanded:Xe}=cbe({data:l,rowKey:_}),{updateTreeExpandKeys:Ke,toggleTreeExpansion:Be,updateTreeData:qe,loadOrToggle:xe,states:Le}=Ebe({data:l,rowKey:_}),{updateCurrentRowData:je,updateCurrentRow:He,setCurrentRowKey:Je,states:St}=Tbe({data:l,rowKey:_});return{assertRowKey:j,updateColumns:ie,scheduleLayout:Y,isSelected:re,clearSelection:H,cleanSelection:Q,getSelectionRows:ae,toggleRowSelection:ge,_toggleAllSelection:Se,toggleAllSelection:null,updateSelectionByRowKey:pe,updateAllSelected:We,updateFilters:Me,updateCurrentRow:He,updateSort:Ie,execFilter:Pe,execSort:Ae,execQuery:ke,clearFilter:ve,clearSort:Te,toggleRowExpansion:Ue,setExpandRowKeysAdapter:z=>{Re(z),Ke(z)},setCurrentRowKey:Je,toggleRowExpansionAdapter:(z,y)=>{d.value.some(({type:oe})=>oe==="expand")?Ue(z,y):Be(z,y)},isRowExpanded:Xe,updateExpandRows:Ye,updateCurrentRowData:je,loadOrToggle:xe,updateTreeData:qe,states:{tableSize:o,rowKey:_,data:l,_data:c,isComplex:T,_columns:E,originColumns:u,columns:d,fixedColumns:O,rightFixedColumns:h,leafColumns:I,fixedLeafColumns:S,rightFixedLeafColumns:L,updateOrderFns:p,leafColumnsLength:C,fixedLeafColumnsLength:m,rightFixedLeafColumnsLength:A,isAllSelected:b,selection:N,reserveSelection:U,selectOnIndeterminate:P,selectable:G,filters:w,filteredData:F,sortingColumn:V,sortProp:W,sortOrder:K,hoverRow:ee,...De,...Le,...St}}}function LN(t,e){return t.map(o=>{var _;return o.id===e.id?e:((_=o.children)!=null&&_.length&&(o.children=LN(o.children,e)),o)})}function fN(t){t.forEach(e=>{var o,_;e.no=(o=e.getColumnIndex)==null?void 0:o.call(e),(_=e.children)!=null&&_.length&&fN(e.children)}),t.sort((e,o)=>e.no-o.no)}function dbe(){const t=Ht(),e=gbe();return{ns:Ze("table"),...e,mutations:{setData(T,E){const u=M(T._data)!==E;T.data.value=E,T._data.value=E,t.store.execQuery(),t.store.updateCurrentRowData(),t.store.updateExpandRows(),t.store.updateTreeData(t.store.states.defaultExpandAll.value),M(T.reserveSelection)?(t.store.assertRowKey(),t.store.updateSelectionByRowKey()):u?t.store.clearSelection():t.store.cleanSelection(),t.store.updateAllSelected(),t.$ready&&t.store.scheduleLayout()},insertColumn(T,E,u,d){const O=M(T._columns);let h=[];u?(u&&!u.children&&(u.children=[]),u.children.push(E),h=LN(O,u)):(O.push(E),h=O),fN(h),T._columns.value=h,T.updateOrderFns.push(d),E.type==="selection"&&(T.selectable.value=E.selectable,T.reserveSelection.value=E.reserveSelection),t.$ready&&(t.store.updateColumns(),t.store.scheduleLayout())},updateColumnOrder(T,E){var u;((u=E.getColumnIndex)==null?void 0:u.call(E))!==E.no&&(fN(T._columns.value),t.$ready&&t.store.updateColumns())},removeColumn(T,E,u,d){const O=M(T._columns)||[];if(u)u.children.splice(u.children.findIndex(I=>I.id===E.id),1),Lt(()=>{var I;((I=u.children)==null?void 0:I.length)===0&&delete u.children}),T._columns.value=LN(O,u);else{const I=O.indexOf(E);I>-1&&(O.splice(I,1),T._columns.value=O)}const h=T.updateOrderFns.indexOf(d);h>-1&&T.updateOrderFns.splice(h,1),t.$ready&&(t.store.updateColumns(),t.store.scheduleLayout())},sort(T,E){const{prop:u,order:d,init:O}=E;if(u){const h=M(T.columns).find(I=>I.property===u);h&&(h.order=d,t.store.updateSort(h,u,d),t.store.commit("changeSortCondition",{init:O}))}},changeSortCondition(T,E){const{sortingColumn:u,sortProp:d,sortOrder:O}=T,h=M(u),I=M(d),S=M(O);S===null&&(T.sortingColumn.value=null,T.sortProp.value=null);const L={filter:!0};t.store.execQuery(L),(!E||!(E.silent||E.init))&&t.emit("sort-change",{column:h,prop:I,order:S}),t.store.updateTableScrollY()},filterChange(T,E){const{column:u,values:d,silent:O}=E,h=t.store.updateFilters(u,d);t.store.execQuery(),O||t.emit("filter-change",h),t.store.updateTableScrollY()},toggleAllSelection(){t.store.toggleAllSelection()},rowSelectedChanged(T,E){t.store.toggleRowSelection(E),t.store.updateAllSelected()},setHoverRow(T,E){T.hoverRow.value=E},setCurrentRow(T,E){t.store.updateCurrentRow(E)}},commit:function(T,...E){const u=t.store.mutations;if(u[T])u[T].apply(t,[t.store.states].concat(E));else throw new Error(`Action not found: ${T}`)},updateTableScrollY:function(){Lt(()=>t.layout.updateScrollY.apply(t.layout))}}}const rd={rowKey:"rowKey",defaultExpandAll:"defaultExpandAll",selectOnIndeterminate:"selectOnIndeterminate",indent:"indent",lazy:"lazy",data:"data","treeProps.hasChildren":{key:"lazyColumnIdentifier",default:"hasChildren"},"treeProps.children":{key:"childrenColumnName",default:"children"}};function Obe(t,e){if(!t)throw new Error("Table is required.");const o=dbe();return o.toggleAllSelection=nn(o._toggleAllSelection,10),Object.keys(rd).forEach(_=>{QK(JK(e,_),_,o)}),hbe(o,e),o}function hbe(t,e){Object.keys(rd).forEach(o=>{Fe(()=>JK(e,o),_=>{QK(_,o,t)})})}function QK(t,e,o){let _=t,l=rd[e];typeof rd[e]=="object"&&(l=l.key,_=_||rd[e].default),o.states[l].value=_}function JK(t,e){if(e.includes(".")){const o=e.split(".");let _=t;return o.forEach(l=>{_=_[l]}),_}else return t[e]}class Mbe{constructor(e){this.observers=[],this.table=null,this.store=null,this.columns=[],this.fit=!0,this.showHeader=!0,this.height=X(null),this.scrollX=X(!1),this.scrollY=X(!1),this.bodyWidth=X(null),this.fixedWidth=X(null),this.rightFixedWidth=X(null),this.gutterWidth=0;for(const o in e)so(e,o)&&(bo(this[o])?this[o].value=e[o]:this[o]=e[o]);if(!this.table)throw new Error("Table is required for Table Layout");if(!this.store)throw new Error("Store is required for Table Layout")}updateScrollY(){if(this.height.value===null)return!1;const o=this.table.refs.scrollBarRef;if(this.table.vnode.el&&(o!=null&&o.wrapRef)){let _=!0;const l=this.scrollY.value;return _=o.wrapRef.scrollHeight>o.wrapRef.clientHeight,this.scrollY.value=_,l!==_}return!1}setHeight(e,o="height"){if(!ro)return;const _=this.table.vnode.el;if(e=TTe(e),this.height.value=Number(e),!_&&(e||e===0))return Lt(()=>this.setHeight(e,o));typeof e=="number"?(_.style[o]=`${e}px`,this.updateElsHeight()):typeof e=="string"&&(_.style[o]=e,this.updateElsHeight())}setMaxHeight(e){this.setHeight(e,"max-height")}getFlattenColumns(){const e=[];return this.table.store.states.columns.value.forEach(_=>{_.isColumnGroup?e.push.apply(e,_.columns):e.push(_)}),e}updateElsHeight(){this.updateScrollY(),this.notifyObservers("scrollable")}headerDisplayNone(e){if(!e)return!0;let o=e;for(;o.tagName!=="DIV";){if(getComputedStyle(o).display==="none")return!0;o=o.parentElement}return!1}updateColumnsWidth(){if(!ro)return;const e=this.fit,o=this.table.vnode.el.clientWidth;let _=0;const l=this.getFlattenColumns(),c=l.filter(u=>typeof u.width!="number");if(l.forEach(u=>{typeof u.width=="number"&&u.realWidth&&(u.realWidth=null)}),c.length>0&&e){if(l.forEach(u=>{_+=Number(u.width||u.minWidth||80)}),_<=o){this.scrollX.value=!1;const u=o-_;if(c.length===1)c[0].realWidth=Number(c[0].minWidth||80)+u;else{const d=c.reduce((I,S)=>I+Number(S.minWidth||80),0),O=u/d;let h=0;c.forEach((I,S)=>{if(S===0)return;const L=Math.floor(Number(I.minWidth||80)*O);h+=L,I.realWidth=Number(I.minWidth||80)+L}),c[0].realWidth=Number(c[0].minWidth||80)+u-h}}else this.scrollX.value=!0,c.forEach(u=>{u.realWidth=Number(u.minWidth)});this.bodyWidth.value=Math.max(_,o),this.table.state.resizeState.value.width=this.bodyWidth.value}else l.forEach(u=>{!u.width&&!u.minWidth?u.realWidth=80:u.realWidth=Number(u.width||u.minWidth),_+=u.realWidth}),this.scrollX.value=_>o,this.bodyWidth.value=_;const T=this.store.states.fixedColumns.value;if(T.length>0){let u=0;T.forEach(d=>{u+=Number(d.realWidth||d.width)}),this.fixedWidth.value=u}const E=this.store.states.rightFixedColumns.value;if(E.length>0){let u=0;E.forEach(d=>{u+=Number(d.realWidth||d.width)}),this.rightFixedWidth.value=u}this.notifyObservers("columns")}addObserver(e){this.observers.push(e)}removeObserver(e){const o=this.observers.indexOf(e);o!==-1&&this.observers.splice(o,1)}notifyObservers(e){this.observers.forEach(_=>{var l,c;switch(e){case"columns":(l=_.state)==null||l.onColumnsChange(this);break;case"scrollable":(c=_.state)==null||c.onScrollableChange(this);break;default:throw new Error(`Table Layout don't have event ${e}.`)}})}}const{CheckboxGroup:Rbe}=jn,Ibe=Oe({name:"ElTableFilterPanel",components:{ElCheckbox:jn,ElCheckboxGroup:Rbe,ElScrollbar:ul,ElTooltip:wi,ElIcon:Et,ArrowDown:Tl,ArrowUp:bv},directives:{ClickOutside:nl},props:{placement:{type:String,default:"bottom-start"},store:{type:Object},column:{type:Object},upDataColumn:{type:Function}},setup(t){const e=Ht(),{t:o}=lo(),_=Ze("table-filter"),l=e==null?void 0:e.parent;l.filterPanels.value[t.column.id]||(l.filterPanels.value[t.column.id]=e);const c=X(!1),T=X(null),E=v(()=>t.column&&t.column.filters),u=v(()=>t.column.filterClassName?`${_.b()} ${t.column.filterClassName}`:_.b()),d=v({get:()=>{var U;return(((U=t.column)==null?void 0:U.filteredValue)||[])[0]},set:U=>{O.value&&(typeof U<"u"&&U!==null?O.value.splice(0,1,U):O.value.splice(0,1))}}),O=v({get(){return t.column?t.column.filteredValue||[]:[]},set(U){t.column&&t.upDataColumn("filteredValue",U)}}),h=v(()=>t.column?t.column.filterMultiple:!0),I=U=>U.value===d.value,S=()=>{c.value=!1},L=U=>{U.stopPropagation(),c.value=!c.value},p=()=>{c.value=!1},C=()=>{b(O.value),S()},m=()=>{O.value=[],b(O.value),S()},A=U=>{d.value=U,b(typeof U<"u"&&U!==null?O.value:[]),S()},b=U=>{t.store.commit("filterChange",{column:t.column,values:U}),t.store.updateAllSelected()};Fe(c,U=>{t.column&&t.upDataColumn("filterOpened",U)},{immediate:!0});const N=v(()=>{var U,P;return(P=(U=T.value)==null?void 0:U.popperRef)==null?void 0:P.contentRef});return{tooltipVisible:c,multiple:h,filterClassName:u,filteredValue:O,filterValue:d,filters:E,handleConfirm:C,handleReset:m,handleSelect:A,isActive:I,t:o,ns:_,showFilterPanel:L,hideFilterPanel:p,popperPaneRef:N,tooltip:T}}}),Sbe={key:0},pbe=["disabled"],Lbe=["label","onClick"];function fbe(t,e,o,_,l,c){const T=gt("el-checkbox"),E=gt("el-checkbox-group"),u=gt("el-scrollbar"),d=gt("arrow-up"),O=gt("arrow-down"),h=gt("el-icon"),I=gt("el-tooltip"),S=oS("click-outside");return B(),Ne(I,{ref:"tooltip",visible:t.tooltipVisible,offset:0,placement:t.placement,"show-arrow":!1,"stop-popper-mouse-event":!1,teleported:"",effect:"light",pure:"","popper-class":t.filterClassName,persistent:""},{content:de(()=>[t.multiple?(B(),se("div",Sbe,[te("div",{class:k(t.ns.e("content"))},[ne(u,{"wrap-class":t.ns.e("wrap")},{default:de(()=>[ne(E,{modelValue:t.filteredValue,"onUpdate:modelValue":e[0]||(e[0]=L=>t.filteredValue=L),class:k(t.ns.e("checkbox-group"))},{default:de(()=>[(B(!0),se(ht,null,oo(t.filters,L=>(B(),Ne(T,{key:L.value,label:L.value},{default:de(()=>[qt(Qe(L.text),1)]),_:2},1032,["label"]))),128))]),_:1},8,["modelValue","class"])]),_:1},8,["wrap-class"])],2),te("div",{class:k(t.ns.e("bottom"))},[te("button",{class:k({[t.ns.is("disabled")]:t.filteredValue.length===0}),disabled:t.filteredValue.length===0,type:"button",onClick:e[1]||(e[1]=(...L)=>t.handleConfirm&&t.handleConfirm(...L))},Qe(t.t("el.table.confirmFilter")),11,pbe),te("button",{type:"button",onClick:e[2]||(e[2]=(...L)=>t.handleReset&&t.handleReset(...L))},Qe(t.t("el.table.resetFilter")),1)],2)])):(B(),se("ul",{key:1,class:k(t.ns.e("list"))},[te("li",{class:k([t.ns.e("list-item"),{[t.ns.is("active")]:t.filterValue===void 0||t.filterValue===null}]),onClick:e[3]||(e[3]=L=>t.handleSelect(null))},Qe(t.t("el.table.clearFilter")),3),(B(!0),se(ht,null,oo(t.filters,L=>(B(),se("li",{key:L.value,class:k([t.ns.e("list-item"),t.ns.is("active",t.isActive(L))]),label:L.value,onClick:p=>t.handleSelect(L.value)},Qe(L.text),11,Lbe))),128))],2))]),default:de(()=>[yt((B(),se("span",{class:k([`${t.ns.namespace.value}-table__column-filter-trigger`,`${t.ns.namespace.value}-none-outline`]),onClick:e[4]||(e[4]=(...L)=>t.showFilterPanel&&t.showFilterPanel(...L))},[ne(h,null,{default:de(()=>[t.column.filterOpened?(B(),Ne(d,{key:0})):(B(),Ne(O,{key:1}))]),_:1})],2)),[[S,t.hideFilterPanel,t.popperPaneRef]])]),_:1},8,["visible","placement","popper-class"])}var mbe=tt(Ibe,[["render",fbe],["__file","filter-panel.vue"]]);function e4(t){const e=Ht();nS(()=>{o.value.addObserver(e)}),Bt(()=>{_(o.value),l(o.value)}),_l(()=>{_(o.value),l(o.value)}),ba(()=>{o.value.removeObserver(e)});const o=v(()=>{const c=t.layout;if(!c)throw new Error("Can not find table layout.");return c}),_=c=>{var T;const E=((T=t.vnode.el)==null?void 0:T.querySelectorAll("colgroup > col"))||[];if(!E.length)return;const u=c.getFlattenColumns(),d={};u.forEach(O=>{d[O.id]=O});for(let O=0,h=E.length;O<h;O++){const I=E[O],S=I.getAttribute("name"),L=d[S];L&&I.setAttribute("width",L.realWidth||L.width)}},l=c=>{var T,E;const u=((T=t.vnode.el)==null?void 0:T.querySelectorAll("colgroup > col[name=gutter]"))||[];for(let O=0,h=u.length;O<h;O++)u[O].setAttribute("width",c.scrollY.value?c.gutterWidth:"0");const d=((E=t.vnode.el)==null?void 0:E.querySelectorAll("th.gutter"))||[];for(let O=0,h=d.length;O<h;O++){const I=d[O];I.style.width=c.scrollY.value?`${c.gutterWidth}px`:"0",I.style.display=c.scrollY.value?"":"none"}};return{tableLayout:o.value,onColumnsChange:_,onScrollableChange:l}}const S_=Symbol("ElTable");function Cbe(t,e){const o=Ht(),_=lt(S_),l=p=>{p.stopPropagation()},c=(p,C)=>{!C.filters&&C.sortable?L(p,C,!1):C.filterable&&!C.sortable&&l(p),_==null||_.emit("header-click",C,p)},T=(p,C)=>{_==null||_.emit("header-contextmenu",C,p)},E=X(null),u=X(!1),d=X({}),O=(p,C)=>{if(ro&&!(C.children&&C.children.length>0)&&E.value&&t.border){u.value=!0;const m=_;e("set-drag-visible",!0);const b=(m==null?void 0:m.vnode.el).getBoundingClientRect().left,N=o.vnode.el.querySelector(`th.${C.id}`),U=N.getBoundingClientRect(),P=U.left-b+30;r_(N,"noclick"),d.value={startMouseLeft:p.clientX,startLeft:U.right-b,startColumnLeft:U.left-b,tableLeft:b};const G=m==null?void 0:m.refs.resizeProxy;G.style.left=`${d.value.startLeft}px`,document.onselectstart=function(){return!1},document.ondragstart=function(){return!1};const w=V=>{const W=V.clientX-d.value.startMouseLeft,K=d.value.startLeft+W;G.style.left=`${Math.max(P,K)}px`},F=()=>{if(u.value){const{startColumnLeft:V,startLeft:W}=d.value,ee=Number.parseInt(G.style.left,10)-V;C.width=C.realWidth=ee,m==null||m.emit("header-dragend",C.width,W-V,C,p),requestAnimationFrame(()=>{t.store.scheduleLayout(!1,!0)}),document.body.style.cursor="",u.value=!1,E.value=null,d.value={},e("set-drag-visible",!1)}document.removeEventListener("mousemove",w),document.removeEventListener("mouseup",F),document.onselectstart=null,document.ondragstart=null,setTimeout(()=>{tn(N,"noclick")},0)};document.addEventListener("mousemove",w),document.addEventListener("mouseup",F)}},h=(p,C)=>{if(C.children&&C.children.length>0)return;const m=p.target;if(!zn(m))return;const A=m==null?void 0:m.closest("th");if(!(!C||!C.resizable)&&!u.value&&t.border){const b=A.getBoundingClientRect(),N=document.body.style;b.width>12&&b.right-p.pageX<8?(N.cursor="col-resize",Or(A,"is-sortable")&&(A.style.cursor="col-resize"),E.value=C):u.value||(N.cursor="",Or(A,"is-sortable")&&(A.style.cursor="pointer"),E.value=null)}},I=()=>{ro&&(document.body.style.cursor="")},S=({order:p,sortOrders:C})=>{if(p==="")return C[0];const m=C.indexOf(p||null);return C[m>C.length-2?0:m+1]},L=(p,C,m)=>{var A;p.stopPropagation();const b=C.order===m?null:m||S(C),N=(A=p.target)==null?void 0:A.closest("th");if(N&&Or(N,"noclick")){tn(N,"noclick");return}if(!C.sortable)return;const U=t.store.states;let P=U.sortProp.value,G;const w=U.sortingColumn.value;(w!==C||w===C&&w.order===null)&&(w&&(w.order=null),U.sortingColumn.value=C,P=C.property),b?G=C.order=b:G=C.order=null,U.sortProp.value=P,U.sortOrder.value=G,_==null||_.store.commit("changeSortCondition")};return{handleHeaderClick:c,handleHeaderContextMenu:T,handleMouseDown:O,handleMouseMove:h,handleMouseOut:I,handleSortClick:L,handleFilterClick:l}}function Abe(t){const e=lt(S_),o=Ze("table");return{getHeaderRowStyle:E=>{const u=e==null?void 0:e.props.headerRowStyle;return typeof u=="function"?u.call(null,{rowIndex:E}):u},getHeaderRowClass:E=>{const u=[],d=e==null?void 0:e.props.headerRowClassName;return typeof d=="string"?u.push(d):typeof d=="function"&&u.push(d.call(null,{rowIndex:E})),u.join(" ")},getHeaderCellStyle:(E,u,d,O)=>{var h;let I=(h=e==null?void 0:e.props.headerCellStyle)!=null?h:{};typeof I=="function"&&(I=I.call(null,{rowIndex:E,columnIndex:u,row:d,column:O}));const S=Zv(u,O.fixed,t.store,d);return cu(S,"left"),cu(S,"right"),Object.assign({},I,S)},getHeaderCellClass:(E,u,d,O)=>{const h=zv(o.b(),u,O.fixed,t.store,d),I=[O.id,O.order,O.headerAlign,O.className,O.labelClassName,...h];O.children||I.push("is-leaf"),O.sortable&&I.push("is-sortable");const S=e==null?void 0:e.props.headerCellClassName;return typeof S=="string"?I.push(S):typeof S=="function"&&I.push(S.call(null,{rowIndex:E,columnIndex:u,row:d,column:O})),I.push(o.e("cell")),I.filter(L=>!!L).join(" ")}}}const t4=t=>{const e=[];return t.forEach(o=>{o.children?(e.push(o),e.push.apply(e,t4(o.children))):e.push(o)}),e},bbe=t=>{let e=1;const o=(c,T)=>{if(T&&(c.level=T.level+1,e<c.level&&(e=c.level)),c.children){let E=0;c.children.forEach(u=>{o(u,c),E+=u.colSpan}),c.colSpan=E}else c.colSpan=1};t.forEach(c=>{c.level=1,o(c,void 0)});const _=[];for(let c=0;c<e;c++)_.push([]);return t4(t).forEach(c=>{c.children?(c.rowSpan=1,c.children.forEach(T=>T.isSubColumn=!0)):c.rowSpan=e-c.level+1,_[c.level-1].push(c)}),_};function Nbe(t){const e=lt(S_),o=v(()=>bbe(t.store.states.originColumns.value));return{isGroup:v(()=>{const c=o.value.length>1;return c&&e&&(e.state.isGroup.value=!0),c}),toggleAllSelection:c=>{c.stopPropagation(),e==null||e.store.commit("toggleAllSelection")},columnRows:o}}var Pbe=Oe({name:"ElTableHeader",components:{ElCheckbox:jn},props:{fixed:{type:String,default:""},store:{required:!0,type:Object},border:Boolean,defaultSort:{type:Object,default:()=>({prop:"",order:""})}},setup(t,{emit:e}){const o=Ht(),_=lt(S_),l=Ze("table"),c=X({}),{onColumnsChange:T,onScrollableChange:E}=e4(_);Bt(async()=>{await Lt(),await Lt();const{prop:P,order:G}=t.defaultSort;_==null||_.store.commit("sort",{prop:P,order:G,init:!0})});const{handleHeaderClick:u,handleHeaderContextMenu:d,handleMouseDown:O,handleMouseMove:h,handleMouseOut:I,handleSortClick:S,handleFilterClick:L}=Cbe(t,e),{getHeaderRowStyle:p,getHeaderRowClass:C,getHeaderCellStyle:m,getHeaderCellClass:A}=Abe(t),{isGroup:b,toggleAllSelection:N,columnRows:U}=Nbe(t);return o.state={onColumnsChange:T,onScrollableChange:E},o.filterPanels=c,{ns:l,filterPanels:c,onColumnsChange:T,onScrollableChange:E,columnRows:U,getHeaderRowClass:C,getHeaderRowStyle:p,getHeaderCellClass:A,getHeaderCellStyle:m,handleHeaderClick:u,handleHeaderContextMenu:d,handleMouseDown:O,handleMouseMove:h,handleMouseOut:I,handleSortClick:S,handleFilterClick:L,isGroup:b,toggleAllSelection:N}},render(){const{ns:t,isGroup:e,columnRows:o,getHeaderCellStyle:_,getHeaderCellClass:l,getHeaderRowClass:c,getHeaderRowStyle:T,handleHeaderClick:E,handleHeaderContextMenu:u,handleMouseDown:d,handleMouseMove:O,handleSortClick:h,handleMouseOut:I,store:S,$parent:L}=this;let p=1;return pt("thead",{class:{[t.is("group")]:e}},o.map((C,m)=>pt("tr",{class:c(m),key:m,style:T(m)},C.map((A,b)=>(A.rowSpan>p&&(p=A.rowSpan),pt("th",{class:l(m,b,C,A),colspan:A.colSpan,key:`${A.id}-thead`,rowspan:A.rowSpan,style:_(m,b,C,A),onClick:N=>E(N,A),onContextmenu:N=>u(N,A),onMousedown:N=>d(N,A),onMousemove:N=>O(N,A),onMouseout:I},[pt("div",{class:["cell",A.filteredValue&&A.filteredValue.length>0?"highlight":""]},[A.renderHeader?A.renderHeader({column:A,$index:b,store:S,_self:L}):A.label,A.sortable&&pt("span",{onClick:N=>h(N,A),class:"caret-wrapper"},[pt("i",{onClick:N=>h(N,A,"ascending"),class:"sort-caret ascending"}),pt("i",{onClick:N=>h(N,A,"descending"),class:"sort-caret descending"})]),A.filterable&&pt(mbe,{store:S,placement:A.filterPlacement||"bottom-start",column:A,upDataColumn:(N,U)=>{A[N]=U}})])]))))))}});function vbe(t){const e=lt(S_),o=X(""),_=X(pt("div")),{nextZIndex:l}=rT(),c=(L,p,C)=>{var m;const A=e,b=FC(L);let N;const U=(m=A==null?void 0:A.vnode.el)==null?void 0:m.dataset.prefix;b&&(N=ck({columns:t.store.states.columns.value},b,U),N&&(A==null||A.emit(`cell-${C}`,p,N,b,L))),A==null||A.emit(`row-${C}`,p,N,L)},T=(L,p)=>{c(L,p,"dblclick")},E=(L,p)=>{t.store.commit("setCurrentRow",p),c(L,p,"click")},u=(L,p)=>{c(L,p,"contextmenu")},d=nn(L=>{t.store.commit("setHoverRow",L)},30),O=nn(()=>{t.store.commit("setHoverRow",null)},30),h=L=>{const p=window.getComputedStyle(L,null),C=Number.parseInt(p.paddingLeft,10)||0,m=Number.parseInt(p.paddingRight,10)||0,A=Number.parseInt(p.paddingTop,10)||0,b=Number.parseInt(p.paddingBottom,10)||0;return{left:C,right:m,top:A,bottom:b}};return{handleDoubleClick:T,handleClick:E,handleContextMenu:u,handleMouseEnter:d,handleMouseLeave:O,handleCellMouseEnter:(L,p,C)=>{var m;const A=e,b=FC(L),N=(m=A==null?void 0:A.vnode.el)==null?void 0:m.dataset.prefix;if(b){const Y=ck({columns:t.store.states.columns.value},b,N),re=A.hoverState={cell:b,column:Y,row:p};A==null||A.emit("cell-mouse-enter",re.row,re.column,re.cell,L)}if(!C)return;const U=L.target.querySelector(".cell");if(!(Or(U,`${N}-tooltip`)&&U.childNodes.length))return;const P=document.createRange();P.setStart(U,0),P.setEnd(U,U.childNodes.length);let G=P.getBoundingClientRect().width,w=P.getBoundingClientRect().height;G-Math.floor(G)<.001&&(G=Math.floor(G)),w-Math.floor(w)<.001&&(w=Math.floor(w));const{top:W,left:K,right:ee,bottom:j}=h(U),J=K+ee,ie=W+j;(G+J>U.offsetWidth||w+ie>U.offsetHeight||U.scrollWidth>U.offsetWidth)&&gTe(e==null?void 0:e.refs.tableWrapper,b,b.innerText||b.textContent,l,C)},handleCellMouseLeave:L=>{if(!FC(L))return;const C=e==null?void 0:e.hoverState;e==null||e.emit("cell-mouse-leave",C==null?void 0:C.row,C==null?void 0:C.column,C==null?void 0:C.cell,L)},tooltipContent:o,tooltipTrigger:_}}function Dbe(t){const e=lt(S_),o=Ze("table");return{getRowStyle:(d,O)=>{const h=e==null?void 0:e.props.rowStyle;return typeof h=="function"?h.call(null,{row:d,rowIndex:O}):h||null},getRowClass:(d,O)=>{const h=[o.e("row")];e!=null&&e.props.highlightCurrentRow&&d===t.store.states.currentRow.value&&h.push("current-row"),t.stripe&&O%2===1&&h.push(o.em("row","striped"));const I=e==null?void 0:e.props.rowClassName;return typeof I=="string"?h.push(I):typeof I=="function"&&h.push(I.call(null,{row:d,rowIndex:O})),h},getCellStyle:(d,O,h,I)=>{const S=e==null?void 0:e.props.cellStyle;let L=S??{};typeof S=="function"&&(L=S.call(null,{rowIndex:d,columnIndex:O,row:h,column:I}));const p=Zv(O,t==null?void 0:t.fixed,t.store);return cu(p,"left"),cu(p,"right"),Object.assign({},L,p)},getCellClass:(d,O,h,I,S)=>{const L=zv(o.b(),O,t==null?void 0:t.fixed,t.store,void 0,S),p=[I.id,I.align,I.className,...L],C=e==null?void 0:e.props.cellClassName;return typeof C=="string"?p.push(C):typeof C=="function"&&p.push(C.call(null,{rowIndex:d,columnIndex:O,row:h,column:I})),p.push(o.e("cell")),p.filter(m=>!!m).join(" ")},getSpan:(d,O,h,I)=>{let S=1,L=1;const p=e==null?void 0:e.props.spanMethod;if(typeof p=="function"){const C=p({row:d,column:O,rowIndex:h,columnIndex:I});Array.isArray(C)?(S=C[0],L=C[1]):typeof C=="object"&&(S=C.rowspan,L=C.colspan)}return{rowspan:S,colspan:L}},getColspanRealWidth:(d,O,h)=>{if(O<1)return d[h].realWidth;const I=d.map(({realWidth:S,width:L})=>S||L).slice(h,h+O);return Number(I.reduce((S,L)=>Number(S)+Number(L),-1))}}}function Ube(t){const e=lt(S_),o=Ze("table"),{handleDoubleClick:_,handleClick:l,handleContextMenu:c,handleMouseEnter:T,handleMouseLeave:E,handleCellMouseEnter:u,handleCellMouseLeave:d,tooltipContent:O,tooltipTrigger:h}=vbe(t),{getRowStyle:I,getRowClass:S,getCellStyle:L,getCellClass:p,getSpan:C,getColspanRealWidth:m}=Dbe(t),A=v(()=>t.store.states.columns.value.findIndex(({type:G})=>G==="default")),b=(G,w)=>{const F=e.props.rowKey;return F?ci(G,F):w},N=(G,w,F,V=!1)=>{const{tooltipEffect:W,tooltipOptions:K,store:ee}=t,{indent:j,columns:J}=ee.states,ie=S(G,w);let Y=!0;return F&&(ie.push(o.em("row",`level-${F.level}`)),Y=F.display),pt("tr",{style:[Y?null:{display:"none"},I(G,w)],class:ie,key:b(G,w),onDblclick:H=>_(H,G),onClick:H=>l(H,G),onContextmenu:H=>c(H,G),onMouseenter:()=>T(w),onMouseleave:E},J.value.map((H,Q)=>{const{rowspan:ae,colspan:ge}=C(G,H,w,Q);if(!ae||!ge)return null;const Se=Object.assign({},H);Se.realWidth=m(J.value,ge,Q);const pe={store:t.store,_self:t.context||e,column:Se,row:G,$index:w,cellIndex:Q,expanded:V};Q===A.value&&F&&(pe.treeNode={indent:F.level*j.value,level:F.level},typeof F.expanded=="boolean"&&(pe.treeNode.expanded=F.expanded,"loading"in F&&(pe.treeNode.loading=F.loading),"noLazyChildren"in F&&(pe.treeNode.noLazyChildren=F.noLazyChildren)));const We=`${w},${Q}`,be=Se.columnKey||Se.rawColumnKey||"",Me=U(Q,H,pe),Ie=H.showOverflowTooltip&&DX({effect:W},K,H.showOverflowTooltip);return pt("td",{style:L(w,Q,G,H),class:p(w,Q,G,H,ge-1),key:`${be}${We}`,rowspan:ae,colspan:ge,onMouseenter:Pe=>u(Pe,G,Ie),onMouseleave:d},[Me])}))},U=(G,w,F)=>w.renderCell(F);return{wrappedRowRender:(G,w)=>{const F=t.store,{isRowExpanded:V,assertRowKey:W}=F,{treeData:K,lazyTreeNodeMap:ee,childrenColumnName:j,rowKey:J}=F.states,ie=F.states.columns.value;if(ie.some(({type:re})=>re==="expand")){const re=V(G),H=N(G,w,void 0,re),Q=e.renderExpanded;return re?Q?[[H,pt("tr",{key:`expanded-row__${H.key}`},[pt("td",{colspan:ie.length,class:`${o.e("cell")} ${o.e("expanded-cell")}`},[Q({row:G,$index:w,store:F,expanded:re})])])]]:(console.error("[Element Error]renderExpanded is required."),H):[[H]]}else if(Object.keys(K.value).length){W();const re=ci(G,J.value);let H=K.value[re],Q=null;H&&(Q={expanded:H.expanded,level:H.level,display:!0},typeof H.lazy=="boolean"&&(typeof H.loaded=="boolean"&&H.loaded&&(Q.noLazyChildren=!(H.children&&H.children.length)),Q.loading=H.loading));const ae=[N(G,w,Q)];if(H){let ge=0;const Se=(We,be)=>{We&&We.length&&be&&We.forEach(Me=>{const Ie={display:be.display&&be.expanded,level:be.level+1,expanded:!1,noLazyChildren:!1,loading:!1},Pe=ci(Me,J.value);if(Pe==null)throw new Error("For nested data item, row-key is required.");if(H={...K.value[Pe]},H&&(Ie.expanded=H.expanded,H.level=H.level||Ie.level,H.display=!!(H.expanded&&Ie.display),typeof H.lazy=="boolean"&&(typeof H.loaded=="boolean"&&H.loaded&&(Ie.noLazyChildren=!(H.children&&H.children.length)),Ie.loading=H.loading)),ge++,ae.push(N(Me,w+ge,Ie)),H){const Ae=ee.value[Pe]||Me[j.value];Se(Ae,H)}})};H.display=!0;const pe=ee.value[re]||G[j.value];Se(pe,H)}return ae}else return N(G,w,void 0)},tooltipContent:O,tooltipTrigger:h}}const ybe={store:{required:!0,type:Object},stripe:Boolean,tooltipEffect:String,tooltipOptions:{type:Object},context:{default:()=>({}),type:Object},rowClassName:[String,Function],rowStyle:[Object,Function],fixed:{type:String,default:""},highlight:Boolean};var $be=Oe({name:"ElTableBody",props:ybe,setup(t){const e=Ht(),o=lt(S_),_=Ze("table"),{wrappedRowRender:l,tooltipContent:c,tooltipTrigger:T}=Ube(t),{onColumnsChange:E,onScrollableChange:u}=e4(o);return Fe(t.store.states.hoverRow,(d,O)=>{!t.store.states.isComplex.value||!ro||_u(()=>{const h=e==null?void 0:e.vnode.el,I=Array.from((h==null?void 0:h.children)||[]).filter(p=>p==null?void 0:p.classList.contains(`${_.e("row")}`)),S=I[O],L=I[d];S&&tn(S,"hover-row"),L&&r_(L,"hover-row")})}),ba(()=>{var d;(d=ar)==null||d()}),{ns:_,onColumnsChange:E,onScrollableChange:u,wrappedRowRender:l,tooltipContent:c,tooltipTrigger:T}},render(){const{wrappedRowRender:t,store:e}=this,o=e.states.data.value||[];return pt("tbody",{tabIndex:-1},[o.reduce((_,l)=>_.concat(t(l,_.length)),[])])}});function Bbe(){const t=lt(S_),e=t==null?void 0:t.store,o=v(()=>e.states.fixedLeafColumnsLength.value),_=v(()=>e.states.rightFixedColumns.value.length),l=v(()=>e.states.columns.value.length),c=v(()=>e.states.fixedColumns.value.length),T=v(()=>e.states.rightFixedColumns.value.length);return{leftFixedLeafCount:o,rightFixedLeafCount:_,columnsCount:l,leftFixedCount:c,rightFixedCount:T,columns:e.states.columns}}function wbe(t){const{columns:e}=Bbe(),o=Ze("table");return{getCellClasses:(c,T)=>{const E=c[T],u=[o.e("cell"),E.id,E.align,E.labelClassName,...zv(o.b(),T,E.fixed,t.store)];return E.className&&u.push(E.className),E.children||u.push(o.is("leaf")),u},getCellStyles:(c,T)=>{const E=Zv(T,c.fixed,t.store);return cu(E,"left"),cu(E,"right"),E},columns:e}}var Gbe=Oe({name:"ElTableFooter",props:{fixed:{type:String,default:""},store:{required:!0,type:Object},summaryMethod:Function,sumText:String,border:Boolean,defaultSort:{type:Object,default:()=>({prop:"",order:""})}},setup(t){const{getCellClasses:e,getCellStyles:o,columns:_}=wbe(t);return{ns:Ze("table"),getCellClasses:e,getCellStyles:o,columns:_}},render(){const{columns:t,getCellStyles:e,getCellClasses:o,summaryMethod:_,sumText:l}=this,c=this.store.states.data.value;let T=[];return _?T=_({columns:t,data:c}):t.forEach((E,u)=>{if(u===0){T[u]=l;return}const d=c.map(S=>Number(S[E.property])),O=[];let h=!0;d.forEach(S=>{if(!Number.isNaN(+S)){h=!1;const L=`${S}`.split(".")[1];O.push(L?L.length:0)}});const I=Math.max.apply(null,O);h?T[u]="":T[u]=d.reduce((S,L)=>{const p=Number(L);return Number.isNaN(+p)?S:Number.parseFloat((S+L).toFixed(Math.min(I,20)))},0)}),pt(pt("tfoot",[pt("tr",{},[...t.map((E,u)=>pt("td",{key:u,colspan:E.colSpan,rowspan:E.rowSpan,class:o(t,u),style:e(E,u)},[pt("div",{class:["cell",E.labelClassName]},[T[u]])]))])]))}});function kbe(t){return{setCurrentRow:O=>{t.commit("setCurrentRow",O)},getSelectionRows:()=>t.getSelectionRows(),toggleRowSelection:(O,h)=>{t.toggleRowSelection(O,h,!1),t.updateAllSelected()},clearSelection:()=>{t.clearSelection()},clearFilter:O=>{t.clearFilter(O)},toggleAllSelection:()=>{t.commit("toggleAllSelection")},toggleRowExpansion:(O,h)=>{t.toggleRowExpansionAdapter(O,h)},clearSort:()=>{t.clearSort()},sort:(O,h)=>{t.commit("sort",{prop:O,order:h})}}}function Hbe(t,e,o,_){const l=X(!1),c=X(null),T=X(!1),E=H=>{T.value=H},u=X({width:null,height:null,headerHeight:null}),d=X(!1),O={display:"inline-block",verticalAlign:"middle"},h=X(),I=X(0),S=X(0),L=X(0),p=X(0),C=X(0);qs(()=>{e.setHeight(t.height)}),qs(()=>{e.setMaxHeight(t.maxHeight)}),Fe(()=>[t.currentRowKey,o.states.rowKey],([H,Q])=>{!M(Q)||!M(H)||o.setCurrentRowKey(`${H}`)},{immediate:!0}),Fe(()=>t.data,H=>{_.store.commit("setData",H)},{immediate:!0,deep:!0}),qs(()=>{t.expandRowKeys&&o.setExpandRowKeysAdapter(t.expandRowKeys)});const m=()=>{_.store.commit("setHoverRow",null),_.hoverState&&(_.hoverState=null)},A=(H,Q)=>{const{pixelX:ae,pixelY:ge}=Q;Math.abs(ae)>=Math.abs(ge)&&(_.refs.bodyWrapper.scrollLeft+=Q.pixelX/5)},b=v(()=>t.height||t.maxHeight||o.states.fixedColumns.value.length>0||o.states.rightFixedColumns.value.length>0),N=v(()=>({width:e.bodyWidth.value?`${e.bodyWidth.value}px`:""})),U=()=>{b.value&&e.updateElsHeight(),e.updateColumnsWidth(),requestAnimationFrame(F)};Bt(async()=>{await Lt(),o.updateColumns(),V(),requestAnimationFrame(U);const H=_.vnode.el,Q=_.refs.headerWrapper;t.flexible&&H&&H.parentElement&&(H.parentElement.style.minWidth="0"),u.value={width:h.value=H.offsetWidth,height:H.offsetHeight,headerHeight:t.showHeader&&Q?Q.offsetHeight:null},o.states.columns.value.forEach(ae=>{ae.filteredValue&&ae.filteredValue.length&&_.store.commit("filterChange",{column:ae,values:ae.filteredValue,silent:!0})}),_.$ready=!0});const P=(H,Q)=>{if(!H)return;const ae=Array.from(H.classList).filter(ge=>!ge.startsWith("is-scrolling-"));ae.push(e.scrollX.value?Q:"is-scrolling-none"),H.className=ae.join(" ")},G=H=>{const{tableWrapper:Q}=_.refs;P(Q,H)},w=H=>{const{tableWrapper:Q}=_.refs;return!!(Q&&Q.classList.contains(H))},F=function(){if(!_.refs.scrollBarRef)return;if(!e.scrollX.value){const be="is-scrolling-none";w(be)||G(be);return}const H=_.refs.scrollBarRef.wrapRef;if(!H)return;const{scrollLeft:Q,offsetWidth:ae,scrollWidth:ge}=H,{headerWrapper:Se,footerWrapper:pe}=_.refs;Se&&(Se.scrollLeft=Q),pe&&(pe.scrollLeft=Q);const We=ge-ae-1;Q>=We?G("is-scrolling-right"):G(Q===0?"is-scrolling-left":"is-scrolling-middle")},V=()=>{_.refs.scrollBarRef&&(_.refs.scrollBarRef.wrapRef&&Yo(_.refs.scrollBarRef.wrapRef,"scroll",F,{passive:!0}),t.fit?Rs(_.vnode.el,W):Yo(window,"resize",W),Rs(_.refs.bodyWrapper,()=>{var H,Q;W(),(Q=(H=_.refs)==null?void 0:H.scrollBarRef)==null||Q.update()}))},W=()=>{var H,Q,ae,ge;const Se=_.vnode.el;if(!_.$ready||!Se)return;let pe=!1;const{width:We,height:be,headerHeight:Me}=u.value,Ie=h.value=Se.offsetWidth;We!==Ie&&(pe=!0);const Pe=Se.offsetHeight;(t.height||b.value)&&be!==Pe&&(pe=!0);const Ae=t.tableLayout==="fixed"?_.refs.headerWrapper:(H=_.refs.tableHeaderRef)==null?void 0:H.$el;t.showHeader&&(Ae==null?void 0:Ae.offsetHeight)!==Me&&(pe=!0),I.value=((Q=_.refs.tableWrapper)==null?void 0:Q.scrollHeight)||0,L.value=(Ae==null?void 0:Ae.scrollHeight)||0,p.value=((ae=_.refs.footerWrapper)==null?void 0:ae.offsetHeight)||0,C.value=((ge=_.refs.appendWrapper)==null?void 0:ge.offsetHeight)||0,S.value=I.value-L.value-p.value-C.value,pe&&(u.value={width:Ie,height:Pe,headerHeight:t.showHeader&&(Ae==null?void 0:Ae.offsetHeight)||0},U())},K=Ds(),ee=v(()=>{const{bodyWidth:H,scrollY:Q,gutterWidth:ae}=e;return H.value?`${H.value-(Q.value?ae:0)}px`:""}),j=v(()=>t.maxHeight?"fixed":t.tableLayout),J=v(()=>{if(t.data&&t.data.length)return null;let H="100%";t.height&&S.value&&(H=`${S.value}px`);const Q=h.value;return{width:Q?`${Q}px`:"",height:H}}),ie=v(()=>t.height?{height:Number.isNaN(Number(t.height))?t.height:`${t.height}px`}:t.maxHeight?{maxHeight:Number.isNaN(Number(t.maxHeight))?t.maxHeight:`${t.maxHeight}px`}:{}),Y=v(()=>t.height?{height:"100%"}:t.maxHeight?Number.isNaN(Number(t.maxHeight))?{maxHeight:`calc(${t.maxHeight} - ${L.value+p.value}px)`}:{maxHeight:`${t.maxHeight-L.value-p.value}px`}:{});return{isHidden:l,renderExpanded:c,setDragVisible:E,isGroup:d,handleMouseLeave:m,handleHeaderFooterMousewheel:A,tableSize:K,emptyBlockStyle:J,handleFixedMousewheel:(H,Q)=>{const ae=_.refs.bodyWrapper;if(Math.abs(Q.spinY)>0){const ge=ae.scrollTop;Q.pixelY<0&&ge!==0&&H.preventDefault(),Q.pixelY>0&&ae.scrollHeight-ae.clientHeight>ge&&H.preventDefault(),ae.scrollTop+=Math.ceil(Q.pixelY/5)}else ae.scrollLeft+=Math.ceil(Q.pixelX/5)},resizeProxyVisible:T,bodyWidth:ee,resizeState:u,doLayout:U,tableBodyStyles:N,tableLayout:j,scrollbarViewStyle:O,tableInnerStyle:ie,scrollbarStyle:Y}}function xbe(t){const e=X(),o=()=>{const l=t.vnode.el.querySelector(".hidden-columns"),c={childList:!0,subtree:!0},T=t.store.states.updateOrderFns;e.value=new MutationObserver(()=>{T.forEach(E=>E())}),e.value.observe(l,c)};Bt(()=>{o()}),ba(()=>{var _;(_=e.value)==null||_.disconnect()})}var Fbe={data:{type:Array,default:()=>[]},size:Ys,width:[String,Number],height:[String,Number],maxHeight:[String,Number],fit:{type:Boolean,default:!0},stripe:Boolean,border:Boolean,rowKey:[String,Function],showHeader:{type:Boolean,default:!0},showSummary:Boolean,sumText:String,summaryMethod:Function,rowClassName:[String,Function],rowStyle:[Object,Function],cellClassName:[String,Function],cellStyle:[Object,Function],headerRowClassName:[String,Function],headerRowStyle:[Object,Function],headerCellClassName:[String,Function],headerCellStyle:[Object,Function],highlightCurrentRow:Boolean,currentRowKey:[String,Number],emptyText:String,expandRowKeys:Array,defaultExpandAll:Boolean,defaultSort:Object,tooltipEffect:String,tooltipOptions:Object,spanMethod:Function,selectOnIndeterminate:{type:Boolean,default:!0},indent:{type:Number,default:16},treeProps:{type:Object,default:()=>({hasChildren:"hasChildren",children:"children"})},lazy:Boolean,load:Function,style:{type:Object,default:()=>({})},className:{type:String,default:""},tableLayout:{type:String,default:"fixed"},scrollbarAlwaysOn:{type:Boolean,default:!1},flexible:Boolean,showOverflowTooltip:[Boolean,Object]};function o4(t){const e=t.tableLayout==="auto";let o=t.columns||[];e&&o.every(l=>l.width===void 0)&&(o=[]);const _=l=>{const c={key:`${t.tableLayout}_${l.id}`,style:{},name:void 0};return e?c.style={width:`${l.width}px`}:c.name=l.id,c};return pt("colgroup",{},o.map(l=>pt("col",_(l))))}o4.props=["columns","tableLayout"];const Vbe=()=>{const t=X(),e=(c,T)=>{const E=t.value;E&&E.scrollTo(c,T)},o=(c,T)=>{const E=t.value;E&&mt(T)&&["Top","Left"].includes(c)&&E[`setScroll${c}`](T)};return{scrollBarRef:t,scrollTo:e,setScrollTop:c=>o("Top",c),setScrollLeft:c=>o("Left",c)}};let Wbe=1;const Xbe=Oe({name:"ElTable",directives:{Mousewheel:Vde},components:{TableHeader:Pbe,TableBody:$be,TableFooter:Gbe,ElScrollbar:ul,hColgroup:o4},props:Fbe,emits:["select","select-all","selection-change","cell-mouse-enter","cell-mouse-leave","cell-contextmenu","cell-click","cell-dblclick","row-click","row-contextmenu","row-dblclick","header-click","header-contextmenu","sort-change","filter-change","current-change","header-dragend","expand-change"],setup(t){const{t:e}=lo(),o=Ze("table"),_=Ht();Jt(S_,_);const l=Obe(_,t);_.store=l;const c=new Mbe({store:_.store,table:_,fit:t.fit,showHeader:t.showHeader});_.layout=c;const T=v(()=>(l.states.data.value||[]).length===0),{setCurrentRow:E,getSelectionRows:u,toggleRowSelection:d,clearSelection:O,clearFilter:h,toggleAllSelection:I,toggleRowExpansion:S,clearSort:L,sort:p}=kbe(l),{isHidden:C,renderExpanded:m,setDragVisible:A,isGroup:b,handleMouseLeave:N,handleHeaderFooterMousewheel:U,tableSize:P,emptyBlockStyle:G,handleFixedMousewheel:w,resizeProxyVisible:F,bodyWidth:V,resizeState:W,doLayout:K,tableBodyStyles:ee,tableLayout:j,scrollbarViewStyle:J,tableInnerStyle:ie,scrollbarStyle:Y}=Hbe(t,c,l,_),{scrollBarRef:re,scrollTo:H,setScrollLeft:Q,setScrollTop:ae}=Vbe(),ge=nn(K,50),Se=`${o.namespace.value}-table_${Wbe++}`;_.tableId=Se,_.state={isGroup:b,resizeState:W,doLayout:K,debouncedUpdateLayout:ge};const pe=v(()=>t.sumText||e("el.table.sumText")),We=v(()=>t.emptyText||e("el.table.emptyText"));return xbe(_),{ns:o,layout:c,store:l,handleHeaderFooterMousewheel:U,handleMouseLeave:N,tableId:Se,tableSize:P,isHidden:C,isEmpty:T,renderExpanded:m,resizeProxyVisible:F,resizeState:W,isGroup:b,bodyWidth:V,tableBodyStyles:ee,emptyBlockStyle:G,debouncedUpdateLayout:ge,handleFixedMousewheel:w,setCurrentRow:E,getSelectionRows:u,toggleRowSelection:d,clearSelection:O,clearFilter:h,toggleAllSelection:I,toggleRowExpansion:S,clearSort:L,doLayout:K,sort:p,t:e,setDragVisible:A,context:_,computedSumText:pe,computedEmptyText:We,tableLayout:j,scrollbarViewStyle:J,tableInnerStyle:ie,scrollbarStyle:Y,scrollBarRef:re,scrollTo:H,setScrollLeft:Q,setScrollTop:ae}}}),Ybe=["data-prefix"],Kbe={ref:"hiddenColumns",class:"hidden-columns"};function zbe(t,e,o,_,l,c){const T=gt("hColgroup"),E=gt("table-header"),u=gt("table-body"),d=gt("table-footer"),O=gt("el-scrollbar"),h=oS("mousewheel");return B(),se("div",{ref:"tableWrapper",class:k([{[t.ns.m("fit")]:t.fit,[t.ns.m("striped")]:t.stripe,[t.ns.m("border")]:t.border||t.isGroup,[t.ns.m("hidden")]:t.isHidden,[t.ns.m("group")]:t.isGroup,[t.ns.m("fluid-height")]:t.maxHeight,[t.ns.m("scrollable-x")]:t.layout.scrollX.value,[t.ns.m("scrollable-y")]:t.layout.scrollY.value,[t.ns.m("enable-row-hover")]:!t.store.states.isComplex.value,[t.ns.m("enable-row-transition")]:(t.store.states.data.value||[]).length!==0&&(t.store.states.data.value||[]).length<100,"has-footer":t.showSummary},t.ns.m(t.tableSize),t.className,t.ns.b(),t.ns.m(`layout-${t.tableLayout}`)]),style:dt(t.style),"data-prefix":t.ns.namespace.value,onMouseleave:e[0]||(e[0]=(...I)=>t.handleMouseLeave&&t.handleMouseLeave(...I))},[te("div",{class:k(t.ns.e("inner-wrapper")),style:dt(t.tableInnerStyle)},[te("div",Kbe,[ye(t.$slots,"default")],512),t.showHeader&&t.tableLayout==="fixed"?yt((B(),se("div",{key:0,ref:"headerWrapper",class:k(t.ns.e("header-wrapper"))},[te("table",{ref:"tableHeader",class:k(t.ns.e("header")),style:dt(t.tableBodyStyles),border:"0",cellpadding:"0",cellspacing:"0"},[ne(T,{columns:t.store.states.columns.value,"table-layout":t.tableLayout},null,8,["columns","table-layout"]),ne(E,{ref:"tableHeaderRef",border:t.border,"default-sort":t.defaultSort,store:t.store,onSetDragVisible:t.setDragVisible},null,8,["border","default-sort","store","onSetDragVisible"])],6)],2)),[[h,t.handleHeaderFooterMousewheel]]):Ce("v-if",!0),te("div",{ref:"bodyWrapper",class:k(t.ns.e("body-wrapper"))},[ne(O,{ref:"scrollBarRef","view-style":t.scrollbarViewStyle,"wrap-style":t.scrollbarStyle,always:t.scrollbarAlwaysOn},{default:de(()=>[te("table",{ref:"tableBody",class:k(t.ns.e("body")),cellspacing:"0",cellpadding:"0",border:"0",style:dt({width:t.bodyWidth,tableLayout:t.tableLayout})},[ne(T,{columns:t.store.states.columns.value,"table-layout":t.tableLayout},null,8,["columns","table-layout"]),t.showHeader&&t.tableLayout==="auto"?(B(),Ne(E,{key:0,ref:"tableHeaderRef",class:k(t.ns.e("body-header")),border:t.border,"default-sort":t.defaultSort,store:t.store,onSetDragVisible:t.setDragVisible},null,8,["class","border","default-sort","store","onSetDragVisible"])):Ce("v-if",!0),ne(u,{context:t.context,highlight:t.highlightCurrentRow,"row-class-name":t.rowClassName,"tooltip-effect":t.tooltipEffect,"tooltip-options":t.tooltipOptions,"row-style":t.rowStyle,store:t.store,stripe:t.stripe},null,8,["context","highlight","row-class-name","tooltip-effect","tooltip-options","row-style","store","stripe"]),t.showSummary&&t.tableLayout==="auto"?(B(),Ne(d,{key:1,class:k(t.ns.e("body-footer")),border:t.border,"default-sort":t.defaultSort,store:t.store,"sum-text":t.computedSumText,"summary-method":t.summaryMethod},null,8,["class","border","default-sort","store","sum-text","summary-method"])):Ce("v-if",!0)],6),t.isEmpty?(B(),se("div",{key:0,ref:"emptyBlock",style:dt(t.emptyBlockStyle),class:k(t.ns.e("empty-block"))},[te("span",{class:k(t.ns.e("empty-text"))},[ye(t.$slots,"empty",{},()=>[qt(Qe(t.computedEmptyText),1)])],2)],6)):Ce("v-if",!0),t.$slots.append?(B(),se("div",{key:1,ref:"appendWrapper",class:k(t.ns.e("append-wrapper"))},[ye(t.$slots,"append")],2)):Ce("v-if",!0)]),_:3},8,["view-style","wrap-style","always"])],2),t.showSummary&&t.tableLayout==="fixed"?yt((B(),se("div",{key:1,ref:"footerWrapper",class:k(t.ns.e("footer-wrapper"))},[te("table",{class:k(t.ns.e("footer")),cellspacing:"0",cellpadding:"0",border:"0",style:dt(t.tableBodyStyles)},[ne(T,{columns:t.store.states.columns.value,"table-layout":t.tableLayout},null,8,["columns","table-layout"]),ne(d,{border:t.border,"default-sort":t.defaultSort,store:t.store,"sum-text":t.computedSumText,"summary-method":t.summaryMethod},null,8,["border","default-sort","store","sum-text","summary-method"])],6)],2)),[[ao,!t.isEmpty],[h,t.handleHeaderFooterMousewheel]]):Ce("v-if",!0),t.border||t.isGroup?(B(),se("div",{key:2,class:k(t.ns.e("border-left-patch"))},null,2)):Ce("v-if",!0)],6),yt(te("div",{ref:"resizeProxy",class:k(t.ns.e("column-resize-proxy"))},null,2),[[ao,t.resizeProxyVisible]])],46,Ybe)}var Zbe=tt(Xbe,[["render",zbe],["__file","table.vue"]]);const jbe={selection:"table-column--selection",expand:"table__expand-column"},qbe={default:{order:""},selection:{width:48,minWidth:48,realWidth:48,order:""},expand:{width:48,minWidth:48,realWidth:48,order:""},index:{width:48,minWidth:48,realWidth:48,order:""}},Qbe=t=>jbe[t]||"",Jbe={selection:{renderHeader({store:t,column:e}){function o(){return t.states.data.value&&t.states.data.value.length===0}return pt(jn,{disabled:o(),size:t.states.tableSize.value,indeterminate:t.states.selection.value.length>0&&!t.states.isAllSelected.value,"onUpdate:modelValue":t.toggleAllSelection,modelValue:t.states.isAllSelected.value,ariaLabel:e.label})},renderCell({row:t,column:e,store:o,$index:_}){return pt(jn,{disabled:e.selectable?!e.selectable.call(null,t,_):!1,size:o.states.tableSize.value,onChange:()=>{o.commit("rowSelectedChanged",t)},onClick:l=>l.stopPropagation(),modelValue:o.isSelected(t),ariaLabel:e.label})},sortable:!1,resizable:!1},index:{renderHeader({column:t}){return t.label||"#"},renderCell({column:t,$index:e}){let o=e+1;const _=t.index;return typeof _=="number"?o=e+_:typeof _=="function"&&(o=_(e)),pt("div",{},[o])},sortable:!1},expand:{renderHeader({column:t}){return t.label||""},renderCell({row:t,store:e,expanded:o}){const{ns:_}=e,l=[_.e("expand-icon")];return o&&l.push(_.em("expand-icon","expanded")),pt("div",{class:l,onClick:function(T){T.stopPropagation(),e.toggleRowExpansion(t)}},{default:()=>[pt(Et,null,{default:()=>[pt(Ui)]})]})},sortable:!1,resizable:!1}};function eNe({row:t,column:e,$index:o}){var _;const l=e.property,c=l&&IR(t,l).value;return e&&e.formatter?e.formatter(t,e,c,o):((_=c==null?void 0:c.toString)==null?void 0:_.call(c))||""}function tNe({row:t,treeNode:e,store:o},_=!1){const{ns:l}=o;if(!e)return _?[pt("span",{class:l.e("placeholder")})]:null;const c=[],T=function(E){E.stopPropagation(),!e.loading&&o.loadOrToggle(t)};if(e.indent&&c.push(pt("span",{class:l.e("indent"),style:{"padding-left":`${e.indent}px`}})),typeof e.expanded=="boolean"&&!e.noLazyChildren){const E=[l.e("expand-icon"),e.expanded?l.em("expand-icon","expanded"):""];let u=Ui;e.loading&&(u=Da),c.push(pt("div",{class:E,onClick:T},{default:()=>[pt(Et,{class:{[l.is("loading")]:e.loading}},{default:()=>[pt(u)]})]}))}else c.push(pt("span",{class:l.e("placeholder")}));return c}function hH(t,e){return t.reduce((o,_)=>(o[_]=_,o),e)}function oNe(t,e){const o=Ht();return{registerComplexWatchers:()=>{const c=["fixed"],T={realWidth:"width",realMinWidth:"minWidth"},E=hH(c,T);Object.keys(E).forEach(u=>{const d=T[u];so(e,d)&&Fe(()=>e[d],O=>{let h=O;d==="width"&&u==="realWidth"&&(h=Kv(O)),d==="minWidth"&&u==="realMinWidth"&&(h=f3(O)),o.columnConfig.value[d]=h,o.columnConfig.value[u]=h;const I=d==="fixed";t.value.store.scheduleLayout(I)})})},registerNormalWatchers:()=>{const c=["label","filters","filterMultiple","filteredValue","sortable","index","formatter","className","labelClassName","filterClassName","showOverflowTooltip"],T={property:"prop",align:"realAlign",headerAlign:"realHeaderAlign"},E=hH(c,T);Object.keys(E).forEach(u=>{const d=T[u];so(e,d)&&Fe(()=>e[d],O=>{o.columnConfig.value[u]=O})})}}}function sNe(t,e,o){const _=Ht(),l=X(""),c=X(!1),T=X(),E=X(),u=Ze("table");qs(()=>{T.value=t.align?`is-${t.align}`:null,T.value}),qs(()=>{E.value=t.headerAlign?`is-${t.headerAlign}`:T.value,E.value});const d=v(()=>{let N=_.vnode.vParent||_.parent;for(;N&&!N.tableId&&!N.columnId;)N=N.vnode.vParent||N.parent;return N}),O=v(()=>{const{store:N}=_.parent;if(!N)return!1;const{treeData:U}=N.states,P=U.value;return P&&Object.keys(P).length>0}),h=X(Kv(t.width)),I=X(f3(t.minWidth)),S=N=>(h.value&&(N.width=h.value),I.value&&(N.minWidth=I.value),!h.value&&I.value&&(N.width=void 0),N.minWidth||(N.minWidth=80),N.realWidth=Number(N.width===void 0?N.minWidth:N.width),N),L=N=>{const U=N.type,P=Jbe[U]||{};Object.keys(P).forEach(w=>{const F=P[w];w!=="className"&&F!==void 0&&(N[w]=F)});const G=Qbe(U);if(G){const w=`${M(u.namespace)}-${G}`;N.className=N.className?`${N.className} ${w}`:w}return N},p=N=>{Array.isArray(N)?N.forEach(P=>U(P)):U(N);function U(P){var G;((G=P==null?void 0:P.type)==null?void 0:G.name)==="ElTableColumn"&&(P.vParent=_)}};return{columnId:l,realAlign:T,isSubColumn:c,realHeaderAlign:E,columnOrTableParent:d,setColumnWidth:S,setColumnForcedProps:L,setColumnRenders:N=>{t.renderHeader||N.type!=="selection"&&(N.renderHeader=P=>(_.columnConfig.value.label,ye(e,"header",P,()=>[N.label])));let U=N.renderCell;return N.type==="expand"?(N.renderCell=P=>pt("div",{class:"cell"},[U(P)]),o.value.renderExpanded=P=>e.default?e.default(P):e.default):(U=U||eNe,N.renderCell=P=>{let G=null;if(e.default){const ee=e.default(P);G=ee.some(j=>j.type!==Pi)?ee:U(P)}else G=U(P);const{columns:w}=o.value.store.states,F=w.value.findIndex(ee=>ee.type==="default"),V=O.value&&P.cellIndex===F,W=tNe(P,V),K={class:"cell",style:{}};return N.showOverflowTooltip&&(K.class=`${K.class} ${M(u.namespace)}-tooltip`,K.style={width:`${(P.column.realWidth||Number(P.column.width))-1}px`}),p(G),pt("div",K,[W,G])}),N},getPropsData:(...N)=>N.reduce((U,P)=>(Array.isArray(P)&&P.forEach(G=>{U[G]=t[G]}),U),{}),getColumnElIndex:(N,U)=>Array.prototype.indexOf.call(N,U),updateColumnOrder:()=>{o.value.store.commit("updateColumnOrder",_.columnConfig.value)}}}var iNe={type:{type:String,default:"default"},label:String,className:String,labelClassName:String,property:String,prop:String,width:{type:[String,Number],default:""},minWidth:{type:[String,Number],default:""},renderHeader:Function,sortable:{type:[Boolean,String],default:!1},sortMethod:Function,sortBy:[String,Function,Array],resizable:{type:Boolean,default:!0},columnKey:String,align:String,headerAlign:String,showOverflowTooltip:{type:[Boolean,Object],default:void 0},fixed:[Boolean,String],formatter:Function,selectable:Function,reserveSelection:Boolean,filterMethod:Function,filteredValue:Array,filters:Array,filterPlacement:String,filterMultiple:{type:Boolean,default:!0},filterClassName:String,index:[Number,Function],sortOrders:{type:Array,default:()=>["ascending","descending",null],validator:t=>t.every(e=>["ascending","descending",null].includes(e))}};let nNe=1;var s4=Oe({name:"ElTableColumn",components:{ElCheckbox:jn},props:iNe,setup(t,{slots:e}){const o=Ht(),_=X({}),l=v(()=>{let b=o.parent;for(;b&&!b.tableId;)b=b.parent;return b}),{registerNormalWatchers:c,registerComplexWatchers:T}=oNe(l,t),{columnId:E,isSubColumn:u,realHeaderAlign:d,columnOrTableParent:O,setColumnWidth:h,setColumnForcedProps:I,setColumnRenders:S,getPropsData:L,getColumnElIndex:p,realAlign:C,updateColumnOrder:m}=sNe(t,e,l),A=O.value;E.value=`${A.tableId||A.columnId}_column_${nNe++}`,nS(()=>{u.value=l.value!==A;const b=t.type||"default",N=t.sortable===""?!0:t.sortable,U=bs(t.showOverflowTooltip)?A.props.showOverflowTooltip:t.showOverflowTooltip,P={...qbe[b],id:E.value,type:b,property:t.prop||t.property,align:C,headerAlign:d,showOverflowTooltip:U,filterable:t.filters||t.filterMethod,filteredValue:[],filterPlacement:"",filterClassName:"",isColumnGroup:!1,isSubColumn:!1,filterOpened:!1,sortable:N,index:t.index,rawColumnKey:o.vnode.key};let W=L(["columnKey","label","className","labelClassName","type","renderHeader","formatter","fixed","resizable"],["sortMethod","sortBy","sortOrders"],["selectable","reserveSelection"],["filterMethod","filters","filterMultiple","filterOpened","filteredValue","filterPlacement","filterClassName"]);W=cTe(P,W),W=ETe(S,h,I)(W),_.value=W,c(),T()}),Bt(()=>{var b;const N=O.value,U=u.value?N.vnode.el.children:(b=N.refs.hiddenColumns)==null?void 0:b.children,P=()=>p(U||[],o.vnode.el);_.value.getColumnIndex=P,P()>-1&&l.value.store.commit("insertColumn",_.value,u.value?N.columnConfig.value:null,m)}),Do(()=>{l.value.store.commit("removeColumn",_.value,u.value?A.columnConfig.value:null,m)}),o.columnId=E.value,o.columnConfig=_},render(){var t,e,o;try{const _=(e=(t=this.$slots).default)==null?void 0:e.call(t,{row:{},column:{},$index:-1}),l=[];if(Array.isArray(_))for(const T of _)((o=T.type)==null?void 0:o.name)==="ElTableColumn"||T.shapeFlag&2?l.push(T):T.type===ht&&Array.isArray(T.children)&&T.children.forEach(E=>{(E==null?void 0:E.patchFlag)!==1024&&!vt(E==null?void 0:E.children)&&l.push(E)});return pt("div",l)}catch{return pt("div",[])}}});const rNe=Vt(Zbe,{TableColumn:s4}),_Ne=ss(s4);var jd=(t=>(t.ASC="asc",t.DESC="desc",t))(jd||{}),qd=(t=>(t.CENTER="center",t.RIGHT="right",t))(qd||{}),i4=(t=>(t.LEFT="left",t.RIGHT="right",t))(i4||{});const mN={asc:"desc",desc:"asc"},Qd=Symbol("placeholder"),lNe=(t,e,o)=>{var _;const l={flexGrow:0,flexShrink:0,...o?{}:{flexGrow:t.flexGrow||0,flexShrink:t.flexShrink||1}};o||(l.flexShrink=1);const c={...(_=t.style)!=null?_:{},...l,flexBasis:"auto",width:t.width};return e||(t.maxWidth&&(c.maxWidth=t.maxWidth),t.minWidth&&(c.minWidth=t.minWidth)),c};function aNe(t,e,o){const _=v(()=>M(e).filter(p=>!p.hidden)),l=v(()=>M(_).filter(p=>p.fixed==="left"||p.fixed===!0)),c=v(()=>M(_).filter(p=>p.fixed==="right")),T=v(()=>M(_).filter(p=>!p.fixed)),E=v(()=>{const p=[];return M(l).forEach(C=>{p.push({...C,placeholderSign:Qd})}),M(T).forEach(C=>{p.push(C)}),M(c).forEach(C=>{p.push({...C,placeholderSign:Qd})}),p}),u=v(()=>M(l).length||M(c).length),d=v(()=>M(e).reduce((C,m)=>(C[m.key]=lNe(m,M(o),t.fixed),C),{})),O=v(()=>M(_).reduce((p,C)=>p+C.width,0)),h=p=>M(e).find(C=>C.key===p),I=p=>M(d)[p],S=(p,C)=>{p.width=C};function L(p){var C;const{key:m}=p.currentTarget.dataset;if(!m)return;const{sortState:A,sortBy:b}=t;let N=jd.ASC;Zt(A)?N=mN[A[m]]:N=mN[b.order],(C=t.onColumnSort)==null||C.call(t,{column:h(m),key:m,order:N})}return{columns:e,columnsStyles:d,columnsTotalWidth:O,fixedColumnsOnLeft:l,fixedColumnsOnRight:c,hasFixedColumns:u,mainColumns:E,normalColumns:T,visibleColumns:_,getColumn:h,getColumnStyle:I,updateColumnWidth:S,onColumnSorted:L}}const cNe=(t,{mainTableRef:e,leftTableRef:o,rightTableRef:_,onMaybeEndReached:l})=>{const c=X({scrollLeft:0,scrollTop:0});function T(S){var L,p,C;const{scrollTop:m}=S;(L=e.value)==null||L.scrollTo(S),(p=o.value)==null||p.scrollToTop(m),(C=_.value)==null||C.scrollToTop(m)}function E(S){c.value=S,T(S)}function u(S){c.value.scrollTop=S,T(M(c))}function d(S){var L,p;c.value.scrollLeft=S,(p=(L=e.value)==null?void 0:L.scrollTo)==null||p.call(L,M(c))}function O(S){var L;E(S),(L=t.onScroll)==null||L.call(t,S)}function h({scrollTop:S}){const{scrollTop:L}=M(c);S!==L&&u(S)}function I(S,L="auto"){var p;(p=e.value)==null||p.scrollToRow(S,L)}return Fe(()=>M(c).scrollTop,(S,L)=>{S>L&&l()}),{scrollPos:c,scrollTo:E,scrollToLeft:d,scrollToTop:u,scrollToRow:I,onScroll:O,onVerticalScroll:h}},TNe=(t,{mainTableRef:e,leftTableRef:o,rightTableRef:_})=>{const l=Ht(),{emit:c}=l,T=mo(!1),E=mo(null),u=X(t.defaultExpandedRowKeys||[]),d=X(-1),O=mo(null),h=X({}),I=X({}),S=mo({}),L=mo({}),p=mo({}),C=v(()=>mt(t.estimatedRowHeight));function m(w){var F;(F=t.onRowsRendered)==null||F.call(t,w),w.rowCacheEnd>M(d)&&(d.value=w.rowCacheEnd)}function A({hovered:w,rowKey:F}){E.value=w?F:null}function b({expanded:w,rowData:F,rowIndex:V,rowKey:W}){var K,ee;const j=[...M(u)],J=j.indexOf(W);w?J===-1&&j.push(W):J>-1&&j.splice(J,1),u.value=j,c("update:expandedRowKeys",j),(K=t.onRowExpand)==null||K.call(t,{expanded:w,rowData:F,rowIndex:V,rowKey:W}),(ee=t.onExpandedRowsChange)==null||ee.call(t,j)}const N=nn(()=>{var w,F,V,W;T.value=!0,h.value={...M(h),...M(I)},U(M(O),!1),I.value={},O.value=null,(w=e.value)==null||w.forceUpdate(),(F=o.value)==null||F.forceUpdate(),(V=_.value)==null||V.forceUpdate(),(W=l.proxy)==null||W.$forceUpdate(),T.value=!1},0);function U(w,F=!1){M(C)&&[e,o,_].forEach(V=>{const W=M(V);W&&W.resetAfterRowIndex(w,F)})}function P(w,F,V){const W=M(O);(W===null||W>V)&&(O.value=V),I.value[w]=F}function G({rowKey:w,height:F,rowIndex:V},W){W?W===i4.RIGHT?p.value[w]=F:S.value[w]=F:L.value[w]=F;const K=Math.max(...[S,p,L].map(ee=>ee.value[w]||0));M(h)[w]!==K&&(P(w,K,V),N())}return{hoveringRowKey:E,expandedRowKeys:u,lastRenderedRowIndex:d,isDynamic:C,isResetting:T,rowHeights:h,resetAfterIndex:U,onRowExpanded:b,onRowHovered:A,onRowsRendered:m,onRowHeightChange:G}},ENe=(t,{expandedRowKeys:e,lastRenderedRowIndex:o,resetAfterIndex:_})=>{const l=X({}),c=v(()=>{const E={},{data:u,rowKey:d}=t,O=M(e);if(!O||!O.length)return u;const h=[],I=new Set;O.forEach(L=>I.add(L));let S=u.slice();for(S.forEach(L=>E[L[d]]=0);S.length>0;){const L=S.shift();h.push(L),I.has(L[d])&&Array.isArray(L.children)&&L.children.length>0&&(S=[...L.children,...S],L.children.forEach(p=>E[p[d]]=E[L[d]]+1))}return l.value=E,h}),T=v(()=>{const{data:E,expandColumnKey:u}=t;return u?M(c):E});return Fe(T,(E,u)=>{E!==u&&(o.value=-1,_(0,!0))}),{data:T,depthMap:l}},uNe=(t,e)=>t+e,yR=t=>rt(t)?t.reduce(uNe,0):t,jc=(t,e,o={})=>At(t)?t(e):t??o,ia=t=>(["width","maxWidth","minWidth","height"].forEach(e=>{t[e]=hs(t[e])}),t),n4=t=>Fo(t)?e=>pt(t,e):t,gNe=(t,{columnsTotalWidth:e,data:o,fixedColumnsOnLeft:_,fixedColumnsOnRight:l})=>{const c=v(()=>{const{fixed:b,width:N,vScrollbarSize:U}=t,P=N-U;return b?Math.max(Math.round(M(e)),P):P}),T=v(()=>M(c)+(t.fixed?t.vScrollbarSize:0)),E=v(()=>{const{height:b=0,maxHeight:N=0,footerHeight:U,hScrollbarSize:P}=t;if(N>0){const G=M(L),w=M(u),V=M(S)+G+w+P;return Math.min(V,N-U)}return b-U}),u=v(()=>{const{rowHeight:b,estimatedRowHeight:N}=t,U=M(o);return mt(N)?U.length*N:U.length*b}),d=v(()=>{const{maxHeight:b}=t,N=M(E);if(mt(b)&&b>0)return N;const U=M(u)+M(S)+M(L);return Math.min(N,U)}),O=b=>b.width,h=v(()=>yR(M(_).map(O))),I=v(()=>yR(M(l).map(O))),S=v(()=>yR(t.headerHeight)),L=v(()=>{var b;return(((b=t.fixedData)==null?void 0:b.length)||0)*t.rowHeight}),p=v(()=>M(E)-M(S)-M(L)),C=v(()=>{const{style:b={},height:N,width:U}=t;return ia({...b,height:N,width:U})}),m=v(()=>ia({height:t.footerHeight})),A=v(()=>({top:hs(M(S)),bottom:hs(t.footerHeight),width:hs(t.width)}));return{bodyWidth:c,fixedTableHeight:d,mainTableHeight:E,leftTableWidth:h,rightTableWidth:I,headerWidth:T,rowsHeight:u,windowHeight:p,footerHeight:m,emptyStyle:A,rootStyle:C,headerHeight:S}},dNe=t=>{const e=X(),o=X(0),_=X(0);let l;return Bt(()=>{l=Rs(e,([c])=>{const{width:T,height:E}=c.contentRect,{paddingLeft:u,paddingRight:d,paddingTop:O,paddingBottom:h}=getComputedStyle(c.target),I=Number.parseInt(u)||0,S=Number.parseInt(d)||0,L=Number.parseInt(O)||0,p=Number.parseInt(h)||0;o.value=T-I-S,_.value=E-L-p}).stop}),Do(()=>{l==null||l()}),Fe([o,_],([c,T])=>{var E;(E=t.onResize)==null||E.call(t,{width:c,height:T})}),{sizer:e,width:o,height:_}};function ONe(t){const e=X(),o=X(),_=X(),{columns:l,columnsStyles:c,columnsTotalWidth:T,fixedColumnsOnLeft:E,fixedColumnsOnRight:u,hasFixedColumns:d,mainColumns:O,onColumnSorted:h}=aNe(t,Ao(t,"columns"),Ao(t,"fixed")),{scrollTo:I,scrollToLeft:S,scrollToTop:L,scrollToRow:p,onScroll:C,onVerticalScroll:m,scrollPos:A}=cNe(t,{mainTableRef:e,leftTableRef:o,rightTableRef:_,onMaybeEndReached:ve}),{expandedRowKeys:b,hoveringRowKey:N,lastRenderedRowIndex:U,isDynamic:P,isResetting:G,rowHeights:w,resetAfterIndex:F,onRowExpanded:V,onRowHeightChange:W,onRowHovered:K,onRowsRendered:ee}=TNe(t,{mainTableRef:e,leftTableRef:o,rightTableRef:_}),{data:j,depthMap:J}=ENe(t,{expandedRowKeys:b,lastRenderedRowIndex:U,resetAfterIndex:F}),{bodyWidth:ie,fixedTableHeight:Y,mainTableHeight:re,leftTableWidth:H,rightTableWidth:Q,headerWidth:ae,rowsHeight:ge,windowHeight:Se,footerHeight:pe,emptyStyle:We,rootStyle:be,headerHeight:Me}=gNe(t,{columnsTotalWidth:T,data:j,fixedColumnsOnLeft:E,fixedColumnsOnRight:u}),Ie=mo(!1),Pe=X(),Ae=v(()=>{const Te=M(j).length===0;return rt(t.fixedData)?t.fixedData.length===0&&Te:Te});function ke(Te){const{estimatedRowHeight:Re,rowHeight:Ue,rowKey:Ye}=t;return Re?M(w)[M(j)[Te][Ye]]||Re:Ue}function ve(){const{onEndReached:Te}=t;if(!Te)return;const{scrollTop:Re}=M(A),Ue=M(ge),Ye=M(Se),De=Ue-(Re+Ye)+t.hScrollbarSize;M(U)>=0&&Ue===Re+M(re)-M(Me)&&Te(De)}return Fe(()=>t.expandedRowKeys,Te=>b.value=Te,{deep:!0}),{columns:l,containerRef:Pe,mainTableRef:e,leftTableRef:o,rightTableRef:_,isDynamic:P,isResetting:G,isScrolling:Ie,hoveringRowKey:N,hasFixedColumns:d,columnsStyles:c,columnsTotalWidth:T,data:j,expandedRowKeys:b,depthMap:J,fixedColumnsOnLeft:E,fixedColumnsOnRight:u,mainColumns:O,bodyWidth:ie,emptyStyle:We,rootStyle:be,headerWidth:ae,footerHeight:pe,mainTableHeight:re,fixedTableHeight:Y,leftTableWidth:H,rightTableWidth:Q,showEmpty:Ae,getRowHeight:ke,onColumnSorted:h,onRowHovered:K,onRowExpanded:V,onRowsRendered:ee,onRowHeightChange:W,scrollTo:I,scrollToLeft:S,scrollToTop:L,scrollToRow:p,onScroll:C,onVerticalScroll:m}}const RD=Symbol("tableV2"),r4=String,DO={type:me(Array),required:!0},ID={type:me(Array)},_4={...ID,required:!0},hNe=String,MH={type:me(Array),default:()=>Qo([])},Sc={type:Number,required:!0},l4={type:me([String,Number,Symbol]),default:"id"},RH={type:me(Object)},Pc=et({class:String,columns:DO,columnsStyles:{type:me(Object),required:!0},depth:Number,expandColumnKey:hNe,estimatedRowHeight:{...wc.estimatedRowHeight,default:void 0},isScrolling:Boolean,onRowExpand:{type:me(Function)},onRowHover:{type:me(Function)},onRowHeightChange:{type:me(Function)},rowData:{type:me(Object),required:!0},rowEventHandlers:{type:me(Object)},rowIndex:{type:Number,required:!0},rowKey:l4,style:{type:me(Object)}}),sA={type:Number,required:!0},SD=et({class:String,columns:DO,fixedHeaderData:{type:me(Array)},headerData:{type:me(Array),required:!0},headerHeight:{type:me([Number,Array]),default:50},rowWidth:sA,rowHeight:{type:Number,default:50},height:sA,width:sA}),$R=et({columns:DO,data:_4,fixedData:ID,estimatedRowHeight:Pc.estimatedRowHeight,width:Sc,height:Sc,headerWidth:Sc,headerHeight:SD.headerHeight,bodyWidth:Sc,rowHeight:Sc,cache:$K.cache,useIsScrolling:Boolean,scrollbarAlwaysOn:wc.scrollbarAlwaysOn,scrollbarStartGap:wc.scrollbarStartGap,scrollbarEndGap:wc.scrollbarEndGap,class:r4,style:RH,containerStyle:RH,getRowHeight:{type:me(Function),required:!0},rowKey:Pc.rowKey,onRowsRendered:{type:me(Function)},onScroll:{type:me(Function)}}),MNe=et({cache:$R.cache,estimatedRowHeight:Pc.estimatedRowHeight,rowKey:l4,headerClass:{type:me([String,Function])},headerProps:{type:me([Object,Function])},headerCellProps:{type:me([Object,Function])},headerHeight:SD.headerHeight,footerHeight:{type:Number,default:0},rowClass:{type:me([String,Function])},rowProps:{type:me([Object,Function])},rowHeight:{type:Number,default:50},cellProps:{type:me([Object,Function])},columns:DO,data:_4,dataGetter:{type:me(Function)},fixedData:ID,expandColumnKey:Pc.expandColumnKey,expandedRowKeys:MH,defaultExpandedRowKeys:MH,class:r4,fixed:Boolean,style:{type:me(Object)},width:Sc,height:Sc,maxHeight:Number,useIsScrolling:Boolean,indentSize:{type:Number,default:12},iconSize:{type:Number,default:12},hScrollbarSize:wc.hScrollbarSize,vScrollbarSize:wc.vScrollbarSize,scrollbarAlwaysOn:GK.alwaysOn,sortBy:{type:me(Object),default:()=>({})},sortState:{type:me(Object),default:void 0},onColumnSort:{type:me(Function)},onExpandedRowsChange:{type:me(Function)},onEndReached:{type:me(Function)},onRowExpand:Pc.onRowExpand,onScroll:$R.onScroll,onRowsRendered:$R.onRowsRendered,rowEventHandlers:Pc.rowEventHandlers}),pD=(t,{slots:e})=>{var o;const{cellData:_,style:l}=t,c=((o=_==null?void 0:_.toString)==null?void 0:o.call(_))||"",T=ye(e,"default",t,()=>[c]);return ne("div",{class:t.class,title:c,style:l},[T])};pD.displayName="ElTableV2Cell";pD.inheritAttrs=!1;const LD=(t,{slots:e})=>ye(e,"default",t,()=>{var o,_;return[ne("div",{class:t.class,title:(o=t.column)==null?void 0:o.title},[(_=t.column)==null?void 0:_.title])]});LD.displayName="ElTableV2HeaderCell";LD.inheritAttrs=!1;const RNe=et({class:String,columns:DO,columnsStyles:{type:me(Object),required:!0},headerIndex:Number,style:{type:me(Object)}}),INe=Oe({name:"ElTableV2HeaderRow",props:RNe,setup(t,{slots:e}){return()=>{const{columns:o,columnsStyles:_,headerIndex:l,style:c}=t;let T=o.map((E,u)=>e.cell({columns:o,column:E,columnIndex:u,headerIndex:l,style:_[E.key]}));return e.header&&(T=e.header({cells:T.map(E=>rt(E)&&E.length===1?E[0]:E),columns:o,headerIndex:l})),ne("div",{class:t.class,style:c,role:"row"},[T])}}}),SNe="ElTableV2Header",pNe=Oe({name:SNe,props:SD,setup(t,{slots:e,expose:o}){const _=Ze("table-v2"),l=X(),c=v(()=>ia({width:t.width,height:t.height})),T=v(()=>ia({width:t.rowWidth,height:t.height})),E=v(()=>Wc(M(t.headerHeight))),u=h=>{const I=M(l);Lt(()=>{I!=null&&I.scroll&&I.scroll({left:h})})},d=()=>{const h=_.e("fixed-header-row"),{columns:I,fixedHeaderData:S,rowHeight:L}=t;return S==null?void 0:S.map((p,C)=>{var m;const A=ia({height:L,width:"100%"});return(m=e.fixed)==null?void 0:m.call(e,{class:h,columns:I,rowData:p,rowIndex:-(C+1),style:A})})},O=()=>{const h=_.e("dynamic-header-row"),{columns:I}=t;return M(E).map((S,L)=>{var p;const C=ia({width:"100%",height:S});return(p=e.dynamic)==null?void 0:p.call(e,{class:h,columns:I,headerIndex:L,style:C})})};return o({scrollToLeft:u}),()=>{if(!(t.height<=0))return ne("div",{ref:l,class:t.class,style:M(c),role:"rowgroup"},[ne("div",{style:M(T),class:_.e("header")},[O(),d()])])}}}),LNe=t=>{const{isScrolling:e}=lt(RD),o=X(!1),_=X(),l=v(()=>mt(t.estimatedRowHeight)&&t.rowIndex>=0),c=(u=!1)=>{const d=M(_);if(!d)return;const{columns:O,onRowHeightChange:h,rowKey:I,rowIndex:S,style:L}=t,{height:p}=d.getBoundingClientRect();o.value=!0,Lt(()=>{if(u||p!==Number.parseInt(L.height)){const C=O[0],m=(C==null?void 0:C.placeholderSign)===Qd;h==null||h({rowKey:I,height:p,rowIndex:S},C&&!m&&C.fixed)}})},T=v(()=>{const{rowData:u,rowIndex:d,rowKey:O,onRowHover:h}=t,I=t.rowEventHandlers||{},S={};return Object.entries(I).forEach(([L,p])=>{At(p)&&(S[L]=C=>{p({event:C,rowData:u,rowIndex:d,rowKey:O})})}),h&&[{name:"onMouseleave",hovered:!1},{name:"onMouseenter",hovered:!0}].forEach(({name:L,hovered:p})=>{const C=S[L];S[L]=m=>{h({event:m,hovered:p,rowData:u,rowIndex:d,rowKey:O}),C==null||C(m)}}),S}),E=u=>{const{onRowExpand:d,rowData:O,rowIndex:h,rowKey:I}=t;d==null||d({expanded:u,rowData:O,rowIndex:h,rowKey:I})};return Bt(()=>{M(l)&&c(!0)}),{isScrolling:e,measurable:l,measured:o,rowRef:_,eventHandlers:T,onExpand:E}},fNe="ElTableV2TableRow",mNe=Oe({name:fNe,props:Pc,setup(t,{expose:e,slots:o,attrs:_}){const{eventHandlers:l,isScrolling:c,measurable:T,measured:E,rowRef:u,onExpand:d}=LNe(t);return e({onExpand:d}),()=>{const{columns:O,columnsStyles:h,expandColumnKey:I,depth:S,rowData:L,rowIndex:p,style:C}=t;let m=O.map((A,b)=>{const N=rt(L.children)&&L.children.length>0&&A.key===I;return o.cell({column:A,columns:O,columnIndex:b,depth:S,style:h[A.key],rowData:L,rowIndex:p,isScrolling:M(c),expandIconProps:N?{rowData:L,rowIndex:p,onExpand:d}:void 0})});if(o.row&&(m=o.row({cells:m.map(A=>rt(A)&&A.length===1?A[0]:A),style:C,columns:O,depth:S,rowData:L,rowIndex:p,isScrolling:M(c)})),M(T)){const{height:A,...b}=C||{},N=M(E);return ne("div",Yt({ref:u,class:t.class,style:N?C:b,role:"row"},_,M(l)),[m])}return ne("div",Yt(_,{ref:u,class:t.class,style:C,role:"row"},M(l)),[m])}}}),CNe=t=>{const{sortOrder:e}=t;return ne(Et,{size:14,class:t.class},{default:()=>[e===jd.ASC?ne(xae,null,null):ne(kae,null,null)]})},ANe=t=>{const{expanded:e,expandable:o,onExpand:_,style:l,size:c}=t,T={onClick:o?()=>_(!e):void 0,class:t.class};return ne(Et,Yt(T,{size:c,style:l}),{default:()=>[ne(Ui,null,null)]})},bNe="ElTableV2Grid",NNe=t=>{const e=X(),o=X(),_=v(()=>{const{data:p,rowHeight:C,estimatedRowHeight:m}=t;if(!m)return p.length*C}),l=v(()=>{const{fixedData:p,rowHeight:C}=t;return((p==null?void 0:p.length)||0)*C}),c=v(()=>yR(t.headerHeight)),T=v(()=>{const{height:p}=t;return Math.max(0,p-M(c)-M(l))}),E=v(()=>M(c)+M(l)>0),u=({data:p,rowIndex:C})=>p[C][t.rowKey];function d({rowCacheStart:p,rowCacheEnd:C,rowVisibleStart:m,rowVisibleEnd:A}){var b;(b=t.onRowsRendered)==null||b.call(t,{rowCacheStart:p,rowCacheEnd:C,rowVisibleStart:m,rowVisibleEnd:A})}function O(p,C){var m;(m=o.value)==null||m.resetAfterRowIndex(p,C)}function h(p,C){const m=M(e),A=M(o);!m||!A||(Zt(p)?(m.scrollToLeft(p.scrollLeft),A.scrollTo(p)):(m.scrollToLeft(p),A.scrollTo({scrollLeft:p,scrollTop:C})))}function I(p){var C;(C=M(o))==null||C.scrollTo({scrollTop:p})}function S(p,C){var m;(m=M(o))==null||m.scrollToItem(p,1,C)}function L(){var p,C;(p=M(o))==null||p.$forceUpdate(),(C=M(e))==null||C.$forceUpdate()}return{bodyRef:o,forceUpdate:L,fixedRowHeight:l,gridHeight:T,hasHeader:E,headerHeight:c,headerRef:e,totalHeight:_,itemKey:u,onItemRendered:d,resetAfterRowIndex:O,scrollTo:h,scrollToTop:I,scrollToRow:S}},fD=Oe({name:bNe,props:$R,setup(t,{slots:e,expose:o}){const{ns:_}=lt(RD),{bodyRef:l,fixedRowHeight:c,gridHeight:T,hasHeader:E,headerRef:u,headerHeight:d,totalHeight:O,forceUpdate:h,itemKey:I,onItemRendered:S,resetAfterRowIndex:L,scrollTo:p,scrollToTop:C,scrollToRow:m}=NNe(t);o({forceUpdate:h,totalHeight:O,scrollTo:p,scrollToTop:C,scrollToRow:m,resetAfterRowIndex:L});const A=()=>t.bodyWidth;return()=>{const{cache:b,columns:N,data:U,fixedData:P,useIsScrolling:G,scrollbarAlwaysOn:w,scrollbarEndGap:F,scrollbarStartGap:V,style:W,rowHeight:K,bodyWidth:ee,estimatedRowHeight:j,headerWidth:J,height:ie,width:Y,getRowHeight:re,onScroll:H}=t,Q=mt(j),ae=Q?SCe:hCe,ge=M(d);return ne("div",{role:"table",class:[_.e("table"),t.class],style:W},[ne(ae,{ref:l,data:U,useIsScrolling:G,itemKey:I,columnCache:0,columnWidth:Q?A:ee,totalColumn:1,totalRow:U.length,rowCache:b,rowHeight:Q?re:K,width:Y,height:M(T),class:_.e("body"),role:"rowgroup",scrollbarStartGap:V,scrollbarEndGap:F,scrollbarAlwaysOn:w,onScroll:H,onItemRendered:S,perfMode:!1},{default:Se=>{var pe;const We=U[Se.rowIndex];return(pe=e.row)==null?void 0:pe.call(e,{...Se,columns:N,rowData:We})}}),M(E)&&ne(pNe,{ref:u,class:_.e("header-wrapper"),columns:N,headerData:U,headerHeight:t.headerHeight,fixedHeaderData:P,rowWidth:J,rowHeight:K,width:Y,height:Math.min(ge+M(c),ie)},{dynamic:e.header,fixed:e.row})])}}});function PNe(t){return typeof t=="function"||Object.prototype.toString.call(t)==="[object Object]"&&!Fo(t)}const vNe=(t,{slots:e})=>{const{mainTableRef:o,..._}=t;return ne(fD,Yt({ref:o},_),PNe(e)?e:{default:()=>[e]})};function DNe(t){return typeof t=="function"||Object.prototype.toString.call(t)==="[object Object]"&&!Fo(t)}const UNe=(t,{slots:e})=>{if(!t.columns.length)return;const{leftTableRef:o,..._}=t;return ne(fD,Yt({ref:o},_),DNe(e)?e:{default:()=>[e]})};function yNe(t){return typeof t=="function"||Object.prototype.toString.call(t)==="[object Object]"&&!Fo(t)}const $Ne=(t,{slots:e})=>{if(!t.columns.length)return;const{rightTableRef:o,..._}=t;return ne(fD,Yt({ref:o},_),yNe(e)?e:{default:()=>[e]})};function BNe(t){return typeof t=="function"||Object.prototype.toString.call(t)==="[object Object]"&&!Fo(t)}const wNe=(t,{slots:e})=>{const{columns:o,columnsStyles:_,depthMap:l,expandColumnKey:c,expandedRowKeys:T,estimatedRowHeight:E,hasFixedColumns:u,hoveringRowKey:d,rowData:O,rowIndex:h,style:I,isScrolling:S,rowProps:L,rowClass:p,rowKey:C,rowEventHandlers:m,ns:A,onRowHovered:b,onRowExpanded:N}=t,U=jc(p,{columns:o,rowData:O,rowIndex:h},""),P=jc(L,{columns:o,rowData:O,rowIndex:h}),G=O[C],w=l[G]||0,F=!!c,V=h<0,W=[A.e("row"),U,{[A.e(`row-depth-${w}`)]:F&&h>=0,[A.is("expanded")]:F&&T.includes(G),[A.is("hovered")]:!S&&G===d,[A.is("fixed")]:!w&&V,[A.is("customized")]:!!e.row}],K=u?b:void 0,ee={...P,columns:o,columnsStyles:_,class:W,depth:w,expandColumnKey:c,estimatedRowHeight:V?void 0:E,isScrolling:S,rowIndex:h,rowData:O,rowKey:G,rowEventHandlers:m,style:I};return ne(mNe,Yt(ee,{onRowHover:K,onRowExpand:N}),BNe(e)?e:{default:()=>[e]})},CN=({columns:t,column:e,columnIndex:o,depth:_,expandIconProps:l,isScrolling:c,rowData:T,rowIndex:E,style:u,expandedRowKeys:d,ns:O,cellProps:h,expandColumnKey:I,indentSize:S,iconSize:L,rowKey:p},{slots:C})=>{const m=ia(u);if(e.placeholderSign===Qd)return ne("div",{class:O.em("row-cell","placeholder"),style:m},null);const{cellRenderer:A,dataKey:b,dataGetter:N}=e,U=At(N)?N({columns:t,column:e,columnIndex:o,rowData:T,rowIndex:E}):ds(T,b??""),P=jc(h,{cellData:U,columns:t,column:e,columnIndex:o,rowIndex:E,rowData:T}),G={class:O.e("cell-text"),columns:t,column:e,columnIndex:o,cellData:U,isScrolling:c,rowData:T,rowIndex:E},w=n4(A),F=w?w(G):ye(C,"default",G,()=>[ne(pD,G,null)]),V=[O.e("row-cell"),e.class,e.align===qd.CENTER&&O.is("align-center"),e.align===qd.RIGHT&&O.is("align-right")],W=E>=0&&I&&e.key===I,K=E>=0&&d.includes(T[p]);let ee;const j=`margin-inline-start: ${_*S}px;`;return W&&(Zt(l)?ee=ne(ANe,Yt(l,{class:[O.e("expand-icon"),O.is("expanded",K)],size:L,expanded:K,style:j,expandable:!0}),null):ee=ne("div",{style:[j,`width: ${L}px; height: ${L}px;`].join(" ")},null)),ne("div",Yt({class:V,style:m},P,{role:"cell"}),[ee,F])};CN.inheritAttrs=!1;function GNe(t){return typeof t=="function"||Object.prototype.toString.call(t)==="[object Object]"&&!Fo(t)}const kNe=({columns:t,columnsStyles:e,headerIndex:o,style:_,headerClass:l,headerProps:c,ns:T},{slots:E})=>{const u={columns:t,headerIndex:o},d=[T.e("header-row"),jc(l,u,""),{[T.is("customized")]:!!E.header}],O={...jc(c,u),columnsStyles:e,class:d,columns:t,headerIndex:o,style:_};return ne(INe,O,GNe(E)?E:{default:()=>[E]})},IH=(t,{slots:e})=>{const{column:o,ns:_,style:l,onColumnSorted:c}=t,T=ia(l);if(o.placeholderSign===Qd)return ne("div",{class:_.em("header-row-cell","placeholder"),style:T},null);const{headerCellRenderer:E,headerClass:u,sortable:d}=o,O={...t,class:_.e("header-cell-text")},h=n4(E),I=h?h(O):ye(e,"default",O,()=>[ne(LD,O,null)]),{sortBy:S,sortState:L,headerCellProps:p}=t;let C,m;if(L){const N=L[o.key];C=!!mN[N],m=C?N:jd.ASC}else C=o.key===S.key,m=C?S.order:jd.ASC;const A=[_.e("header-cell"),jc(u,t,""),o.align===qd.CENTER&&_.is("align-center"),o.align===qd.RIGHT&&_.is("align-right"),d&&_.is("sortable")],b={...jc(p,t),onClick:o.sortable?c:void 0,class:A,style:T,"data-key":o.key};return ne("div",Yt(b,{role:"columnheader"}),[I,d&&ne(CNe,{class:[_.e("sort-icon"),C&&_.is("sorting")],sortOrder:m},null)])},a4=(t,{slots:e})=>{var o;return ne("div",{class:t.class,style:t.style},[(o=e.default)==null?void 0:o.call(e)])};a4.displayName="ElTableV2Footer";const c4=(t,{slots:e})=>{const o=ye(e,"default",{},()=>[ne(RK,null,null)]);return ne("div",{class:t.class,style:t.style},[o])};c4.displayName="ElTableV2Empty";const T4=(t,{slots:e})=>{var o;return ne("div",{class:t.class,style:t.style},[(o=e.default)==null?void 0:o.call(e)])};T4.displayName="ElTableV2Overlay";function Pg(t){return typeof t=="function"||Object.prototype.toString.call(t)==="[object Object]"&&!Fo(t)}const HNe="ElTableV2",xNe=Oe({name:HNe,props:MNe,setup(t,{slots:e,expose:o}){const _=Ze("table-v2"),{columnsStyles:l,fixedColumnsOnLeft:c,fixedColumnsOnRight:T,mainColumns:E,mainTableHeight:u,fixedTableHeight:d,leftTableWidth:O,rightTableWidth:h,data:I,depthMap:S,expandedRowKeys:L,hasFixedColumns:p,hoveringRowKey:C,mainTableRef:m,leftTableRef:A,rightTableRef:b,isDynamic:N,isResetting:U,isScrolling:P,bodyWidth:G,emptyStyle:w,rootStyle:F,headerWidth:V,footerHeight:W,showEmpty:K,scrollTo:ee,scrollToLeft:j,scrollToTop:J,scrollToRow:ie,getRowHeight:Y,onColumnSorted:re,onRowHeightChange:H,onRowHovered:Q,onRowExpanded:ae,onRowsRendered:ge,onScroll:Se,onVerticalScroll:pe}=ONe(t);return o({scrollTo:ee,scrollToLeft:j,scrollToTop:J,scrollToRow:ie}),Jt(RD,{ns:_,isResetting:U,hoveringRowKey:C,isScrolling:P}),()=>{const{cache:We,cellProps:be,estimatedRowHeight:Me,expandColumnKey:Ie,fixedData:Pe,headerHeight:Ae,headerClass:ke,headerProps:ve,headerCellProps:Te,sortBy:Re,sortState:Ue,rowHeight:Ye,rowClass:De,rowEventHandlers:Xe,rowKey:Ke,rowProps:Be,scrollbarAlwaysOn:qe,indentSize:xe,iconSize:Le,useIsScrolling:je,vScrollbarSize:He,width:Je}=t,St=M(I),Ot={cache:We,class:_.e("main"),columns:M(E),data:St,fixedData:Pe,estimatedRowHeight:Me,bodyWidth:M(G)+He,headerHeight:Ae,headerWidth:M(V),height:M(u),mainTableRef:m,rowKey:Ke,rowHeight:Ye,scrollbarAlwaysOn:qe,scrollbarStartGap:2,scrollbarEndGap:He,useIsScrolling:je,width:Je,getRowHeight:Y,onRowsRendered:ge,onScroll:Se},Nt=M(O),z=M(d),y={cache:We,class:_.e("left"),columns:M(c),data:St,estimatedRowHeight:Me,leftTableRef:A,rowHeight:Ye,bodyWidth:Nt,headerWidth:Nt,headerHeight:Ae,height:z,rowKey:Ke,scrollbarAlwaysOn:qe,scrollbarStartGap:2,scrollbarEndGap:He,useIsScrolling:je,width:Nt,getRowHeight:Y,onScroll:pe},oe=M(h)+He,Ee={cache:We,class:_.e("right"),columns:M(T),data:St,estimatedRowHeight:Me,rightTableRef:b,rowHeight:Ye,bodyWidth:oe,headerWidth:oe,headerHeight:Ae,height:z,rowKey:Ke,scrollbarAlwaysOn:qe,scrollbarStartGap:2,scrollbarEndGap:He,width:oe,style:`--${M(_.namespace)}-table-scrollbar-size: ${He}px`,useIsScrolling:je,getRowHeight:Y,onScroll:pe},_e=M(l),ze={ns:_,depthMap:M(S),columnsStyles:_e,expandColumnKey:Ie,expandedRowKeys:M(L),estimatedRowHeight:Me,hasFixedColumns:M(p),hoveringRowKey:M(C),rowProps:Be,rowClass:De,rowKey:Ke,rowEventHandlers:Xe,onRowHovered:Q,onRowExpanded:ae,onRowHeightChange:H},_t={cellProps:be,expandColumnKey:Ie,indentSize:xe,iconSize:Le,rowKey:Ke,expandedRowKeys:M(L),ns:_},wt={ns:_,headerClass:ke,headerProps:ve,columnsStyles:_e},Ho={ns:_,sortBy:Re,sortState:Ue,headerCellProps:Te,onColumnSorted:re},_o={row:io=>ne(wNe,Yt(io,ze),{row:e.row,cell:go=>{let zo;return e.cell?ne(CN,Yt(go,_t,{style:_e[go.column.key]}),Pg(zo=e.cell(go))?zo:{default:()=>[zo]}):ne(CN,Yt(go,_t,{style:_e[go.column.key]}),null)}}),header:io=>ne(kNe,Yt(io,wt),{header:e.header,cell:go=>{let zo;return e["header-cell"]?ne(IH,Yt(go,Ho,{style:_e[go.column.key]}),Pg(zo=e["header-cell"](go))?zo:{default:()=>[zo]}):ne(IH,Yt(go,Ho,{style:_e[go.column.key]}),null)}})},Ko=[t.class,_.b(),_.e("root"),{[_.is("dynamic")]:M(N)}],no={class:_.e("footer"),style:M(W)};return ne("div",{class:Ko,style:M(F)},[ne(vNe,Ot,Pg(_o)?_o:{default:()=>[_o]}),ne(UNe,y,Pg(_o)?_o:{default:()=>[_o]}),ne($Ne,Ee,Pg(_o)?_o:{default:()=>[_o]}),e.footer&&ne(a4,no,{default:e.footer}),M(K)&&ne(c4,{class:_.e("empty"),style:M(w)},{default:e.empty}),e.overlay&&ne(T4,{class:_.e("overlay")},{default:e.overlay})])}}}),FNe=et({disableWidth:Boolean,disableHeight:Boolean,onResize:{type:me(Function)}}),VNe=Oe({name:"ElAutoResizer",props:FNe,setup(t,{slots:e}){const o=Ze("auto-resizer"),{height:_,width:l,sizer:c}=dNe(t),T={width:"100%",height:"100%"};return()=>{var E;return ne("div",{ref:c,class:o.b(),style:T},[(E=e.default)==null?void 0:E.call(e,{height:_.value,width:l.value})])}}}),WNe=Vt(xNe),XNe=Vt(VNe),QS=Symbol("tabsRootContextKey"),YNe=et({tabs:{type:me(Array),default:()=>Qo([])}}),E4="ElTabBar",KNe=Oe({name:E4}),zNe=Oe({...KNe,props:YNe,setup(t,{expose:e}){const o=t,_=Ht(),l=lt(QS);l||vs(E4,"<el-tabs><el-tab-bar /></el-tabs>");const c=Ze("tabs"),T=X(),E=X(),u=()=>{let O=0,h=0;const I=["top","bottom"].includes(l.props.tabPosition)?"width":"height",S=I==="width"?"x":"y",L=S==="x"?"left":"top";return o.tabs.every(p=>{var C,m;const A=(m=(C=_.parent)==null?void 0:C.refs)==null?void 0:m[`tab-${p.uid}`];if(!A)return!1;if(!p.active)return!0;O=A[`offset${o_(L)}`],h=A[`client${o_(I)}`];const b=window.getComputedStyle(A);return I==="width"&&(o.tabs.length>1&&(h-=Number.parseFloat(b.paddingLeft)+Number.parseFloat(b.paddingRight)),O+=Number.parseFloat(b.paddingLeft)),!1}),{[I]:`${h}px`,transform:`translate${o_(S)}(${O}px)`}},d=()=>E.value=u();return Fe(()=>o.tabs,async()=>{await Lt(),d()},{immediate:!0}),Rs(T,()=>d()),e({ref:T,update:d}),(O,h)=>(B(),se("div",{ref_key:"barRef",ref:T,class:k([M(c).e("active-bar"),M(c).is(M(l).props.tabPosition)]),style:dt(E.value)},null,6))}});var ZNe=tt(zNe,[["__file","tab-bar.vue"]]);const jNe=et({panes:{type:me(Array),default:()=>Qo([])},currentName:{type:[String,Number],default:""},editable:Boolean,type:{type:String,values:["card","border-card",""],default:""},stretch:Boolean}),qNe={tabClick:(t,e,o)=>o instanceof Event,tabRemove:(t,e)=>e instanceof Event},SH="ElTabNav",QNe=Oe({name:SH,props:jNe,emits:qNe,setup(t,{expose:e,emit:o}){const _=Ht(),l=lt(QS);l||vs(SH,"<el-tabs><tab-nav /></el-tabs>");const c=Ze("tabs"),T=ple(),E=yle(),u=X(),d=X(),O=X(),h=X(),I=X(!1),S=X(0),L=X(!1),p=X(!0),C=v(()=>["top","bottom"].includes(l.props.tabPosition)?"width":"height"),m=v(()=>({transform:`translate${C.value==="width"?"X":"Y"}(-${S.value}px)`})),A=()=>{if(!u.value)return;const F=u.value[`offset${o_(C.value)}`],V=S.value;if(!V)return;const W=V>F?V-F:0;S.value=W},b=()=>{if(!u.value||!d.value)return;const F=d.value[`offset${o_(C.value)}`],V=u.value[`offset${o_(C.value)}`],W=S.value;if(F-W<=V)return;const K=F-W>V*2?W+V:F-V;S.value=K},N=async()=>{const F=d.value;if(!I.value||!O.value||!u.value||!F)return;await Lt();const V=O.value.querySelector(".is-active");if(!V)return;const W=u.value,K=["top","bottom"].includes(l.props.tabPosition),ee=V.getBoundingClientRect(),j=W.getBoundingClientRect(),J=K?F.offsetWidth-j.width:F.offsetHeight-j.height,ie=S.value;let Y=ie;K?(ee.left<j.left&&(Y=ie-(j.left-ee.left)),ee.right>j.right&&(Y=ie+ee.right-j.right)):(ee.top<j.top&&(Y=ie-(j.top-ee.top)),ee.bottom>j.bottom&&(Y=ie+(ee.bottom-j.bottom))),Y=Math.max(Y,0),S.value=Math.min(Y,J)},U=()=>{var F;if(!d.value||!u.value)return;t.stretch&&((F=h.value)==null||F.update());const V=d.value[`offset${o_(C.value)}`],W=u.value[`offset${o_(C.value)}`],K=S.value;W<V?(I.value=I.value||{},I.value.prev=K,I.value.next=K+W<V,V-K<W&&(S.value=V-W)):(I.value=!1,K>0&&(S.value=0))},P=F=>{const V=F.code,{up:W,down:K,left:ee,right:j}=Rt;if(![W,K,ee,j].includes(V))return;const J=Array.from(F.currentTarget.querySelectorAll("[role=tab]:not(.is-disabled)")),ie=J.indexOf(F.target);let Y;V===ee||V===W?ie===0?Y=J.length-1:Y=ie-1:ie<J.length-1?Y=ie+1:Y=0,J[Y].focus({preventScroll:!0}),J[Y].click(),G()},G=()=>{p.value&&(L.value=!0)},w=()=>L.value=!1;return Fe(T,F=>{F==="hidden"?p.value=!1:F==="visible"&&setTimeout(()=>p.value=!0,50)}),Fe(E,F=>{F?setTimeout(()=>p.value=!0,50):p.value=!1}),Rs(O,U),Bt(()=>setTimeout(()=>N(),0)),_l(()=>U()),e({scrollToActiveTab:N,removeFocus:w}),Fe(()=>t.panes,()=>_.update(),{flush:"post",deep:!0}),()=>{const F=I.value?[ne("span",{class:[c.e("nav-prev"),c.is("disabled",!I.value.prev)],onClick:A},[ne(Et,null,{default:()=>[ne(La,null,null)]})]),ne("span",{class:[c.e("nav-next"),c.is("disabled",!I.value.next)],onClick:b},[ne(Et,null,{default:()=>[ne(Ui,null,null)]})])]:null,V=t.panes.map((W,K)=>{var ee,j,J,ie;const Y=W.uid,re=W.props.disabled,H=(j=(ee=W.props.name)!=null?ee:W.index)!=null?j:`${K}`,Q=!re&&(W.isClosable||t.editable);W.index=`${K}`;const ae=Q?ne(Et,{class:"is-icon-close",onClick:pe=>o("tabRemove",W,pe)},{default:()=>[ne(Rr,null,null)]}):null,ge=((ie=(J=W.slots).label)==null?void 0:ie.call(J))||W.props.label,Se=!re&&W.active?0:-1;return ne("div",{ref:`tab-${Y}`,class:[c.e("item"),c.is(l.props.tabPosition),c.is("active",W.active),c.is("disabled",re),c.is("closable",Q),c.is("focus",L.value)],id:`tab-${H}`,key:`tab-${Y}`,"aria-controls":`pane-${H}`,role:"tab","aria-selected":W.active,tabindex:Se,onFocus:()=>G(),onBlur:()=>w(),onClick:pe=>{w(),o("tabClick",W,H,pe)},onKeydown:pe=>{Q&&(pe.code===Rt.delete||pe.code===Rt.backspace)&&o("tabRemove",W,pe)}},[ge,ae])});return ne("div",{ref:O,class:[c.e("nav-wrap"),c.is("scrollable",!!I.value),c.is(l.props.tabPosition)]},[F,ne("div",{class:c.e("nav-scroll"),ref:u},[ne("div",{class:[c.e("nav"),c.is(l.props.tabPosition),c.is("stretch",t.stretch&&["top","bottom"].includes(l.props.tabPosition))],ref:d,style:m.value,role:"tablist",onKeydown:P},[t.type?null:ne(ZNe,{ref:h,tabs:[...t.panes]},null),V])])])}}}),JNe=et({type:{type:String,values:["card","border-card",""],default:""},activeName:{type:[String,Number]},closable:Boolean,addable:Boolean,modelValue:{type:[String,Number]},editable:Boolean,tabPosition:{type:String,values:["top","right","bottom","left"],default:"top"},beforeLeave:{type:me(Function),default:()=>!0},stretch:Boolean}),iA=t=>vt(t)||mt(t),ePe={[Xt]:t=>iA(t),tabClick:(t,e)=>e instanceof Event,tabChange:t=>iA(t),edit:(t,e)=>["remove","add"].includes(e),tabRemove:t=>iA(t),tabAdd:()=>!0},tPe=Oe({name:"ElTabs",props:JNe,emits:ePe,setup(t,{emit:e,slots:o,expose:_}){var l,c;const T=Ze("tabs"),{children:E,addChild:u,removeChild:d}=Yv(Ht(),"ElTabPane"),O=X(),h=X((c=(l=t.modelValue)!=null?l:t.activeName)!=null?c:"0"),I=async(C,m=!1)=>{var A,b,N;if(!(h.value===C||bs(C)))try{await((A=t.beforeLeave)==null?void 0:A.call(t,C,h.value))!==!1&&(h.value=C,m&&(e(Xt,C),e("tabChange",C)),(N=(b=O.value)==null?void 0:b.removeFocus)==null||N.call(b))}catch{}},S=(C,m,A)=>{C.props.disabled||(I(m,!0),e("tabClick",C,A))},L=(C,m)=>{C.props.disabled||bs(C.props.name)||(m.stopPropagation(),e("edit",C.props.name,"remove"),e("tabRemove",C.props.name))},p=()=>{e("edit",void 0,"add"),e("tabAdd")};return u_({from:'"activeName"',replacement:'"model-value" or "v-model"',scope:"ElTabs",version:"2.3.0",ref:"https://element-plus.org/en-US/component/tabs.html#attributes",type:"Attribute"},v(()=>!!t.activeName)),Fe(()=>t.activeName,C=>I(C)),Fe(()=>t.modelValue,C=>I(C)),Fe(h,async()=>{var C;await Lt(),(C=O.value)==null||C.scrollToActiveTab()}),Jt(QS,{props:t,currentName:h,registerPane:u,unregisterPane:d}),_({currentName:h}),()=>{const C=o.addIcon,m=t.editable||t.addable?ne("span",{class:T.e("new-tab"),tabindex:"0",onClick:p,onKeydown:N=>{N.code===Rt.enter&&p()}},[C?ye(o,"addIcon"):ne(Et,{class:T.is("icon-plus")},{default:()=>[ne(KX,null,null)]})]):null,A=ne("div",{class:[T.e("header"),T.is(t.tabPosition)]},[m,ne(QNe,{ref:O,currentName:h.value,editable:t.editable,type:t.type,panes:E.value,stretch:t.stretch,onTabClick:S,onTabRemove:L},null)]),b=ne("div",{class:T.e("content")},[ye(o,"default")]);return ne("div",{class:[T.b(),T.m(t.tabPosition),{[T.m("card")]:t.type==="card",[T.m("border-card")]:t.type==="border-card"}]},[...t.tabPosition!=="bottom"?[A,b]:[b,A]])}}}),oPe=et({label:{type:String,default:""},name:{type:[String,Number]},closable:Boolean,disabled:Boolean,lazy:Boolean}),sPe=["id","aria-hidden","aria-labelledby"],u4="ElTabPane",iPe=Oe({name:u4}),nPe=Oe({...iPe,props:oPe,setup(t){const e=t,o=Ht(),_=zs(),l=lt(QS);l||vs(u4,"usage: <el-tabs><el-tab-pane /></el-tabs/>");const c=Ze("tab-pane"),T=X(),E=v(()=>e.closable||l.props.closable),u=HG(()=>{var S;return l.currentName.value===((S=e.name)!=null?S:T.value)}),d=X(u.value),O=v(()=>{var S;return(S=e.name)!=null?S:T.value}),h=HG(()=>!e.lazy||d.value||u.value);Fe(u,S=>{S&&(d.value=!0)});const I=Eo({uid:o.uid,slots:_,props:e,paneName:O,active:u,index:T,isClosable:E});return Bt(()=>{l.registerPane(I)}),ba(()=>{l.unregisterPane(I.uid)}),(S,L)=>M(h)?yt((B(),se("div",{key:0,id:`pane-${M(O)}`,class:k(M(c).b()),role:"tabpanel","aria-hidden":!M(u),"aria-labelledby":`tab-${M(O)}`},[ye(S.$slots,"default")],10,sPe)),[[ao,M(u)]]):Ce("v-if",!0)}});var g4=tt(nPe,[["__file","tab-pane.vue"]]);const rPe=Vt(tPe,{TabPane:g4}),_Pe=ss(g4),lPe=et({type:{type:String,values:["primary","success","info","warning","danger",""],default:""},size:{type:String,values:R_,default:""},truncated:{type:Boolean},lineClamp:{type:[String,Number]},tag:{type:String,default:"span"}}),aPe=Oe({name:"ElText"}),cPe=Oe({...aPe,props:lPe,setup(t){const e=t,o=Ds(),_=Ze("text"),l=v(()=>[_.b(),_.m(e.type),_.m(o.value),_.is("truncated",e.truncated),_.is("line-clamp",!bs(e.lineClamp))]);return(c,T)=>(B(),Ne(Kt(c.tag),{class:k(M(l)),style:dt({"-webkit-line-clamp":c.lineClamp})},{default:de(()=>[ye(c.$slots,"default")]),_:3},8,["class","style"]))}});var TPe=tt(cPe,[["__file","text.vue"]]);const EPe=Vt(TPe),uPe=et({format:{type:String,default:"HH:mm"},modelValue:String,disabled:Boolean,editable:{type:Boolean,default:!0},effect:{type:String,default:"light"},clearable:{type:Boolean,default:!0},size:Ys,placeholder:String,start:{type:String,default:"09:00"},end:{type:String,default:"18:00"},step:{type:String,default:"00:30"},minTime:String,maxTime:String,name:String,prefixIcon:{type:me([String,Object]),default:()=>YX},clearIcon:{type:me([String,Object]),default:()=>va}}),X_=t=>{const e=(t||"").split(":");if(e.length>=2){let o=Number.parseInt(e[0],10);const _=Number.parseInt(e[1],10),l=t.toUpperCase();return l.includes("AM")&&o===12?o=0:l.includes("PM")&&o!==12&&(o+=12),{hours:o,minutes:_}}return null},nA=(t,e)=>{const o=X_(t);if(!o)return-1;const _=X_(e);if(!_)return-1;const l=o.minutes+o.hours*60,c=_.minutes+_.hours*60;return l===c?0:l>c?1:-1},pH=t=>`${t}`.padStart(2,"0"),dE=t=>`${pH(t.hours)}:${pH(t.minutes)}`,gPe=(t,e)=>{const o=X_(t);if(!o)return"";const _=X_(e);if(!_)return"";const l={hours:o.hours,minutes:o.minutes};return l.minutes+=_.minutes,l.hours+=_.hours,l.hours+=Math.floor(l.minutes/60),l.minutes=l.minutes%60,dE(l)},dPe=Oe({name:"ElTimeSelect"}),OPe=Oe({...dPe,props:uPe,emits:["change","blur","focus","update:modelValue"],setup(t,{expose:e}){const o=t;xt.extend(oD);const{Option:_}=Zc,l=Ze("input"),c=X(),T=_n(),{lang:E}=lo(),u=v(()=>o.modelValue),d=v(()=>{const m=X_(o.start);return m?dE(m):null}),O=v(()=>{const m=X_(o.end);return m?dE(m):null}),h=v(()=>{const m=X_(o.step);return m?dE(m):null}),I=v(()=>{const m=X_(o.minTime||"");return m?dE(m):null}),S=v(()=>{const m=X_(o.maxTime||"");return m?dE(m):null}),L=v(()=>{const m=[];if(o.start&&o.end&&o.step){let A=d.value,b;for(;A&&O.value&&nA(A,O.value)<=0;)b=xt(A,"HH:mm").locale(E.value).format(o.format),m.push({value:b,disabled:nA(A,I.value||"-1:-1")<=0||nA(A,S.value||"100:100")>=0}),A=gPe(A,h.value)}return m});return e({blur:()=>{var m,A;(A=(m=c.value)==null?void 0:m.blur)==null||A.call(m)},focus:()=>{var m,A;(A=(m=c.value)==null?void 0:m.focus)==null||A.call(m)}}),(m,A)=>(B(),Ne(M(Zc),{ref_key:"select",ref:c,"model-value":M(u),disabled:M(T),clearable:m.clearable,"clear-icon":m.clearIcon,size:m.size,effect:m.effect,placeholder:m.placeholder,"default-first-option":"",filterable:m.editable,"onUpdate:modelValue":A[0]||(A[0]=b=>m.$emit("update:modelValue",b)),onChange:A[1]||(A[1]=b=>m.$emit("change",b)),onBlur:A[2]||(A[2]=b=>m.$emit("blur",b)),onFocus:A[3]||(A[3]=b=>m.$emit("focus",b))},{prefix:de(()=>[m.prefixIcon?(B(),Ne(M(Et),{key:0,class:k(M(l).e("prefix-icon"))},{default:de(()=>[(B(),Ne(Kt(m.prefixIcon)))]),_:1},8,["class"])):Ce("v-if",!0)]),default:de(()=>[(B(!0),se(ht,null,oo(M(L),b=>(B(),Ne(M(_),{key:b.value,label:b.value,value:b.value,disabled:b.disabled},null,8,["label","value","disabled"]))),128))]),_:1},8,["model-value","disabled","clearable","clear-icon","size","effect","placeholder","filterable"]))}});var BR=tt(OPe,[["__file","time-select.vue"]]);BR.install=t=>{t.component(BR.name,BR)};const hPe=BR,MPe=hPe,RPe=Oe({name:"ElTimeline",setup(t,{slots:e}){const o=Ze("timeline");return Jt("timeline",e),()=>pt("ul",{class:[o.b()]},[ye(e,"default")])}}),IPe=et({timestamp:{type:String,default:""},hideTimestamp:{type:Boolean,default:!1},center:{type:Boolean,default:!1},placement:{type:String,values:["top","bottom"],default:"bottom"},type:{type:String,values:["primary","success","warning","danger","info"],default:""},color:{type:String,default:""},size:{type:String,values:["normal","large"],default:"normal"},icon:{type:Lo},hollow:{type:Boolean,default:!1}}),SPe=Oe({name:"ElTimelineItem"}),pPe=Oe({...SPe,props:IPe,setup(t){const e=t,o=Ze("timeline-item"),_=v(()=>[o.e("node"),o.em("node",e.size||""),o.em("node",e.type||""),o.is("hollow",e.hollow)]);return(l,c)=>(B(),se("li",{class:k([M(o).b(),{[M(o).e("center")]:l.center}])},[te("div",{class:k(M(o).e("tail"))},null,2),l.$slots.dot?Ce("v-if",!0):(B(),se("div",{key:0,class:k(M(_)),style:dt({backgroundColor:l.color})},[l.icon?(B(),Ne(M(Et),{key:0,class:k(M(o).e("icon"))},{default:de(()=>[(B(),Ne(Kt(l.icon)))]),_:1},8,["class"])):Ce("v-if",!0)],6)),l.$slots.dot?(B(),se("div",{key:1,class:k(M(o).e("dot"))},[ye(l.$slots,"dot")],2)):Ce("v-if",!0),te("div",{class:k(M(o).e("wrapper"))},[!l.hideTimestamp&&l.placement==="top"?(B(),se("div",{key:0,class:k([M(o).e("timestamp"),M(o).is("top")])},Qe(l.timestamp),3)):Ce("v-if",!0),te("div",{class:k(M(o).e("content"))},[ye(l.$slots,"default")],2),!l.hideTimestamp&&l.placement==="bottom"?(B(),se("div",{key:1,class:k([M(o).e("timestamp"),M(o).is("bottom")])},Qe(l.timestamp),3)):Ce("v-if",!0)],2)],2))}});var d4=tt(pPe,[["__file","timeline-item.vue"]]);const LPe=Vt(RPe,{TimelineItem:d4}),fPe=ss(d4),O4=et({nowrap:Boolean});var h4=(t=>(t.top="top",t.bottom="bottom",t.left="left",t.right="right",t))(h4||{});const mPe=Object.values(h4),mD=et({width:{type:Number,default:10},height:{type:Number,default:10},style:{type:me(Object),default:null}}),CPe=et({side:{type:me(String),values:mPe,required:!0}}),APe=["absolute","fixed"],bPe=["top-start","top-end","top","bottom-start","bottom-end","bottom","left-start","left-end","left","right-start","right-end","right"],CD=et({ariaLabel:String,arrowPadding:{type:me(Number),default:5},effect:{type:String,default:""},contentClass:String,placement:{type:me(String),values:bPe,default:"bottom"},reference:{type:me(Object),default:null},offset:{type:Number,default:8},strategy:{type:me(String),values:APe,default:"absolute"},showArrow:{type:Boolean,default:!1}}),AD=et({delayDuration:{type:Number,default:300},defaultOpen:Boolean,open:{type:Boolean,default:void 0},onOpenChange:{type:me(Function)},"onUpdate:open":{type:me(Function)}}),aE={type:me(Function)},bD=et({onBlur:aE,onClick:aE,onFocus:aE,onMouseDown:aE,onMouseEnter:aE,onMouseLeave:aE}),NPe=et({...AD,...mD,...bD,...CD,alwaysOn:Boolean,fullTransition:Boolean,transitionProps:{type:me(Object),default:null},teleported:Boolean,to:{type:me(String),default:"body"}}),JS=Symbol("tooltipV2"),M4=Symbol("tooltipV2Content"),rA="tooltip_v2.open",PPe=Oe({name:"ElTooltipV2Root"}),vPe=Oe({...PPe,props:AD,setup(t,{expose:e}){const o=t,_=X(o.defaultOpen),l=X(null),c=v({get:()=>Gle(o.open)?_.value:o.open,set:C=>{var m;_.value=C,(m=o["onUpdate:open"])==null||m.call(o,C)}}),T=v(()=>mt(o.delayDuration)&&o.delayDuration>0),{start:E,stop:u}=Xc(()=>{c.value=!0},v(()=>o.delayDuration),{immediate:!1}),d=Ze("tooltip-v2"),O=rn(),h=()=>{u(),c.value=!0},I=()=>{M(T)?E():h()},S=h,L=()=>{u(),c.value=!1};return Fe(c,C=>{var m;C&&(document.dispatchEvent(new CustomEvent(rA)),S()),(m=o.onOpenChange)==null||m.call(o,C)}),Bt(()=>{document.addEventListener(rA,L)}),Do(()=>{u(),document.removeEventListener(rA,L)}),Jt(JS,{contentId:O,triggerRef:l,ns:d,onClose:L,onDelayOpen:I,onOpen:S}),e({onOpen:S,onClose:L}),(C,m)=>ye(C.$slots,"default",{open:M(c)})}});var DPe=tt(vPe,[["__file","root.vue"]]);const UPe=Oe({name:"ElTooltipV2Arrow"}),yPe=Oe({...UPe,props:{...mD,...CPe},setup(t){const e=t,{ns:o}=lt(JS),{arrowRef:_}=lt(M4),l=v(()=>{const{style:c,width:T,height:E}=e,u=o.namespace.value;return{[`--${u}-tooltip-v2-arrow-width`]:`${T}px`,[`--${u}-tooltip-v2-arrow-height`]:`${E}px`,[`--${u}-tooltip-v2-arrow-border-width`]:`${T/2}px`,[`--${u}-tooltip-v2-arrow-cover-width`]:T/2-1,...c||{}}});return(c,T)=>(B(),se("span",{ref_key:"arrowRef",ref:_,style:dt(M(l)),class:k(M(o).e("arrow"))},null,6))}});var LH=tt(yPe,[["__file","arrow.vue"]]);const $Pe=et({style:{type:me([String,Object,Array]),default:()=>({})}}),BPe=Oe({name:"ElVisuallyHidden"}),wPe=Oe({...BPe,props:$Pe,setup(t){const e=t,o=v(()=>[e.style,{position:"absolute",border:0,width:1,height:1,padding:0,margin:-1,overflow:"hidden",clip:"rect(0, 0, 0, 0)",whiteSpace:"nowrap",wordWrap:"normal"}]);return(_,l)=>(B(),se("span",Yt(_.$attrs,{style:M(o)}),[ye(_.$slots,"default")],16))}});var GPe=tt(wPe,[["__file","visual-hidden.vue"]]);const kPe=["data-side"],HPe=Oe({name:"ElTooltipV2Content"}),xPe=Oe({...HPe,props:{...CD,...O4},setup(t){const e=t,{triggerRef:o,contentId:_}=lt(JS),l=X(e.placement),c=X(e.strategy),T=X(null),{referenceRef:E,contentRef:u,middlewareData:d,x:O,y:h,update:I}=sTe({placement:l,strategy:c,middleware:v(()=>{const b=[E3(e.offset)];return e.showArrow&&b.push(iTe({arrowRef:T})),b})}),S=rT().nextZIndex(),L=Ze("tooltip-v2"),p=v(()=>l.value.split("-")[0]),C=v(()=>({position:M(c),top:`${M(h)||0}px`,left:`${M(O)||0}px`,zIndex:S})),m=v(()=>{if(!e.showArrow)return{};const{arrow:b}=M(d);return{[`--${L.namespace.value}-tooltip-v2-arrow-x`]:`${b==null?void 0:b.x}px`||"",[`--${L.namespace.value}-tooltip-v2-arrow-y`]:`${b==null?void 0:b.y}px`||""}}),A=v(()=>[L.e("content"),L.is("dark",e.effect==="dark"),L.is(M(c)),e.contentClass]);return Fe(T,()=>I()),Fe(()=>e.placement,b=>l.value=b),Bt(()=>{Fe(()=>e.reference||o.value,b=>{E.value=b||void 0},{immediate:!0})}),Jt(M4,{arrowRef:T}),(b,N)=>(B(),se("div",{ref_key:"contentRef",ref:u,style:dt(M(C)),"data-tooltip-v2-root":""},[b.nowrap?Ce("v-if",!0):(B(),se("div",{key:0,"data-side":M(p),class:k(M(A))},[ye(b.$slots,"default",{contentStyle:M(C),contentClass:M(A)}),ne(M(GPe),{id:M(_),role:"tooltip"},{default:de(()=>[b.ariaLabel?(B(),se(ht,{key:0},[qt(Qe(b.ariaLabel),1)],64)):ye(b.$slots,"default",{key:1})]),_:3},8,["id"]),ye(b.$slots,"arrow",{style:dt(M(m)),side:M(p)})],10,kPe))],4))}});var fH=tt(xPe,[["__file","content.vue"]]);const FPe=et({setRef:{type:me(Function),required:!0},onlyChild:Boolean});var VPe=Oe({props:FPe,setup(t,{slots:e}){const o=X(),_=$S(o,l=>{l?t.setRef(l.nextElementSibling):t.setRef(null)});return()=>{var l;const[c]=((l=e.default)==null?void 0:l.call(e))||[],T=t.onlyChild?ice(c.children):c.children;return ne(ht,{ref:_},[T])}}});const WPe=Oe({name:"ElTooltipV2Trigger"}),XPe=Oe({...WPe,props:{...O4,...bD},setup(t){const e=t,{onClose:o,onOpen:_,onDelayOpen:l,triggerRef:c,contentId:T}=lt(JS);let E=!1;const u=A=>{c.value=A},d=()=>{E=!1},O=ls(e.onMouseEnter,l),h=ls(e.onMouseLeave,o),I=ls(e.onMouseDown,()=>{o(),E=!0,document.addEventListener("mouseup",d,{once:!0})}),S=ls(e.onFocus,()=>{E||_()}),L=ls(e.onBlur,o),p=ls(e.onClick,A=>{A.detail===0&&o()}),C={blur:L,click:p,focus:S,mousedown:I,mouseenter:O,mouseleave:h},m=(A,b,N)=>{A&&Object.entries(b).forEach(([U,P])=>{A[N](U,P)})};return Fe(c,(A,b)=>{m(A,C,"addEventListener"),m(b,C,"removeEventListener"),A&&A.setAttribute("aria-describedby",T.value)}),Do(()=>{m(c.value,C,"removeEventListener"),document.removeEventListener("mouseup",d)}),(A,b)=>A.nowrap?(B(),Ne(M(VPe),{key:0,"set-ref":u,"only-child":""},{default:de(()=>[ye(A.$slots,"default")]),_:3})):(B(),se("button",Yt({key:1,ref_key:"triggerRef",ref:c},A.$attrs),[ye(A.$slots,"default")],16))}});var YPe=tt(XPe,[["__file","trigger.vue"]]);const KPe=Oe({name:"ElTooltipV2"}),zPe=Oe({...KPe,props:NPe,setup(t){const o=Xs(t),_=Eo(Y_(o,Object.keys(mD))),l=Eo(Y_(o,Object.keys(CD))),c=Eo(Y_(o,Object.keys(AD))),T=Eo(Y_(o,Object.keys(bD)));return(E,u)=>(B(),Ne(DPe,wn(iO(c)),{default:de(({open:d})=>[ne(YPe,Yt(T,{nowrap:""}),{default:de(()=>[ye(E.$slots,"trigger")]),_:3},16),(B(),Ne(Mu,{to:E.to,disabled:!E.teleported},[E.fullTransition?(B(),Ne(Ns,wn(Yt({key:0},E.transitionProps)),{default:de(()=>[E.alwaysOn||d?(B(),Ne(fH,wn(Yt({key:0},l)),{arrow:de(({style:O,side:h})=>[E.showArrow?(B(),Ne(LH,Yt({key:0},_,{style:O,side:h}),null,16,["style","side"])):Ce("v-if",!0)]),default:de(()=>[ye(E.$slots,"default")]),_:3},16)):Ce("v-if",!0)]),_:2},1040)):(B(),se(ht,{key:1},[E.alwaysOn||d?(B(),Ne(fH,wn(Yt({key:0},l)),{arrow:de(({style:O,side:h})=>[E.showArrow?(B(),Ne(LH,Yt({key:0},_,{style:O,side:h}),null,16,["style","side"])):Ce("v-if",!0)]),default:de(()=>[ye(E.$slots,"default")]),_:3},16)):Ce("v-if",!0)],64))],8,["to","disabled"]))]),_:3},16))}});var ZPe=tt(zPe,[["__file","tooltip.vue"]]);const jPe=Vt(ZPe),R4="left-check-change",I4="right-check-change",OE=et({data:{type:me(Array),default:()=>[]},titles:{type:me(Array),default:()=>[]},buttonTexts:{type:me(Array),default:()=>[]},filterPlaceholder:String,filterMethod:{type:me(Function)},leftDefaultChecked:{type:me(Array),default:()=>[]},rightDefaultChecked:{type:me(Array),default:()=>[]},renderContent:{type:me(Function)},modelValue:{type:me(Array),default:()=>[]},format:{type:me(Object),default:()=>({})},filterable:Boolean,props:{type:me(Object),default:()=>Qo({label:"label",key:"key",disabled:"disabled"})},targetOrder:{type:String,values:["original","push","unshift"],default:"original"},validateEvent:{type:Boolean,default:!0}}),AN=(t,e)=>[t,e].every(rt)||rt(t)&&ws(e),qPe={[Vo]:(t,e,o)=>[t,o].every(rt)&&["left","right"].includes(e),[Xt]:t=>rt(t),[R4]:AN,[I4]:AN},bN="checked-change",QPe=et({data:OE.data,optionRender:{type:me(Function)},placeholder:String,title:String,filterable:Boolean,format:OE.format,filterMethod:OE.filterMethod,defaultChecked:OE.leftDefaultChecked,props:OE.props}),JPe={[bN]:AN},UO=t=>{const e={label:"label",key:"key",disabled:"disabled"};return v(()=>({...e,...t.props}))},eve=(t,e,o)=>{const _=UO(t),l=v(()=>t.data.filter(O=>At(t.filterMethod)?t.filterMethod(e.query,O):String(O[_.value.label]||O[_.value.key]).toLowerCase().includes(e.query.toLowerCase()))),c=v(()=>l.value.filter(O=>!O[_.value.disabled])),T=v(()=>{const O=e.checked.length,h=t.data.length,{noChecked:I,hasChecked:S}=t.format;return I&&S?O>0?S.replace(/\${checked}/g,O.toString()).replace(/\${total}/g,h.toString()):I.replace(/\${total}/g,h.toString()):`${O}/${h}`}),E=v(()=>{const O=e.checked.length;return O>0&&O<c.value.length}),u=()=>{const O=c.value.map(h=>h[_.value.key]);e.allChecked=O.length>0&&O.every(h=>e.checked.includes(h))},d=O=>{e.checked=O?c.value.map(h=>h[_.value.key]):[]};return Fe(()=>e.checked,(O,h)=>{if(u(),e.checkChangeByUser){const I=O.concat(h).filter(S=>!O.includes(S)||!h.includes(S));o(bN,O,I)}else o(bN,O),e.checkChangeByUser=!0}),Fe(c,()=>{u()}),Fe(()=>t.data,()=>{const O=[],h=l.value.map(I=>I[_.value.key]);e.checked.forEach(I=>{h.includes(I)&&O.push(I)}),e.checkChangeByUser=!1,e.checked=O}),Fe(()=>t.defaultChecked,(O,h)=>{if(h&&O.length===h.length&&O.every(L=>h.includes(L)))return;const I=[],S=c.value.map(L=>L[_.value.key]);O.forEach(L=>{S.includes(L)&&I.push(L)}),e.checkChangeByUser=!1,e.checked=I},{immediate:!0}),{filteredData:l,checkableData:c,checkedSummary:T,isIndeterminate:E,updateAllChecked:u,handleAllCheckedChange:d}},tve=(t,e)=>({onSourceCheckedChange:(l,c)=>{t.leftChecked=l,c&&e(R4,l,c)},onTargetCheckedChange:(l,c)=>{t.rightChecked=l,c&&e(I4,l,c)}}),ove=t=>{const e=UO(t),o=v(()=>t.data.reduce((c,T)=>(c[T[e.value.key]]=T)&&c,{})),_=v(()=>t.data.filter(c=>!t.modelValue.includes(c[e.value.key]))),l=v(()=>t.targetOrder==="original"?t.data.filter(c=>t.modelValue.includes(c[e.value.key])):t.modelValue.reduce((c,T)=>{const E=o.value[T];return E&&c.push(E),c},[]));return{sourceData:_,targetData:l}},sve=(t,e,o)=>{const _=UO(t),l=(E,u,d)=>{o(Xt,E),o(Vo,E,u,d)};return{addToLeft:()=>{const E=t.modelValue.slice();e.rightChecked.forEach(u=>{const d=E.indexOf(u);d>-1&&E.splice(d,1)}),l(E,"left",e.rightChecked)},addToRight:()=>{let E=t.modelValue.slice();const u=t.data.filter(d=>{const O=d[_.value.key];return e.leftChecked.includes(O)&&!t.modelValue.includes(O)}).map(d=>d[_.value.key]);E=t.targetOrder==="unshift"?u.concat(E):E.concat(u),t.targetOrder==="original"&&(E=t.data.filter(d=>E.includes(d[_.value.key])).map(d=>d[_.value.key])),l(E,"right",e.leftChecked)}}},ive=Oe({name:"ElTransferPanel"}),nve=Oe({...ive,props:QPe,emits:JPe,setup(t,{expose:e,emit:o}){const _=t,l=zs(),c=({option:b})=>b,{t:T}=lo(),E=Ze("transfer"),u=Eo({checked:[],allChecked:!1,query:"",checkChangeByUser:!0}),d=UO(_),{filteredData:O,checkedSummary:h,isIndeterminate:I,handleAllCheckedChange:S}=eve(_,u,o),L=v(()=>!Bn(u.query)&&Bn(O.value)),p=v(()=>!Bn(l.default()[0].children)),{checked:C,allChecked:m,query:A}=Xs(u);return e({query:A}),(b,N)=>(B(),se("div",{class:k(M(E).b("panel"))},[te("p",{class:k(M(E).be("panel","header"))},[ne(M(jn),{modelValue:M(m),"onUpdate:modelValue":N[0]||(N[0]=U=>bo(m)?m.value=U:null),indeterminate:M(I),"validate-event":!1,onChange:M(S)},{default:de(()=>[qt(Qe(b.title)+" ",1),te("span",null,Qe(M(h)),1)]),_:1},8,["modelValue","indeterminate","onChange"])],2),te("div",{class:k([M(E).be("panel","body"),M(E).is("with-footer",M(p))])},[b.filterable?(B(),Ne(M(Ri),{key:0,modelValue:M(A),"onUpdate:modelValue":N[1]||(N[1]=U=>bo(A)?A.value=U:null),class:k(M(E).be("panel","filter")),size:"default",placeholder:b.placeholder,"prefix-icon":M(wae),clearable:"","validate-event":!1},null,8,["modelValue","class","placeholder","prefix-icon"])):Ce("v-if",!0),yt(ne(M(NY),{modelValue:M(C),"onUpdate:modelValue":N[2]||(N[2]=U=>bo(C)?C.value=U:null),"validate-event":!1,class:k([M(E).is("filterable",b.filterable),M(E).be("panel","list")])},{default:de(()=>[(B(!0),se(ht,null,oo(M(O),U=>(B(),Ne(M(jn),{key:U[M(d).key],class:k(M(E).be("panel","item")),label:U[M(d).key],disabled:U[M(d).disabled],"validate-event":!1},{default:de(()=>{var P;return[ne(c,{option:(P=b.optionRender)==null?void 0:P.call(b,U)},null,8,["option"])]}),_:2},1032,["class","label","disabled"]))),128))]),_:1},8,["modelValue","class"]),[[ao,!M(L)&&!M(Bn)(b.data)]]),yt(te("p",{class:k(M(E).be("panel","empty"))},Qe(M(L)?M(T)("el.transfer.noMatch"):M(T)("el.transfer.noData")),3),[[ao,M(L)||M(Bn)(b.data)]])],2),M(p)?(B(),se("p",{key:0,class:k(M(E).be("panel","footer"))},[ye(b.$slots,"default")],2)):Ce("v-if",!0)],2))}});var mH=tt(nve,[["__file","transfer-panel.vue"]]);const rve={key:0},_ve={key:0},lve=Oe({name:"ElTransfer"}),ave=Oe({...lve,props:OE,emits:qPe,setup(t,{expose:e,emit:o}){const _=t,l=zs(),{t:c}=lo(),T=Ze("transfer"),{formItem:E}=Gi(),u=Eo({leftChecked:[],rightChecked:[]}),d=UO(_),{sourceData:O,targetData:h}=ove(_),{onSourceCheckedChange:I,onTargetCheckedChange:S}=tve(u,o),{addToLeft:L,addToRight:p}=sve(_,u,o),C=X(),m=X(),A=w=>{switch(w){case"left":C.value.query="";break;case"right":m.value.query="";break}},b=v(()=>_.buttonTexts.length===2),N=v(()=>_.titles[0]||c("el.transfer.titles.0")),U=v(()=>_.titles[1]||c("el.transfer.titles.1")),P=v(()=>_.filterPlaceholder||c("el.transfer.filterPlaceholder"));Fe(()=>_.modelValue,()=>{var w;_.validateEvent&&((w=E==null?void 0:E.validate)==null||w.call(E,"change").catch(F=>void 0))});const G=v(()=>w=>_.renderContent?_.renderContent(pt,w):l.default?l.default({option:w}):pt("span",w[d.value.label]||w[d.value.key]));return e({clearQuery:A,leftPanel:C,rightPanel:m}),(w,F)=>(B(),se("div",{class:k(M(T).b())},[ne(mH,{ref_key:"leftPanel",ref:C,data:M(O),"option-render":M(G),placeholder:M(P),title:M(N),filterable:w.filterable,format:w.format,"filter-method":w.filterMethod,"default-checked":w.leftDefaultChecked,props:_.props,onCheckedChange:M(I)},{default:de(()=>[ye(w.$slots,"left-footer")]),_:3},8,["data","option-render","placeholder","title","filterable","format","filter-method","default-checked","props","onCheckedChange"]),te("div",{class:k(M(T).e("buttons"))},[ne(M(Ws),{type:"primary",class:k([M(T).e("button"),M(T).is("with-texts",M(b))]),disabled:M(Bn)(u.rightChecked),onClick:M(L)},{default:de(()=>[ne(M(Et),null,{default:de(()=>[ne(M(La))]),_:1}),M(bs)(w.buttonTexts[0])?Ce("v-if",!0):(B(),se("span",rve,Qe(w.buttonTexts[0]),1))]),_:1},8,["class","disabled","onClick"]),ne(M(Ws),{type:"primary",class:k([M(T).e("button"),M(T).is("with-texts",M(b))]),disabled:M(Bn)(u.leftChecked),onClick:M(p)},{default:de(()=>[M(bs)(w.buttonTexts[1])?Ce("v-if",!0):(B(),se("span",_ve,Qe(w.buttonTexts[1]),1)),ne(M(Et),null,{default:de(()=>[ne(M(Ui))]),_:1})]),_:1},8,["class","disabled","onClick"])],2),ne(mH,{ref_key:"rightPanel",ref:m,data:M(h),"option-render":M(G),placeholder:M(P),filterable:w.filterable,format:w.format,"filter-method":w.filterMethod,title:M(U),"default-checked":w.rightDefaultChecked,props:_.props,onCheckedChange:M(S)},{default:de(()=>[ye(w.$slots,"right-footer")]),_:3},8,["data","option-render","placeholder","filterable","format","filter-method","title","default-checked","props","onCheckedChange"])],2))}});var cve=tt(ave,[["__file","transfer.vue"]]);const Tve=Vt(cve),kE="$treeNodeId",CH=function(t,e){!e||e[kE]||Object.defineProperty(e,kE,{value:t.id,enumerable:!1,configurable:!1,writable:!1})},ND=function(t,e){return t?e[t]:e[kE]},NN=(t,e,o)=>{const _=t.value.currentNode;o();const l=t.value.currentNode;_!==l&&e("current-change",l?l.data:null,l)},PN=t=>{let e=!0,o=!0,_=!0;for(let l=0,c=t.length;l<c;l++){const T=t[l];(T.checked!==!0||T.indeterminate)&&(e=!1,T.disabled||(_=!1)),(T.checked!==!1||T.indeterminate)&&(o=!1)}return{all:e,none:o,allWithoutDisable:_,half:!e&&!o}},wR=function(t){if(t.childNodes.length===0||t.loading)return;const{all:e,none:o,half:_}=PN(t.childNodes);e?(t.checked=!0,t.indeterminate=!1):_?(t.checked=!1,t.indeterminate=!0):o&&(t.checked=!1,t.indeterminate=!1);const l=t.parent;!l||l.level===0||t.store.checkStrictly||wR(l)},eR=function(t,e){const o=t.store.props,_=t.data||{},l=o[e];if(typeof l=="function")return l(_,t);if(typeof l=="string")return _[l];if(typeof l>"u"){const c=_[e];return c===void 0?"":c}};let Eve=0,vN=class GR{constructor(e){this.id=Eve++,this.text=null,this.checked=!1,this.indeterminate=!1,this.data=null,this.expanded=!1,this.parent=null,this.visible=!0,this.isCurrent=!1,this.canFocus=!1;for(const o in e)so(e,o)&&(this[o]=e[o]);this.level=0,this.loaded=!1,this.childNodes=[],this.loading=!1,this.parent&&(this.level=this.parent.level+1)}initialize(){const e=this.store;if(!e)throw new Error("[Node]store is required!");e.registerNode(this);const o=e.props;if(o&&typeof o.isLeaf<"u"){const c=eR(this,"isLeaf");typeof c=="boolean"&&(this.isLeafByUser=c)}if(e.lazy!==!0&&this.data?(this.setData(this.data),e.defaultExpandAll&&(this.expanded=!0,this.canFocus=!0)):this.level>0&&e.lazy&&e.defaultExpandAll&&this.expand(),Array.isArray(this.data)||CH(this,this.data),!this.data)return;const _=e.defaultExpandedKeys,l=e.key;l&&_&&_.includes(this.key)&&this.expand(null,e.autoExpandParent),l&&e.currentNodeKey!==void 0&&this.key===e.currentNodeKey&&(e.currentNode=this,e.currentNode.isCurrent=!0),e.lazy&&e._initDefaultCheckedNode(this),this.updateLeafState(),this.parent&&(this.level===1||this.parent.expanded===!0)&&(this.canFocus=!0)}setData(e){Array.isArray(e)||CH(this,e),this.data=e,this.childNodes=[];let o;this.level===0&&Array.isArray(this.data)?o=this.data:o=eR(this,"children")||[];for(let _=0,l=o.length;_<l;_++)this.insertChild({data:o[_]})}get label(){return eR(this,"label")}get key(){const e=this.store.key;return this.data?this.data[e]:null}get disabled(){return eR(this,"disabled")}get nextSibling(){const e=this.parent;if(e){const o=e.childNodes.indexOf(this);if(o>-1)return e.childNodes[o+1]}return null}get previousSibling(){const e=this.parent;if(e){const o=e.childNodes.indexOf(this);if(o>-1)return o>0?e.childNodes[o-1]:null}return null}contains(e,o=!0){return(this.childNodes||[]).some(_=>_===e||o&&_.contains(e))}remove(){const e=this.parent;e&&e.removeChild(this)}insertChild(e,o,_){if(!e)throw new Error("InsertChild error: child is required.");if(!(e instanceof GR)){if(!_){const l=this.getChildren(!0);l.includes(e.data)||(typeof o>"u"||o<0?l.push(e.data):l.splice(o,0,e.data))}Object.assign(e,{parent:this,store:this.store}),e=Eo(new GR(e)),e instanceof GR&&e.initialize()}e.level=this.level+1,typeof o>"u"||o<0?this.childNodes.push(e):this.childNodes.splice(o,0,e),this.updateLeafState()}insertBefore(e,o){let _;o&&(_=this.childNodes.indexOf(o)),this.insertChild(e,_)}insertAfter(e,o){let _;o&&(_=this.childNodes.indexOf(o),_!==-1&&(_+=1)),this.insertChild(e,_)}removeChild(e){const o=this.getChildren()||[],_=o.indexOf(e.data);_>-1&&o.splice(_,1);const l=this.childNodes.indexOf(e);l>-1&&(this.store&&this.store.deregisterNode(e),e.parent=null,this.childNodes.splice(l,1)),this.updateLeafState()}removeChildByData(e){let o=null;for(let _=0;_<this.childNodes.length;_++)if(this.childNodes[_].data===e){o=this.childNodes[_];break}o&&this.removeChild(o)}expand(e,o){const _=()=>{if(o){let l=this.parent;for(;l.level>0;)l.expanded=!0,l=l.parent}this.expanded=!0,e&&e(),this.childNodes.forEach(l=>{l.canFocus=!0})};this.shouldLoadData()?this.loadData(l=>{Array.isArray(l)&&(this.checked?this.setChecked(!0,!0):this.store.checkStrictly||wR(this),_())}):_()}doCreateChildren(e,o={}){e.forEach(_=>{this.insertChild(Object.assign({data:_},o),void 0,!0)})}collapse(){this.expanded=!1,this.childNodes.forEach(e=>{e.canFocus=!1})}shouldLoadData(){return this.store.lazy===!0&&this.store.load&&!this.loaded}updateLeafState(){if(this.store.lazy===!0&&this.loaded!==!0&&typeof this.isLeafByUser<"u"){this.isLeaf=this.isLeafByUser;return}const e=this.childNodes;if(!this.store.lazy||this.store.lazy===!0&&this.loaded===!0){this.isLeaf=!e||e.length===0;return}this.isLeaf=!1}setChecked(e,o,_,l){if(this.indeterminate=e==="half",this.checked=e===!0,this.store.checkStrictly)return;if(!(this.shouldLoadData()&&!this.store.checkDescendants)){const{all:T,allWithoutDisable:E}=PN(this.childNodes);!this.isLeaf&&!T&&E&&(this.checked=!1,e=!1);const u=()=>{if(o){const d=this.childNodes;for(let I=0,S=d.length;I<S;I++){const L=d[I];l=l||e!==!1;const p=L.disabled?L.checked:l;L.setChecked(p,o,!0,l)}const{half:O,all:h}=PN(d);h||(this.checked=h,this.indeterminate=O)}};if(this.shouldLoadData()){this.loadData(()=>{u(),wR(this)},{checked:e!==!1});return}else u()}const c=this.parent;!c||c.level===0||_||wR(c)}getChildren(e=!1){if(this.level===0)return this.data;const o=this.data;if(!o)return null;const _=this.store.props;let l="children";return _&&(l=_.children||"children"),o[l]===void 0&&(o[l]=null),e&&!o[l]&&(o[l]=[]),o[l]}updateChildren(){const e=this.getChildren()||[],o=this.childNodes.map(c=>c.data),_={},l=[];e.forEach((c,T)=>{const E=c[kE];!!E&&o.findIndex(d=>d[kE]===E)>=0?_[E]={index:T,data:c}:l.push({index:T,data:c})}),this.store.lazy||o.forEach(c=>{_[c[kE]]||this.removeChildByData(c)}),l.forEach(({index:c,data:T})=>{this.insertChild({data:T},c)}),this.updateLeafState()}loadData(e,o={}){if(this.store.lazy===!0&&this.store.load&&!this.loaded&&(!this.loading||Object.keys(o).length)){this.loading=!0;const _=l=>{this.childNodes=[],this.doCreateChildren(l,o),this.loaded=!0,this.loading=!1,this.updateLeafState(),e&&e.call(this,l)};this.store.load(this,_)}else e&&e.call(this)}};class uve{constructor(e){this.currentNode=null,this.currentNodeKey=null;for(const o in e)so(e,o)&&(this[o]=e[o]);this.nodesMap={}}initialize(){if(this.root=new vN({data:this.data,store:this}),this.root.initialize(),this.lazy&&this.load){const e=this.load;e(this.root,o=>{this.root.doCreateChildren(o),this._initDefaultCheckedNodes()})}else this._initDefaultCheckedNodes()}filter(e){const o=this.filterNodeMethod,_=this.lazy,l=function(c){const T=c.root?c.root.childNodes:c.childNodes;if(T.forEach(E=>{E.visible=o.call(E,e,E.data,E),l(E)}),!c.visible&&T.length){let E=!0;E=!T.some(u=>u.visible),c.root?c.root.visible=E===!1:c.visible=E===!1}e&&c.visible&&!c.isLeaf&&(!_||c.loaded)&&c.expand()};l(this)}setData(e){e!==this.root.data?(this.root.setData(e),this._initDefaultCheckedNodes()):this.root.updateChildren()}getNode(e){if(e instanceof vN)return e;const o=Zt(e)?ND(this.key,e):e;return this.nodesMap[o]||null}insertBefore(e,o){const _=this.getNode(o);_.parent.insertBefore({data:e},_)}insertAfter(e,o){const _=this.getNode(o);_.parent.insertAfter({data:e},_)}remove(e){const o=this.getNode(e);o&&o.parent&&(o===this.currentNode&&(this.currentNode=null),o.parent.removeChild(o))}append(e,o){const _=o?this.getNode(o):this.root;_&&_.insertChild({data:e})}_initDefaultCheckedNodes(){const e=this.defaultCheckedKeys||[],o=this.nodesMap;e.forEach(_=>{const l=o[_];l&&l.setChecked(!0,!this.checkStrictly)})}_initDefaultCheckedNode(e){(this.defaultCheckedKeys||[]).includes(e.key)&&e.setChecked(!0,!this.checkStrictly)}setDefaultCheckedKey(e){e!==this.defaultCheckedKeys&&(this.defaultCheckedKeys=e,this._initDefaultCheckedNodes())}registerNode(e){const o=this.key;!e||!e.data||(o?e.key!==void 0&&(this.nodesMap[e.key]=e):this.nodesMap[e.id]=e)}deregisterNode(e){!this.key||!e||!e.data||(e.childNodes.forEach(_=>{this.deregisterNode(_)}),delete this.nodesMap[e.key])}getCheckedNodes(e=!1,o=!1){const _=[],l=function(c){(c.root?c.root.childNodes:c.childNodes).forEach(E=>{(E.checked||o&&E.indeterminate)&&(!e||e&&E.isLeaf)&&_.push(E.data),l(E)})};return l(this),_}getCheckedKeys(e=!1){return this.getCheckedNodes(e).map(o=>(o||{})[this.key])}getHalfCheckedNodes(){const e=[],o=function(_){(_.root?_.root.childNodes:_.childNodes).forEach(c=>{c.indeterminate&&e.push(c.data),o(c)})};return o(this),e}getHalfCheckedKeys(){return this.getHalfCheckedNodes().map(e=>(e||{})[this.key])}_getAllNodes(){const e=[],o=this.nodesMap;for(const _ in o)so(o,_)&&e.push(o[_]);return e}updateChildren(e,o){const _=this.nodesMap[e];if(!_)return;const l=_.childNodes;for(let c=l.length-1;c>=0;c--){const T=l[c];this.remove(T.data)}for(let c=0,T=o.length;c<T;c++){const E=o[c];this.append(E,_.data)}}_setCheckedKeys(e,o=!1,_){const l=this._getAllNodes().sort((E,u)=>u.level-E.level),c=Object.create(null),T=Object.keys(_);l.forEach(E=>E.setChecked(!1,!1));for(let E=0,u=l.length;E<u;E++){const d=l[E],O=d.data[e].toString();if(!T.includes(O)){d.checked&&!c[O]&&d.setChecked(!1,!1);continue}let I=d.parent;for(;I&&I.level>0;)c[I.data[e]]=!0,I=I.parent;if(d.isLeaf||this.checkStrictly){d.setChecked(!0,!1);continue}if(d.setChecked(!0,!0),o){d.setChecked(!1,!1);const S=function(L){L.childNodes.forEach(C=>{C.isLeaf||C.setChecked(!1,!1),S(C)})};S(d)}}}setCheckedNodes(e,o=!1){const _=this.key,l={};e.forEach(c=>{l[(c||{})[_]]=!0}),this._setCheckedKeys(_,o,l)}setCheckedKeys(e,o=!1){this.defaultCheckedKeys=e;const _=this.key,l={};e.forEach(c=>{l[c]=!0}),this._setCheckedKeys(_,o,l)}setDefaultExpandedKeys(e){e=e||[],this.defaultExpandedKeys=e,e.forEach(o=>{const _=this.getNode(o);_&&_.expand(null,this.autoExpandParent)})}setChecked(e,o,_){const l=this.getNode(e);l&&l.setChecked(!!o,_)}getCurrentNode(){return this.currentNode}setCurrentNode(e){const o=this.currentNode;o&&(o.isCurrent=!1),this.currentNode=e,this.currentNode.isCurrent=!0}setUserCurrentNode(e,o=!0){const _=e[this.key],l=this.nodesMap[_];this.setCurrentNode(l),o&&this.currentNode.level>1&&this.currentNode.parent.expand(null,!0)}setCurrentNodeKey(e,o=!0){if(e==null){this.currentNode&&(this.currentNode.isCurrent=!1),this.currentNode=null;return}const _=this.getNode(e);_&&(this.setCurrentNode(_),o&&this.currentNode.level>1&&this.currentNode.parent.expand(null,!0))}}const gve=Oe({name:"ElTreeNodeContent",props:{node:{type:Object,required:!0},renderContent:Function},setup(t){const e=Ze("tree"),o=lt("NodeInstance"),_=lt("RootTree");return()=>{const l=t.node,{data:c,store:T}=l;return t.renderContent?t.renderContent(pt,{_self:o,node:l,data:c,store:T}):ye(_.ctx.slots,"default",{node:l,data:c},()=>[pt("span",{class:e.be("node","label")},[l.label])])}}});var dve=tt(gve,[["__file","tree-node-content.vue"]]);function S4(t){const e=lt("TreeNodeMap",null),o={treeNodeExpand:_=>{t.node!==_&&t.node.collapse()},children:[]};return e&&e.children.push(o),Jt("TreeNodeMap",o),{broadcastExpanded:_=>{if(t.accordion)for(const l of o.children)l.treeNodeExpand(_)}}}const p4=Symbol("dragEvents");function Ove({props:t,ctx:e,el$:o,dropIndicator$:_,store:l}){const c=Ze("tree"),T=X({showDropIndicator:!1,draggingNode:null,dropNode:null,allowDrop:!0,dropType:null});return Jt(p4,{treeNodeDragStart:({event:O,treeNode:h})=>{if(typeof t.allowDrag=="function"&&!t.allowDrag(h.node))return O.preventDefault(),!1;O.dataTransfer.effectAllowed="move";try{O.dataTransfer.setData("text/plain","")}catch{}T.value.draggingNode=h,e.emit("node-drag-start",h.node,O)},treeNodeDragOver:({event:O,treeNode:h})=>{const I=h,S=T.value.dropNode;S&&S.node.id!==I.node.id&&tn(S.$el,c.is("drop-inner"));const L=T.value.draggingNode;if(!L||!I)return;let p=!0,C=!0,m=!0,A=!0;typeof t.allowDrop=="function"&&(p=t.allowDrop(L.node,I.node,"prev"),A=C=t.allowDrop(L.node,I.node,"inner"),m=t.allowDrop(L.node,I.node,"next")),O.dataTransfer.dropEffect=C||p||m?"move":"none",(p||C||m)&&(S==null?void 0:S.node.id)!==I.node.id&&(S&&e.emit("node-drag-leave",L.node,S.node,O),e.emit("node-drag-enter",L.node,I.node,O)),p||C||m?T.value.dropNode=I:T.value.dropNode=null,I.node.nextSibling===L.node&&(m=!1),I.node.previousSibling===L.node&&(p=!1),I.node.contains(L.node,!1)&&(C=!1),(L.node===I.node||L.node.contains(I.node))&&(p=!1,C=!1,m=!1);const b=I.$el.querySelector(`.${c.be("node","content")}`).getBoundingClientRect(),N=o.value.getBoundingClientRect();let U;const P=p?C?.25:m?.45:1:-1,G=m?C?.75:p?.55:0:1;let w=-9999;const F=O.clientY-b.top;F<b.height*P?U="before":F>b.height*G?U="after":C?U="inner":U="none";const V=I.$el.querySelector(`.${c.be("node","expand-icon")}`).getBoundingClientRect(),W=_.value;U==="before"?w=V.top-N.top:U==="after"&&(w=V.bottom-N.top),W.style.top=`${w}px`,W.style.left=`${V.right-N.left}px`,U==="inner"?r_(I.$el,c.is("drop-inner")):tn(I.$el,c.is("drop-inner")),T.value.showDropIndicator=U==="before"||U==="after",T.value.allowDrop=T.value.showDropIndicator||A,T.value.dropType=U,e.emit("node-drag-over",L.node,I.node,O)},treeNodeDragEnd:O=>{const{draggingNode:h,dropType:I,dropNode:S}=T.value;if(O.preventDefault(),O.dataTransfer.dropEffect="move",h&&S){const L={data:h.node.data};I!=="none"&&h.node.remove(),I==="before"?S.node.parent.insertBefore(L,S.node):I==="after"?S.node.parent.insertAfter(L,S.node):I==="inner"&&S.node.insertChild(L),I!=="none"&&l.value.registerNode(L),tn(S.$el,c.is("drop-inner")),e.emit("node-drag-end",h.node,S.node,I,O),I!=="none"&&e.emit("node-drop",h.node,S.node,I,O)}h&&!S&&e.emit("node-drag-end",h.node,null,I,O),T.value.showDropIndicator=!1,T.value.draggingNode=null,T.value.dropNode=null,T.value.allowDrop=!0}}),{dragState:T}}const hve=Oe({name:"ElTreeNode",components:{ElCollapseTransition:zS,ElCheckbox:jn,NodeContent:dve,ElIcon:Et,Loading:Da},props:{node:{type:vN,default:()=>({})},props:{type:Object,default:()=>({})},accordion:Boolean,renderContent:Function,renderAfterExpand:Boolean,showCheckbox:{type:Boolean,default:!1}},emits:["node-expand"],setup(t,e){const o=Ze("tree"),{broadcastExpanded:_}=S4(t),l=lt("RootTree"),c=X(!1),T=X(!1),E=X(null),u=X(null),d=X(null),O=lt(p4),h=Ht();Jt("NodeInstance",h),t.node.expanded&&(c.value=!0,T.value=!0);const I=l.props.props.children||"children";Fe(()=>{const F=t.node.data[I];return F&&[...F]},()=>{t.node.updateChildren()}),Fe(()=>t.node.indeterminate,F=>{p(t.node.checked,F)}),Fe(()=>t.node.checked,F=>{p(F,t.node.indeterminate)}),Fe(()=>t.node.expanded,F=>{Lt(()=>c.value=F),F&&(T.value=!0)});const S=F=>ND(l.props.nodeKey,F.data),L=F=>{const V=t.props.class;if(!V)return{};let W;if(At(V)){const{data:K}=F;W=V(K,F)}else W=V;return vt(W)?{[W]:!0}:W},p=(F,V)=>{(E.value!==F||u.value!==V)&&l.ctx.emit("check-change",t.node.data,F,V),E.value=F,u.value=V},C=F=>{NN(l.store,l.ctx.emit,()=>l.store.value.setCurrentNode(t.node)),l.currentNode.value=t.node,l.props.expandOnClickNode&&A(),l.props.checkOnClickNode&&!t.node.disabled&&b(null,{target:{checked:!t.node.checked}}),l.ctx.emit("node-click",t.node.data,t.node,h,F)},m=F=>{l.instance.vnode.props.onNodeContextmenu&&(F.stopPropagation(),F.preventDefault()),l.ctx.emit("node-contextmenu",F,t.node.data,t.node,h)},A=()=>{t.node.isLeaf||(c.value?(l.ctx.emit("node-collapse",t.node.data,t.node,h),t.node.collapse()):(t.node.expand(),e.emit("node-expand",t.node.data,t.node,h)))},b=(F,V)=>{t.node.setChecked(V.target.checked,!l.props.checkStrictly),Lt(()=>{const W=l.store.value;l.ctx.emit("check",t.node.data,{checkedNodes:W.getCheckedNodes(),checkedKeys:W.getCheckedKeys(),halfCheckedNodes:W.getHalfCheckedNodes(),halfCheckedKeys:W.getHalfCheckedKeys()})})};return{ns:o,node$:d,tree:l,expanded:c,childNodeRendered:T,oldChecked:E,oldIndeterminate:u,getNodeKey:S,getNodeClass:L,handleSelectChange:p,handleClick:C,handleContextMenu:m,handleExpandIconClick:A,handleCheckChange:b,handleChildNodeExpand:(F,V,W)=>{_(V),l.ctx.emit("node-expand",F,V,W)},handleDragStart:F=>{l.props.draggable&&O.treeNodeDragStart({event:F,treeNode:t})},handleDragOver:F=>{F.preventDefault(),l.props.draggable&&O.treeNodeDragOver({event:F,treeNode:{$el:d.value,node:t.node}})},handleDrop:F=>{F.preventDefault()},handleDragEnd:F=>{l.props.draggable&&O.treeNodeDragEnd(F)},CaretRight:XX}}}),Mve=["aria-expanded","aria-disabled","aria-checked","draggable","data-key"],Rve=["aria-expanded"];function Ive(t,e,o,_,l,c){const T=gt("el-icon"),E=gt("el-checkbox"),u=gt("loading"),d=gt("node-content"),O=gt("el-tree-node"),h=gt("el-collapse-transition");return yt((B(),se("div",{ref:"node$",class:k([t.ns.b("node"),t.ns.is("expanded",t.expanded),t.ns.is("current",t.node.isCurrent),t.ns.is("hidden",!t.node.visible),t.ns.is("focusable",!t.node.disabled),t.ns.is("checked",!t.node.disabled&&t.node.checked),t.getNodeClass(t.node)]),role:"treeitem",tabindex:"-1","aria-expanded":t.expanded,"aria-disabled":t.node.disabled,"aria-checked":t.node.checked,draggable:t.tree.props.draggable,"data-key":t.getNodeKey(t.node),onClick:e[1]||(e[1]=Ct((...I)=>t.handleClick&&t.handleClick(...I),["stop"])),onContextmenu:e[2]||(e[2]=(...I)=>t.handleContextMenu&&t.handleContextMenu(...I)),onDragstart:e[3]||(e[3]=Ct((...I)=>t.handleDragStart&&t.handleDragStart(...I),["stop"])),onDragover:e[4]||(e[4]=Ct((...I)=>t.handleDragOver&&t.handleDragOver(...I),["stop"])),onDragend:e[5]||(e[5]=Ct((...I)=>t.handleDragEnd&&t.handleDragEnd(...I),["stop"])),onDrop:e[6]||(e[6]=Ct((...I)=>t.handleDrop&&t.handleDrop(...I),["stop"]))},[te("div",{class:k(t.ns.be("node","content")),style:dt({paddingLeft:(t.node.level-1)*t.tree.props.indent+"px"})},[t.tree.props.icon||t.CaretRight?(B(),Ne(T,{key:0,class:k([t.ns.be("node","expand-icon"),t.ns.is("leaf",t.node.isLeaf),{expanded:!t.node.isLeaf&&t.expanded}]),onClick:Ct(t.handleExpandIconClick,["stop"])},{default:de(()=>[(B(),Ne(Kt(t.tree.props.icon||t.CaretRight)))]),_:1},8,["class","onClick"])):Ce("v-if",!0),t.showCheckbox?(B(),Ne(E,{key:1,"model-value":t.node.checked,indeterminate:t.node.indeterminate,disabled:!!t.node.disabled,onClick:e[0]||(e[0]=Ct(()=>{},["stop"])),onChange:t.handleCheckChange},null,8,["model-value","indeterminate","disabled","onChange"])):Ce("v-if",!0),t.node.loading?(B(),Ne(T,{key:2,class:k([t.ns.be("node","loading-icon"),t.ns.is("loading")])},{default:de(()=>[ne(u)]),_:1},8,["class"])):Ce("v-if",!0),ne(d,{node:t.node,"render-content":t.renderContent},null,8,["node","render-content"])],6),ne(h,null,{default:de(()=>[!t.renderAfterExpand||t.childNodeRendered?yt((B(),se("div",{key:0,class:k(t.ns.be("node","children")),role:"group","aria-expanded":t.expanded},[(B(!0),se(ht,null,oo(t.node.childNodes,I=>(B(),Ne(O,{key:t.getNodeKey(I),"render-content":t.renderContent,"render-after-expand":t.renderAfterExpand,"show-checkbox":t.showCheckbox,node:I,accordion:t.accordion,props:t.props,onNodeExpand:t.handleChildNodeExpand},null,8,["render-content","render-after-expand","show-checkbox","node","accordion","props","onNodeExpand"]))),128))],10,Rve)),[[ao,t.expanded]]):Ce("v-if",!0)]),_:1})],42,Mve)),[[ao,t.node.visible]])}var Sve=tt(hve,[["render",Ive],["__file","tree-node.vue"]]);function pve({el$:t},e){const o=Ze("tree"),_=mo([]),l=mo([]);Bt(()=>{T()}),_l(()=>{_.value=Array.from(t.value.querySelectorAll("[role=treeitem]")),l.value=Array.from(t.value.querySelectorAll("input[type=checkbox]"))}),Fe(l,E=>{E.forEach(u=>{u.setAttribute("tabindex","-1")})}),Yo(t,"keydown",E=>{const u=E.target;if(!u.className.includes(o.b("node")))return;const d=E.code;_.value=Array.from(t.value.querySelectorAll(`.${o.is("focusable")}[role=treeitem]`));const O=_.value.indexOf(u);let h;if([Rt.up,Rt.down].includes(d)){if(E.preventDefault(),d===Rt.up){h=O===-1?0:O!==0?O-1:_.value.length-1;const S=h;for(;!e.value.getNode(_.value[h].dataset.key).canFocus;){if(h--,h===S){h=-1;break}h<0&&(h=_.value.length-1)}}else{h=O===-1?0:O<_.value.length-1?O+1:0;const S=h;for(;!e.value.getNode(_.value[h].dataset.key).canFocus;){if(h++,h===S){h=-1;break}h>=_.value.length&&(h=0)}}h!==-1&&_.value[h].focus()}[Rt.left,Rt.right].includes(d)&&(E.preventDefault(),u.click());const I=u.querySelector('[type="checkbox"]');[Rt.enter,Rt.space].includes(d)&&I&&(E.preventDefault(),I.click())});const T=()=>{var E;_.value=Array.from(t.value.querySelectorAll(`.${o.is("focusable")}[role=treeitem]`)),l.value=Array.from(t.value.querySelectorAll("input[type=checkbox]"));const u=t.value.querySelectorAll(`.${o.is("checked")}[role=treeitem]`);if(u.length){u[0].setAttribute("tabindex","0");return}(E=_.value[0])==null||E.setAttribute("tabindex","0")}}const Lve=Oe({name:"ElTree",components:{ElTreeNode:Sve},props:{data:{type:Array,default:()=>[]},emptyText:{type:String},renderAfterExpand:{type:Boolean,default:!0},nodeKey:String,checkStrictly:Boolean,defaultExpandAll:Boolean,expandOnClickNode:{type:Boolean,default:!0},checkOnClickNode:Boolean,checkDescendants:{type:Boolean,default:!1},autoExpandParent:{type:Boolean,default:!0},defaultCheckedKeys:Array,defaultExpandedKeys:Array,currentNodeKey:[String,Number],renderContent:Function,showCheckbox:{type:Boolean,default:!1},draggable:{type:Boolean,default:!1},allowDrag:Function,allowDrop:Function,props:{type:Object,default:()=>({children:"children",label:"label",disabled:"disabled"})},lazy:{type:Boolean,default:!1},highlightCurrent:Boolean,load:Function,filterNodeMethod:Function,accordion:Boolean,indent:{type:Number,default:18},icon:{type:Lo}},emits:["check-change","current-change","node-click","node-contextmenu","node-collapse","node-expand","check","node-drag-start","node-drag-end","node-drop","node-drag-leave","node-drag-enter","node-drag-over"],setup(t,e){const{t:o}=lo(),_=Ze("tree"),l=X(new uve({key:t.nodeKey,data:t.data,lazy:t.lazy,props:t.props,load:t.load,currentNodeKey:t.currentNodeKey,checkStrictly:t.checkStrictly,checkDescendants:t.checkDescendants,defaultCheckedKeys:t.defaultCheckedKeys,defaultExpandedKeys:t.defaultExpandedKeys,autoExpandParent:t.autoExpandParent,defaultExpandAll:t.defaultExpandAll,filterNodeMethod:t.filterNodeMethod}));l.value.initialize();const c=X(l.value.root),T=X(null),E=X(null),u=X(null),{broadcastExpanded:d}=S4(t),{dragState:O}=Ove({props:t,ctx:e,el$:E,dropIndicator$:u,store:l});pve({el$:E},l);const h=v(()=>{const{childNodes:Y}=c.value;return!Y||Y.length===0||Y.every(({visible:re})=>!re)});Fe(()=>t.currentNodeKey,Y=>{l.value.setCurrentNodeKey(Y)}),Fe(()=>t.defaultCheckedKeys,Y=>{l.value.setDefaultCheckedKey(Y)}),Fe(()=>t.defaultExpandedKeys,Y=>{l.value.setDefaultExpandedKeys(Y)}),Fe(()=>t.data,Y=>{l.value.setData(Y)},{deep:!0}),Fe(()=>t.checkStrictly,Y=>{l.value.checkStrictly=Y});const I=Y=>{if(!t.filterNodeMethod)throw new Error("[Tree] filterNodeMethod is required when filter");l.value.filter(Y)},S=Y=>ND(t.nodeKey,Y.data),L=Y=>{if(!t.nodeKey)throw new Error("[Tree] nodeKey is required in getNodePath");const re=l.value.getNode(Y);if(!re)return[];const H=[re.data];let Q=re.parent;for(;Q&&Q!==c.value;)H.push(Q.data),Q=Q.parent;return H.reverse()},p=(Y,re)=>l.value.getCheckedNodes(Y,re),C=Y=>l.value.getCheckedKeys(Y),m=()=>{const Y=l.value.getCurrentNode();return Y?Y.data:null},A=()=>{if(!t.nodeKey)throw new Error("[Tree] nodeKey is required in getCurrentKey");const Y=m();return Y?Y[t.nodeKey]:null},b=(Y,re)=>{if(!t.nodeKey)throw new Error("[Tree] nodeKey is required in setCheckedNodes");l.value.setCheckedNodes(Y,re)},N=(Y,re)=>{if(!t.nodeKey)throw new Error("[Tree] nodeKey is required in setCheckedKeys");l.value.setCheckedKeys(Y,re)},U=(Y,re,H)=>{l.value.setChecked(Y,re,H)},P=()=>l.value.getHalfCheckedNodes(),G=()=>l.value.getHalfCheckedKeys(),w=(Y,re=!0)=>{if(!t.nodeKey)throw new Error("[Tree] nodeKey is required in setCurrentNode");NN(l,e.emit,()=>l.value.setUserCurrentNode(Y,re))},F=(Y,re=!0)=>{if(!t.nodeKey)throw new Error("[Tree] nodeKey is required in setCurrentKey");NN(l,e.emit,()=>l.value.setCurrentNodeKey(Y,re))},V=Y=>l.value.getNode(Y),W=Y=>{l.value.remove(Y)},K=(Y,re)=>{l.value.append(Y,re)},ee=(Y,re)=>{l.value.insertBefore(Y,re)},j=(Y,re)=>{l.value.insertAfter(Y,re)},J=(Y,re,H)=>{d(re),e.emit("node-expand",Y,re,H)},ie=(Y,re)=>{if(!t.nodeKey)throw new Error("[Tree] nodeKey is required in updateKeyChild");l.value.updateChildren(Y,re)};return Jt("RootTree",{ctx:e,props:t,store:l,root:c,currentNode:T,instance:Ht()}),Jt(d_,void 0),{ns:_,store:l,root:c,currentNode:T,dragState:O,el$:E,dropIndicator$:u,isEmpty:h,filter:I,getNodeKey:S,getNodePath:L,getCheckedNodes:p,getCheckedKeys:C,getCurrentNode:m,getCurrentKey:A,setCheckedNodes:b,setCheckedKeys:N,setChecked:U,getHalfCheckedNodes:P,getHalfCheckedKeys:G,setCurrentNode:w,setCurrentKey:F,t:o,getNode:V,remove:W,append:K,insertBefore:ee,insertAfter:j,handleNodeExpand:J,updateKeyChildren:ie}}});function fve(t,e,o,_,l,c){const T=gt("el-tree-node");return B(),se("div",{ref:"el$",class:k([t.ns.b(),t.ns.is("dragging",!!t.dragState.draggingNode),t.ns.is("drop-not-allow",!t.dragState.allowDrop),t.ns.is("drop-inner",t.dragState.dropType==="inner"),{[t.ns.m("highlight-current")]:t.highlightCurrent}]),role:"tree"},[(B(!0),se(ht,null,oo(t.root.childNodes,E=>(B(),Ne(T,{key:t.getNodeKey(E),node:E,props:t.props,accordion:t.accordion,"render-after-expand":t.renderAfterExpand,"show-checkbox":t.showCheckbox,"render-content":t.renderContent,onNodeExpand:t.handleNodeExpand},null,8,["node","props","accordion","render-after-expand","show-checkbox","render-content","onNodeExpand"]))),128)),t.isEmpty?(B(),se("div",{key:0,class:k(t.ns.e("empty-block"))},[ye(t.$slots,"empty",{},()=>{var E;return[te("span",{class:k(t.ns.e("empty-text"))},Qe((E=t.emptyText)!=null?E:t.t("el.tree.emptyText")),3)]})],2)):Ce("v-if",!0),yt(te("div",{ref:"dropIndicator$",class:k(t.ns.e("drop-indicator"))},null,2),[[ao,t.dragState.showDropIndicator]])],2)}var kR=tt(Lve,[["render",fve],["__file","tree.vue"]]);kR.install=t=>{t.component(kR.name,kR)};const XI=kR,mve=XI,Cve=(t,{attrs:e,emit:o},{tree:_,key:l})=>{const c=Ze("tree-select"),T={...Y_(Xs(t),Object.keys(Zc.props)),...e,"onUpdate:modelValue":E=>o(Xt,E),valueKey:l,popperClass:v(()=>{const E=[c.e("popper")];return t.popperClass&&E.push(t.popperClass),E.join(" ")}),filterMethod:(E="")=>{t.filterMethod&&t.filterMethod(E),Lt(()=>{var u;(u=_.value)==null||u.filter(E)})},onVisibleChange:E=>{var u;(u=e.onVisibleChange)==null||u.call(e,E),t.filterable&&E&&T.filterMethod()}};return T},Ave=Oe({extends:wI,setup(t,e){const o=wI.setup(t,e);delete o.selectOptionClick;const _=Ht().proxy;return Lt(()=>{o.select.states.cachedOptions.get(_.value)||o.select.onOptionCreate(_)}),o},methods:{selectOptionClick(){this.$el.parentElement.click()}}});function DN(t){return t||t===0}function PD(t){return Array.isArray(t)&&t.length}function vg(t){return Array.isArray(t)?t:DN(t)?[t]:[]}function HR(t,e,o,_,l){for(let c=0;c<t.length;c++){const T=t[c];if(e(T,c,t,l))return _?_(T,c,t,l):T;{const E=o(T);if(PD(E)){const u=HR(E,e,o,_,T);if(u)return u}}}}function L4(t,e,o,_){for(let l=0;l<t.length;l++){const c=t[l];e(c,l,t,_);const T=o(c);PD(T)&&L4(T,e,o,c)}}const bve=(t,{attrs:e,slots:o,emit:_},{select:l,tree:c,key:T})=>{Fe(()=>t.modelValue,()=>{t.showCheckbox&&Lt(()=>{const I=c.value;I&&!ui(I.getCheckedKeys(),vg(t.modelValue))&&I.setCheckedKeys(vg(t.modelValue))})},{immediate:!0,deep:!0});const E=v(()=>({value:T.value,label:"label",children:"children",disabled:"disabled",isLeaf:"isLeaf",...t.props})),u=(I,S)=>{var L;const p=E.value[I];return At(p)?p(S,(L=c.value)==null?void 0:L.getNode(u("value",S))):S[p]},d=vg(t.modelValue).map(I=>HR(t.data||[],S=>u("value",S)===I,S=>u("children",S),(S,L,p,C)=>C&&u("value",C))).filter(I=>DN(I)),O=v(()=>{if(!t.renderAfterExpand&&!t.lazy)return[];const I=[];return L4(t.data.concat(t.cacheData),S=>{const L=u("value",S);I.push({value:L,currentLabel:u("label",S),isDisabled:u("disabled",S)})},S=>u("children",S)),I}),h=v(()=>O.value.reduce((I,S)=>({...I,[S.value]:S}),{}));return{...Y_(Xs(t),Object.keys(XI.props)),...e,nodeKey:T,expandOnClickNode:v(()=>!t.checkStrictly&&t.expandOnClickNode),defaultExpandedKeys:v(()=>t.defaultExpandedKeys?t.defaultExpandedKeys.concat(d):d),renderContent:(I,{node:S,data:L,store:p})=>I(Ave,{value:u("value",L),label:u("label",L),disabled:u("disabled",L)},t.renderContent?()=>t.renderContent(I,{node:S,data:L,store:p}):o.default?()=>o.default({node:S,data:L,store:p}):void 0),filterNodeMethod:(I,S,L)=>t.filterNodeMethod?t.filterNodeMethod(I,S,L):I?new RegExp(Cv(I),"i").test(u("label",S)||""):!0,onNodeClick:(I,S,L)=>{var p,C,m;if((p=e.onNodeClick)==null||p.call(e,I,S,L),!(t.showCheckbox&&t.checkOnClickNode))if(!t.showCheckbox&&(t.checkStrictly||S.isLeaf)){if(!u("disabled",I)){const A=(C=l.value)==null?void 0:C.states.options.get(u("value",I));(m=l.value)==null||m.handleOptionSelect(A)}}else t.expandOnClickNode&&L.proxy.handleExpandIconClick()},onCheck:(I,S)=>{if(!t.showCheckbox)return;const L=u("value",I),p=S.checkedKeys,C=t.multiple?vg(t.modelValue).filter(A=>A in h.value&&!c.value.getNode(A)&&!p.includes(A)):[],m=p.concat(C);if(t.checkStrictly)_(Xt,t.multiple?m:m.includes(L)?L:void 0);else if(t.multiple)_(Xt,c.value.getCheckedKeys(!0));else{const A=HR([I],U=>!PD(u("children",U))&&!u("disabled",U),U=>u("children",U)),b=A?u("value",A):void 0,N=DN(t.modelValue)&&!!HR([I],U=>u("value",U)===t.modelValue,U=>u("children",U));_(Xt,b===t.modelValue||N?void 0:b)}Lt(()=>{var A;const b=vg(t.modelValue);c.value.setCheckedKeys(b),(A=e.onCheck)==null||A.call(e,I,{checkedKeys:c.value.getCheckedKeys(),checkedNodes:c.value.getCheckedNodes(),halfCheckedKeys:c.value.getHalfCheckedKeys(),halfCheckedNodes:c.value.getHalfCheckedNodes()})})},cacheOptions:O}};var Nve=Oe({props:{data:{type:Array,default:()=>[]}},setup(t){const e=lt(vO);return Fe(()=>t.data,()=>{var o;t.data.forEach(l=>{e.states.cachedOptions.has(l.value)||e.states.cachedOptions.set(l.value,l)});const _=((o=e.selectRef)==null?void 0:o.querySelectorAll("input"))||[];Array.from(_).includes(document.activeElement)||e.setSelected()},{flush:"post",immediate:!0}),()=>{}}});const Pve=Oe({name:"ElTreeSelect",inheritAttrs:!1,props:{...Zc.props,...XI.props,cacheData:{type:Array,default:()=>[]}},setup(t,e){const{slots:o,expose:_}=e,l=X(),c=X(),T=v(()=>t.nodeKey||t.valueKey||"value"),E=Cve(t,e,{select:l,tree:c,key:T}),{cacheOptions:u,...d}=bve(t,e,{select:l,tree:c,key:T}),O=Eo({});return _(O),Bt(()=>{Object.assign(O,{...Y_(c.value,["filter","updateKeyChildren","getCheckedNodes","setCheckedNodes","getCheckedKeys","setCheckedKeys","setChecked","getHalfCheckedNodes","getHalfCheckedKeys","getCurrentKey","getCurrentNode","setCurrentKey","setCurrentNode","getNode","remove","append","insertBefore","insertAfter"]),...Y_(l.value,["focus","blur"])})}),()=>pt(Zc,Eo({...E,ref:h=>l.value=h}),{...o,default:()=>[pt(Nve,{data:u.value}),pt(XI,Eo({...d,ref:h=>c.value=h}))]})}});var xR=tt(Pve,[["__file","tree-select.vue"]]);xR.install=t=>{t.component(xR.name,xR)};const vve=xR,Dve=vve,vD=Symbol(),Uve={key:-1,level:-1,data:{}};var xg=(t=>(t.KEY="id",t.LABEL="label",t.CHILDREN="children",t.DISABLED="disabled",t))(xg||{}),UN=(t=>(t.ADD="add",t.DELETE="delete",t))(UN||{});const f4={type:Number,default:26},yve=et({data:{type:me(Array),default:()=>Qo([])},emptyText:{type:String},height:{type:Number,default:200},props:{type:me(Object),default:()=>Qo({children:"children",label:"label",disabled:"disabled",value:"id"})},highlightCurrent:{type:Boolean,default:!1},showCheckbox:{type:Boolean,default:!1},defaultCheckedKeys:{type:me(Array),default:()=>Qo([])},checkStrictly:{type:Boolean,default:!1},defaultExpandedKeys:{type:me(Array),default:()=>Qo([])},indent:{type:Number,default:16},itemSize:f4,icon:{type:Lo},expandOnClickNode:{type:Boolean,default:!0},checkOnClickNode:{type:Boolean,default:!1},currentNodeKey:{type:me([String,Number])},accordion:{type:Boolean,default:!1},filterMethod:{type:me(Function)},perfMode:{type:Boolean,default:!0}}),$ve=et({node:{type:me(Object),default:()=>Qo(Uve)},expanded:{type:Boolean,default:!1},checked:{type:Boolean,default:!1},indeterminate:{type:Boolean,default:!1},showCheckbox:{type:Boolean,default:!1},disabled:{type:Boolean,default:!1},current:{type:Boolean,default:!1},hiddenExpandIcon:{type:Boolean,default:!1},itemSize:f4}),Bve=et({node:{type:me(Object),required:!0}}),m4="node-click",C4="node-expand",A4="node-collapse",b4="current-change",N4="check",P4="check-change",v4="node-contextmenu",wve={[m4]:(t,e,o)=>t&&e&&o,[C4]:(t,e)=>t&&e,[A4]:(t,e)=>t&&e,[b4]:(t,e)=>t&&e,[N4]:(t,e)=>t&&e,[P4]:(t,e)=>t&&typeof e=="boolean",[v4]:(t,e,o)=>t&&e&&o},Gve={click:(t,e)=>!!(t&&e),toggle:t=>!!t,check:(t,e)=>t&&typeof e=="boolean"};function kve(t,e){const o=X(new Set),_=X(new Set),{emit:l}=Ht();Fe([()=>e.value,()=>t.defaultCheckedKeys],()=>Lt(()=>{A(t.defaultCheckedKeys)}),{immediate:!0});const c=()=>{if(!e.value||!t.showCheckbox||t.checkStrictly)return;const{levelTreeNodeMap:b,maxLevel:N}=e.value,U=o.value,P=new Set;for(let G=N-1;G>=1;--G){const w=b.get(G);w&&w.forEach(F=>{const V=F.children;if(V){let W=!0,K=!1;for(const ee of V){const j=ee.key;if(U.has(j))K=!0;else if(P.has(j)){W=!1,K=!0;break}else W=!1}W?U.add(F.key):K?(P.add(F.key),U.delete(F.key)):(U.delete(F.key),P.delete(F.key))}})}_.value=P},T=b=>o.value.has(b.key),E=b=>_.value.has(b.key),u=(b,N,U=!0)=>{const P=o.value,G=(w,F)=>{P[F?UN.ADD:UN.DELETE](w.key);const V=w.children;!t.checkStrictly&&V&&V.forEach(W=>{W.disabled||G(W,F)})};G(b,N),c(),U&&d(b,N)},d=(b,N)=>{const{checkedNodes:U,checkedKeys:P}=L(),{halfCheckedNodes:G,halfCheckedKeys:w}=p();l(N4,b.data,{checkedKeys:P,checkedNodes:U,halfCheckedKeys:w,halfCheckedNodes:G}),l(P4,b.data,N)};function O(b=!1){return L(b).checkedKeys}function h(b=!1){return L(b).checkedNodes}function I(){return p().halfCheckedKeys}function S(){return p().halfCheckedNodes}function L(b=!1){const N=[],U=[];if(e!=null&&e.value&&t.showCheckbox){const{treeNodeMap:P}=e.value;o.value.forEach(G=>{const w=P.get(G);w&&(!b||b&&w.isLeaf)&&(U.push(G),N.push(w.data))})}return{checkedKeys:U,checkedNodes:N}}function p(){const b=[],N=[];if(e!=null&&e.value&&t.showCheckbox){const{treeNodeMap:U}=e.value;_.value.forEach(P=>{const G=U.get(P);G&&(N.push(P),b.push(G.data))})}return{halfCheckedNodes:b,halfCheckedKeys:N}}function C(b){o.value.clear(),_.value.clear(),A(b)}function m(b,N){if(e!=null&&e.value&&t.showCheckbox){const U=e.value.treeNodeMap.get(b);U&&u(U,N,!1)}}function A(b){if(e!=null&&e.value){const{treeNodeMap:N}=e.value;if(t.showCheckbox&&N&&b)for(const U of b){const P=N.get(U);P&&!T(P)&&u(P,!0,!1)}}}return{updateCheckedKeys:c,toggleCheckbox:u,isChecked:T,isIndeterminate:E,getCheckedKeys:O,getCheckedNodes:h,getHalfCheckedKeys:I,getHalfCheckedNodes:S,setChecked:m,setCheckedKeys:C}}function Hve(t,e){const o=X(new Set([])),_=X(new Set([])),l=v(()=>At(t.filterMethod));function c(E){var u;if(!l.value)return;const d=new Set,O=_.value,h=o.value,I=[],S=((u=e.value)==null?void 0:u.treeNodes)||[],L=t.filterMethod;h.clear();function p(C){C.forEach(m=>{I.push(m),L!=null&&L(E,m.data)?I.forEach(b=>{d.add(b.key)}):m.isLeaf&&h.add(m.key);const A=m.children;if(A&&p(A),!m.isLeaf){if(!d.has(m.key))h.add(m.key);else if(A){let b=!0;for(const N of A)if(!h.has(N.key)){b=!1;break}b?O.add(m.key):O.delete(m.key)}}I.pop()})}return p(S),d}function T(E){return _.value.has(E.key)}return{hiddenExpandIconKeySet:_,hiddenNodeKeySet:o,doFilter:c,isForceHiddenExpandIcon:T}}function xve(t,e){const o=X(new Set(t.defaultExpandedKeys)),_=X(),l=mo();Fe(()=>t.currentNodeKey,Ie=>{_.value=Ie},{immediate:!0}),Fe(()=>t.data,Ie=>{be(Ie)},{immediate:!0});const{isIndeterminate:c,isChecked:T,toggleCheckbox:E,getCheckedKeys:u,getCheckedNodes:d,getHalfCheckedKeys:O,getHalfCheckedNodes:h,setChecked:I,setCheckedKeys:S}=kve(t,l),{doFilter:L,hiddenNodeKeySet:p,isForceHiddenExpandIcon:C}=Hve(t,l),m=v(()=>{var Ie;return((Ie=t.props)==null?void 0:Ie.value)||xg.KEY}),A=v(()=>{var Ie;return((Ie=t.props)==null?void 0:Ie.children)||xg.CHILDREN}),b=v(()=>{var Ie;return((Ie=t.props)==null?void 0:Ie.disabled)||xg.DISABLED}),N=v(()=>{var Ie;return((Ie=t.props)==null?void 0:Ie.label)||xg.LABEL}),U=v(()=>{const Ie=o.value,Pe=p.value,Ae=[],ke=l.value&&l.value.treeNodes||[];function ve(){const Te=[];for(let Re=ke.length-1;Re>=0;--Re)Te.push(ke[Re]);for(;Te.length;){const Re=Te.pop();if(Re&&(Pe.has(Re.key)||Ae.push(Re),Ie.has(Re.key))){const Ue=Re.children;if(Ue){const Ye=Ue.length;for(let De=Ye-1;De>=0;--De)Te.push(Ue[De])}}}}return ve(),Ae}),P=v(()=>U.value.length>0);function G(Ie){const Pe=new Map,Ae=new Map;let ke=1;function ve(Re,Ue=1,Ye=void 0){var De;const Xe=[];for(const Ke of Re){const Be=V(Ke),qe={level:Ue,key:Be,data:Ke};qe.label=K(Ke),qe.parent=Ye;const xe=F(Ke);qe.disabled=W(Ke),qe.isLeaf=!xe||xe.length===0,xe&&xe.length&&(qe.children=ve(xe,Ue+1,qe)),Xe.push(qe),Pe.set(Be,qe),Ae.has(Ue)||Ae.set(Ue,[]),(De=Ae.get(Ue))==null||De.push(qe)}return Ue>ke&&(ke=Ue),Xe}const Te=ve(Ie);return{treeNodeMap:Pe,levelTreeNodeMap:Ae,maxLevel:ke,treeNodes:Te}}function w(Ie){const Pe=L(Ie);Pe&&(o.value=Pe)}function F(Ie){return Ie[A.value]}function V(Ie){return Ie?Ie[m.value]:""}function W(Ie){return Ie[b.value]}function K(Ie){return Ie[N.value]}function ee(Ie){o.value.has(Ie.key)?H(Ie):re(Ie)}function j(Ie){o.value=new Set(Ie)}function J(Ie,Pe){e(m4,Ie.data,Ie,Pe),ie(Ie),t.expandOnClickNode&&ee(Ie),t.showCheckbox&&t.checkOnClickNode&&!Ie.disabled&&E(Ie,!T(Ie),!0)}function ie(Ie){ge(Ie)||(_.value=Ie.key,e(b4,Ie.data,Ie))}function Y(Ie,Pe){E(Ie,Pe)}function re(Ie){const Pe=o.value;if(l.value&&t.accordion){const{treeNodeMap:Ae}=l.value;Pe.forEach(ke=>{const ve=Ae.get(ke);Ie&&Ie.level===(ve==null?void 0:ve.level)&&Pe.delete(ke)})}Pe.add(Ie.key),e(C4,Ie.data,Ie)}function H(Ie){o.value.delete(Ie.key),e(A4,Ie.data,Ie)}function Q(Ie){return o.value.has(Ie.key)}function ae(Ie){return!!Ie.disabled}function ge(Ie){const Pe=_.value;return Pe!==void 0&&Pe===Ie.key}function Se(){var Ie,Pe;if(_.value)return(Pe=(Ie=l.value)==null?void 0:Ie.treeNodeMap.get(_.value))==null?void 0:Pe.data}function pe(){return _.value}function We(Ie){_.value=Ie}function be(Ie){Lt(()=>l.value=G(Ie))}function Me(Ie){var Pe;const Ae=Zt(Ie)?V(Ie):Ie;return(Pe=l.value)==null?void 0:Pe.treeNodeMap.get(Ae)}return{tree:l,flattenTree:U,isNotEmpty:P,getKey:V,getChildren:F,toggleExpand:ee,toggleCheckbox:E,isExpanded:Q,isChecked:T,isIndeterminate:c,isDisabled:ae,isCurrent:ge,isForceHiddenExpandIcon:C,handleNodeClick:J,handleNodeCheck:Y,getCurrentNode:Se,getCurrentKey:pe,setCurrentKey:We,getCheckedKeys:u,getCheckedNodes:d,getHalfCheckedKeys:O,getHalfCheckedNodes:h,setChecked:I,setCheckedKeys:S,filter:w,setData:be,getNode:Me,expandNode:re,collapseNode:H,setExpandedKeys:j}}var Fve=Oe({name:"ElTreeNodeContent",props:Bve,setup(t){const e=lt(vD),o=Ze("tree");return()=>{const _=t.node,{data:l}=_;return e!=null&&e.ctx.slots.default?e.ctx.slots.default({node:_,data:l}):pt("span",{class:o.be("node","label")},[_==null?void 0:_.label])}}});const Vve=["aria-expanded","aria-disabled","aria-checked","data-key","onClick"],Wve=Oe({name:"ElTreeNode"}),Xve=Oe({...Wve,props:$ve,emits:Gve,setup(t,{emit:e}){const o=t,_=lt(vD),l=Ze("tree"),c=v(()=>{var h;return(h=_==null?void 0:_.props.indent)!=null?h:16}),T=v(()=>{var h;return(h=_==null?void 0:_.props.icon)!=null?h:XX}),E=h=>{e("click",o.node,h)},u=()=>{e("toggle",o.node)},d=h=>{e("check",o.node,h)},O=h=>{var I,S,L,p;(L=(S=(I=_==null?void 0:_.instance)==null?void 0:I.vnode)==null?void 0:S.props)!=null&&L.onNodeContextmenu&&(h.stopPropagation(),h.preventDefault()),_==null||_.ctx.emit(v4,h,(p=o.node)==null?void 0:p.data,o.node)};return(h,I)=>{var S,L,p;return B(),se("div",{ref:"node$",class:k([M(l).b("node"),M(l).is("expanded",h.expanded),M(l).is("current",h.current),M(l).is("focusable",!h.disabled),M(l).is("checked",!h.disabled&&h.checked)]),role:"treeitem",tabindex:"-1","aria-expanded":h.expanded,"aria-disabled":h.disabled,"aria-checked":h.checked,"data-key":(S=h.node)==null?void 0:S.key,onClick:Ct(E,["stop"]),onContextmenu:O},[te("div",{class:k(M(l).be("node","content")),style:dt({paddingLeft:`${(h.node.level-1)*M(c)}px`,height:h.itemSize+"px"})},[M(T)?(B(),Ne(M(Et),{key:0,class:k([M(l).is("leaf",!!((L=h.node)!=null&&L.isLeaf)),M(l).is("hidden",h.hiddenExpandIcon),{expanded:!((p=h.node)!=null&&p.isLeaf)&&h.expanded},M(l).be("node","expand-icon")]),onClick:Ct(u,["stop"])},{default:de(()=>[(B(),Ne(Kt(M(T))))]),_:1},8,["class","onClick"])):Ce("v-if",!0),h.showCheckbox?(B(),Ne(M(jn),{key:1,"model-value":h.checked,indeterminate:h.indeterminate,disabled:h.disabled,onChange:d,onClick:I[0]||(I[0]=Ct(()=>{},["stop"]))},null,8,["model-value","indeterminate","disabled"])):Ce("v-if",!0),ne(M(Fve),{node:h.node},null,8,["node"])],6)],42,Vve)}}});var Yve=tt(Xve,[["__file","tree-node.vue"]]);const Kve=Oe({name:"ElTreeV2"}),zve=Oe({...Kve,props:yve,emits:wve,setup(t,{expose:e,emit:o}){const _=t,l=zs(),c=v(()=>_.itemSize);Jt(vD,{ctx:{emit:o,slots:l},props:_,instance:Ht()}),Jt(d_,void 0);const{t:T}=lo(),E=Ze("tree"),{flattenTree:u,isNotEmpty:d,toggleExpand:O,isExpanded:h,isIndeterminate:I,isChecked:S,isDisabled:L,isCurrent:p,isForceHiddenExpandIcon:C,handleNodeClick:m,handleNodeCheck:A,toggleCheckbox:b,getCurrentNode:N,getCurrentKey:U,setCurrentKey:P,getCheckedKeys:G,getCheckedNodes:w,getHalfCheckedKeys:F,getHalfCheckedNodes:V,setChecked:W,setCheckedKeys:K,filter:ee,setData:j,getNode:J,expandNode:ie,collapseNode:Y,setExpandedKeys:re}=xve(_,o);return e({toggleCheckbox:b,getCurrentNode:N,getCurrentKey:U,setCurrentKey:P,getCheckedKeys:G,getCheckedNodes:w,getHalfCheckedKeys:F,getHalfCheckedNodes:V,setChecked:W,setCheckedKeys:K,filter:ee,setData:j,getNode:J,expandNode:ie,collapseNode:Y,setExpandedKeys:re}),(H,Q)=>{var ae;return B(),se("div",{class:k([M(E).b(),{[M(E).m("highlight-current")]:H.highlightCurrent}]),role:"tree"},[M(d)?(B(),Ne(M(HK),{key:0,"class-name":M(E).b("virtual-list"),data:M(u),total:M(u).length,height:H.height,"item-size":M(c),"perf-mode":H.perfMode},{default:de(({data:ge,index:Se,style:pe})=>[(B(),Ne(Yve,{key:ge[Se].key,style:dt(pe),node:ge[Se],expanded:M(h)(ge[Se]),"show-checkbox":H.showCheckbox,checked:M(S)(ge[Se]),indeterminate:M(I)(ge[Se]),"item-size":M(c),disabled:M(L)(ge[Se]),current:M(p)(ge[Se]),"hidden-expand-icon":M(C)(ge[Se]),onClick:M(m),onToggle:M(O),onCheck:M(A)},null,8,["style","node","expanded","show-checkbox","checked","indeterminate","item-size","disabled","current","hidden-expand-icon","onClick","onToggle","onCheck"]))]),_:1},8,["class-name","data","total","height","item-size","perf-mode"])):(B(),se("div",{key:1,class:k(M(E).e("empty-block"))},[te("span",{class:k(M(E).e("empty-text"))},Qe((ae=H.emptyText)!=null?ae:M(T)("el.tree.emptyText")),3)],2))],2)}}});var Zve=tt(zve,[["__file","tree.vue"]]);const jve=Vt(Zve),D4=Symbol("uploadContextKey"),qve="ElUpload";class Qve extends Error{constructor(e,o,_,l){super(e),this.name="UploadAjaxError",this.status=o,this.method=_,this.url=l}}function AH(t,e,o){let _;return o.response?_=`${o.response.error||o.response}`:o.responseText?_=`${o.responseText}`:_=`fail to ${e.method} ${t} ${o.status}`,new Qve(_,o.status,e.method,t)}function Jve(t){const e=t.responseText||t.response;if(!e)return e;try{return JSON.parse(e)}catch{return e}}const eDe=t=>{typeof XMLHttpRequest>"u"&&vs(qve,"XMLHttpRequest is undefined");const e=new XMLHttpRequest,o=t.action;e.upload&&e.upload.addEventListener("progress",c=>{const T=c;T.percent=c.total>0?c.loaded/c.total*100:0,t.onProgress(T)});const _=new FormData;if(t.data)for(const[c,T]of Object.entries(t.data))rt(T)&&T.length?_.append(c,...T):_.append(c,T);_.append(t.filename,t.file,t.file.name),e.addEventListener("error",()=>{t.onError(AH(o,t,e))}),e.addEventListener("load",()=>{if(e.status<200||e.status>=300)return t.onError(AH(o,t,e));t.onSuccess(Jve(e))}),e.open(t.method,o,!0),t.withCredentials&&"withCredentials"in e&&(e.withCredentials=!0);const l=t.headers||{};if(l instanceof Headers)l.forEach((c,T)=>e.setRequestHeader(T,c));else for(const[c,T]of Object.entries(l))ws(T)||e.setRequestHeader(c,String(T));return e.send(_),e},U4=["text","picture","picture-card"];let tDe=1;const yN=()=>Date.now()+tDe++,y4=et({action:{type:String,default:"#"},headers:{type:me(Object)},method:{type:String,default:"post"},data:{type:me([Object,Function,Promise]),default:()=>Qo({})},multiple:{type:Boolean,default:!1},name:{type:String,default:"file"},drag:{type:Boolean,default:!1},withCredentials:Boolean,showFileList:{type:Boolean,default:!0},accept:{type:String,default:""},fileList:{type:me(Array),default:()=>Qo([])},autoUpload:{type:Boolean,default:!0},listType:{type:String,values:U4,default:"text"},httpRequest:{type:me(Function),default:eDe},disabled:Boolean,limit:Number}),oDe=et({...y4,beforeUpload:{type:me(Function),default:Ro},beforeRemove:{type:me(Function)},onRemove:{type:me(Function),default:Ro},onChange:{type:me(Function),default:Ro},onPreview:{type:me(Function),default:Ro},onSuccess:{type:me(Function),default:Ro},onProgress:{type:me(Function),default:Ro},onError:{type:me(Function),default:Ro},onExceed:{type:me(Function),default:Ro}}),sDe=et({files:{type:me(Array),default:()=>Qo([])},disabled:{type:Boolean,default:!1},handlePreview:{type:me(Function),default:Ro},listType:{type:String,values:U4,default:"text"}}),iDe={remove:t=>!!t},nDe=["onKeydown"],rDe=["src"],_De=["onClick"],lDe=["title"],aDe=["onClick"],cDe=["onClick"],TDe=Oe({name:"ElUploadList"}),EDe=Oe({...TDe,props:sDe,emits:iDe,setup(t,{emit:e}){const o=t,{t:_}=lo(),l=Ze("upload"),c=Ze("icon"),T=Ze("list"),E=_n(),u=X(!1),d=v(()=>[l.b("list"),l.bm("list",o.listType),l.is("disabled",o.disabled)]),O=h=>{e("remove",h)};return(h,I)=>(B(),Ne(h2,{tag:"ul",class:k(M(d)),name:M(T).b()},{default:de(()=>[(B(!0),se(ht,null,oo(h.files,S=>(B(),se("li",{key:S.uid||S.name,class:k([M(l).be("list","item"),M(l).is(S.status),{focusing:u.value}]),tabindex:"0",onKeydown:So(L=>!M(E)&&O(S),["delete"]),onFocus:I[0]||(I[0]=L=>u.value=!0),onBlur:I[1]||(I[1]=L=>u.value=!1),onClick:I[2]||(I[2]=L=>u.value=!1)},[ye(h.$slots,"default",{file:S},()=>[h.listType==="picture"||S.status!=="uploading"&&h.listType==="picture-card"?(B(),se("img",{key:0,class:k(M(l).be("list","item-thumbnail")),src:S.url,alt:""},null,10,rDe)):Ce("v-if",!0),S.status==="uploading"||h.listType!=="picture-card"?(B(),se("div",{key:1,class:k(M(l).be("list","item-info"))},[te("a",{class:k(M(l).be("list","item-name")),onClick:Ct(L=>h.handlePreview(S),["prevent"])},[ne(M(Et),{class:k(M(c).m("document"))},{default:de(()=>[ne(M(uae))]),_:1},8,["class"]),te("span",{class:k(M(l).be("list","item-file-name")),title:S.name},Qe(S.name),11,lDe)],10,_De),S.status==="uploading"?(B(),Ne(M(vK),{key:0,type:h.listType==="picture-card"?"circle":"line","stroke-width":h.listType==="picture-card"?6:2,percentage:Number(S.percentage),style:dt(h.listType==="picture-card"?"":"margin-top: 0.5rem")},null,8,["type","stroke-width","percentage","style"])):Ce("v-if",!0)],2)):Ce("v-if",!0),te("label",{class:k(M(l).be("list","item-status-label"))},[h.listType==="text"?(B(),Ne(M(Et),{key:0,class:k([M(c).m("upload-success"),M(c).m("circle-check")])},{default:de(()=>[ne(M(Nv))]),_:1},8,["class"])):["picture-card","picture"].includes(h.listType)?(B(),Ne(M(Et),{key:1,class:k([M(c).m("upload-success"),M(c).m("check")])},{default:de(()=>[ne(M(mO))]),_:1},8,["class"])):Ce("v-if",!0)],2),M(E)?Ce("v-if",!0):(B(),Ne(M(Et),{key:2,class:k(M(c).m("close")),onClick:L=>O(S)},{default:de(()=>[ne(M(Rr))]),_:2},1032,["class","onClick"])),Ce(" Due to close btn only appears when li gets focused disappears after li gets blurred, thus keyboard navigation can never reach close btn"),Ce(" This is a bug which needs to be fixed "),Ce(" TODO: Fix the incorrect navigation interaction "),M(E)?Ce("v-if",!0):(B(),se("i",{key:3,class:k(M(c).m("close-tip"))},Qe(M(_)("el.upload.deleteTip")),3)),h.listType==="picture-card"?(B(),se("span",{key:4,class:k(M(l).be("list","item-actions"))},[te("span",{class:k(M(l).be("list","item-preview")),onClick:L=>h.handlePreview(S)},[ne(M(Et),{class:k(M(c).m("zoom-in"))},{default:de(()=>[ne(M(ZX))]),_:1},8,["class"])],10,aDe),M(E)?Ce("v-if",!0):(B(),se("span",{key:0,class:k(M(l).be("list","item-delete")),onClick:L=>O(S)},[ne(M(Et),{class:k(M(c).m("delete"))},{default:de(()=>[ne(M(Tae))]),_:1},8,["class"])],10,cDe))],2)):Ce("v-if",!0)])],42,nDe))),128)),ye(h.$slots,"append")]),_:3},8,["class","name"]))}});var bH=tt(EDe,[["__file","upload-list.vue"]]);const uDe=et({disabled:{type:Boolean,default:!1}}),gDe={file:t=>rt(t)},dDe=["onDrop","onDragover"],$4="ElUploadDrag",ODe=Oe({name:$4}),hDe=Oe({...ODe,props:uDe,emits:gDe,setup(t,{emit:e}){const o=lt(D4);o||vs($4,"usage: <el-upload><el-upload-dragger /></el-upload>");const _=Ze("upload"),l=X(!1),c=_n(),T=u=>{if(c.value)return;l.value=!1,u.stopPropagation();const d=Array.from(u.dataTransfer.files),O=o.accept.value;if(!O){e("file",d);return}const h=d.filter(I=>{const{type:S,name:L}=I,p=L.includes(".")?`.${L.split(".").pop()}`:"",C=S.replace(/\/.*$/,"");return O.split(",").map(m=>m.trim()).filter(m=>m).some(m=>m.startsWith(".")?p===m:/\/\*$/.test(m)?C===m.replace(/\/\*$/,""):/^[^/]+\/[^/]+$/.test(m)?S===m:!1)});e("file",h)},E=()=>{c.value||(l.value=!0)};return(u,d)=>(B(),se("div",{class:k([M(_).b("dragger"),M(_).is("dragover",l.value)]),onDrop:Ct(T,["prevent"]),onDragover:Ct(E,["prevent"]),onDragleave:d[0]||(d[0]=Ct(O=>l.value=!1,["prevent"]))},[ye(u.$slots,"default")],42,dDe))}});var MDe=tt(hDe,[["__file","upload-dragger.vue"]]);const RDe=et({...y4,beforeUpload:{type:me(Function),default:Ro},onRemove:{type:me(Function),default:Ro},onStart:{type:me(Function),default:Ro},onSuccess:{type:me(Function),default:Ro},onProgress:{type:me(Function),default:Ro},onError:{type:me(Function),default:Ro},onExceed:{type:me(Function),default:Ro}}),IDe=["onKeydown"],SDe=["name","multiple","accept"],pDe=Oe({name:"ElUploadContent",inheritAttrs:!1}),LDe=Oe({...pDe,props:RDe,setup(t,{expose:e}){const o=t,_=Ze("upload"),l=_n(),c=mo({}),T=mo(),E=p=>{if(p.length===0)return;const{autoUpload:C,limit:m,fileList:A,multiple:b,onStart:N,onExceed:U}=o;if(m&&A.length+p.length>m){U(p,A);return}b||(p=p.slice(0,1));for(const P of p){const G=P;G.uid=yN(),N(G),C&&u(G)}},u=async p=>{if(T.value.value="",!o.beforeUpload)return O(p);let C,m={};try{const b=o.data,N=o.beforeUpload(p);m=YR(o.data)?NI(o.data):o.data,C=await N,YR(o.data)&&ui(b,m)&&(m=NI(o.data))}catch{C=!1}if(C===!1){o.onRemove(p);return}let A=p;C instanceof Blob&&(C instanceof File?A=C:A=new File([C],p.name,{type:p.type})),O(Object.assign(A,{uid:p.uid}),m)},d=async(p,C)=>At(p)?p(C):p,O=async(p,C)=>{const{headers:m,data:A,method:b,withCredentials:N,name:U,action:P,onProgress:G,onSuccess:w,onError:F,httpRequest:V}=o;try{C=await d(C??A,p)}catch{o.onRemove(p);return}const{uid:W}=p,K={headers:m||{},withCredentials:N,file:p,data:C,method:b,filename:U,action:P,onProgress:j=>{G(j,p)},onSuccess:j=>{w(j,p),delete c.value[W]},onError:j=>{F(j,p),delete c.value[W]}},ee=V(K);c.value[W]=ee,ee instanceof Promise&&ee.then(K.onSuccess,K.onError)},h=p=>{const C=p.target.files;C&&E(Array.from(C))},I=()=>{l.value||(T.value.value="",T.value.click())},S=()=>{I()};return e({abort:p=>{Hle(c.value).filter(p?([m])=>String(p.uid)===m:()=>!0).forEach(([m,A])=>{A instanceof XMLHttpRequest&&A.abort(),delete c.value[m]})},upload:u}),(p,C)=>(B(),se("div",{class:k([M(_).b(),M(_).m(p.listType),M(_).is("drag",p.drag)]),tabindex:"0",onClick:I,onKeydown:So(Ct(S,["self"]),["enter","space"])},[p.drag?(B(),Ne(MDe,{key:0,disabled:M(l),onFile:E},{default:de(()=>[ye(p.$slots,"default")]),_:3},8,["disabled"])):ye(p.$slots,"default",{key:1}),te("input",{ref_key:"inputRef",ref:T,class:k(M(_).e("input")),name:p.name,multiple:p.multiple,accept:p.accept,type:"file",onChange:h,onClick:C[0]||(C[0]=Ct(()=>{},["stop"]))},null,42,SDe)],42,IDe))}});var NH=tt(LDe,[["__file","upload-content.vue"]]);const PH="ElUpload",vH=t=>{var e;(e=t.url)!=null&&e.startsWith("blob:")&&URL.revokeObjectURL(t.url)},fDe=(t,e)=>{const o=HX(t,"fileList",void 0,{passive:!0}),_=I=>o.value.find(S=>S.uid===I.uid);function l(I){var S;(S=e.value)==null||S.abort(I)}function c(I=["ready","uploading","success","fail"]){o.value=o.value.filter(S=>!I.includes(S.status))}const T=(I,S)=>{const L=_(S);L&&(console.error(I),L.status="fail",o.value.splice(o.value.indexOf(L),1),t.onError(I,L,o.value),t.onChange(L,o.value))},E=(I,S)=>{const L=_(S);L&&(t.onProgress(I,L,o.value),L.status="uploading",L.percentage=Math.round(I.percent))},u=(I,S)=>{const L=_(S);L&&(L.status="success",L.response=I,t.onSuccess(I,L,o.value),t.onChange(L,o.value))},d=I=>{ws(I.uid)&&(I.uid=yN());const S={name:I.name,percentage:0,status:"ready",size:I.size,raw:I,uid:I.uid};if(t.listType==="picture-card"||t.listType==="picture")try{S.url=URL.createObjectURL(I)}catch(L){L.message,t.onError(L,S,o.value)}o.value=[...o.value,S],t.onChange(S,o.value)},O=async I=>{const S=I instanceof File?_(I):I;S||vs(PH,"file to be removed not found");const L=p=>{l(p);const C=o.value;C.splice(C.indexOf(p),1),t.onRemove(p,C),vH(p)};t.beforeRemove?await t.beforeRemove(S,o.value)!==!1&&L(S):L(S)};function h(){o.value.filter(({status:I})=>I==="ready").forEach(({raw:I})=>{var S;return I&&((S=e.value)==null?void 0:S.upload(I))})}return Fe(()=>t.listType,I=>{I!=="picture-card"&&I!=="picture"||(o.value=o.value.map(S=>{const{raw:L,url:p}=S;if(!p&&L)try{S.url=URL.createObjectURL(L)}catch(C){t.onError(C,S,o.value)}return S}))}),Fe(o,I=>{for(const S of I)S.uid||(S.uid=yN()),S.status||(S.status="success")},{immediate:!0,deep:!0}),{uploadFiles:o,abort:l,clearFiles:c,handleError:T,handleProgress:E,handleStart:d,handleSuccess:u,handleRemove:O,submit:h,revokeFileObjectURL:vH}},mDe=Oe({name:"ElUpload"}),CDe=Oe({...mDe,props:oDe,setup(t,{expose:e}){const o=t,_=_n(),l=mo(),{abort:c,submit:T,clearFiles:E,uploadFiles:u,handleStart:d,handleError:O,handleRemove:h,handleSuccess:I,handleProgress:S,revokeFileObjectURL:L}=fDe(o,l),p=v(()=>o.listType==="picture-card"),C=v(()=>({...o,fileList:u.value,onStart:d,onProgress:S,onSuccess:I,onError:O,onRemove:h}));return Do(()=>{u.value.forEach(L)}),Jt(D4,{accept:Ao(o,"accept")}),e({abort:c,submit:T,clearFiles:E,handleStart:d,handleRemove:h}),(m,A)=>(B(),se("div",null,[M(p)&&m.showFileList?(B(),Ne(bH,{key:0,disabled:M(_),"list-type":m.listType,files:M(u),"handle-preview":m.onPreview,onRemove:M(h)},da({append:de(()=>[ne(NH,Yt({ref_key:"uploadRef",ref:l},M(C)),{default:de(()=>[m.$slots.trigger?ye(m.$slots,"trigger",{key:0}):Ce("v-if",!0),!m.$slots.trigger&&m.$slots.default?ye(m.$slots,"default",{key:1}):Ce("v-if",!0)]),_:3},16)]),_:2},[m.$slots.file?{name:"default",fn:de(({file:b})=>[ye(m.$slots,"file",{file:b})])}:void 0]),1032,["disabled","list-type","files","handle-preview","onRemove"])):Ce("v-if",!0),!M(p)||M(p)&&!m.showFileList?(B(),Ne(NH,Yt({key:1,ref_key:"uploadRef",ref:l},M(C)),{default:de(()=>[m.$slots.trigger?ye(m.$slots,"trigger",{key:0}):Ce("v-if",!0),!m.$slots.trigger&&m.$slots.default?ye(m.$slots,"default",{key:1}):Ce("v-if",!0)]),_:3},16)):Ce("v-if",!0),m.$slots.trigger?ye(m.$slots,"default",{key:2}):Ce("v-if",!0),ye(m.$slots,"tip"),!M(p)&&m.showFileList?(B(),Ne(bH,{key:3,disabled:M(_),"list-type":m.listType,files:M(u),"handle-preview":m.onPreview,onRemove:M(h)},da({_:2},[m.$slots.file?{name:"default",fn:de(({file:b})=>[ye(m.$slots,"file",{file:b})])}:void 0]),1032,["disabled","list-type","files","handle-preview","onRemove"])):Ce("v-if",!0)]))}});var ADe=tt(CDe,[["__file","upload.vue"]]);const bDe=Vt(ADe),NDe=et({zIndex:{type:Number,default:9},rotate:{type:Number,default:-22},width:Number,height:Number,image:String,content:{type:me([String,Array]),default:"Element Plus"},font:{type:me(Object)},gap:{type:me(Array),default:()=>[100,100]},offset:{type:me(Array)}});function PDe(t){return t.replace(/([A-Z])/g,"-$1").toLowerCase()}function vDe(t){return Object.keys(t).map(e=>`${PDe(e)}: ${t[e]};`).join(" ")}function DDe(){return window.devicePixelRatio||1}const UDe=(t,e)=>{let o=!1;return t.removedNodes.length&&e&&(o=Array.from(t.removedNodes).includes(e)),t.type==="attributes"&&t.target===e&&(o=!0),o},B4=3;function _A(t,e,o=1){const _=document.createElement("canvas"),l=_.getContext("2d"),c=t*o,T=e*o;return _.setAttribute("width",`${c}px`),_.setAttribute("height",`${T}px`),l.save(),[l,_,c,T]}function yDe(){function t(e,o,_,l,c,T,E,u){const[d,O,h,I]=_A(l,c,_);if(e instanceof HTMLImageElement)d.drawImage(e,0,0,h,I);else{const{color:ae,fontSize:ge,fontStyle:Se,fontWeight:pe,fontFamily:We,textAlign:be,textBaseline:Me}=T,Ie=Number(ge)*_;d.font=`${Se} normal ${pe} ${Ie}px/${c}px ${We}`,d.fillStyle=ae,d.textAlign=be,d.textBaseline=Me;const Pe=Array.isArray(e)?e:[e];Pe==null||Pe.forEach((Ae,ke)=>{d.fillText(Ae??"",h/2,ke*(Ie+B4*_))})}const S=Math.PI/180*Number(o),L=Math.max(l,c),[p,C,m]=_A(L,L,_);p.translate(m/2,m/2),p.rotate(S),h>0&&I>0&&p.drawImage(O,-h/2,-I/2);function A(ae,ge){const Se=ae*Math.cos(S)-ge*Math.sin(S),pe=ae*Math.sin(S)+ge*Math.cos(S);return[Se,pe]}let b=0,N=0,U=0,P=0;const G=h/2,w=I/2;[[0-G,0-w],[0+G,0-w],[0+G,0+w],[0-G,0+w]].forEach(([ae,ge])=>{const[Se,pe]=A(ae,ge);b=Math.min(b,Se),N=Math.max(N,Se),U=Math.min(U,pe),P=Math.max(P,pe)});const V=b+m/2,W=U+m/2,K=N-b,ee=P-U,j=E*_,J=u*_,ie=(K+j)*2,Y=ee+J,[re,H]=_A(ie,Y);function Q(ae=0,ge=0){re.drawImage(C,V,W,K,ee,ae,ge,K,ee)}return Q(),Q(K+j,-ee/2-J/2),Q(K+j,+ee/2+J/2),[H.toDataURL(),ie/_,Y/_]}return t}const $De=Oe({name:"ElWatermark"}),BDe=Oe({...$De,props:NDe,setup(t){const e=t,o={position:"relative"},_=v(()=>{var V,W;return(W=(V=e.font)==null?void 0:V.color)!=null?W:"rgba(0,0,0,.15)"}),l=v(()=>{var V,W;return(W=(V=e.font)==null?void 0:V.fontSize)!=null?W:16}),c=v(()=>{var V,W;return(W=(V=e.font)==null?void 0:V.fontWeight)!=null?W:"normal"}),T=v(()=>{var V,W;return(W=(V=e.font)==null?void 0:V.fontStyle)!=null?W:"normal"}),E=v(()=>{var V,W;return(W=(V=e.font)==null?void 0:V.fontFamily)!=null?W:"sans-serif"}),u=v(()=>{var V,W;return(W=(V=e.font)==null?void 0:V.textAlign)!=null?W:"center"}),d=v(()=>{var V,W;return(W=(V=e.font)==null?void 0:V.textBaseline)!=null?W:"top"}),O=v(()=>e.gap[0]),h=v(()=>e.gap[1]),I=v(()=>O.value/2),S=v(()=>h.value/2),L=v(()=>{var V,W;return(W=(V=e.offset)==null?void 0:V[0])!=null?W:I.value}),p=v(()=>{var V,W;return(W=(V=e.offset)==null?void 0:V[1])!=null?W:S.value}),C=()=>{const V={zIndex:e.zIndex,position:"absolute",left:0,top:0,width:"100%",height:"100%",pointerEvents:"none",backgroundRepeat:"repeat"};let W=L.value-I.value,K=p.value-S.value;return W>0&&(V.left=`${W}px`,V.width=`calc(100% - ${W}px)`,W=0),K>0&&(V.top=`${K}px`,V.height=`calc(100% - ${K}px)`,K=0),V.backgroundPosition=`${W}px ${K}px`,V},m=mo(null),A=mo(),b=X(!1),N=()=>{A.value&&(A.value.remove(),A.value=void 0)},U=(V,W)=>{var K;m.value&&A.value&&(b.value=!0,A.value.setAttribute("style",vDe({...C(),backgroundImage:`url('${V}')`,backgroundSize:`${Math.floor(W)}px`})),(K=m.value)==null||K.append(A.value),setTimeout(()=>{b.value=!1}))},P=V=>{let W=120,K=64;const ee=e.image,j=e.content,J=e.width,ie=e.height;if(!ee&&V.measureText){V.font=`${Number(l.value)}px ${E.value}`;const Y=Array.isArray(j)?j:[j],re=Y.map(H=>{const Q=V.measureText(H);return[Q.width,Q.fontBoundingBoxAscent!==void 0?Q.fontBoundingBoxAscent+Q.fontBoundingBoxDescent:Q.actualBoundingBoxAscent+Q.actualBoundingBoxDescent]});W=Math.ceil(Math.max(...re.map(H=>H[0]))),K=Math.ceil(Math.max(...re.map(H=>H[1])))*Y.length+(Y.length-1)*B4}return[J??W,ie??K]},G=yDe(),w=()=>{const W=document.createElement("canvas").getContext("2d"),K=e.image,ee=e.content,j=e.rotate;if(W){A.value||(A.value=document.createElement("div"));const J=DDe(),[ie,Y]=P(W),re=H=>{const[Q,ae]=G(H||"",j,J,ie,Y,{color:_.value,fontSize:l.value,fontStyle:T.value,fontWeight:c.value,fontFamily:E.value,textAlign:u.value,textBaseline:d.value},O.value,h.value);U(Q,ae)};if(K){const H=new Image;H.onload=()=>{re(H)},H.onerror=()=>{re(ee)},H.crossOrigin="anonymous",H.referrerPolicy="no-referrer",H.src=K}else re(ee)}};return Bt(()=>{w()}),Fe(()=>e,()=>{w()},{deep:!0,flush:"post"}),Do(()=>{N()}),kX(m,V=>{b.value||V.forEach(W=>{UDe(W,A.value)&&(N(),w())})},{attributes:!0,subtree:!0,childList:!0}),(V,W)=>(B(),se("div",{ref_key:"containerRef",ref:m,style:dt([o])},[ye(V.$slots,"default")],4))}});var wDe=tt(BDe,[["__file","watermark.vue"]]);const GDe=Vt(wDe),kDe=et({zIndex:{type:Number,default:1001},visible:Boolean,fill:{type:String,default:"rgba(0,0,0,0.5)"},pos:{type:me(Object)},targetAreaClickable:{type:Boolean,default:!0}}),HDe=(t,e,o,_,l)=>{const c=X(null),T=()=>{if(!t.value||!e.value){c.value=null;return}!xDe(t.value)&&e.value&&t.value.scrollIntoView(l.value);const{left:O,top:h,width:I,height:S}=t.value.getBoundingClientRect();c.value={left:O,top:h,width:I,height:S,radius:0}};Bt(()=>{Fe([e,t],()=>{T()},{immediate:!0}),window.addEventListener("resize",T)}),Do(()=>{window.removeEventListener("resize",T)});const E=O=>{var h;return(h=rt(o.value.offset)?o.value.offset[O]:o.value.offset)!=null?h:6},u=v(()=>{var O;if(!c.value)return c.value;const h=E(0),I=E(1),S=((O=o.value)==null?void 0:O.radius)||2;return{left:c.value.left-h,top:c.value.top-I,width:c.value.width+h*2,height:c.value.height+I*2,radius:S}}),d=v(()=>!_.value||!t.value||!window.DOMRect?t.value||void 0:{getBoundingClientRect(){var O,h,I,S;return window.DOMRect.fromRect({width:((O=u.value)==null?void 0:O.width)||0,height:((h=u.value)==null?void 0:h.height)||0,x:((I=u.value)==null?void 0:I.left)||0,y:((S=u.value)==null?void 0:S.top)||0})}});return{mergedPosInfo:u,triggerTarget:d}},ep=Symbol("ElTour");function xDe(t){const e=window.innerWidth||document.documentElement.clientWidth,o=window.innerHeight||document.documentElement.clientHeight,{top:_,right:l,bottom:c,left:T}=t.getBoundingClientRect();return _>=0&&T>=0&&l<=e&&c<=o}const FDe=(t,e)=>{if(Object.keys(t).length!==Object.keys(e).length)return!1;for(const o in t)if(t[o]!==e[o])return!1;return!0};function VDe(t,e){if(t.length!==e.length)return!1;for(const[o]of t.entries())if(FDe(t[o],e[o]))return!1;return!0}const WDe=(t,e)=>{var o;if(!Fo(t))return{};const _=t.props||{},l=((o=t.type)==null?void 0:o.props)||{},c={};return Object.keys(l).forEach(T=>{so(l[T],"default")&&(c[T]=l[T].default)}),Object.keys(_).forEach(T=>{const E=bn(T);c[E]=_[T],e.includes(E)&&c[E]===""&&(c[E]=!0)}),c},XDe=(t,e,o,_,l,c,T,E)=>{const u=X(),d=X(),O=X({}),h={x:u,y:d,placement:_,strategy:l,middlewareData:O},I=v(()=>{const m=[E3(M(c)),tTe(),eTe(),YDe()];return M(E)&&M(o)&&m.push(I3({element:M(o)})),m}),S=async()=>{if(!ro)return;const m=M(t),A=M(e);if(!m||!A)return;const b=await S3(m,A,{placement:M(_),strategy:M(l),middleware:M(I)});iu(h).forEach(N=>{h[N].value=b[N]})},L=v(()=>{if(!M(t))return{position:"fixed",top:"50%",left:"50%",transform:"translate3d(-50%, -50%, 0)",maxWidth:"100vw",zIndex:M(T)};const{overflow:m}=M(O);return{position:M(l),zIndex:M(T),top:M(d)!=null?`${M(d)}px`:"",left:M(u)!=null?`${M(u)}px`:"",maxWidth:m!=null&&m.maxWidth?`${m==null?void 0:m.maxWidth}px`:""}}),p=v(()=>{if(!M(E))return{};const{arrow:m}=M(O);return{left:(m==null?void 0:m.x)!=null?`${m==null?void 0:m.x}px`:"",top:(m==null?void 0:m.y)!=null?`${m==null?void 0:m.y}px`:""}});let C;return Bt(()=>{C=Jce(M(t),M(e),S),qs(()=>{S()})}),Do(()=>{C&&C()}),{update:S,contentStyle:L,arrowStyle:p}},YDe=()=>({name:"overflow",async fn(t){const e=await Fv(t);let o=0;return e.left>0&&(o=e.left),e.right>0&&(o=e.right),{data:{maxWidth:t.rects.floating.width-o}}}}),KDe={style:{width:"100%",height:"100%"}},zDe=["d"],ZDe=Oe({name:"ElTourMask",inheritAttrs:!1}),jDe=Oe({...ZDe,props:kDe,setup(t){const e=t,{ns:o}=lt(ep),_=v(()=>{var E,u;return(u=(E=e.pos)==null?void 0:E.radius)!=null?u:2}),l=v(()=>{const E=_.value,u=`a${E},${E} 0 0 1`;return{topRight:`${u} ${E},${E}`,bottomRight:`${u} ${-E},${E}`,bottomLeft:`${u} ${-E},${-E}`,topLeft:`${u} ${E},${-E}`}}),c=v(()=>{const E=window.innerWidth,u=window.innerHeight,d=l.value,O=`M${E},0 L0,0 L0,${u} L${E},${u} L${E},0 Z`,h=_.value;return e.pos?`${O} M${e.pos.left+h},${e.pos.top} h${e.pos.width-h*2} ${d.topRight} v${e.pos.height-h*2} ${d.bottomRight} h${-e.pos.width+h*2} ${d.bottomLeft} v${-e.pos.height+h*2} ${d.topLeft} z`:O}),T=v(()=>({fill:e.fill,pointerEvents:"auto",cursor:"auto"}));return Gv(Ao(e,"visible"),{ns:o}),(E,u)=>E.visible?(B(),se("div",Yt({key:0,class:M(o).e("mask"),style:{position:"fixed",left:0,right:0,top:0,bottom:0,zIndex:E.zIndex,pointerEvents:E.pos&&E.targetAreaClickable?"none":"auto"}},E.$attrs),[(B(),se("svg",KDe,[te("path",{class:k(M(o).e("hollow")),style:dt(M(T)),d:M(c)},null,14,zDe)]))],16)):Ce("v-if",!0)}});var qDe=tt(jDe,[["__file","mask.vue"]]);const QDe=["absolute","fixed"],JDe=["top-start","top-end","top","bottom-start","bottom-end","bottom","left-start","left-end","left","right-start","right-end","right"],DD=et({placement:{type:me(String),values:JDe,default:"bottom"},reference:{type:me(Object),default:null},strategy:{type:me(String),values:QDe,default:"absolute"},offset:{type:Number,default:10},showArrow:Boolean,zIndex:{type:Number,default:2001}}),eUe={close:()=>!0},tUe=["data-side"],oUe=Oe({name:"ElTourContent"}),sUe=Oe({...oUe,props:DD,emits:eUe,setup(t,{emit:e}){const o=t,_=X(o.placement),l=X(o.strategy),c=X(null),T=X(null);Fe(()=>o.placement,()=>{_.value=o.placement});const{contentStyle:E,arrowStyle:u}=XDe(Ao(o,"reference"),c,T,_,l,Ao(o,"offset"),Ao(o,"zIndex"),Ao(o,"showArrow")),d=v(()=>_.value.split("-")[0]),{ns:O}=lt(ep),h=()=>{e("close")};return(I,S)=>(B(),se("div",{ref_key:"contentRef",ref:c,style:dt(M(E)),class:k(M(O).e("content")),"data-side":M(d),tabindex:"-1"},[ne(M(PO),{loop:"",trapped:"","focus-start-el":"container","focus-trap-el":c.value||void 0,onReleaseRequested:h},{default:de(()=>[ye(I.$slots,"default")]),_:3},8,["focus-trap-el"]),I.showArrow?(B(),se("span",{key:0,ref_key:"arrowRef",ref:T,style:dt(M(u)),class:k(M(O).e("arrow"))},null,6)):Ce("v-if",!0)],14,tUe))}});var iUe=tt(sUe,[["__file","content.vue"]]),nUe=Oe({name:"ElTourSteps",props:{current:{type:Number,default:0}},emits:["update-steps"],setup(t,{slots:e,emit:o}){let _=[];return()=>{var l,c;const T=(l=e.default)==null?void 0:l.call(e),E=[],u=[];function d(O){rt(O)&&O.forEach(h=>{var I;if(((I=(h==null?void 0:h.type)||{})==null?void 0:I.name)==="ElTourStep"){const L=["showArrow","mask","scrollIntoViewOptions"];E.push(WDe(h,L)),u.push(h)}})}return T.length&&d(Ta((c=T[0])==null?void 0:c.children)),VDe(E,_)||(_=E,o("update-steps",E)),u.length?u[t.current]:null}}});const rUe=et({modelValue:Boolean,current:{type:Number,default:0},showArrow:{type:Boolean,default:!0},showClose:{type:Boolean,default:!0},closeIcon:{type:Lo},placement:DD.placement,contentStyle:{type:me([Object])},mask:{type:me([Boolean,Object]),default:!0},gap:{type:me(Object),default:()=>({offset:6,radius:2})},zIndex:{type:Number},scrollIntoViewOptions:{type:me([Boolean,Object]),default:()=>({block:"center"})},type:{type:me(String)},appendTo:{type:me([String,Object]),default:"body"},closeOnPressEscape:{type:Boolean,default:!0},targetAreaClickable:{type:Boolean,default:!0}}),_Ue={[Xt]:t=>Ss(t),"update:current":t=>mt(t),close:t=>mt(t),finish:()=>!0,change:t=>mt(t)},lUe=Oe({name:"ElTour"}),aUe=Oe({...lUe,props:rUe,emits:_Ue,setup(t,{emit:e}){const o=t,_=Ze("tour"),l=X([]),c=HX(o,"current",e,{passive:!0}),T=v(()=>l.value.length),E=v(()=>l.value[c.value]||{}),u=v(()=>E.value.target),d=v(()=>[_.b(),m.value==="primary"?_.m("primary"):""]),O=v(()=>E.value.placement||o.placement),h=v(()=>{var V;return(V=E.value.contentStyle)!=null?V:o.contentStyle}),I=v(()=>{var V;return(V=E.value.mask)!=null?V:o.mask}),S=v(()=>!!I.value&&o.modelValue),L=v(()=>Ss(I.value)?void 0:I.value),p=v(()=>{var V;return!!u.value&&((V=E.value.showArrow)!=null?V:o.showArrow)}),C=v(()=>{var V;return(V=E.value.scrollIntoViewOptions)!=null?V:o.scrollIntoViewOptions}),m=v(()=>{var V;return(V=E.value.type)!=null?V:o.type}),{nextZIndex:A}=rT(),b=A(),N=v(()=>{var V;return(V=o.zIndex)!=null?V:b}),{mergedPosInfo:U,triggerTarget:P}=HDe(u,Ao(o,"modelValue"),Ao(o,"gap"),I,C);Fe(()=>o.modelValue,V=>{V||(c.value=0)});const G=V=>{l.value=V},w=()=>{o.closeOnPressEscape&&(e("update:modelValue",!1),e("close",c.value))},F=zs();return Jt(ep,{current:c,total:T,showClose:Ao(o,"showClose"),closeIcon:Ao(o,"closeIcon"),mergedType:m,ns:_,slots:F,updateModelValue(V){e("update:modelValue",V)},onClose(){e("close",c.value)},onFinish(){e("finish")},onChange(){e("change",c.value)}}),(V,W)=>{var K,ee;return B(),se(ht,null,[(B(),Ne(Mu,{to:V.appendTo},[te("div",Yt({class:M(d)},V.$attrs),[ne(qDe,{visible:M(S),fill:(K=M(L))==null?void 0:K.color,style:dt((ee=M(L))==null?void 0:ee.style),pos:M(U),"z-index":M(N),"target-area-clickable":V.targetAreaClickable},null,8,["visible","fill","style","pos","z-index","target-area-clickable"]),V.modelValue?(B(),Ne(iUe,{key:M(c),reference:M(P),placement:M(O),"show-arrow":M(p),"z-index":M(N),style:dt(M(h)),onClose:w},{default:de(()=>[ne(M(nUe),{current:M(c),onUpdateSteps:G},{default:de(()=>[ye(V.$slots,"default")]),_:3},8,["current"])]),_:3},8,["reference","placement","show-arrow","z-index","style"])):Ce("v-if",!0)],16)],8,["to"])),Ce(" just for IDE "),Ce("v-if",!0)],64)}}});var cUe=tt(aUe,[["__file","tour.vue"]]);const TUe=et({target:{type:me(Object)},title:String,description:String,showClose:{type:Boolean,default:!0},closeIcon:{type:Lo},showArrow:{type:Boolean,default:!0},placement:DD.placement,mask:{type:me([Boolean,Object])},contentStyle:{type:me([Object])},prevButtonProps:{type:me(Object)},nextButtonProps:{type:me(Object)},scrollIntoViewOptions:{type:me([Boolean,Object])},type:{type:me(String)}}),EUe={close:()=>!0},uUe=Oe({name:"ElTourStep"}),gUe=Oe({...uUe,props:TUe,emits:EUe,setup(t,{emit:e}){const o=t,{Close:_}=Dv,{t:l}=lo(),{current:c,total:T,showClose:E,closeIcon:u,mergedType:d,ns:O,slots:h,updateModelValue:I,onClose:S,onFinish:L,onChange:p}=lt(ep),C=v(()=>{var P;return(P=o.showClose)!=null?P:E.value}),m=v(()=>{var P,G;return(G=(P=o.closeIcon)!=null?P:u.value)!=null?G:_}),A=()=>{var P,G;c.value-=1,(P=o.prevButtonProps)!=null&&P.onClick&&((G=o.prevButtonProps)==null||G.onClick()),p()},b=()=>{var P;c.value>=T.value-1?N():c.value+=1,(P=o.nextButtonProps)!=null&&P.onClick&&o.nextButtonProps.onClick(),p()},N=()=>{U(),L()},U=()=>{I(!1),S(),e("close")};return(P,G)=>(B(),se(ht,null,[M(C)?(B(),se("button",{key:0,"aria-label":"Close",class:k(M(O).e("closebtn")),type:"button",onClick:U},[ne(M(Et),{class:k(M(O).e("close"))},{default:de(()=>[(B(),Ne(Kt(M(m))))]),_:1},8,["class"])],2)):Ce("v-if",!0),te("header",{class:k(M(O).e("header"))},[ye(P.$slots,"header",{},()=>[te("span",{role:"heading",class:k(M(O).e("title"))},Qe(P.title),3)])],2),te("div",{class:k(M(O).e("body"))},[ye(P.$slots,"default",{},()=>[te("span",null,Qe(P.description),1)])],2),te("footer",{class:k(M(O).e("footer"))},[te("div",{class:k(M(O).b("indicators"))},[M(h).indicators?(B(),Ne(Kt(M(h).indicators),{key:0,current:M(c),total:M(T)},null,8,["current","total"])):(B(!0),se(ht,{key:1},oo(M(T),(w,F)=>(B(),se("span",{key:w,class:k([M(O).b("indicator"),F===M(c)?"is-active":""])},null,2))),128))],2),te("div",{class:k(M(O).b("buttons"))},[M(c)>0?(B(),Ne(M(Ws),Yt({key:0,size:"small",type:M(d)},P.prevButtonProps,{onClick:A}),{default:de(()=>{var w,F;return[qt(Qe((F=(w=P.prevButtonProps)==null?void 0:w.children)!=null?F:M(l)("el.tour.previous")),1)]}),_:1},16,["type"])):Ce("v-if",!0),M(c)<=M(T)-1?(B(),Ne(M(Ws),Yt({key:1,size:"small",type:M(d)==="primary"?"default":"primary"},P.nextButtonProps,{onClick:b}),{default:de(()=>{var w,F;return[qt(Qe(((F=(w=P.nextButtonProps)==null?void 0:w.children)!=null?F:M(c)===M(T)-1)?M(l)("el.tour.finish"):M(l)("el.tour.next")),1)]}),_:1},16,["type"])):Ce("v-if",!0)],2)],2)],64))}});var w4=tt(gUe,[["__file","step.vue"]]);const dUe=Vt(cUe,{TourStep:w4}),OUe=ss(w4);var hUe=[YTe,sEe,Nge,XNe,Bge,Vge,z3,ode,sde,Ws,tY,pOe,AOe,xOe,FOe,tMe,xhe,_Me,jn,_he,NY,RMe,wMe,GMe,NMe,gRe,GTe,CRe,ARe,bRe,NRe,PRe,jIe,_Se,lSe,fSe,cK,GSe,Npe,Ppe,vpe,RK,jEe,qEe,Et,LLe,IK,Ri,SK,wLe,sfe,ife,nfe,rfe,ufe,Rme,mme,yme,X3,vK,BY,Lhe,phe,qme,oCe,gMe,ul,Zc,wI,Xfe,xCe,ZCe,jCe,CAe,vAe,jK,FAe,qAe,QAe,abe,rNe,_Ne,WNe,rPe,_Pe,Wd,EPe,eOe,MPe,LPe,fPe,wi,jPe,Tve,mve,Dve,jve,bDe,GDe,dUe,OUe];const Tr="ElInfiniteScroll",MUe=50,RUe=200,IUe=0,SUe={delay:{type:Number,default:RUe},distance:{type:Number,default:IUe},disabled:{type:Boolean,default:!1},immediate:{type:Boolean,default:!0}},UD=(t,e)=>Object.entries(SUe).reduce((o,[_,l])=>{var c,T;const{type:E,default:u}=l,d=t.getAttribute(`infinite-scroll-${_}`);let O=(T=(c=e[d])!=null?c:d)!=null?T:u;return O=O==="false"?!1:O,O=E(O),o[_]=Number.isNaN(O)?u:O,o},{}),G4=t=>{const{observer:e}=t[Tr];e&&(e.disconnect(),delete t[Tr].observer)},pUe=(t,e)=>{const{container:o,containerEl:_,instance:l,observer:c,lastScrollTop:T}=t[Tr],{disabled:E,distance:u}=UD(t,l),{clientHeight:d,scrollHeight:O,scrollTop:h}=_,I=h-T;if(t[Tr].lastScrollTop=h,c||E||I<0)return;let S=!1;if(o===t)S=O-(d+h)<=u;else{const{clientTop:L,scrollHeight:p}=t,C=wle(t,_);S=h+d>=C+L+p-u}S&&e.call(l)};function lA(t,e){const{containerEl:o,instance:_}=t[Tr],{disabled:l}=UD(t,_);l||o.clientHeight===0||(o.scrollHeight<=o.clientHeight?e.call(_):G4(t))}const LUe={async mounted(t,e){const{instance:o,value:_}=e;At(_)||vs(Tr,"'v-infinite-scroll' binding value must be a function"),await Lt();const{delay:l,immediate:c}=UD(t,o),T=Av(t,!0),E=T===window?document.documentElement:T,u=$c(pUe.bind(null,t,_),l);if(T){if(t[Tr]={instance:o,container:T,containerEl:E,delay:l,cb:_,onScroll:u,lastScrollTop:E.scrollTop},c){const d=new MutationObserver($c(lA.bind(null,t,_),MUe));t[Tr].observer=d,d.observe(t,{childList:!0,subtree:!0}),lA(t,_)}T.addEventListener("scroll",u)}},unmounted(t){const{container:e,onScroll:o}=t[Tr];e==null||e.removeEventListener("scroll",o),G4(t)},async updated(t){if(!t[Tr])await Lt();else{const{containerEl:e,cb:o,observer:_}=t[Tr];e.clientHeight&&_&&lA(t,o)}}},$N=LUe;$N.install=t=>{t.directive("InfiniteScroll",$N)};const fUe=$N;function mUe(t){let e;const o=X(!1),_=Eo({...t,originalPosition:"",originalOverflow:"",visible:!1});function l(I){_.text=I}function c(){const I=_.parent,S=h.ns;if(!I.vLoadingAddClassList){let L=I.getAttribute("loading-number");L=Number.parseInt(L)-1,L?I.setAttribute("loading-number",L.toString()):(tn(I,S.bm("parent","relative")),I.removeAttribute("loading-number")),tn(I,S.bm("parent","hidden"))}T(),O.unmount()}function T(){var I,S;(S=(I=h.$el)==null?void 0:I.parentNode)==null||S.removeChild(h.$el)}function E(){var I;t.beforeClose&&!t.beforeClose()||(o.value=!0,clearTimeout(e),e=window.setTimeout(u,400),_.visible=!1,(I=t.closed)==null||I.call(t))}function u(){if(!o.value)return;const I=_.parent;o.value=!1,I.vLoadingAddClassList=void 0,c()}const O=p2(Oe({name:"ElLoading",setup(I,{expose:S}){const{ns:L,zIndex:p}=WS("loading");return S({ns:L,zIndex:p}),()=>{const C=_.spinner||_.svg,m=pt("svg",{class:"circular",viewBox:_.svgViewBox?_.svgViewBox:"0 0 50 50",...C?{innerHTML:C}:{}},[pt("circle",{class:"path",cx:"25",cy:"25",r:"20",fill:"none"})]),A=_.text?pt("p",{class:L.b("text")},[_.text]):void 0;return pt(Ns,{name:L.b("fade"),onAfterLeave:u},{default:de(()=>[yt(ne("div",{style:{backgroundColor:_.background||""},class:[L.b("mask"),_.customClass,_.fullscreen?"is-fullscreen":""]},[pt("div",{class:L.b("spinner")},[m,A])]),[[ao,_.visible]])])})}}})),h=O.mount(document.createElement("div"));return{...Xs(_),setText:l,removeElLoadingChild:T,close:E,handleAfterLeave:u,vm:h,get $el(){return h.$el}}}let tR;const BN=function(t={}){if(!ro)return;const e=CUe(t);if(e.fullscreen&&tR)return tR;const o=mUe({...e,closed:()=>{var l;(l=e.closed)==null||l.call(e),e.fullscreen&&(tR=void 0)}});AUe(e,e.parent,o),DH(e,e.parent,o),e.parent.vLoadingAddClassList=()=>DH(e,e.parent,o);let _=e.parent.getAttribute("loading-number");return _?_=`${Number.parseInt(_)+1}`:_="1",e.parent.setAttribute("loading-number",_),e.parent.appendChild(o.$el),Lt(()=>o.visible.value=e.visible),e.fullscreen&&(tR=o),o},CUe=t=>{var e,o,_,l;let c;return vt(t.target)?c=(e=document.querySelector(t.target))!=null?e:document.body:c=t.target||document.body,{parent:c===document.body||t.body?document.body:c,background:t.background||"",svg:t.svg||"",svgViewBox:t.svgViewBox||"",spinner:t.spinner||!1,text:t.text||"",fullscreen:c===document.body&&((o=t.fullscreen)!=null?o:!0),lock:(_=t.lock)!=null?_:!1,customClass:t.customClass||"",visible:(l=t.visible)!=null?l:!0,target:c}},AUe=async(t,e,o)=>{const{nextZIndex:_}=o.vm.zIndex||o.vm._.exposed.zIndex,l={};if(t.fullscreen)o.originalPosition.value=Jl(document.body,"position"),o.originalOverflow.value=Jl(document.body,"overflow"),l.zIndex=_();else if(t.parent===document.body){o.originalPosition.value=Jl(document.body,"position"),await Lt();for(const c of["top","left"]){const T=c==="top"?"scrollTop":"scrollLeft";l[c]=`${t.target.getBoundingClientRect()[c]+document.body[T]+document.documentElement[T]-Number.parseInt(Jl(document.body,`margin-${c}`),10)}px`}for(const c of["height","width"])l[c]=`${t.target.getBoundingClientRect()[c]}px`}else o.originalPosition.value=Jl(e,"position");for(const[c,T]of Object.entries(l))o.$el.style[c]=T},DH=(t,e,o)=>{const _=o.vm.ns||o.vm._.exposed.ns;["absolute","fixed","sticky"].includes(o.originalPosition.value)?tn(e,_.bm("parent","relative")):r_(e,_.bm("parent","relative")),t.fullscreen&&t.lock?r_(e,_.bm("parent","hidden")):tn(e,_.bm("parent","hidden"))},FR=Symbol("ElLoading"),UH=(t,e)=>{var o,_,l,c;const T=e.instance,E=I=>Zt(e.value)?e.value[I]:void 0,u=I=>{const S=vt(I)&&(T==null?void 0:T[I])||I;return S&&X(S)},d=I=>u(E(I)||t.getAttribute(`element-loading-${Aa(I)}`)),O=(o=E("fullscreen"))!=null?o:e.modifiers.fullscreen,h={text:d("text"),svg:d("svg"),svgViewBox:d("svgViewBox"),spinner:d("spinner"),background:d("background"),customClass:d("customClass"),fullscreen:O,target:(_=E("target"))!=null?_:O?void 0:t,body:(l=E("body"))!=null?l:e.modifiers.body,lock:(c=E("lock"))!=null?c:e.modifiers.lock};t[FR]={options:h,instance:BN(h)}},bUe=(t,e)=>{for(const o of Object.keys(e))bo(e[o])&&(e[o].value=t[o])},yH={mounted(t,e){e.value&&UH(t,e)},updated(t,e){const o=t[FR];e.oldValue!==e.value&&(e.value&&!e.oldValue?UH(t,e):e.value&&e.oldValue?Zt(e.value)&&bUe(e.value,o.options):o==null||o.instance.close())},unmounted(t){var e;(e=t[FR])==null||e.instance.close(),t[FR]=null}},NUe={install(t){t.directive("loading",yH),t.config.globalProperties.$loading=BN},directive:yH,service:BN},k4=["success","info","warning","error"],Yi=Qo({customClass:"",center:!1,dangerouslyUseHTMLString:!1,duration:3e3,icon:void 0,id:"",message:"",onClose:void 0,showClose:!1,type:"info",offset:16,zIndex:0,grouping:!1,repeatNum:1,appendTo:ro?document.body:void 0}),PUe=et({customClass:{type:String,default:Yi.customClass},center:{type:Boolean,default:Yi.center},dangerouslyUseHTMLString:{type:Boolean,default:Yi.dangerouslyUseHTMLString},duration:{type:Number,default:Yi.duration},icon:{type:Lo,default:Yi.icon},id:{type:String,default:Yi.id},message:{type:me([String,Object,Function]),default:Yi.message},onClose:{type:me(Function),required:!1},showClose:{type:Boolean,default:Yi.showClose},type:{type:String,values:k4,default:Yi.type},offset:{type:Number,default:Yi.offset},zIndex:{type:Number,default:Yi.zIndex},grouping:{type:Boolean,default:Yi.grouping},repeatNum:{type:Number,default:Yi.repeatNum}}),vUe={destroy:()=>!0},gr=iP([]),DUe=t=>{const e=gr.findIndex(l=>l.id===t),o=gr[e];let _;return e>0&&(_=gr[e-1]),{current:o,prev:_}},UUe=t=>{const{prev:e}=DUe(t);return e?e.vm.exposed.bottom.value:0},yUe=(t,e)=>gr.findIndex(_=>_.id===t)>0?20:e,$Ue=["id"],BUe=["innerHTML"],wUe=Oe({name:"ElMessage"}),GUe=Oe({...wUe,props:PUe,emits:vUe,setup(t,{expose:e}){const o=t,{Close:_}=Uv,{ns:l,zIndex:c}=WS("message"),{currentZIndex:T,nextZIndex:E}=c,u=X(),d=X(!1),O=X(0);let h;const I=v(()=>o.type?o.type==="error"?"danger":o.type:"info"),S=v(()=>{const G=o.type;return{[l.bm("icon",G)]:G&&fa[G]}}),L=v(()=>o.icon||fa[o.type]||""),p=v(()=>UUe(o.id)),C=v(()=>yUe(o.id,o.offset)+p.value),m=v(()=>O.value+C.value),A=v(()=>({top:`${C.value}px`,zIndex:T.value}));function b(){o.duration!==0&&({stop:h}=Xc(()=>{U()},o.duration))}function N(){h==null||h()}function U(){d.value=!1}function P({code:G}){G===Rt.esc&&U()}return Bt(()=>{b(),E(),d.value=!0}),Fe(()=>o.repeatNum,()=>{N(),b()}),Yo(document,"keydown",P),Rs(u,()=>{O.value=u.value.getBoundingClientRect().height}),e({visible:d,bottom:m,close:U}),(G,w)=>(B(),Ne(Ns,{name:M(l).b("fade"),onBeforeLeave:G.onClose,onAfterLeave:w[0]||(w[0]=F=>G.$emit("destroy")),persisted:""},{default:de(()=>[yt(te("div",{id:G.id,ref_key:"messageRef",ref:u,class:k([M(l).b(),{[M(l).m(G.type)]:G.type},M(l).is("center",G.center),M(l).is("closable",G.showClose),G.customClass]),style:dt(M(A)),role:"alert",onMouseenter:N,onMouseleave:b},[G.repeatNum>1?(B(),Ne(M(z3),{key:0,value:G.repeatNum,type:M(I),class:k(M(l).e("badge"))},null,8,["value","type","class"])):Ce("v-if",!0),M(L)?(B(),Ne(M(Et),{key:1,class:k([M(l).e("icon"),M(S)])},{default:de(()=>[(B(),Ne(Kt(M(L))))]),_:1},8,["class"])):Ce("v-if",!0),ye(G.$slots,"default",{},()=>[G.dangerouslyUseHTMLString?(B(),se(ht,{key:1},[Ce(" Caution here, message could've been compromised, never use user's input as message "),te("p",{class:k(M(l).e("content")),innerHTML:G.message},null,10,BUe)],2112)):(B(),se("p",{key:0,class:k(M(l).e("content"))},Qe(G.message),3))]),G.showClose?(B(),Ne(M(Et),{key:2,class:k(M(l).e("closeBtn")),onClick:Ct(U,["stop"])},{default:de(()=>[ne(M(_))]),_:1},8,["class","onClick"])):Ce("v-if",!0)],46,$Ue),[[ao,d.value]])]),_:3},8,["name","onBeforeLeave"]))}});var kUe=tt(GUe,[["__file","message.vue"]]);let HUe=1;const H4=t=>{const e=!t||vt(t)||Fo(t)||At(t)?{message:t}:t,o={...Yi,...e};if(!o.appendTo)o.appendTo=document.body;else if(vt(o.appendTo)){let _=document.querySelector(o.appendTo);zn(_)||(_=document.body),o.appendTo=_}return o},xUe=t=>{const e=gr.indexOf(t);if(e===-1)return;gr.splice(e,1);const{handler:o}=t;o.close()},FUe=({appendTo:t,...e},o)=>{const _=`message_${HUe++}`,l=e.onClose,c=document.createElement("div"),T={...e,id:_,onClose:()=>{l==null||l(),xUe(O)},onDestroy:()=>{WE(null,c)}},E=ne(kUe,T,At(T.message)||Fo(T.message)?{default:At(T.message)?T.message:()=>T.message}:null);E.appContext=o||Eu._context,WE(E,c),t.appendChild(c.firstElementChild);const u=E.component,O={id:_,vnode:E,vm:u,handler:{close:()=>{u.exposed.visible.value=!1}},props:E.component.props};return O},Eu=(t={},e)=>{if(!ro)return{close:()=>{}};if(mt(xb.max)&&gr.length>=xb.max)return{close:()=>{}};const o=H4(t);if(o.grouping&&gr.length){const l=gr.find(({vnode:c})=>{var T;return((T=c.props)==null?void 0:T.message)===o.message});if(l)return l.props.repeatNum+=1,l.props.type=o.type,l.handler}const _=FUe(o,e);return gr.push(_),_.handler};k4.forEach(t=>{Eu[t]=(e={},o)=>{const _=H4(e);return Eu({..._,type:t},o)}});function VUe(t){for(const e of gr)(!t||t===e.props.type)&&e.handler.close()}Eu.closeAll=VUe;Eu._context=null;const tp=qX(Eu,"$message"),WUe=Oe({name:"ElMessageBox",directives:{TrapFocus:Bde},components:{ElButton:Ws,ElFocusTrap:PO,ElInput:Ri,ElOverlay:lD,ElIcon:Et,...Uv},inheritAttrs:!1,props:{buttonSize:{type:String,validator:QX},modal:{type:Boolean,default:!0},lockScroll:{type:Boolean,default:!0},showClose:{type:Boolean,default:!0},closeOnClickModal:{type:Boolean,default:!0},closeOnPressEscape:{type:Boolean,default:!0},closeOnHashChange:{type:Boolean,default:!0},center:Boolean,draggable:Boolean,roundButton:{default:!1,type:Boolean},container:{type:String,default:"body"},boxType:{type:String,default:""}},emits:["vanish","action"],setup(t,{emit:e}){const{locale:o,zIndex:_,ns:l,size:c}=WS("message-box",v(()=>t.buttonSize)),{t:T}=o,{nextZIndex:E}=_,u=X(!1),d=Eo({autofocus:!0,beforeClose:null,callback:null,cancelButtonText:"",cancelButtonClass:"",confirmButtonText:"",confirmButtonClass:"",customClass:"",customStyle:{},dangerouslyUseHTMLString:!1,distinguishCancelAndClose:!1,icon:"",inputPattern:null,inputPlaceholder:"",inputType:"text",inputValue:null,inputValidator:null,inputErrorMessage:"",message:null,modalFade:!0,modalClass:"",showCancelButton:!1,showConfirmButton:!0,type:"",title:void 0,showInput:!1,action:"",confirmButtonLoading:!1,cancelButtonLoading:!1,confirmButtonDisabled:!1,editorErrorMessage:"",validateError:!1,zIndex:E()}),O=v(()=>{const J=d.type;return{[l.bm("icon",J)]:J&&fa[J]}}),h=rn(),I=rn(),S=v(()=>d.icon||fa[d.type]||""),L=v(()=>!!d.message),p=X(),C=X(),m=X(),A=X(),b=X(),N=v(()=>d.confirmButtonClass);Fe(()=>d.inputValue,async J=>{await Lt(),t.boxType==="prompt"&&J!==null&&W()},{immediate:!0}),Fe(()=>u.value,J=>{var ie,Y;J&&(t.boxType!=="prompt"&&(d.autofocus?m.value=(Y=(ie=b.value)==null?void 0:ie.$el)!=null?Y:p.value:m.value=p.value),d.zIndex=E()),t.boxType==="prompt"&&(J?Lt().then(()=>{var re;A.value&&A.value.$el&&(d.autofocus?m.value=(re=K())!=null?re:p.value:m.value=p.value)}):(d.editorErrorMessage="",d.validateError=!1))});const U=v(()=>t.draggable);JX(p,C,U),Bt(async()=>{await Lt(),t.closeOnHashChange&&window.addEventListener("hashchange",P)}),Do(()=>{t.closeOnHashChange&&window.removeEventListener("hashchange",P)});function P(){u.value&&(u.value=!1,Lt(()=>{d.action&&e("action",d.action)}))}const G=()=>{t.closeOnClickModal&&V(d.distinguishCancelAndClose?"close":"cancel")},w=kv(G),F=J=>{if(d.inputType!=="textarea")return J.preventDefault(),V("confirm")},V=J=>{var ie;t.boxType==="prompt"&&J==="confirm"&&!W()||(d.action=J,d.beforeClose?(ie=d.beforeClose)==null||ie.call(d,J,d,P):P())},W=()=>{if(t.boxType==="prompt"){const J=d.inputPattern;if(J&&!J.test(d.inputValue||""))return d.editorErrorMessage=d.inputErrorMessage||T("el.messagebox.error"),d.validateError=!0,!1;const ie=d.inputValidator;if(typeof ie=="function"){const Y=ie(d.inputValue);if(Y===!1)return d.editorErrorMessage=d.inputErrorMessage||T("el.messagebox.error"),d.validateError=!0,!1;if(typeof Y=="string")return d.editorErrorMessage=Y,d.validateError=!0,!1}}return d.editorErrorMessage="",d.validateError=!1,!0},K=()=>{const J=A.value.$refs;return J.input||J.textarea},ee=()=>{V("close")},j=()=>{t.closeOnPressEscape&&ee()};return t.lockScroll&&Gv(u),{...Xs(d),ns:l,overlayEvent:w,visible:u,hasMessage:L,typeClass:O,contentId:h,inputId:I,btnSize:c,iconComponent:S,confirmButtonClasses:N,rootRef:p,focusStartRef:m,headerRef:C,inputRef:A,confirmRef:b,doClose:P,handleClose:ee,onCloseRequested:j,handleWrapperClick:G,handleInputEnter:F,handleAction:V,t:T}}}),XUe=["aria-label","aria-describedby"],YUe=["aria-label"],KUe=["id"];function zUe(t,e,o,_,l,c){const T=gt("el-icon"),E=gt("close"),u=gt("el-input"),d=gt("el-button"),O=gt("el-focus-trap"),h=gt("el-overlay");return B(),Ne(Ns,{name:"fade-in-linear",onAfterLeave:e[11]||(e[11]=I=>t.$emit("vanish")),persisted:""},{default:de(()=>[yt(ne(h,{"z-index":t.zIndex,"overlay-class":[t.ns.is("message-box"),t.modalClass],mask:t.modal},{default:de(()=>[te("div",{role:"dialog","aria-label":t.title,"aria-modal":"true","aria-describedby":t.showInput?void 0:t.contentId,class:k(`${t.ns.namespace.value}-overlay-message-box`),onClick:e[8]||(e[8]=(...I)=>t.overlayEvent.onClick&&t.overlayEvent.onClick(...I)),onMousedown:e[9]||(e[9]=(...I)=>t.overlayEvent.onMousedown&&t.overlayEvent.onMousedown(...I)),onMouseup:e[10]||(e[10]=(...I)=>t.overlayEvent.onMouseup&&t.overlayEvent.onMouseup(...I))},[ne(O,{loop:"",trapped:t.visible,"focus-trap-el":t.rootRef,"focus-start-el":t.focusStartRef,onReleaseRequested:t.onCloseRequested},{default:de(()=>[te("div",{ref:"rootRef",class:k([t.ns.b(),t.customClass,t.ns.is("draggable",t.draggable),{[t.ns.m("center")]:t.center}]),style:dt(t.customStyle),tabindex:"-1",onClick:e[7]||(e[7]=Ct(()=>{},["stop"]))},[t.title!==null&&t.title!==void 0?(B(),se("div",{key:0,ref:"headerRef",class:k(t.ns.e("header"))},[te("div",{class:k(t.ns.e("title"))},[t.iconComponent&&t.center?(B(),Ne(T,{key:0,class:k([t.ns.e("status"),t.typeClass])},{default:de(()=>[(B(),Ne(Kt(t.iconComponent)))]),_:1},8,["class"])):Ce("v-if",!0),te("span",null,Qe(t.title),1)],2),t.showClose?(B(),se("button",{key:0,type:"button",class:k(t.ns.e("headerbtn")),"aria-label":t.t("el.messagebox.close"),onClick:e[0]||(e[0]=I=>t.handleAction(t.distinguishCancelAndClose?"close":"cancel")),onKeydown:e[1]||(e[1]=So(Ct(I=>t.handleAction(t.distinguishCancelAndClose?"close":"cancel"),["prevent"]),["enter"]))},[ne(T,{class:k(t.ns.e("close"))},{default:de(()=>[ne(E)]),_:1},8,["class"])],42,YUe)):Ce("v-if",!0)],2)):Ce("v-if",!0),te("div",{id:t.contentId,class:k(t.ns.e("content"))},[te("div",{class:k(t.ns.e("container"))},[t.iconComponent&&!t.center&&t.hasMessage?(B(),Ne(T,{key:0,class:k([t.ns.e("status"),t.typeClass])},{default:de(()=>[(B(),Ne(Kt(t.iconComponent)))]),_:1},8,["class"])):Ce("v-if",!0),t.hasMessage?(B(),se("div",{key:1,class:k(t.ns.e("message"))},[ye(t.$slots,"default",{},()=>[t.dangerouslyUseHTMLString?(B(),Ne(Kt(t.showInput?"label":"p"),{key:1,for:t.showInput?t.inputId:void 0,innerHTML:t.message},null,8,["for","innerHTML"])):(B(),Ne(Kt(t.showInput?"label":"p"),{key:0,for:t.showInput?t.inputId:void 0},{default:de(()=>[qt(Qe(t.dangerouslyUseHTMLString?"":t.message),1)]),_:1},8,["for"]))])],2)):Ce("v-if",!0)],2),yt(te("div",{class:k(t.ns.e("input"))},[ne(u,{id:t.inputId,ref:"inputRef",modelValue:t.inputValue,"onUpdate:modelValue":e[2]||(e[2]=I=>t.inputValue=I),type:t.inputType,placeholder:t.inputPlaceholder,"aria-invalid":t.validateError,class:k({invalid:t.validateError}),onKeydown:So(t.handleInputEnter,["enter"])},null,8,["id","modelValue","type","placeholder","aria-invalid","class","onKeydown"]),te("div",{class:k(t.ns.e("errormsg")),style:dt({visibility:t.editorErrorMessage?"visible":"hidden"})},Qe(t.editorErrorMessage),7)],2),[[ao,t.showInput]])],10,KUe),te("div",{class:k(t.ns.e("btns"))},[t.showCancelButton?(B(),Ne(d,{key:0,loading:t.cancelButtonLoading,class:k([t.cancelButtonClass]),round:t.roundButton,size:t.btnSize,onClick:e[3]||(e[3]=I=>t.handleAction("cancel")),onKeydown:e[4]||(e[4]=So(Ct(I=>t.handleAction("cancel"),["prevent"]),["enter"]))},{default:de(()=>[qt(Qe(t.cancelButtonText||t.t("el.messagebox.cancel")),1)]),_:1},8,["loading","class","round","size"])):Ce("v-if",!0),yt(ne(d,{ref:"confirmRef",type:"primary",loading:t.confirmButtonLoading,class:k([t.confirmButtonClasses]),round:t.roundButton,disabled:t.confirmButtonDisabled,size:t.btnSize,onClick:e[5]||(e[5]=I=>t.handleAction("confirm")),onKeydown:e[6]||(e[6]=So(Ct(I=>t.handleAction("confirm"),["prevent"]),["enter"]))},{default:de(()=>[qt(Qe(t.confirmButtonText||t.t("el.messagebox.confirm")),1)]),_:1},8,["loading","class","round","disabled","size"]),[[ao,t.showConfirmButton]])],2)],6)]),_:3},8,["trapped","focus-trap-el","focus-start-el","onReleaseRequested"])],42,XUe)]),_:3},8,["z-index","overlay-class","mask"]),[[ao,t.visible]])]),_:3})}var ZUe=tt(WUe,[["render",zUe],["__file","index.vue"]]);const Jd=new Map,jUe=t=>{let e=document.body;return t.appendTo&&(vt(t.appendTo)&&(e=document.querySelector(t.appendTo)),zn(t.appendTo)&&(e=t.appendTo),zn(e)||(e=document.body)),e},qUe=(t,e,o=null)=>{const _=ne(ZUe,t,At(t.message)||Fo(t.message)?{default:At(t.message)?t.message:()=>t.message}:null);return _.appContext=o,WE(_,e),jUe(t).appendChild(e.firstElementChild),_.component},QUe=()=>document.createElement("div"),JUe=(t,e)=>{const o=QUe();t.onVanish=()=>{WE(null,o),Jd.delete(l)},t.onAction=c=>{const T=Jd.get(l);let E;t.showInput?E={value:l.inputValue,action:c}:E=c,t.callback?t.callback(E,_.proxy):c==="cancel"||c==="close"?t.distinguishCancelAndClose&&c!=="cancel"?T.reject("close"):T.reject("cancel"):T.resolve(E)};const _=qUe(t,o,e),l=_.proxy;for(const c in t)so(t,c)&&!so(l.$props,c)&&(l[c]=t[c]);return l.visible=!0,l};function Cu(t,e=null){if(!ro)return Promise.reject();let o;return vt(t)||Fo(t)?t={message:t}:o=t.callback,new Promise((_,l)=>{const c=JUe(t,e??Cu._context);Jd.set(c,{options:t,callback:o,resolve:_,reject:l})})}const eye=["alert","confirm","prompt"],tye={alert:{closeOnPressEscape:!1,closeOnClickModal:!1},confirm:{showCancelButton:!0},prompt:{showCancelButton:!0,showInput:!0}};eye.forEach(t=>{Cu[t]=oye(t)});function oye(t){return(e,o,_,l)=>{let c="";return Zt(o)?(_=o,c=""):bs(o)?c="":c=o,Cu(Object.assign({title:c,message:e,type:"",...tye[t]},_,{boxType:t}),l)}}Cu.close=()=>{Jd.forEach((t,e)=>{e.doClose()}),Jd.clear()};Cu._context=null;const Fl=Cu;Fl.install=t=>{Fl._context=t._context,t.config.globalProperties.$msgbox=Fl,t.config.globalProperties.$messageBox=Fl,t.config.globalProperties.$alert=Fl.alert,t.config.globalProperties.$confirm=Fl.confirm,t.config.globalProperties.$prompt=Fl.prompt};const sye=Fl,x4=["success","info","warning","error"],iye=et({customClass:{type:String,default:""},dangerouslyUseHTMLString:{type:Boolean,default:!1},duration:{type:Number,default:4500},icon:{type:Lo},id:{type:String,default:""},message:{type:me([String,Object]),default:""},offset:{type:Number,default:0},onClick:{type:me(Function),default:()=>{}},onClose:{type:me(Function),required:!0},position:{type:String,values:["top-right","top-left","bottom-right","bottom-left"],default:"top-right"},showClose:{type:Boolean,default:!0},title:{type:String,default:""},type:{type:String,values:[...x4,""],default:""},zIndex:Number}),nye={destroy:()=>!0},rye=["id"],_ye=["textContent"],lye={key:0},aye=["innerHTML"],cye=Oe({name:"ElNotification"}),Tye=Oe({...cye,props:iye,emits:nye,setup(t,{expose:e}){const o=t,{ns:_,zIndex:l}=WS("notification"),{nextZIndex:c,currentZIndex:T}=l,{Close:E}=Dv,u=X(!1);let d;const O=v(()=>{const b=o.type;return b&&fa[o.type]?_.m(b):""}),h=v(()=>o.type&&fa[o.type]||o.icon),I=v(()=>o.position.endsWith("right")?"right":"left"),S=v(()=>o.position.startsWith("top")?"top":"bottom"),L=v(()=>{var b;return{[S.value]:`${o.offset}px`,zIndex:(b=o.zIndex)!=null?b:T.value}});function p(){o.duration>0&&({stop:d}=Xc(()=>{u.value&&m()},o.duration))}function C(){d==null||d()}function m(){u.value=!1}function A({code:b}){b===Rt.delete||b===Rt.backspace?C():b===Rt.esc?u.value&&m():p()}return Bt(()=>{p(),c(),u.value=!0}),Yo(document,"keydown",A),e({visible:u,close:m}),(b,N)=>(B(),Ne(Ns,{name:M(_).b("fade"),onBeforeLeave:b.onClose,onAfterLeave:N[1]||(N[1]=U=>b.$emit("destroy")),persisted:""},{default:de(()=>[yt(te("div",{id:b.id,class:k([M(_).b(),b.customClass,M(I)]),style:dt(M(L)),role:"alert",onMouseenter:C,onMouseleave:p,onClick:N[0]||(N[0]=(...U)=>b.onClick&&b.onClick(...U))},[M(h)?(B(),Ne(M(Et),{key:0,class:k([M(_).e("icon"),M(O)])},{default:de(()=>[(B(),Ne(Kt(M(h))))]),_:1},8,["class"])):Ce("v-if",!0),te("div",{class:k(M(_).e("group"))},[te("h2",{class:k(M(_).e("title")),textContent:Qe(b.title)},null,10,_ye),yt(te("div",{class:k(M(_).e("content")),style:dt(b.title?void 0:{margin:0})},[ye(b.$slots,"default",{},()=>[b.dangerouslyUseHTMLString?(B(),se(ht,{key:1},[Ce(" Caution here, message could've been compromised, never use user's input as message "),te("p",{innerHTML:b.message},null,8,aye)],2112)):(B(),se("p",lye,Qe(b.message),1))])],6),[[ao,b.message]]),b.showClose?(B(),Ne(M(Et),{key:0,class:k(M(_).e("closeBtn")),onClick:Ct(m,["stop"])},{default:de(()=>[ne(M(E))]),_:1},8,["class","onClick"])):Ce("v-if",!0)],2)],46,rye),[[ao,u.value]])]),_:3},8,["name","onBeforeLeave"]))}});var Eye=tt(Tye,[["__file","notification.vue"]]);const YI={"top-left":[],"top-right":[],"bottom-left":[],"bottom-right":[]},wN=16;let uye=1;const uu=function(t={},e=null){if(!ro)return{close:()=>{}};(typeof t=="string"||Fo(t))&&(t={message:t});const o=t.position||"top-right";let _=t.offset||0;YI[o].forEach(({vm:O})=>{var h;_+=(((h=O.el)==null?void 0:h.offsetHeight)||0)+wN}),_+=wN;const l=`notification_${uye++}`,c=t.onClose,T={...t,offset:_,id:l,onClose:()=>{gye(l,o,c)}};let E=document.body;zn(t.appendTo)?E=t.appendTo:vt(t.appendTo)&&(E=document.querySelector(t.appendTo)),zn(E)||(E=document.body);const u=document.createElement("div"),d=ne(Eye,T,Fo(T.message)?{default:()=>T.message}:null);return d.appContext=e??uu._context,d.props.onDestroy=()=>{WE(null,u)},WE(d,u),YI[o].push({vm:d}),E.appendChild(u.firstElementChild),{close:()=>{d.component.exposed.visible.value=!1}}};x4.forEach(t=>{uu[t]=(e={})=>((typeof e=="string"||Fo(e))&&(e={message:e}),uu({...e,type:t}))});function gye(t,e,o){const _=YI[e],l=_.findIndex(({vm:d})=>{var O;return((O=d.component)==null?void 0:O.props.id)===t});if(l===-1)return;const{vm:c}=_[l];if(!c)return;o==null||o(c);const T=c.el.offsetHeight,E=e.split("-")[0];_.splice(l,1);const u=_.length;if(!(u<1))for(let d=l;d<u;d++){const{el:O,component:h}=_[d].vm,I=Number.parseInt(O.style[E],10)-T-wN;h.props.offset=I}}function dye(){for(const t of Object.values(YI))t.forEach(({vm:e})=>{e.component.exposed.visible.value=!1})}uu.closeAll=dye;uu._context=null;const Oye=qX(uu,"$notify");var hye=[fUe,NUe,tp,sye,Oye,PK],Mye=HTe([...hUe,...hye]);const Rye="/assets/logo1-xImG6MHd.png",F4=(t,e)=>{let o=new Blob([t],{type:"text/plain;charset=utf-8"});const _=window.URL.createObjectURL(o),l=document.createElement("a");l.href=_,l.download=e,document.body.appendChild(l),l.click(),document.body.removeChild(l),window.URL.revokeObjectURL(_)},Iye={class:"headerLeft"},Sye=["src"],pye={__name:"headerLeft",props:{exportImportFileName:{type:String,require:!0,default:"未命名"}},emits:["setFileName"],setup(t,{emit:e}){const o=t,_=e,l=X(o.exportImportFileName),c=zc.useyXmlStore(),T=()=>{console.log(l.value,c.xmlStr),c.xmlStr&&c.xmlStr!='<xml xmlns="https://developers.google.com/blockly/xml"></xml>'?F4(c.xmlStr,l.value+".xml"):tp({message:"导出内容为空",type:"warning"})},E=()=>{console.log("分享")},u=()=>{console.log("删除当前页面积木")},d=()=>{console.log("保存当前积木图片")},O=()=>{_("setFileName",l.value)};return qs(()=>{o.exportImportFileName&&(l.value=o.exportImportFileName)}),(h,I)=>{const S=gt("el-input"),L=gt("el-button");return B(),se("div",Iye,[te("img",{src:M(Rye)},null,8,Sye),ne(S,{modelValue:l.value,"onUpdate:modelValue":I[0]||(I[0]=p=>l.value=p),placeholder:"",onInput:I[1]||(I[1]=p=>O()),style:{"--el-input-width":"150px"}},null,8,["modelValue"]),ne(L,{round:"",onClick:I[2]||(I[2]=p=>T())},{default:de(()=>[qt("保存")]),_:1}),te("i",{class:"material-icons",onClick:I[3]||(I[3]=p=>E())},"share"),te("i",{class:"material-icons",onClick:I[4]||(I[4]=p=>u())},"delete"),te("i",{class:"material-icons",onClick:I[5]||(I[5]=p=>d())},"photo_camera")])}}},Lye=Ua(pye,[["__scopeId","data-v-666b3c2d"]]),$H="/assets/user-_Ytma4Ez.png";function V4(t,e){return function(){return t.apply(e,arguments)}}const{toString:fye}=Object.prototype,{getPrototypeOf:yD}=Object,op=(t=>e=>{const o=fye.call(e);return t[o]||(t[o]=o.slice(8,-1).toLowerCase())})(Object.create(null)),p_=t=>(t=t.toLowerCase(),e=>op(e)===t),sp=t=>e=>typeof e===t,{isArray:Au}=Array,eO=sp("undefined");function mye(t){return t!==null&&!eO(t)&&t.constructor!==null&&!eO(t.constructor)&&Wn(t.constructor.isBuffer)&&t.constructor.isBuffer(t)}const W4=p_("ArrayBuffer");function Cye(t){let e;return typeof ArrayBuffer<"u"&&ArrayBuffer.isView?e=ArrayBuffer.isView(t):e=t&&t.buffer&&W4(t.buffer),e}const Aye=sp("string"),Wn=sp("function"),X4=sp("number"),ip=t=>t!==null&&typeof t=="object",bye=t=>t===!0||t===!1,VR=t=>{if(op(t)!=="object")return!1;const e=yD(t);return(e===null||e===Object.prototype||Object.getPrototypeOf(e)===null)&&!(Symbol.toStringTag in t)&&!(Symbol.iterator in t)},Nye=p_("Date"),Pye=p_("File"),vye=p_("Blob"),Dye=p_("FileList"),Uye=t=>ip(t)&&Wn(t.pipe),yye=t=>{let e;return t&&(typeof FormData=="function"&&t instanceof FormData||Wn(t.append)&&((e=op(t))==="formdata"||e==="object"&&Wn(t.toString)&&t.toString()==="[object FormData]"))},$ye=p_("URLSearchParams"),Bye=t=>t.trim?t.trim():t.replace(/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,"");function yO(t,e,{allOwnKeys:o=!1}={}){if(t===null||typeof t>"u")return;let _,l;if(typeof t!="object"&&(t=[t]),Au(t))for(_=0,l=t.length;_<l;_++)e.call(null,t[_],_,t);else{const c=o?Object.getOwnPropertyNames(t):Object.keys(t),T=c.length;let E;for(_=0;_<T;_++)E=c[_],e.call(null,t[E],E,t)}}function Y4(t,e){e=e.toLowerCase();const o=Object.keys(t);let _=o.length,l;for(;_-- >0;)if(l=o[_],e===l.toLowerCase())return l;return null}const K4=typeof globalThis<"u"?globalThis:typeof self<"u"?self:typeof window<"u"?window:global,z4=t=>!eO(t)&&t!==K4;function GN(){const{caseless:t}=z4(this)&&this||{},e={},o=(_,l)=>{const c=t&&Y4(e,l)||l;VR(e[c])&&VR(_)?e[c]=GN(e[c],_):VR(_)?e[c]=GN({},_):Au(_)?e[c]=_.slice():e[c]=_};for(let _=0,l=arguments.length;_<l;_++)arguments[_]&&yO(arguments[_],o);return e}const wye=(t,e,o,{allOwnKeys:_}={})=>(yO(e,(l,c)=>{o&&Wn(l)?t[c]=V4(l,o):t[c]=l},{allOwnKeys:_}),t),Gye=t=>(t.charCodeAt(0)===65279&&(t=t.slice(1)),t),kye=(t,e,o,_)=>{t.prototype=Object.create(e.prototype,_),t.prototype.constructor=t,Object.defineProperty(t,"super",{value:e.prototype}),o&&Object.assign(t.prototype,o)},Hye=(t,e,o,_)=>{let l,c,T;const E={};if(e=e||{},t==null)return e;do{for(l=Object.getOwnPropertyNames(t),c=l.length;c-- >0;)T=l[c],(!_||_(T,t,e))&&!E[T]&&(e[T]=t[T],E[T]=!0);t=o!==!1&&yD(t)}while(t&&(!o||o(t,e))&&t!==Object.prototype);return e},xye=(t,e,o)=>{t=String(t),(o===void 0||o>t.length)&&(o=t.length),o-=e.length;const _=t.indexOf(e,o);return _!==-1&&_===o},Fye=t=>{if(!t)return null;if(Au(t))return t;let e=t.length;if(!X4(e))return null;const o=new Array(e);for(;e-- >0;)o[e]=t[e];return o},Vye=(t=>e=>t&&e instanceof t)(typeof Uint8Array<"u"&&yD(Uint8Array)),Wye=(t,e)=>{const _=(t&&t[Symbol.iterator]).call(t);let l;for(;(l=_.next())&&!l.done;){const c=l.value;e.call(t,c[0],c[1])}},Xye=(t,e)=>{let o;const _=[];for(;(o=t.exec(e))!==null;)_.push(o);return _},Yye=p_("HTMLFormElement"),Kye=t=>t.toLowerCase().replace(/[-_\s]([a-z\d])(\w*)/g,function(o,_,l){return _.toUpperCase()+l}),BH=(({hasOwnProperty:t})=>(e,o)=>t.call(e,o))(Object.prototype),zye=p_("RegExp"),Z4=(t,e)=>{const o=Object.getOwnPropertyDescriptors(t),_={};yO(o,(l,c)=>{let T;(T=e(l,c,t))!==!1&&(_[c]=T||l)}),Object.defineProperties(t,_)},Zye=t=>{Z4(t,(e,o)=>{if(Wn(t)&&["arguments","caller","callee"].indexOf(o)!==-1)return!1;const _=t[o];if(Wn(_)){if(e.enumerable=!1,"writable"in e){e.writable=!1;return}e.set||(e.set=()=>{throw Error("Can not rewrite read-only method '"+o+"'")})}})},jye=(t,e)=>{const o={},_=l=>{l.forEach(c=>{o[c]=!0})};return Au(t)?_(t):_(String(t).split(e)),o},qye=()=>{},Qye=(t,e)=>(t=+t,Number.isFinite(t)?t:e),aA="abcdefghijklmnopqrstuvwxyz",wH="0123456789",j4={DIGIT:wH,ALPHA:aA,ALPHA_DIGIT:aA+aA.toUpperCase()+wH},Jye=(t=16,e=j4.ALPHA_DIGIT)=>{let o="";const{length:_}=e;for(;t--;)o+=e[Math.random()*_|0];return o};function e0e(t){return!!(t&&Wn(t.append)&&t[Symbol.toStringTag]==="FormData"&&t[Symbol.iterator])}const t0e=t=>{const e=new Array(10),o=(_,l)=>{if(ip(_)){if(e.indexOf(_)>=0)return;if(!("toJSON"in _)){e[l]=_;const c=Au(_)?[]:{};return yO(_,(T,E)=>{const u=o(T,l+1);!eO(u)&&(c[E]=u)}),e[l]=void 0,c}}return _};return o(t,0)},o0e=p_("AsyncFunction"),s0e=t=>t&&(ip(t)||Wn(t))&&Wn(t.then)&&Wn(t.catch),at={isArray:Au,isArrayBuffer:W4,isBuffer:mye,isFormData:yye,isArrayBufferView:Cye,isString:Aye,isNumber:X4,isBoolean:bye,isObject:ip,isPlainObject:VR,isUndefined:eO,isDate:Nye,isFile:Pye,isBlob:vye,isRegExp:zye,isFunction:Wn,isStream:Uye,isURLSearchParams:$ye,isTypedArray:Vye,isFileList:Dye,forEach:yO,merge:GN,extend:wye,trim:Bye,stripBOM:Gye,inherits:kye,toFlatObject:Hye,kindOf:op,kindOfTest:p_,endsWith:xye,toArray:Fye,forEachEntry:Wye,matchAll:Xye,isHTMLForm:Yye,hasOwnProperty:BH,hasOwnProp:BH,reduceDescriptors:Z4,freezeMethods:Zye,toObjectSet:jye,toCamelCase:Kye,noop:qye,toFiniteNumber:Qye,findKey:Y4,global:K4,isContextDefined:z4,ALPHABET:j4,generateString:Jye,isSpecCompliantForm:e0e,toJSONObject:t0e,isAsyncFn:o0e,isThenable:s0e};function vo(t,e,o,_,l){Error.call(this),Error.captureStackTrace?Error.captureStackTrace(this,this.constructor):this.stack=new Error().stack,this.message=t,this.name="AxiosError",e&&(this.code=e),o&&(this.config=o),_&&(this.request=_),l&&(this.response=l)}at.inherits(vo,Error,{toJSON:function(){return{message:this.message,name:this.name,description:this.description,number:this.number,fileName:this.fileName,lineNumber:this.lineNumber,columnNumber:this.columnNumber,stack:this.stack,config:at.toJSONObject(this.config),code:this.code,status:this.response&&this.response.status?this.response.status:null}}});const q4=vo.prototype,Q4={};["ERR_BAD_OPTION_VALUE","ERR_BAD_OPTION","ECONNABORTED","ETIMEDOUT","ERR_NETWORK","ERR_FR_TOO_MANY_REDIRECTS","ERR_DEPRECATED","ERR_BAD_RESPONSE","ERR_BAD_REQUEST","ERR_CANCELED","ERR_NOT_SUPPORT","ERR_INVALID_URL"].forEach(t=>{Q4[t]={value:t}});Object.defineProperties(vo,Q4);Object.defineProperty(q4,"isAxiosError",{value:!0});vo.from=(t,e,o,_,l,c)=>{const T=Object.create(q4);return at.toFlatObject(t,T,function(u){return u!==Error.prototype},E=>E!=="isAxiosError"),vo.call(T,t.message,e,o,_,l),T.cause=t,T.name=t.name,c&&Object.assign(T,c),T};const i0e=null;function kN(t){return at.isPlainObject(t)||at.isArray(t)}function J4(t){return at.endsWith(t,"[]")?t.slice(0,-2):t}function GH(t,e,o){return t?t.concat(e).map(function(l,c){return l=J4(l),!o&&c?"["+l+"]":l}).join(o?".":""):e}function n0e(t){return at.isArray(t)&&!t.some(kN)}const r0e=at.toFlatObject(at,{},null,function(e){return/^is[A-Z]/.test(e)});function np(t,e,o){if(!at.isObject(t))throw new TypeError("target must be an object");e=e||new FormData,o=at.toFlatObject(o,{metaTokens:!0,dots:!1,indexes:!1},!1,function(p,C){return!at.isUndefined(C[p])});const _=o.metaTokens,l=o.visitor||O,c=o.dots,T=o.indexes,u=(o.Blob||typeof Blob<"u"&&Blob)&&at.isSpecCompliantForm(e);if(!at.isFunction(l))throw new TypeError("visitor must be a function");function d(L){if(L===null)return"";if(at.isDate(L))return L.toISOString();if(!u&&at.isBlob(L))throw new vo("Blob is not supported. Use a Buffer instead.");return at.isArrayBuffer(L)||at.isTypedArray(L)?u&&typeof Blob=="function"?new Blob([L]):Buffer.from(L):L}function O(L,p,C){let m=L;if(L&&!C&&typeof L=="object"){if(at.endsWith(p,"{}"))p=_?p:p.slice(0,-2),L=JSON.stringify(L);else if(at.isArray(L)&&n0e(L)||(at.isFileList(L)||at.endsWith(p,"[]"))&&(m=at.toArray(L)))return p=J4(p),m.forEach(function(b,N){!(at.isUndefined(b)||b===null)&&e.append(T===!0?GH([p],N,c):T===null?p:p+"[]",d(b))}),!1}return kN(L)?!0:(e.append(GH(C,p,c),d(L)),!1)}const h=[],I=Object.assign(r0e,{defaultVisitor:O,convertValue:d,isVisitable:kN});function S(L,p){if(!at.isUndefined(L)){if(h.indexOf(L)!==-1)throw Error("Circular reference detected in "+p.join("."));h.push(L),at.forEach(L,function(m,A){(!(at.isUndefined(m)||m===null)&&l.call(e,m,at.isString(A)?A.trim():A,p,I))===!0&&S(m,p?p.concat(A):[A])}),h.pop()}}if(!at.isObject(t))throw new TypeError("data must be an object");return S(t),e}function kH(t){const e={"!":"%21","'":"%27","(":"%28",")":"%29","~":"%7E","%20":"+","%00":"\0"};return encodeURIComponent(t).replace(/[!'()~]|%20|%00/g,function(_){return e[_]})}function $D(t,e){this._pairs=[],t&&np(t,this,e)}const ez=$D.prototype;ez.append=function(e,o){this._pairs.push([e,o])};ez.toString=function(e){const o=e?function(_){return e.call(this,_,kH)}:kH;return this._pairs.map(function(l){return o(l[0])+"="+o(l[1])},"").join("&")};function _0e(t){return encodeURIComponent(t).replace(/%3A/gi,":").replace(/%24/g,"$").replace(/%2C/gi,",").replace(/%20/g,"+").replace(/%5B/gi,"[").replace(/%5D/gi,"]")}function tz(t,e,o){if(!e)return t;const _=o&&o.encode||_0e,l=o&&o.serialize;let c;if(l?c=l(e,o):c=at.isURLSearchParams(e)?e.toString():new $D(e,o).toString(_),c){const T=t.indexOf("#");T!==-1&&(t=t.slice(0,T)),t+=(t.indexOf("?")===-1?"?":"&")+c}return t}class HH{constructor(){this.handlers=[]}use(e,o,_){return this.handlers.push({fulfilled:e,rejected:o,synchronous:_?_.synchronous:!1,runWhen:_?_.runWhen:null}),this.handlers.length-1}eject(e){this.handlers[e]&&(this.handlers[e]=null)}clear(){this.handlers&&(this.handlers=[])}forEach(e){at.forEach(this.handlers,function(_){_!==null&&e(_)})}}const oz={silentJSONParsing:!0,forcedJSONParsing:!0,clarifyTimeoutError:!1},l0e=typeof URLSearchParams<"u"?URLSearchParams:$D,a0e=typeof FormData<"u"?FormData:null,c0e=typeof Blob<"u"?Blob:null,T0e={isBrowser:!0,classes:{URLSearchParams:l0e,FormData:a0e,Blob:c0e},protocols:["http","https","file","blob","url","data"]},sz=typeof window<"u"&&typeof document<"u",E0e=(t=>sz&&["ReactNative","NativeScript","NS"].indexOf(t)<0)(typeof navigator<"u"&&navigator.product),u0e=typeof WorkerGlobalScope<"u"&&self instanceof WorkerGlobalScope&&typeof self.importScripts=="function",g0e=Object.freeze(Object.defineProperty({__proto__:null,hasBrowserEnv:sz,hasStandardBrowserEnv:E0e,hasStandardBrowserWebWorkerEnv:u0e},Symbol.toStringTag,{value:"Module"})),l_={...g0e,...T0e};function d0e(t,e){return np(t,new l_.classes.URLSearchParams,Object.assign({visitor:function(o,_,l,c){return l_.isNode&&at.isBuffer(o)?(this.append(_,o.toString("base64")),!1):c.defaultVisitor.apply(this,arguments)}},e))}function O0e(t){return at.matchAll(/\w+|\[(\w*)]/g,t).map(e=>e[0]==="[]"?"":e[1]||e[0])}function h0e(t){const e={},o=Object.keys(t);let _;const l=o.length;let c;for(_=0;_<l;_++)c=o[_],e[c]=t[c];return e}function iz(t){function e(o,_,l,c){let T=o[c++];if(T==="__proto__")return!0;const E=Number.isFinite(+T),u=c>=o.length;return T=!T&&at.isArray(l)?l.length:T,u?(at.hasOwnProp(l,T)?l[T]=[l[T],_]:l[T]=_,!E):((!l[T]||!at.isObject(l[T]))&&(l[T]=[]),e(o,_,l[T],c)&&at.isArray(l[T])&&(l[T]=h0e(l[T])),!E)}if(at.isFormData(t)&&at.isFunction(t.entries)){const o={};return at.forEachEntry(t,(_,l)=>{e(O0e(_),l,o,0)}),o}return null}function M0e(t,e,o){if(at.isString(t))try{return(e||JSON.parse)(t),at.trim(t)}catch(_){if(_.name!=="SyntaxError")throw _}return(o||JSON.stringify)(t)}const BD={transitional:oz,adapter:["xhr","http"],transformRequest:[function(e,o){const _=o.getContentType()||"",l=_.indexOf("application/json")>-1,c=at.isObject(e);if(c&&at.isHTMLForm(e)&&(e=new FormData(e)),at.isFormData(e))return l&&l?JSON.stringify(iz(e)):e;if(at.isArrayBuffer(e)||at.isBuffer(e)||at.isStream(e)||at.isFile(e)||at.isBlob(e))return e;if(at.isArrayBufferView(e))return e.buffer;if(at.isURLSearchParams(e))return o.setContentType("application/x-www-form-urlencoded;charset=utf-8",!1),e.toString();let E;if(c){if(_.indexOf("application/x-www-form-urlencoded")>-1)return d0e(e,this.formSerializer).toString();if((E=at.isFileList(e))||_.indexOf("multipart/form-data")>-1){const u=this.env&&this.env.FormData;return np(E?{"files[]":e}:e,u&&new u,this.formSerializer)}}return c||l?(o.setContentType("application/json",!1),M0e(e)):e}],transformResponse:[function(e){const o=this.transitional||BD.transitional,_=o&&o.forcedJSONParsing,l=this.responseType==="json";if(e&&at.isString(e)&&(_&&!this.responseType||l)){const T=!(o&&o.silentJSONParsing)&&l;try{return JSON.parse(e)}catch(E){if(T)throw E.name==="SyntaxError"?vo.from(E,vo.ERR_BAD_RESPONSE,this,null,this.response):E}}return e}],timeout:0,xsrfCookieName:"XSRF-TOKEN",xsrfHeaderName:"X-XSRF-TOKEN",maxContentLength:-1,maxBodyLength:-1,env:{FormData:l_.classes.FormData,Blob:l_.classes.Blob},validateStatus:function(e){return e>=200&&e<300},headers:{common:{Accept:"application/json, text/plain, */*","Content-Type":void 0}}};at.forEach(["delete","get","head","post","put","patch"],t=>{BD.headers[t]={}});const wD=BD,R0e=at.toObjectSet(["age","authorization","content-length","content-type","etag","expires","from","host","if-modified-since","if-unmodified-since","last-modified","location","max-forwards","proxy-authorization","referer","retry-after","user-agent"]),I0e=t=>{const e={};let o,_,l;return t&&t.split(`
- `).forEach(function(T){l=T.indexOf(":"),o=T.substring(0,l).trim().toLowerCase(),_=T.substring(l+1).trim(),!(!o||e[o]&&R0e[o])&&(o==="set-cookie"?e[o]?e[o].push(_):e[o]=[_]:e[o]=e[o]?e[o]+", "+_:_)}),e},xH=Symbol("internals");function Dg(t){return t&&String(t).trim().toLowerCase()}function WR(t){return t===!1||t==null?t:at.isArray(t)?t.map(WR):String(t)}function S0e(t){const e=Object.create(null),o=/([^\s,;=]+)\s*(?:=\s*([^,;]+))?/g;let _;for(;_=o.exec(t);)e[_[1]]=_[2];return e}const p0e=t=>/^[-_a-zA-Z0-9^`|~,!#$%&'*+.]+$/.test(t.trim());function cA(t,e,o,_,l){if(at.isFunction(_))return _.call(this,e,o);if(l&&(e=o),!!at.isString(e)){if(at.isString(_))return e.indexOf(_)!==-1;if(at.isRegExp(_))return _.test(e)}}function L0e(t){return t.trim().toLowerCase().replace(/([a-z\d])(\w*)/g,(e,o,_)=>o.toUpperCase()+_)}function f0e(t,e){const o=at.toCamelCase(" "+e);["get","set","has"].forEach(_=>{Object.defineProperty(t,_+o,{value:function(l,c,T){return this[_].call(this,e,l,c,T)},configurable:!0})})}class rp{constructor(e){e&&this.set(e)}set(e,o,_){const l=this;function c(E,u,d){const O=Dg(u);if(!O)throw new Error("header name must be a non-empty string");const h=at.findKey(l,O);(!h||l[h]===void 0||d===!0||d===void 0&&l[h]!==!1)&&(l[h||u]=WR(E))}const T=(E,u)=>at.forEach(E,(d,O)=>c(d,O,u));return at.isPlainObject(e)||e instanceof this.constructor?T(e,o):at.isString(e)&&(e=e.trim())&&!p0e(e)?T(I0e(e),o):e!=null&&c(o,e,_),this}get(e,o){if(e=Dg(e),e){const _=at.findKey(this,e);if(_){const l=this[_];if(!o)return l;if(o===!0)return S0e(l);if(at.isFunction(o))return o.call(this,l,_);if(at.isRegExp(o))return o.exec(l);throw new TypeError("parser must be boolean|regexp|function")}}}has(e,o){if(e=Dg(e),e){const _=at.findKey(this,e);return!!(_&&this[_]!==void 0&&(!o||cA(this,this[_],_,o)))}return!1}delete(e,o){const _=this;let l=!1;function c(T){if(T=Dg(T),T){const E=at.findKey(_,T);E&&(!o||cA(_,_[E],E,o))&&(delete _[E],l=!0)}}return at.isArray(e)?e.forEach(c):c(e),l}clear(e){const o=Object.keys(this);let _=o.length,l=!1;for(;_--;){const c=o[_];(!e||cA(this,this[c],c,e,!0))&&(delete this[c],l=!0)}return l}normalize(e){const o=this,_={};return at.forEach(this,(l,c)=>{const T=at.findKey(_,c);if(T){o[T]=WR(l),delete o[c];return}const E=e?L0e(c):String(c).trim();E!==c&&delete o[c],o[E]=WR(l),_[E]=!0}),this}concat(...e){return this.constructor.concat(this,...e)}toJSON(e){const o=Object.create(null);return at.forEach(this,(_,l)=>{_!=null&&_!==!1&&(o[l]=e&&at.isArray(_)?_.join(", "):_)}),o}[Symbol.iterator](){return Object.entries(this.toJSON())[Symbol.iterator]()}toString(){return Object.entries(this.toJSON()).map(([e,o])=>e+": "+o).join(`
- `)}get[Symbol.toStringTag](){return"AxiosHeaders"}static from(e){return e instanceof this?e:new this(e)}static concat(e,...o){const _=new this(e);return o.forEach(l=>_.set(l)),_}static accessor(e){const _=(this[xH]=this[xH]={accessors:{}}).accessors,l=this.prototype;function c(T){const E=Dg(T);_[E]||(f0e(l,T),_[E]=!0)}return at.isArray(e)?e.forEach(c):c(e),this}}rp.accessor(["Content-Type","Content-Length","Accept","Accept-Encoding","User-Agent","Authorization"]);at.reduceDescriptors(rp.prototype,({value:t},e)=>{let o=e[0].toUpperCase()+e.slice(1);return{get:()=>t,set(_){this[o]=_}}});at.freezeMethods(rp);const q_=rp;function TA(t,e){const o=this||wD,_=e||o,l=q_.from(_.headers);let c=_.data;return at.forEach(t,function(E){c=E.call(o,c,l.normalize(),e?e.status:void 0)}),l.normalize(),c}function nz(t){return!!(t&&t.__CANCEL__)}function $O(t,e,o){vo.call(this,t??"canceled",vo.ERR_CANCELED,e,o),this.name="CanceledError"}at.inherits($O,vo,{__CANCEL__:!0});function m0e(t,e,o){const _=o.config.validateStatus;!o.status||!_||_(o.status)?t(o):e(new vo("Request failed with status code "+o.status,[vo.ERR_BAD_REQUEST,vo.ERR_BAD_RESPONSE][Math.floor(o.status/100)-4],o.config,o.request,o))}const C0e=l_.hasStandardBrowserEnv?{write(t,e,o,_,l,c){const T=[t+"="+encodeURIComponent(e)];at.isNumber(o)&&T.push("expires="+new Date(o).toGMTString()),at.isString(_)&&T.push("path="+_),at.isString(l)&&T.push("domain="+l),c===!0&&T.push("secure"),document.cookie=T.join("; ")},read(t){const e=document.cookie.match(new RegExp("(^|;\\s*)("+t+")=([^;]*)"));return e?decodeURIComponent(e[3]):null},remove(t){this.write(t,"",Date.now()-864e5)}}:{write(){},read(){return null},remove(){}};function A0e(t){return/^([a-z][a-z\d+\-.]*:)?\/\//i.test(t)}function b0e(t,e){return e?t.replace(/\/?\/$/,"")+"/"+e.replace(/^\/+/,""):t}function rz(t,e){return t&&!A0e(e)?b0e(t,e):e}const N0e=l_.hasStandardBrowserEnv?function(){const e=/(msie|trident)/i.test(navigator.userAgent),o=document.createElement("a");let _;function l(c){let T=c;return e&&(o.setAttribute("href",T),T=o.href),o.setAttribute("href",T),{href:o.href,protocol:o.protocol?o.protocol.replace(/:$/,""):"",host:o.host,search:o.search?o.search.replace(/^\?/,""):"",hash:o.hash?o.hash.replace(/^#/,""):"",hostname:o.hostname,port:o.port,pathname:o.pathname.charAt(0)==="/"?o.pathname:"/"+o.pathname}}return _=l(window.location.href),function(T){const E=at.isString(T)?l(T):T;return E.protocol===_.protocol&&E.host===_.host}}():function(){return function(){return!0}}();function P0e(t){const e=/^([-+\w]{1,25})(:?\/\/|:)/.exec(t);return e&&e[1]||""}function v0e(t,e){t=t||10;const o=new Array(t),_=new Array(t);let l=0,c=0,T;return e=e!==void 0?e:1e3,function(u){const d=Date.now(),O=_[c];T||(T=d),o[l]=u,_[l]=d;let h=c,I=0;for(;h!==l;)I+=o[h++],h=h%t;if(l=(l+1)%t,l===c&&(c=(c+1)%t),d-T<e)return;const S=O&&d-O;return S?Math.round(I*1e3/S):void 0}}function FH(t,e){let o=0;const _=v0e(50,250);return l=>{const c=l.loaded,T=l.lengthComputable?l.total:void 0,E=c-o,u=_(E),d=c<=T;o=c;const O={loaded:c,total:T,progress:T?c/T:void 0,bytes:E,rate:u||void 0,estimated:u&&T&&d?(T-c)/u:void 0,event:l};O[e?"download":"upload"]=!0,t(O)}}const D0e=typeof XMLHttpRequest<"u",U0e=D0e&&function(t){return new Promise(function(o,_){let l=t.data;const c=q_.from(t.headers).normalize();let{responseType:T,withXSRFToken:E}=t,u;function d(){t.cancelToken&&t.cancelToken.unsubscribe(u),t.signal&&t.signal.removeEventListener("abort",u)}let O;if(at.isFormData(l)){if(l_.hasStandardBrowserEnv||l_.hasStandardBrowserWebWorkerEnv)c.setContentType(!1);else if((O=c.getContentType())!==!1){const[p,...C]=O?O.split(";").map(m=>m.trim()).filter(Boolean):[];c.setContentType([p||"multipart/form-data",...C].join("; "))}}let h=new XMLHttpRequest;if(t.auth){const p=t.auth.username||"",C=t.auth.password?unescape(encodeURIComponent(t.auth.password)):"";c.set("Authorization","Basic "+btoa(p+":"+C))}const I=rz(t.baseURL,t.url);h.open(t.method.toUpperCase(),tz(I,t.params,t.paramsSerializer),!0),h.timeout=t.timeout;function S(){if(!h)return;const p=q_.from("getAllResponseHeaders"in h&&h.getAllResponseHeaders()),m={data:!T||T==="text"||T==="json"?h.responseText:h.response,status:h.status,statusText:h.statusText,headers:p,config:t,request:h};m0e(function(b){o(b),d()},function(b){_(b),d()},m),h=null}if("onloadend"in h?h.onloadend=S:h.onreadystatechange=function(){!h||h.readyState!==4||h.status===0&&!(h.responseURL&&h.responseURL.indexOf("file:")===0)||setTimeout(S)},h.onabort=function(){h&&(_(new vo("Request aborted",vo.ECONNABORTED,t,h)),h=null)},h.onerror=function(){_(new vo("Network Error",vo.ERR_NETWORK,t,h)),h=null},h.ontimeout=function(){let C=t.timeout?"timeout of "+t.timeout+"ms exceeded":"timeout exceeded";const m=t.transitional||oz;t.timeoutErrorMessage&&(C=t.timeoutErrorMessage),_(new vo(C,m.clarifyTimeoutError?vo.ETIMEDOUT:vo.ECONNABORTED,t,h)),h=null},l_.hasStandardBrowserEnv&&(E&&at.isFunction(E)&&(E=E(t)),E||E!==!1&&N0e(I))){const p=t.xsrfHeaderName&&t.xsrfCookieName&&C0e.read(t.xsrfCookieName);p&&c.set(t.xsrfHeaderName,p)}l===void 0&&c.setContentType(null),"setRequestHeader"in h&&at.forEach(c.toJSON(),function(C,m){h.setRequestHeader(m,C)}),at.isUndefined(t.withCredentials)||(h.withCredentials=!!t.withCredentials),T&&T!=="json"&&(h.responseType=t.responseType),typeof t.onDownloadProgress=="function"&&h.addEventListener("progress",FH(t.onDownloadProgress,!0)),typeof t.onUploadProgress=="function"&&h.upload&&h.upload.addEventListener("progress",FH(t.onUploadProgress)),(t.cancelToken||t.signal)&&(u=p=>{h&&(_(!p||p.type?new $O(null,t,h):p),h.abort(),h=null)},t.cancelToken&&t.cancelToken.subscribe(u),t.signal&&(t.signal.aborted?u():t.signal.addEventListener("abort",u)));const L=P0e(I);if(L&&l_.protocols.indexOf(L)===-1){_(new vo("Unsupported protocol "+L+":",vo.ERR_BAD_REQUEST,t));return}h.send(l||null)})},HN={http:i0e,xhr:U0e};at.forEach(HN,(t,e)=>{if(t){try{Object.defineProperty(t,"name",{value:e})}catch{}Object.defineProperty(t,"adapterName",{value:e})}});const VH=t=>`- ${t}`,y0e=t=>at.isFunction(t)||t===null||t===!1,_z={getAdapter:t=>{t=at.isArray(t)?t:[t];const{length:e}=t;let o,_;const l={};for(let c=0;c<e;c++){o=t[c];let T;if(_=o,!y0e(o)&&(_=HN[(T=String(o)).toLowerCase()],_===void 0))throw new vo(`Unknown adapter '${T}'`);if(_)break;l[T||"#"+c]=_}if(!_){const c=Object.entries(l).map(([E,u])=>`adapter ${E} `+(u===!1?"is not supported by the environment":"is not available in the build"));let T=e?c.length>1?`since :
- `+c.map(VH).join(`
- `):" "+VH(c[0]):"as no adapter specified";throw new vo("There is no suitable adapter to dispatch the request "+T,"ERR_NOT_SUPPORT")}return _},adapters:HN};function EA(t){if(t.cancelToken&&t.cancelToken.throwIfRequested(),t.signal&&t.signal.aborted)throw new $O(null,t)}function WH(t){return EA(t),t.headers=q_.from(t.headers),t.data=TA.call(t,t.transformRequest),["post","put","patch"].indexOf(t.method)!==-1&&t.headers.setContentType("application/x-www-form-urlencoded",!1),_z.getAdapter(t.adapter||wD.adapter)(t).then(function(_){return EA(t),_.data=TA.call(t,t.transformResponse,_),_.headers=q_.from(_.headers),_},function(_){return nz(_)||(EA(t),_&&_.response&&(_.response.data=TA.call(t,t.transformResponse,_.response),_.response.headers=q_.from(_.response.headers))),Promise.reject(_)})}const XH=t=>t instanceof q_?t.toJSON():t;function gu(t,e){e=e||{};const o={};function _(d,O,h){return at.isPlainObject(d)&&at.isPlainObject(O)?at.merge.call({caseless:h},d,O):at.isPlainObject(O)?at.merge({},O):at.isArray(O)?O.slice():O}function l(d,O,h){if(at.isUndefined(O)){if(!at.isUndefined(d))return _(void 0,d,h)}else return _(d,O,h)}function c(d,O){if(!at.isUndefined(O))return _(void 0,O)}function T(d,O){if(at.isUndefined(O)){if(!at.isUndefined(d))return _(void 0,d)}else return _(void 0,O)}function E(d,O,h){if(h in e)return _(d,O);if(h in t)return _(void 0,d)}const u={url:c,method:c,data:c,baseURL:T,transformRequest:T,transformResponse:T,paramsSerializer:T,timeout:T,timeoutMessage:T,withCredentials:T,withXSRFToken:T,adapter:T,responseType:T,xsrfCookieName:T,xsrfHeaderName:T,onUploadProgress:T,onDownloadProgress:T,decompress:T,maxContentLength:T,maxBodyLength:T,beforeRedirect:T,transport:T,httpAgent:T,httpsAgent:T,cancelToken:T,socketPath:T,responseEncoding:T,validateStatus:E,headers:(d,O)=>l(XH(d),XH(O),!0)};return at.forEach(Object.keys(Object.assign({},t,e)),function(O){const h=u[O]||l,I=h(t[O],e[O],O);at.isUndefined(I)&&h!==E||(o[O]=I)}),o}const lz="1.6.5",GD={};["object","boolean","number","function","string","symbol"].forEach((t,e)=>{GD[t]=function(_){return typeof _===t||"a"+(e<1?"n ":" ")+t}});const YH={};GD.transitional=function(e,o,_){function l(c,T){return"[Axios v"+lz+"] Transitional option '"+c+"'"+T+(_?". "+_:"")}return(c,T,E)=>{if(e===!1)throw new vo(l(T," has been removed"+(o?" in "+o:"")),vo.ERR_DEPRECATED);return o&&!YH[T]&&(YH[T]=!0,console.warn(l(T," has been deprecated since v"+o+" and will be removed in the near future"))),e?e(c,T,E):!0}};function $0e(t,e,o){if(typeof t!="object")throw new vo("options must be an object",vo.ERR_BAD_OPTION_VALUE);const _=Object.keys(t);let l=_.length;for(;l-- >0;){const c=_[l],T=e[c];if(T){const E=t[c],u=E===void 0||T(E,c,t);if(u!==!0)throw new vo("option "+c+" must be "+u,vo.ERR_BAD_OPTION_VALUE);continue}if(o!==!0)throw new vo("Unknown option "+c,vo.ERR_BAD_OPTION)}}const xN={assertOptions:$0e,validators:GD},Bl=xN.validators;class KI{constructor(e){this.defaults=e,this.interceptors={request:new HH,response:new HH}}request(e,o){typeof e=="string"?(o=o||{},o.url=e):o=e||{},o=gu(this.defaults,o);const{transitional:_,paramsSerializer:l,headers:c}=o;_!==void 0&&xN.assertOptions(_,{silentJSONParsing:Bl.transitional(Bl.boolean),forcedJSONParsing:Bl.transitional(Bl.boolean),clarifyTimeoutError:Bl.transitional(Bl.boolean)},!1),l!=null&&(at.isFunction(l)?o.paramsSerializer={serialize:l}:xN.assertOptions(l,{encode:Bl.function,serialize:Bl.function},!0)),o.method=(o.method||this.defaults.method||"get").toLowerCase();let T=c&&at.merge(c.common,c[o.method]);c&&at.forEach(["delete","get","head","post","put","patch","common"],L=>{delete c[L]}),o.headers=q_.concat(T,c);const E=[];let u=!0;this.interceptors.request.forEach(function(p){typeof p.runWhen=="function"&&p.runWhen(o)===!1||(u=u&&p.synchronous,E.unshift(p.fulfilled,p.rejected))});const d=[];this.interceptors.response.forEach(function(p){d.push(p.fulfilled,p.rejected)});let O,h=0,I;if(!u){const L=[WH.bind(this),void 0];for(L.unshift.apply(L,E),L.push.apply(L,d),I=L.length,O=Promise.resolve(o);h<I;)O=O.then(L[h++],L[h++]);return O}I=E.length;let S=o;for(h=0;h<I;){const L=E[h++],p=E[h++];try{S=L(S)}catch(C){p.call(this,C);break}}try{O=WH.call(this,S)}catch(L){return Promise.reject(L)}for(h=0,I=d.length;h<I;)O=O.then(d[h++],d[h++]);return O}getUri(e){e=gu(this.defaults,e);const o=rz(e.baseURL,e.url);return tz(o,e.params,e.paramsSerializer)}}at.forEach(["delete","get","head","options"],function(e){KI.prototype[e]=function(o,_){return this.request(gu(_||{},{method:e,url:o,data:(_||{}).data}))}});at.forEach(["post","put","patch"],function(e){function o(_){return function(c,T,E){return this.request(gu(E||{},{method:e,headers:_?{"Content-Type":"multipart/form-data"}:{},url:c,data:T}))}}KI.prototype[e]=o(),KI.prototype[e+"Form"]=o(!0)});const XR=KI;class kD{constructor(e){if(typeof e!="function")throw new TypeError("executor must be a function.");let o;this.promise=new Promise(function(c){o=c});const _=this;this.promise.then(l=>{if(!_._listeners)return;let c=_._listeners.length;for(;c-- >0;)_._listeners[c](l);_._listeners=null}),this.promise.then=l=>{let c;const T=new Promise(E=>{_.subscribe(E),c=E}).then(l);return T.cancel=function(){_.unsubscribe(c)},T},e(function(c,T,E){_.reason||(_.reason=new $O(c,T,E),o(_.reason))})}throwIfRequested(){if(this.reason)throw this.reason}subscribe(e){if(this.reason){e(this.reason);return}this._listeners?this._listeners.push(e):this._listeners=[e]}unsubscribe(e){if(!this._listeners)return;const o=this._listeners.indexOf(e);o!==-1&&this._listeners.splice(o,1)}static source(){let e;return{token:new kD(function(l){e=l}),cancel:e}}}const B0e=kD;function w0e(t){return function(o){return t.apply(null,o)}}function G0e(t){return at.isObject(t)&&t.isAxiosError===!0}const FN={Continue:100,SwitchingProtocols:101,Processing:102,EarlyHints:103,Ok:200,Created:201,Accepted:202,NonAuthoritativeInformation:203,NoContent:204,ResetContent:205,PartialContent:206,MultiStatus:207,AlreadyReported:208,ImUsed:226,MultipleChoices:300,MovedPermanently:301,Found:302,SeeOther:303,NotModified:304,UseProxy:305,Unused:306,TemporaryRedirect:307,PermanentRedirect:308,BadRequest:400,Unauthorized:401,PaymentRequired:402,Forbidden:403,NotFound:404,MethodNotAllowed:405,NotAcceptable:406,ProxyAuthenticationRequired:407,RequestTimeout:408,Conflict:409,Gone:410,LengthRequired:411,PreconditionFailed:412,PayloadTooLarge:413,UriTooLong:414,UnsupportedMediaType:415,RangeNotSatisfiable:416,ExpectationFailed:417,ImATeapot:418,MisdirectedRequest:421,UnprocessableEntity:422,Locked:423,FailedDependency:424,TooEarly:425,UpgradeRequired:426,PreconditionRequired:428,TooManyRequests:429,RequestHeaderFieldsTooLarge:431,UnavailableForLegalReasons:451,InternalServerError:500,NotImplemented:501,BadGateway:502,ServiceUnavailable:503,GatewayTimeout:504,HttpVersionNotSupported:505,VariantAlsoNegotiates:506,InsufficientStorage:507,LoopDetected:508,NotExtended:510,NetworkAuthenticationRequired:511};Object.entries(FN).forEach(([t,e])=>{FN[e]=t});const k0e=FN;function az(t){const e=new XR(t),o=V4(XR.prototype.request,e);return at.extend(o,XR.prototype,e,{allOwnKeys:!0}),at.extend(o,e,null,{allOwnKeys:!0}),o.create=function(l){return az(gu(t,l))},o}const Cs=az(wD);Cs.Axios=XR;Cs.CanceledError=$O;Cs.CancelToken=B0e;Cs.isCancel=nz;Cs.VERSION=lz;Cs.toFormData=np;Cs.AxiosError=vo;Cs.Cancel=Cs.CanceledError;Cs.all=function(e){return Promise.all(e)};Cs.spread=w0e;Cs.isAxiosError=G0e;Cs.mergeConfig=gu;Cs.AxiosHeaders=q_;Cs.formToJSON=t=>iz(at.isHTMLForm(t)?new FormData(t):t);Cs.getAdapter=_z.getAdapter;Cs.HttpStatusCode=k0e;Cs.default=Cs;const H0e={style:{position:"relative"}},x0e=te("iframe",{src:"//cocorobo.cn/login",frameborder:"0",scrolling:"no",style:{display:"none"}},null,-1),F0e={key:0,class:"user_login_style"},V0e=["src"],W0e={class:"user_name"},X0e={key:1,class:"user_login_style"},Y0e=["src"],K0e=te("span",{class:"login_button"},"登录",-1),z0e={class:"my-header"},Z0e=["onClick"],j0e={key:0,class:"loginIframe"},q0e=te("iframe",{src:"//cocorobo.cn/login",frameborder:"0",scrolling:"no"},null,-1),Q0e=[q0e],J0e={key:1,class:"cloud"},e$e=te("span",{class:"user_span_color"},"您的邮箱:",-1),t$e=te("span",{class:"user_span_color"},"您所属的学校:",-1),o$e=te("span",{class:"user_span_color"},"云端项目:",-1),s$e=te("span",{class:"user_span_color"},"APT key:",-1),i$e={class:"clearfix",style:{"margin-top":"20px"}},n$e={__name:"user",setup(t){const e=X(!1),o=X(!1),_=X(""),l=X(""),c=X(""),T=X([]),E=X(""),u=X(""),d=X(""),O=X(""),h=X(!1);Bt(()=>{h.value=window.location.host.indexOf("cocorobo.hk")>-1,window.addEventListener("message",function(C){console.log(C),C.data.id=="loginVerify"&&C.data.status==="logged"&&(e.value=!0,_.value=C.data.data.alias,l.value=C.data.data.username,c.value=C.data.data.defaultSchool,E.value=C.data.data.apiKey,I())})});const I=()=>{const C=h.value?`https://api.cocorobo.hk/iot/data/apikey/${E.value}/event/`:`https://api.cocorobo.cn/iot/data/apikey/${E.value}/event/`;Cs.get(C).then(m=>{if(m.data.length>0){let A=[];m.data.map(b=>{let N={id:b.eventAPIKey,value:b.name,url:b.url};return A.push(N),b}),u.value=A[0].value,d.value=A[0].id,O.value=A[0].url,T.value=A}})},S=C=>{let m=T.value.filter(A=>A.value==C)[0];d.value=m.id,O.value=m.url},L=()=>{const C=h.value?"//cocorobo.hk/cloud":"//cocorobo.cn/cloud";window.open(C)},p=()=>{const C=h.value?"//api.cocorobo.hk/api/logout":"//api.cocorobo.cn/api/logout";Cs.defaults.withCredentials=!0,Cs.get(C).then(m=>{m.data=="logout"&&(e.value=!1,tp({message:"登出成功",type:"warning"}))})};return(C,m)=>{const A=gt("el-tooltip"),b=gt("el-option"),N=gt("el-select"),U=gt("el-input"),P=gt("el-button"),G=gt("el-dialog");return B(),se("div",H0e,[te("div",{class:"user",onClick:m[0]||(m[0]=w=>o.value=!0)},[x0e,e.value?(B(),se("div",F0e,[te("img",{src:M($H),alt:""},null,8,V0e),te("span",W0e,Qe(_.value),1)])):(B(),se("div",X0e,[te("img",{src:M($H),alt:""},null,8,Y0e),K0e]))]),ne(G,{class:"loginModel",modelValue:o.value,"onUpdate:modelValue":m[7]||(m[7]=w=>o.value=w),title:"",width:"350px","show-close":!1},{header:de(({close:w})=>[te("div",z0e,[te("i",{class:"material-icons right",style:{color:"#000","margin-top":"10px"},onClick:w},"close",8,Z0e)])]),default:de(()=>[e.value?(B(),se("div",J0e,[te("h4",null,Qe(_.value),1),te("p",null,[e$e,qt(Qe(l.value),1)]),te("p",null,[t$e,qt(Qe(c.value),1)]),te("div",null,[te("p",null,[o$e,ne(A,{class:"box-item",effect:"dark",content:"点击刷新云端事件",placement:"bottom"},{default:de(()=>[te("i",{class:"material-icons cloud-icon right",onClick:m[1]||(m[1]=w=>I())},"autorenew")]),_:1})]),ne(N,{modelValue:u.value,"onUpdate:modelValue":m[2]||(m[2]=w=>u.value=w),onChange:S},{default:de(()=>[(B(!0),se(ht,null,oo(T.value,w=>(B(),Ne(b,{key:w.id,value:w.value},{default:de(()=>[qt(Qe(w.value),1)]),_:2},1032,["value"]))),128))]),_:1},8,["modelValue"]),te("p",null,[s$e,ne(A,{class:"box-item",effect:"dark",content:"复制api-key到粘贴板上",placement:"bottom"},{default:de(()=>[te("i",{class:"material-icons cloud-icon right",onClick:m[3]||(m[3]=w=>I())},"content_copy")]),_:1})]),ne(U,{modelValue:d.value,"onUpdate:modelValue":m[4]||(m[4]=w=>d.value=w)},null,8,["modelValue"])]),te("div",i$e,[ne(P,{class:"background_blue left",style:{color:"#fff"},onClick:m[5]||(m[5]=w=>L())},{default:de(()=>[qt("前往云端服务")]),_:1}),ne(P,{class:"background_blue right",style:{color:"#fff"},onClick:m[6]||(m[6]=w=>p())},{default:de(()=>[qt("登出")]),_:1})])])):(B(),se("div",j0e,Q0e))]),_:1},8,["modelValue"])])}}},r$e="/assets/cocoblockly-navbar_labs-icon-6EIlABjy.png",_$e=te("div",{class:"el-dropdown-link",title:"实验室"},[te("span",{class:"header_right_title_span"},"实验室")],-1),l$e=[_$e],a$e={__name:"example",setup(t){return(e,o)=>(B(),se("div",null,l$e))}},c$e=["src"],T$e={style:{padding:"20px"}},E$e={class:"labs_card_p"},u$e=["href"],g$e={__name:"targetCard",props:{imgSrc:{type:String,default:""},linkSrc:{type:String,default:""},title:{type:String,default:""},comingSoon:{type:Boolean,default:!1}},emits:"getNextValue",setup(t,{emit:e}){const o=e,_=l=>{o("getNextValue",l)};return(l,c)=>{const T=gt("el-button"),E=gt("el-card");return B(),Ne(E,{style:{"border-radius":"10px"}},{default:de(()=>[te("img",{class:"labs_card_img",src:t.imgSrc,alt:""},null,8,c$e),te("div",T$e,[te("p",E$e,Qe(t.title),1),t.comingSoon?Ce("",!0):(B(),Ne(T,{key:0,type:"primary"},{default:de(()=>[t.linkSrc!=""?(B(),se("a",{key:0,href:t.linkSrc,target:"_Blank"},"进入",8,u$e)):(B(),se("span",{key:1,onClick:c[0]||(c[0]=u=>_(t.title))},"进入"))]),_:1}))])]),_:1})}}},zi=Ua(g$e,[["__scopeId","data-v-2b2dc34c"]]),d$e="/assets/AppCenter_ai_teachableMachine-kEyGJlcC.jpg",O$e="/assets/AppCenter_ai_emotion-y1kPDTeZ.jpg",h$e="/assets/AppCenter_ai_gesture_recognition-cqVjYw81.jpg",M$e="/assets/object_recognition_header-hNuf-pLj.jpg",R$e="/assets/posenet_recogition-enZUqhPU.png",I$e="/assets/tm_with_pose-IOGS0MIo.jpg",S$e="/assets/AppCenter_ai_speech-yiUdB6rq.jpg",BO="/assets/AppCenter_comingSoon-vNzRs8Zi.jpg",p$e={__name:"ai",setup(t){const e=X("first"),o=_=>{console.log(_)};return(_,l)=>{const c=gt("el-col"),T=gt("el-row"),E=gt("el-tab-pane"),u=gt("el-tabs");return B(),se("div",null,[ne(u,{modelValue:e.value,"onUpdate:modelValue":l[0]||(l[0]=d=>e.value=d),class:"demo-tabs",onTabClick:_.handleClick},{default:de(()=>[ne(E,{label:"视觉识别",name:"first"},{default:de(()=>[ne(T,{class:"el_row_card"},{default:de(()=>[ne(c,{span:12,class:"card_style"},{default:de(()=>[ne(zi,{imgSrc:M(d$e),linkSrc:"",title:"深度学习机器",onGetNextValue:o,comingSoon:!1},null,8,["imgSrc"])]),_:1}),ne(c,{span:12,class:"card_style"},{default:de(()=>[ne(zi,{imgSrc:M(O$e),linkSrc:"",title:"情绪识别",onGetNextValue:o,comingSoon:!1},null,8,["imgSrc"])]),_:1}),ne(c,{span:12,class:"card_style"},{default:de(()=>[ne(zi,{imgSrc:M(h$e),linkSrc:"",title:"手势识别",onGetNextValue:o,comingSoon:!1},null,8,["imgSrc"])]),_:1}),ne(c,{span:12,class:"card_style"},{default:de(()=>[ne(zi,{imgSrc:M(M$e),linkSrc:"",title:"物体识别",onGetNextValue:o,comingSoon:!1},null,8,["imgSrc"])]),_:1}),ne(c,{span:12,class:"card_style"},{default:de(()=>[ne(zi,{imgSrc:M(R$e),linkSrc:"",title:"姿态识别",onGetNextValue:o,comingSoon:!1},null,8,["imgSrc"])]),_:1}),ne(c,{span:12,class:"card_style"},{default:de(()=>[ne(zi,{imgSrc:M(I$e),linkSrc:"",title:"慧眼识人",onGetNextValue:o,comingSoon:!1},null,8,["imgSrc"])]),_:1})]),_:1})]),_:1}),ne(E,{label:"语音识别",name:"second"},{default:de(()=>[ne(T,{class:"el_row_card"},{default:de(()=>[ne(c,{span:12,class:"card_style"},{default:de(()=>[ne(zi,{imgSrc:M(S$e),linkSrc:"",title:"语音识别",onGetNextValue:o,comingSoon:!1},null,8,["imgSrc"])]),_:1})]),_:1})]),_:1}),ne(E,{label:"文本处理",name:"third"},{default:de(()=>[ne(T,{class:"el_row_card"},{default:de(()=>[ne(c,{span:12,class:"card_style"},{default:de(()=>[ne(zi,{imgSrc:M(BO),linkSrc:"",title:"敬请期待",onGetNextValue:o,comingSoon:!0},null,8,["imgSrc"])]),_:1})]),_:1})]),_:1})]),_:1},8,["modelValue","onTabClick"])])}}},L$e="/assets/AppCenter_iot_thingspeak-u1OGZcEl.jpg",f$e="/assets/AppCenter_iot_ifttt-WpVmSIVM.jpg",m$e={__name:"iot",setup(t){return(e,o)=>{const _=gt("el-col"),l=gt("el-row");return B(),se("div",null,[ne(l,{class:"el_row_card"},{default:de(()=>[ne(_,{span:12,class:"card_style"},{default:de(()=>[ne(zi,{imgSrc:M(L$e),linkSrc:"//thingspeak.com/",title:"ThingSpeak",onGetNextValue:e.getNextValue,comingSoon:!1},null,8,["imgSrc","linkSrc","onGetNextValue"])]),_:1}),ne(_,{span:12,class:"card_style"},{default:de(()=>[ne(zi,{imgSrc:M(f$e),linkSrc:"//ifttt.com/maker_webhooks",title:"IFTTT",onGetNextValue:e.getNextValue,comingSoon:!1},null,8,["imgSrc","linkSrc","onGetNextValue"])]),_:1})]),_:1})])}}},C$e={__name:"robotContro",setup(t){return(e,o)=>{const _=gt("el-col"),l=gt("el-row");return B(),se("div",null,[ne(l,{class:"el_row_card"},{default:de(()=>[ne(_,{span:12,class:"card_style"},{default:de(()=>[ne(zi,{imgSrc:M(BO),linkSrc:"//thingspeak.com/",title:"敬请期待",onGetNextValue:e.getNextValue,comingSoon:!0},null,8,["imgSrc","linkSrc","onGetNextValue"])]),_:1})]),_:1})])}}},A$e={__name:"science",setup(t){return(e,o)=>{const _=gt("el-col"),l=gt("el-row");return B(),se("div",null,[ne(l,{class:"el_row_card"},{default:de(()=>[ne(_,{span:12,class:"card_style"},{default:de(()=>[ne(zi,{imgSrc:M(BO),linkSrc:"//thingspeak.com/",title:"敬请期待",onGetNextValue:e.getNextValue,comingSoon:!0},null,8,["imgSrc","linkSrc","onGetNextValue"])]),_:1})]),_:1})])}}},b$e={__name:"interactiveGames",setup(t){return(e,o)=>{const _=gt("el-col"),l=gt("el-row");return B(),se("div",null,[ne(l,{class:"el_row_card"},{default:de(()=>[ne(_,{span:12,class:"card_style"},{default:de(()=>[ne(zi,{imgSrc:M(BO),linkSrc:"//thingspeak.com/",title:"敬请期待",onGetNextValue:e.getNextValue,comingSoon:!0},null,8,["imgSrc","linkSrc","onGetNextValue"])]),_:1})]),_:1})])}}},N$e={__name:"ARVR",setup(t){return(e,o)=>{const _=gt("el-col"),l=gt("el-row");return B(),se("div",null,[ne(l,{class:"el_row_card"},{default:de(()=>[ne(_,{span:12,class:"card_style"},{default:de(()=>[ne(zi,{imgSrc:M(BO),linkSrc:"//thingspeak.com/",title:"敬请期待",onGetNextValue:e.getNextValue,comingSoon:!0},null,8,["imgSrc","linkSrc","onGetNextValue"])]),_:1})]),_:1})])}}},P$e={class:"labs"},v$e=["src"],D$e=te("span",{class:"header_right_title_span"},"实验室",-1),U$e={class:"my-header"},y$e=te("span",{class:"labs_title"},"CocoBlockly Pi 实验室",-1),$$e=["onClick"],B$e=te("p",{class:"all_class"},"所有分类:",-1),w$e={class:"labs_class_left"},G$e={class:"labs_class_right"},k$e={key:0},H$e={key:1},x$e={key:2},F$e={key:3},V$e={key:4},W$e={key:5},X$e={__name:"labs",setup(t){const e=X(!1),o=X(1),_=X("人工智能"),l=(c,T)=>{o.value=c,_.value=T};return(c,T)=>{const E=gt("el-col"),u=gt("el-row"),d=gt("el-dialog");return B(),se("div",P$e,[te("div",{class:"el-dropdown-link",title:"实验室",onClick:T[0]||(T[0]=O=>e.value=!0)},[te("img",{src:M(r$e),alt:"",class:"header_right_icon left"},null,8,v$e),D$e]),ne(d,{modelValue:e.value,"onUpdate:modelValue":T[7]||(T[7]=O=>e.value=O),title:"",width:"820px","show-close":!1},{header:de(({close:O})=>[te("div",U$e,[y$e,te("i",{class:"material-icons right",style:{"margin-top":"5px",cursor:"pointer","margin-right":"-15px"},onClick:O},"close",8,$$e)])]),default:de(()=>[ne(u,{class:"labs_body"},{default:de(()=>[ne(E,{class:"labs_class_content",span:6},{default:de(()=>[B$e,te("ul",w$e,[te("li",{class:k(o.value==1?"active":""),onClick:T[1]||(T[1]=O=>l(1,"人工智能"))},"人工智能",2),te("li",{class:k(o.value==2?"active":""),onClick:T[2]||(T[2]=O=>l(2,"物联网"))},"物联网",2),te("li",{class:k(o.value==3?"active":""),onClick:T[3]||(T[3]=O=>l(3,"机器人控制"))},"机器人控制",2),te("li",{class:k(o.value==4?"active":""),onClick:T[4]||(T[4]=O=>l(4,"科学实验"))},"科学实验",2),te("li",{class:k(o.value==5?"active":""),onClick:T[5]||(T[5]=O=>l(5,"互动游戏"))},"互动游戏",2),te("li",{class:k(o.value==6?"active":""),onClick:T[6]||(T[6]=O=>l(6,"AR/VR"))},"AR/VR",2)])]),_:1}),ne(E,{span:18,style:{padding:"0 0.75rem"}},{default:de(()=>[te("h5",null,Qe(_.value),1),te("ul",G$e,[o.value==1?(B(),se("li",k$e,[ne(p$e)])):o.value==2?(B(),se("li",H$e,[ne(m$e)])):o.value==3?(B(),se("li",x$e,[ne(C$e)])):o.value==4?(B(),se("li",F$e,[ne(A$e)])):o.value==5?(B(),se("li",V$e,[ne(b$e)])):(B(),se("li",W$e,[ne(N$e)]))])]),_:1})]),_:1})]),_:1},8,["modelValue"])])}}},Y$e="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADIAAAAyCAYAAAAeP4ixAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyZpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMTM4IDc5LjE1OTgyNCwgMjAxNi8wOS8xNC0wMTowOTowMSAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTcgKFdpbmRvd3MpIiB4bXBNTTpJbnN0YW5jZUlEPSJ4bXAuaWlkOjI5ODc2NTBBMDUyMDExRUFBMDAzRjA0RjhCREU5OTgyIiB4bXBNTTpEb2N1bWVudElEPSJ4bXAuZGlkOjI5ODc2NTBCMDUyMDExRUFBMDAzRjA0RjhCREU5OTgyIj4gPHhtcE1NOkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6Mjk4NzY1MDgwNTIwMTFFQUEwMDNGMDRGOEJERTk5ODIiIHN0UmVmOmRvY3VtZW50SUQ9InhtcC5kaWQ6Mjk4NzY1MDkwNTIwMTFFQUEwMDNGMDRGOEJERTk5ODIiLz4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+IDw/eHBhY2tldCBlbmQ9InIiPz6e2tSKAAADhElEQVR42uyaXUgUURTHd3VNDc2iVDILNPqgQAuEoDAsiQqK7OuhEosSoQyjXiKiiN6CeioqkaRAESTIh7Soh4IKRCrIiKKgyNK+FCwry3Sn/4W7cDrMx87snZlN9sAPZu459+79z71zv2aDmqYFxoMlBcaJJYQkhMSxkHLwFrwCfaDaDyEhBWVkgFnkPu9/bZFPFve+tEg+SLWRPwwWsLRCUGDzIY2A98DxpBZkE+ITUOTDAx0E88BnVV1rgk+DzmSQovIdyfJxBA2qfEfawFwwrKhy4h2aAkpJWif4QiouesFQrL8Z9GDRWAPq5fV3kKPwQXk6sx8g19fcEOGFkFVseK6Ph5l9EcgFP0EyuA9GLfIcI9f3wAPXHpl4R6Jki/avHbeIX8PiV9j4LdvYzXCbVOwXKDCJ7Saxd90U4UTIQjBGKthuEHeCtcayeBMiuMgquY35i5m/MYoyN4N9YC/YDoJeCMkGX0lF/4Ai6UsDL4lvCEyyKI8LF1Zqt15Ohl8xK1ewka9VrnobwRziqwXfLMrT24hVuTlqcY6ypzjC7puiKCMEPuq0iGjxTLe7FqVZ07fHIDWK/Os0Y6v0UkgWGNWpREmU+VtNhNzwUkgLCOtUQsw3uRZ5c+RAEbEOcIvcj1rMU8qEXNfM7Q2YaZK/jsXPAHks7YibQpIMRDSAQZbWY/JUO0ncB5L+jqQ/dUtISHYBblXSX67j65VzBV8h0C55ivjOsPxLVAtJkS8gtz0sbr1OzHM5WUZiTjP/YuIrYb7zKoWIofSmTgV3G8RvYHFXZZeMPJAe4uu26Hb9IF2FkFS26jVqCU4FiS0j6atZOYd18u5nMVtjFZJmIKI6ypasBV2kNQJyxqergQyDAWWAxLVZ/ZbZ4YNYO10CZTqHCQ02VkFTwYC8zpYH3unkhLFZbrkj6z5Rod9gI5gm08T9bNDrZK11UKclamKcQGs053bIadeaCC4oFBGQO0Wn9shp14rYZfAanIzxeGA+eEa60Bj4YXKSI/yZzF8Mup2eouxSdM6xg1VqE3hoIiQsK97B9i51qvcjdkhmO8cXNvJ2kXx9bASMaYfoxJaznWOTjbwt5Ho6WOvnx9BKdn/FRt5W2c0ittOvrpXPRp87DspoZ2UU8piQB62xFPTLr1LiE8JZB2Wck1/ShuUkuVKOpJ5+Vkj8YSAhJCEkIUSd/RVgAD59DGaapxy6AAAAAElFTkSuQmCC",K$e={class:"el-dropdown-link",title:"语言设定"},z$e=["src"],Z$e=te("span",{class:"header_right_title_span"},"语言",-1),j$e={__name:"languareSwitch",setup(t){return(e,o)=>{const _=gt("el-dropdown-item"),l=gt("el-dropdown-menu"),c=gt("el-dropdown");return B(),Ne(c,{trigger:"click"},{dropdown:de(()=>[ne(l,null,{default:de(()=>[ne(_,{class:"header_menu_li",style:{color:"#26a69a"}},{default:de(()=>[qt("Englsh")]),_:1}),ne(_,{class:"header_menu_li",style:{color:"#26a69a"}},{default:de(()=>[qt("中文繁體")]),_:1}),ne(_,{class:"header_menu_li",style:{color:"#26a69a"}},{default:de(()=>[qt("中文简体")]),_:1})]),_:1})]),default:de(()=>[te("div",K$e,[te("img",{src:M(Y$e),alt:"",class:"header_right_icon left"},null,8,z$e),Z$e])]),_:1})}}},q$e="/assets/local_storage-RdZXse2B.png",Q$e={class:"el-dropdown-link",title:"文件"},J$e=["src"],e1e=te("span",{class:"header_right_title_span"},"文件",-1),t1e={__name:"fIleOperation",props:{exportImportFileName:{type:String}},emits:["setFileName"],setup(t,{emit:e}){const o=t,_=e,l=zc.useyXmlStore(),c=zc.useImportFileNameStore(),T=()=>{console.log("云端存储")},E=()=>{console.log("导入xml文件",c),c.$patch({fileName:"2222"}),_("setFileName","22")},u=()=>{let d=o.exportImportFileName+".xml";l.xmlStr&&l.xmlStr!='<xml xmlns="https://developers.google.com/blockly/xml"></xml>'?F4(l.xmlStr,d):tp({message:"导出内容为空",type:"warning"})};return(d,O)=>{const h=gt("el-dropdown-item"),I=gt("el-dropdown-menu"),S=gt("el-dropdown");return B(),Ne(S,{trigger:"click"},{dropdown:de(()=>[ne(I,null,{default:de(()=>[ne(h,{class:"header_menu_li",onClick:O[0]||(O[0]=L=>T()),style:{color:"#26a69a"}},{default:de(()=>[qt("云端存储")]),_:1}),ne(h,{class:"header_menu_li",onClick:O[1]||(O[1]=L=>E()),style:{color:"#26a69a"}},{default:de(()=>[qt("导入")]),_:1}),ne(h,{class:"header_menu_li",onClick:O[2]||(O[2]=L=>u()),style:{color:"#26a69a"}},{default:de(()=>[qt("导出")]),_:1})]),_:1})]),default:de(()=>[te("div",Q$e,[te("img",{src:M(q$e),alt:"",class:"header_right_icon left"},null,8,J$e),e1e])]),_:1})}}},o1e="/assets/learn_nav_icon-uetDIr7g.png",s1e={class:"el-dropdown-link",title:"学习"},i1e=["src"],n1e=te("span",{class:"header_right_title_span"},"学习",-1),r1e=te("a",{href:"//edu.cocorobo.cn/",target:"_blank",rel:"noopener noreferrer"},"前往教学平台",-1),_1e=te("a",{href:"//xunlian.cocorobo.cn",target:"_blank",rel:"noopener noreferrer"},"学习人工智能:训练平台",-1),l1e=te("a",{href:"//biaoji.cocorobo.cn/",target:"_blank",rel:"noopener noreferrer"},"学习人工智能:标记平台",-1),a1e=te("a",{href:"//aihub.cocorobo.cn",target:"_blank",rel:"noopener noreferrer"},"学习人工智能: 原理",-1),c1e=te("a",{href:"//aihub.cocorobo.cn/vision",target:"_blank",rel:"noopener noreferrer"},"学习人工智能: 视觉处理",-1),T1e=te("a",{href:"//aihub.cocorobo.cn/speech",target:"_blank",rel:"noopener noreferrer"},"学习人工智能: 语音识别",-1),E1e=te("a",{href:"//aihub.cocorobo.cn/text",target:"_blank",rel:"noopener noreferrer"},"学习人工智能: 文本分析",-1),u1e=te("a",{href:"//aihub.cocorobo.cn/art",target:"_blank",rel:"noopener noreferrer"},"学习人工智能: 艺术",-1),g1e={__name:"linkStudy",setup(t){return(e,o)=>{const _=gt("el-dropdown-item"),l=gt("el-dropdown-menu"),c=gt("el-dropdown");return B(),Ne(c,{trigger:"click"},{dropdown:de(()=>[ne(l,{class:"link_stydy"},{default:de(()=>[ne(_,{class:"header_menu_li",style:{color:"#26a69a"}},{default:de(()=>[r1e]),_:1}),ne(_,{class:"header_menu_li",style:{color:"#26a69a"}},{default:de(()=>[_1e]),_:1}),ne(_,{class:"header_menu_li",style:{color:"#26a69a"}},{default:de(()=>[l1e]),_:1}),ne(_,{class:"header_menu_li",style:{color:"#26a69a"}},{default:de(()=>[a1e]),_:1}),ne(_,{class:"header_menu_li",style:{color:"#26a69a"}},{default:de(()=>[c1e]),_:1}),ne(_,{class:"header_menu_li",style:{color:"#26a69a"}},{default:de(()=>[T1e]),_:1}),ne(_,{class:"header_menu_li",style:{color:"#26a69a"}},{default:de(()=>[E1e]),_:1}),ne(_,{class:"header_menu_li",style:{color:"#26a69a"}},{default:de(()=>[u1e]),_:1})]),_:1})]),default:de(()=>[te("div",s1e,[te("img",{src:M(o1e),alt:"",class:"header_right_icon left"},null,8,i1e),n1e])]),_:1})}}},d1e={class:"headerRight"},O1e={class:"example headerRightDiv"},h1e={class:"headerRightDiv"},M1e={class:"study headerRightDiv"},R1e={class:"file headerRightDiv"},I1e={class:"lang headerRightDiv"},S1e={class:"user headerRightDiv"},p1e={__name:"headerRight",setup(t){return(e,o)=>(B(),se("div",d1e,[te("div",O1e,[ne(a$e)]),te("div",h1e,[ne(X$e)]),te("div",M1e,[ne(g1e)]),te("div",R1e,[ne(t1e,wn(iO(e.$attrs)),null,16)]),te("div",I1e,[ne(j$e)]),te("div",S1e,[ne(n$e)])]))}},L1e=Ua(p1e,[["__scopeId","data-v-0452c050"]]),f1e={id:"header"},m1e={class:"header-left"},C1e={class:"header-right"},A1e={__name:"header",setup(t){const e=X("未命名"),o=_=>{e.value=_};return(_,l)=>(B(),se("div",f1e,[te("div",m1e,[ne(Lye,{onSetFileName:o,exportImportFileName:e.value},null,8,["exportImportFileName"])]),te("div",C1e,[ne(L1e,{onSetFileName:o,exportImportFileName:e.value},null,8,["exportImportFileName"])])]))}},b1e=Ua(A1e,[["__scopeId","data-v-56d17be1"]]),N1e="/assets/nav_help-bsnNaGyc.png",Cr=t=>(Gx("data-v-3ff6fe80"),t=t(),kx(),t),P1e={class:"footer"},v1e=Cr(()=>te("div",null,[te("span",{class:"translatable_copyright_left",style:{color:"#fff"}},"可可乐博(深圳)科技有限公司 © "),te("span",{id:"copyright_middle",style:{color:"#fff"}}," 2023"),te("span",{class:"translatable_copyright_right",style:{color:"#fff"}},"版权所有")],-1)),D1e={style:{}},U1e=Cr(()=>te("span",{class:"translatable_update_logs",style:{color:"#fff"}},"更新日志",-1)),y1e=Cr(()=>te("i",{class:"material-icons sketch_name_icon",style:{"margin-left":"5px",cursor:"pointer",position:"relative",top:"7px"}},"message",-1)),$1e=[U1e,y1e],B1e=Cr(()=>te("span",{class:"vertical-separator",style:{padding:"4px 6px 4px 6px"}},null,-1)),w1e={id:"help",target:"_blank",href:"//pi-help.cocorobo.cn",style:{position:"relative"}},G1e=Cr(()=>te("span",{class:"translatable_help_board",style:{color:"#fff"}},"Help",-1)),k1e=["src"],H1e=Cr(()=>te("span",{class:"vertical-separator",style:{padding:"4px 6px 4px 6px"}},null,-1)),x1e=Cr(()=>te("span",null,"CocoBlockly Pi",-1)),F1e=Cr(()=>te("div",null,"111111111",-1)),V1e=Cr(()=>te("div",null,"111111111",-1)),W1e=Cr(()=>te("div",null,"111111111",-1)),X1e=Cr(()=>te("div",null,"111111111",-1)),Y1e={__name:"footer",setup(t){const e=X(!1);return(o,_)=>{const l=gt("el-dialog");return B(),se(ht,null,[te("div",P1e,[v1e,te("div",D1e,[te("span",{onClick:_[0]||(_[0]=c=>e.value=!0),style:{cursor:"pointer"}},$1e),B1e,te("span",null,[te("a",w1e,[G1e,te("img",{class:"nav-icon",src:M(N1e),style:{height:"20px","margin-left":"5px",position:"relative",top:"-8px"}},null,8,k1e)])]),H1e,x1e])]),ne(l,{modelValue:e.value,"onUpdate:modelValue":_[1]||(_[1]=c=>e.value=c),title:"更新日志"},{default:de(()=>[F1e,V1e,W1e,X1e]),_:1},8,["modelValue"])],64)}}},K1e=Ua(Y1e,[["__scopeId","data-v-3ff6fe80"]]),z1e={__name:"connect",setup(t){const e=()=>{};return(o,_)=>(B(),se("div",null,[te("div",{style:{cursor:"pointer"},onClick:_[0]||(_[0]=l=>e())},"连接")]))}},Z1e={class:"main"},j1e={id:"blockly"},q1e={__name:"App",setup(t){const e=zc.useyXmlStore(),o=zc.useyPythonCodeStore();return qs(()=>{console.log(e.xmlStr,o.pythonCode)}),(_,l)=>(B(),se("div",Z1e,[ne(b1e),te("div",j1e,[ne(yTe)]),ne(K1e),ne(z1e)]))}},cz=Ua(q1e,[["__scopeId","data-v-c89b2385"]]);/*!
- * vue-router v4.2.5
- * (c) 2023 Eduardo San Martin Morote
- * @license MIT
- */const hE=typeof window<"u";function Q1e(t){return t.__esModule||t[Symbol.toStringTag]==="Module"}const Xo=Object.assign;function uA(t,e){const o={};for(const _ in e){const l=e[_];o[_]=Ir(l)?l.map(t):t(l)}return o}const _d=()=>{},Ir=Array.isArray,J1e=/\/$/,eBe=t=>t.replace(J1e,"");function gA(t,e,o="/"){let _,l={},c="",T="";const E=e.indexOf("#");let u=e.indexOf("?");return E<u&&E>=0&&(u=-1),u>-1&&(_=e.slice(0,u),c=e.slice(u+1,E>-1?E:e.length),l=t(c)),E>-1&&(_=_||e.slice(0,E),T=e.slice(E,e.length)),_=iBe(_??e,o),{fullPath:_+(c&&"?")+c+T,path:_,query:l,hash:T}}function tBe(t,e){const o=e.query?t(e.query):"";return e.path+(o&&"?")+o+(e.hash||"")}function KH(t,e){return!e||!t.toLowerCase().startsWith(e.toLowerCase())?t:t.slice(e.length)||"/"}function oBe(t,e,o){const _=e.matched.length-1,l=o.matched.length-1;return _>-1&&_===l&&du(e.matched[_],o.matched[l])&&Tz(e.params,o.params)&&t(e.query)===t(o.query)&&e.hash===o.hash}function du(t,e){return(t.aliasOf||t)===(e.aliasOf||e)}function Tz(t,e){if(Object.keys(t).length!==Object.keys(e).length)return!1;for(const o in t)if(!sBe(t[o],e[o]))return!1;return!0}function sBe(t,e){return Ir(t)?zH(t,e):Ir(e)?zH(e,t):t===e}function zH(t,e){return Ir(e)?t.length===e.length&&t.every((o,_)=>o===e[_]):t.length===1&&t[0]===e}function iBe(t,e){if(t.startsWith("/"))return t;if(!t)return e;const o=e.split("/"),_=t.split("/"),l=_[_.length-1];(l===".."||l===".")&&_.push("");let c=o.length-1,T,E;for(T=0;T<_.length;T++)if(E=_[T],E!==".")if(E==="..")c>1&&c--;else break;return o.slice(0,c).join("/")+"/"+_.slice(T-(T===_.length?1:0)).join("/")}var tO;(function(t){t.pop="pop",t.push="push"})(tO||(tO={}));var ld;(function(t){t.back="back",t.forward="forward",t.unknown=""})(ld||(ld={}));function nBe(t){if(!t)if(hE){const e=document.querySelector("base");t=e&&e.getAttribute("href")||"/",t=t.replace(/^\w+:\/\/[^\/]+/,"")}else t="/";return t[0]!=="/"&&t[0]!=="#"&&(t="/"+t),eBe(t)}const rBe=/^[^#]+#/;function _Be(t,e){return t.replace(rBe,"#")+e}function lBe(t,e){const o=document.documentElement.getBoundingClientRect(),_=t.getBoundingClientRect();return{behavior:e.behavior,left:_.left-o.left-(e.left||0),top:_.top-o.top-(e.top||0)}}const _p=()=>({left:window.pageXOffset,top:window.pageYOffset});function aBe(t){let e;if("el"in t){const o=t.el,_=typeof o=="string"&&o.startsWith("#"),l=typeof o=="string"?_?document.getElementById(o.slice(1)):document.querySelector(o):o;if(!l)return;e=lBe(l,t)}else e=t;"scrollBehavior"in document.documentElement.style?window.scrollTo(e):window.scrollTo(e.left!=null?e.left:window.pageXOffset,e.top!=null?e.top:window.pageYOffset)}function ZH(t,e){return(history.state?history.state.position-e:-1)+t}const VN=new Map;function cBe(t,e){VN.set(t,e)}function TBe(t){const e=VN.get(t);return VN.delete(t),e}let EBe=()=>location.protocol+"//"+location.host;function Ez(t,e){const{pathname:o,search:_,hash:l}=e,c=t.indexOf("#");if(c>-1){let E=l.includes(t.slice(c))?t.slice(c).length:1,u=l.slice(E);return u[0]!=="/"&&(u="/"+u),KH(u,"")}return KH(o,t)+_+l}function uBe(t,e,o,_){let l=[],c=[],T=null;const E=({state:I})=>{const S=Ez(t,location),L=o.value,p=e.value;let C=0;if(I){if(o.value=S,e.value=I,T&&T===L){T=null;return}C=p?I.position-p.position:0}else _(S);l.forEach(m=>{m(o.value,L,{delta:C,type:tO.pop,direction:C?C>0?ld.forward:ld.back:ld.unknown})})};function u(){T=o.value}function d(I){l.push(I);const S=()=>{const L=l.indexOf(I);L>-1&&l.splice(L,1)};return c.push(S),S}function O(){const{history:I}=window;I.state&&I.replaceState(Xo({},I.state,{scroll:_p()}),"")}function h(){for(const I of c)I();c=[],window.removeEventListener("popstate",E),window.removeEventListener("beforeunload",O)}return window.addEventListener("popstate",E),window.addEventListener("beforeunload",O,{passive:!0}),{pauseListeners:u,listen:d,destroy:h}}function jH(t,e,o,_=!1,l=!1){return{back:t,current:e,forward:o,replaced:_,position:window.history.length,scroll:l?_p():null}}function gBe(t){const{history:e,location:o}=window,_={value:Ez(t,o)},l={value:e.state};l.value||c(_.value,{back:null,current:_.value,forward:null,position:e.length-1,replaced:!0,scroll:null},!0);function c(u,d,O){const h=t.indexOf("#"),I=h>-1?(o.host&&document.querySelector("base")?t:t.slice(h))+u:EBe()+t+u;try{e[O?"replaceState":"pushState"](d,"",I),l.value=d}catch(S){console.error(S),o[O?"replace":"assign"](I)}}function T(u,d){const O=Xo({},e.state,jH(l.value.back,u,l.value.forward,!0),d,{position:l.value.position});c(u,O,!0),_.value=u}function E(u,d){const O=Xo({},l.value,e.state,{forward:u,scroll:_p()});c(O.current,O,!0);const h=Xo({},jH(_.value,u,null),{position:O.position+1},d);c(u,h,!1),_.value=u}return{location:_,state:l,push:E,replace:T}}function dBe(t){t=nBe(t);const e=gBe(t),o=uBe(t,e.state,e.location,e.replace);function _(c,T=!0){T||o.pauseListeners(),history.go(c)}const l=Xo({location:"",base:t,go:_,createHref:_Be.bind(null,t)},e,o);return Object.defineProperty(l,"location",{enumerable:!0,get:()=>e.location.value}),Object.defineProperty(l,"state",{enumerable:!0,get:()=>e.state.value}),l}function OBe(t){return typeof t=="string"||t&&typeof t=="object"}function uz(t){return typeof t=="string"||typeof t=="symbol"}const wl={path:"/",name:void 0,params:{},query:{},hash:"",fullPath:"/",matched:[],meta:{},redirectedFrom:void 0},gz=Symbol("");var qH;(function(t){t[t.aborted=4]="aborted",t[t.cancelled=8]="cancelled",t[t.duplicated=16]="duplicated"})(qH||(qH={}));function Ou(t,e){return Xo(new Error,{type:t,[gz]:!0},e)}function x_(t,e){return t instanceof Error&&gz in t&&(e==null||!!(t.type&e))}const QH="[^/]+?",hBe={sensitive:!1,strict:!1,start:!0,end:!0},MBe=/[.+*?^${}()[\]/\\]/g;function RBe(t,e){const o=Xo({},hBe,e),_=[];let l=o.start?"^":"";const c=[];for(const d of t){const O=d.length?[]:[90];o.strict&&!d.length&&(l+="/");for(let h=0;h<d.length;h++){const I=d[h];let S=40+(o.sensitive?.25:0);if(I.type===0)h||(l+="/"),l+=I.value.replace(MBe,"\\$&"),S+=40;else if(I.type===1){const{value:L,repeatable:p,optional:C,regexp:m}=I;c.push({name:L,repeatable:p,optional:C});const A=m||QH;if(A!==QH){S+=10;try{new RegExp(`(${A})`)}catch(N){throw new Error(`Invalid custom RegExp for param "${L}" (${A}): `+N.message)}}let b=p?`((?:${A})(?:/(?:${A}))*)`:`(${A})`;h||(b=C&&d.length<2?`(?:/${b})`:"/"+b),C&&(b+="?"),l+=b,S+=20,C&&(S+=-8),p&&(S+=-20),A===".*"&&(S+=-50)}O.push(S)}_.push(O)}if(o.strict&&o.end){const d=_.length-1;_[d][_[d].length-1]+=.7000000000000001}o.strict||(l+="/?"),o.end?l+="$":o.strict&&(l+="(?:/|$)");const T=new RegExp(l,o.sensitive?"":"i");function E(d){const O=d.match(T),h={};if(!O)return null;for(let I=1;I<O.length;I++){const S=O[I]||"",L=c[I-1];h[L.name]=S&&L.repeatable?S.split("/"):S}return h}function u(d){let O="",h=!1;for(const I of t){(!h||!O.endsWith("/"))&&(O+="/"),h=!1;for(const S of I)if(S.type===0)O+=S.value;else if(S.type===1){const{value:L,repeatable:p,optional:C}=S,m=L in d?d[L]:"";if(Ir(m)&&!p)throw new Error(`Provided param "${L}" is an array but it is not repeatable (* or + modifiers)`);const A=Ir(m)?m.join("/"):m;if(!A)if(C)I.length<2&&(O.endsWith("/")?O=O.slice(0,-1):h=!0);else throw new Error(`Missing required param "${L}"`);O+=A}}return O||"/"}return{re:T,score:_,keys:c,parse:E,stringify:u}}function IBe(t,e){let o=0;for(;o<t.length&&o<e.length;){const _=e[o]-t[o];if(_)return _;o++}return t.length<e.length?t.length===1&&t[0]===80?-1:1:t.length>e.length?e.length===1&&e[0]===80?1:-1:0}function SBe(t,e){let o=0;const _=t.score,l=e.score;for(;o<_.length&&o<l.length;){const c=IBe(_[o],l[o]);if(c)return c;o++}if(Math.abs(l.length-_.length)===1){if(JH(_))return 1;if(JH(l))return-1}return l.length-_.length}function JH(t){const e=t[t.length-1];return t.length>0&&e[e.length-1]<0}const pBe={type:0,value:""},LBe=/[a-zA-Z0-9_]/;function fBe(t){if(!t)return[[]];if(t==="/")return[[pBe]];if(!t.startsWith("/"))throw new Error(`Invalid path "${t}"`);function e(S){throw new Error(`ERR (${o})/"${d}": ${S}`)}let o=0,_=o;const l=[];let c;function T(){c&&l.push(c),c=[]}let E=0,u,d="",O="";function h(){d&&(o===0?c.push({type:0,value:d}):o===1||o===2||o===3?(c.length>1&&(u==="*"||u==="+")&&e(`A repeatable param (${d}) must be alone in its segment. eg: '/:ids+.`),c.push({type:1,value:d,regexp:O,repeatable:u==="*"||u==="+",optional:u==="*"||u==="?"})):e("Invalid state to consume buffer"),d="")}function I(){d+=u}for(;E<t.length;){if(u=t[E++],u==="\\"&&o!==2){_=o,o=4;continue}switch(o){case 0:u==="/"?(d&&h(),T()):u===":"?(h(),o=1):I();break;case 4:I(),o=_;break;case 1:u==="("?o=2:LBe.test(u)?I():(h(),o=0,u!=="*"&&u!=="?"&&u!=="+"&&E--);break;case 2:u===")"?O[O.length-1]=="\\"?O=O.slice(0,-1)+u:o=3:O+=u;break;case 3:h(),o=0,u!=="*"&&u!=="?"&&u!=="+"&&E--,O="";break;default:e("Unknown state");break}}return o===2&&e(`Unfinished custom RegExp for param "${d}"`),h(),T(),l}function mBe(t,e,o){const _=RBe(fBe(t.path),o),l=Xo(_,{record:t,parent:e,children:[],alias:[]});return e&&!l.record.aliasOf==!e.record.aliasOf&&e.children.push(l),l}function CBe(t,e){const o=[],_=new Map;e=ox({strict:!1,end:!0,sensitive:!1},e);function l(O){return _.get(O)}function c(O,h,I){const S=!I,L=ABe(O);L.aliasOf=I&&I.record;const p=ox(e,O),C=[L];if("alias"in O){const b=typeof O.alias=="string"?[O.alias]:O.alias;for(const N of b)C.push(Xo({},L,{components:I?I.record.components:L.components,path:N,aliasOf:I?I.record:L}))}let m,A;for(const b of C){const{path:N}=b;if(h&&N[0]!=="/"){const U=h.record.path,P=U[U.length-1]==="/"?"":"/";b.path=h.record.path+(N&&P+N)}if(m=mBe(b,h,p),I?I.alias.push(m):(A=A||m,A!==m&&A.alias.push(m),S&&O.name&&!tx(m)&&T(O.name)),L.children){const U=L.children;for(let P=0;P<U.length;P++)c(U[P],m,I&&I.children[P])}I=I||m,(m.record.components&&Object.keys(m.record.components).length||m.record.name||m.record.redirect)&&u(m)}return A?()=>{T(A)}:_d}function T(O){if(uz(O)){const h=_.get(O);h&&(_.delete(O),o.splice(o.indexOf(h),1),h.children.forEach(T),h.alias.forEach(T))}else{const h=o.indexOf(O);h>-1&&(o.splice(h,1),O.record.name&&_.delete(O.record.name),O.children.forEach(T),O.alias.forEach(T))}}function E(){return o}function u(O){let h=0;for(;h<o.length&&SBe(O,o[h])>=0&&(O.record.path!==o[h].record.path||!dz(O,o[h]));)h++;o.splice(h,0,O),O.record.name&&!tx(O)&&_.set(O.record.name,O)}function d(O,h){let I,S={},L,p;if("name"in O&&O.name){if(I=_.get(O.name),!I)throw Ou(1,{location:O});p=I.record.name,S=Xo(ex(h.params,I.keys.filter(A=>!A.optional).map(A=>A.name)),O.params&&ex(O.params,I.keys.map(A=>A.name))),L=I.stringify(S)}else if("path"in O)L=O.path,I=o.find(A=>A.re.test(L)),I&&(S=I.parse(L),p=I.record.name);else{if(I=h.name?_.get(h.name):o.find(A=>A.re.test(h.path)),!I)throw Ou(1,{location:O,currentLocation:h});p=I.record.name,S=Xo({},h.params,O.params),L=I.stringify(S)}const C=[];let m=I;for(;m;)C.unshift(m.record),m=m.parent;return{name:p,path:L,params:S,matched:C,meta:NBe(C)}}return t.forEach(O=>c(O)),{addRoute:c,resolve:d,removeRoute:T,getRoutes:E,getRecordMatcher:l}}function ex(t,e){const o={};for(const _ of e)_ in t&&(o[_]=t[_]);return o}function ABe(t){return{path:t.path,redirect:t.redirect,name:t.name,meta:t.meta||{},aliasOf:void 0,beforeEnter:t.beforeEnter,props:bBe(t),children:t.children||[],instances:{},leaveGuards:new Set,updateGuards:new Set,enterCallbacks:{},components:"components"in t?t.components||null:t.component&&{default:t.component}}}function bBe(t){const e={},o=t.props||!1;if("component"in t)e.default=o;else for(const _ in t.components)e[_]=typeof o=="object"?o[_]:o;return e}function tx(t){for(;t;){if(t.record.aliasOf)return!0;t=t.parent}return!1}function NBe(t){return t.reduce((e,o)=>Xo(e,o.meta),{})}function ox(t,e){const o={};for(const _ in t)o[_]=_ in e?e[_]:t[_];return o}function dz(t,e){return e.children.some(o=>o===t||dz(t,o))}const Oz=/#/g,PBe=/&/g,vBe=/\//g,DBe=/=/g,UBe=/\?/g,hz=/\+/g,yBe=/%5B/g,$Be=/%5D/g,Mz=/%5E/g,BBe=/%60/g,Rz=/%7B/g,wBe=/%7C/g,Iz=/%7D/g,GBe=/%20/g;function HD(t){return encodeURI(""+t).replace(wBe,"|").replace(yBe,"[").replace($Be,"]")}function kBe(t){return HD(t).replace(Rz,"{").replace(Iz,"}").replace(Mz,"^")}function WN(t){return HD(t).replace(hz,"%2B").replace(GBe,"+").replace(Oz,"%23").replace(PBe,"%26").replace(BBe,"`").replace(Rz,"{").replace(Iz,"}").replace(Mz,"^")}function HBe(t){return WN(t).replace(DBe,"%3D")}function xBe(t){return HD(t).replace(Oz,"%23").replace(UBe,"%3F")}function FBe(t){return t==null?"":xBe(t).replace(vBe,"%2F")}function zI(t){try{return decodeURIComponent(""+t)}catch{}return""+t}function VBe(t){const e={};if(t===""||t==="?")return e;const _=(t[0]==="?"?t.slice(1):t).split("&");for(let l=0;l<_.length;++l){const c=_[l].replace(hz," "),T=c.indexOf("="),E=zI(T<0?c:c.slice(0,T)),u=T<0?null:zI(c.slice(T+1));if(E in e){let d=e[E];Ir(d)||(d=e[E]=[d]),d.push(u)}else e[E]=u}return e}function sx(t){let e="";for(let o in t){const _=t[o];if(o=HBe(o),_==null){_!==void 0&&(e+=(e.length?"&":"")+o);continue}(Ir(_)?_.map(c=>c&&WN(c)):[_&&WN(_)]).forEach(c=>{c!==void 0&&(e+=(e.length?"&":"")+o,c!=null&&(e+="="+c))})}return e}function WBe(t){const e={};for(const o in t){const _=t[o];_!==void 0&&(e[o]=Ir(_)?_.map(l=>l==null?null:""+l):_==null?_:""+_)}return e}const XBe=Symbol(""),ix=Symbol(""),xD=Symbol(""),Sz=Symbol(""),XN=Symbol("");function Ug(){let t=[];function e(_){return t.push(_),()=>{const l=t.indexOf(_);l>-1&&t.splice(l,1)}}function o(){t=[]}return{add:e,list:()=>t.slice(),reset:o}}function jl(t,e,o,_,l){const c=_&&(_.enterCallbacks[l]=_.enterCallbacks[l]||[]);return()=>new Promise((T,E)=>{const u=h=>{h===!1?E(Ou(4,{from:o,to:e})):h instanceof Error?E(h):OBe(h)?E(Ou(2,{from:e,to:h})):(c&&_.enterCallbacks[l]===c&&typeof h=="function"&&c.push(h),T())},d=t.call(_&&_.instances[l],e,o,u);let O=Promise.resolve(d);t.length<3&&(O=O.then(u)),O.catch(h=>E(h))})}function dA(t,e,o,_){const l=[];for(const c of t)for(const T in c.components){let E=c.components[T];if(!(e!=="beforeRouteEnter"&&!c.instances[T]))if(YBe(E)){const d=(E.__vccOpts||E)[e];d&&l.push(jl(d,o,_,c,T))}else{let u=E();l.push(()=>u.then(d=>{if(!d)return Promise.reject(new Error(`Couldn't resolve component "${T}" at "${c.path}"`));const O=Q1e(d)?d.default:d;c.components[T]=O;const I=(O.__vccOpts||O)[e];return I&&jl(I,o,_,c,T)()}))}}return l}function YBe(t){return typeof t=="object"||"displayName"in t||"props"in t||"__vccOpts"in t}function nx(t){const e=lt(xD),o=lt(Sz),_=v(()=>e.resolve(M(t.to))),l=v(()=>{const{matched:u}=_.value,{length:d}=u,O=u[d-1],h=o.matched;if(!O||!h.length)return-1;const I=h.findIndex(du.bind(null,O));if(I>-1)return I;const S=rx(u[d-2]);return d>1&&rx(O)===S&&h[h.length-1].path!==S?h.findIndex(du.bind(null,u[d-2])):I}),c=v(()=>l.value>-1&&jBe(o.params,_.value.params)),T=v(()=>l.value>-1&&l.value===o.matched.length-1&&Tz(o.params,_.value.params));function E(u={}){return ZBe(u)?e[M(t.replace)?"replace":"push"](M(t.to)).catch(_d):Promise.resolve()}return{route:_,href:v(()=>_.value.href),isActive:c,isExactActive:T,navigate:E}}const KBe=Oe({name:"RouterLink",compatConfig:{MODE:3},props:{to:{type:[String,Object],required:!0},replace:Boolean,activeClass:String,exactActiveClass:String,custom:Boolean,ariaCurrentValue:{type:String,default:"page"}},useLink:nx,setup(t,{slots:e}){const o=Eo(nx(t)),{options:_}=lt(xD),l=v(()=>({[_x(t.activeClass,_.linkActiveClass,"router-link-active")]:o.isActive,[_x(t.exactActiveClass,_.linkExactActiveClass,"router-link-exact-active")]:o.isExactActive}));return()=>{const c=e.default&&e.default(o);return t.custom?c:pt("a",{"aria-current":o.isExactActive?t.ariaCurrentValue:null,href:o.href,onClick:o.navigate,class:l.value},c)}}}),zBe=KBe;function ZBe(t){if(!(t.metaKey||t.altKey||t.ctrlKey||t.shiftKey)&&!t.defaultPrevented&&!(t.button!==void 0&&t.button!==0)){if(t.currentTarget&&t.currentTarget.getAttribute){const e=t.currentTarget.getAttribute("target");if(/\b_blank\b/i.test(e))return}return t.preventDefault&&t.preventDefault(),!0}}function jBe(t,e){for(const o in e){const _=e[o],l=t[o];if(typeof _=="string"){if(_!==l)return!1}else if(!Ir(l)||l.length!==_.length||_.some((c,T)=>c!==l[T]))return!1}return!0}function rx(t){return t?t.aliasOf?t.aliasOf.path:t.path:""}const _x=(t,e,o)=>t??e??o,qBe=Oe({name:"RouterView",inheritAttrs:!1,props:{name:{type:String,default:"default"},route:Object},compatConfig:{MODE:3},setup(t,{attrs:e,slots:o}){const _=lt(XN),l=v(()=>t.route||_.value),c=lt(ix,0),T=v(()=>{let d=M(c);const{matched:O}=l.value;let h;for(;(h=O[d])&&!h.components;)d++;return d}),E=v(()=>l.value.matched[T.value]);Jt(ix,v(()=>T.value+1)),Jt(XBe,E),Jt(XN,l);const u=X();return Fe(()=>[u.value,E.value,t.name],([d,O,h],[I,S,L])=>{O&&(O.instances[h]=d,S&&S!==O&&d&&d===I&&(O.leaveGuards.size||(O.leaveGuards=S.leaveGuards),O.updateGuards.size||(O.updateGuards=S.updateGuards))),d&&O&&(!S||!du(O,S)||!I)&&(O.enterCallbacks[h]||[]).forEach(p=>p(d))},{flush:"post"}),()=>{const d=l.value,O=t.name,h=E.value,I=h&&h.components[O];if(!I)return lx(o.default,{Component:I,route:d});const S=h.props[O],L=S?S===!0?d.params:typeof S=="function"?S(d):S:null,C=pt(I,Xo({},L,e,{onVnodeUnmounted:m=>{m.component.isUnmounted&&(h.instances[O]=null)},ref:u}));return lx(o.default,{Component:C,route:d})||C}}});function lx(t,e){if(!t)return null;const o=t(e);return o.length===1?o[0]:o}const QBe=qBe;function JBe(t){const e=CBe(t.routes,t),o=t.parseQuery||VBe,_=t.stringifyQuery||sx,l=t.history,c=Ug(),T=Ug(),E=Ug(),u=mo(wl);let d=wl;hE&&t.scrollBehavior&&"scrollRestoration"in history&&(history.scrollRestoration="manual");const O=uA.bind(null,Me=>""+Me),h=uA.bind(null,FBe),I=uA.bind(null,zI);function S(Me,Ie){let Pe,Ae;return uz(Me)?(Pe=e.getRecordMatcher(Me),Ae=Ie):Ae=Me,e.addRoute(Ae,Pe)}function L(Me){const Ie=e.getRecordMatcher(Me);Ie&&e.removeRoute(Ie)}function p(){return e.getRoutes().map(Me=>Me.record)}function C(Me){return!!e.getRecordMatcher(Me)}function m(Me,Ie){if(Ie=Xo({},Ie||u.value),typeof Me=="string"){const Re=gA(o,Me,Ie.path),Ue=e.resolve({path:Re.path},Ie),Ye=l.createHref(Re.fullPath);return Xo(Re,Ue,{params:I(Ue.params),hash:zI(Re.hash),redirectedFrom:void 0,href:Ye})}let Pe;if("path"in Me)Pe=Xo({},Me,{path:gA(o,Me.path,Ie.path).path});else{const Re=Xo({},Me.params);for(const Ue in Re)Re[Ue]==null&&delete Re[Ue];Pe=Xo({},Me,{params:h(Re)}),Ie.params=h(Ie.params)}const Ae=e.resolve(Pe,Ie),ke=Me.hash||"";Ae.params=O(I(Ae.params));const ve=tBe(_,Xo({},Me,{hash:kBe(ke),path:Ae.path})),Te=l.createHref(ve);return Xo({fullPath:ve,hash:ke,query:_===sx?WBe(Me.query):Me.query||{}},Ae,{redirectedFrom:void 0,href:Te})}function A(Me){return typeof Me=="string"?gA(o,Me,u.value.path):Xo({},Me)}function b(Me,Ie){if(d!==Me)return Ou(8,{from:Ie,to:Me})}function N(Me){return G(Me)}function U(Me){return N(Xo(A(Me),{replace:!0}))}function P(Me){const Ie=Me.matched[Me.matched.length-1];if(Ie&&Ie.redirect){const{redirect:Pe}=Ie;let Ae=typeof Pe=="function"?Pe(Me):Pe;return typeof Ae=="string"&&(Ae=Ae.includes("?")||Ae.includes("#")?Ae=A(Ae):{path:Ae},Ae.params={}),Xo({query:Me.query,hash:Me.hash,params:"path"in Ae?{}:Me.params},Ae)}}function G(Me,Ie){const Pe=d=m(Me),Ae=u.value,ke=Me.state,ve=Me.force,Te=Me.replace===!0,Re=P(Pe);if(Re)return G(Xo(A(Re),{state:typeof Re=="object"?Xo({},ke,Re.state):ke,force:ve,replace:Te}),Ie||Pe);const Ue=Pe;Ue.redirectedFrom=Ie;let Ye;return!ve&&oBe(_,Ae,Pe)&&(Ye=Ou(16,{to:Ue,from:Ae}),ae(Ae,Ae,!0,!1)),(Ye?Promise.resolve(Ye):V(Ue,Ae)).catch(De=>x_(De)?x_(De,2)?De:Q(De):re(De,Ue,Ae)).then(De=>{if(De){if(x_(De,2))return G(Xo({replace:Te},A(De.to),{state:typeof De.to=="object"?Xo({},ke,De.to.state):ke,force:ve}),Ie||Ue)}else De=K(Ue,Ae,!0,Te,ke);return W(Ue,Ae,De),De})}function w(Me,Ie){const Pe=b(Me,Ie);return Pe?Promise.reject(Pe):Promise.resolve()}function F(Me){const Ie=pe.values().next().value;return Ie&&typeof Ie.runWithContext=="function"?Ie.runWithContext(Me):Me()}function V(Me,Ie){let Pe;const[Ae,ke,ve]=ewe(Me,Ie);Pe=dA(Ae.reverse(),"beforeRouteLeave",Me,Ie);for(const Re of Ae)Re.leaveGuards.forEach(Ue=>{Pe.push(jl(Ue,Me,Ie))});const Te=w.bind(null,Me,Ie);return Pe.push(Te),be(Pe).then(()=>{Pe=[];for(const Re of c.list())Pe.push(jl(Re,Me,Ie));return Pe.push(Te),be(Pe)}).then(()=>{Pe=dA(ke,"beforeRouteUpdate",Me,Ie);for(const Re of ke)Re.updateGuards.forEach(Ue=>{Pe.push(jl(Ue,Me,Ie))});return Pe.push(Te),be(Pe)}).then(()=>{Pe=[];for(const Re of ve)if(Re.beforeEnter)if(Ir(Re.beforeEnter))for(const Ue of Re.beforeEnter)Pe.push(jl(Ue,Me,Ie));else Pe.push(jl(Re.beforeEnter,Me,Ie));return Pe.push(Te),be(Pe)}).then(()=>(Me.matched.forEach(Re=>Re.enterCallbacks={}),Pe=dA(ve,"beforeRouteEnter",Me,Ie),Pe.push(Te),be(Pe))).then(()=>{Pe=[];for(const Re of T.list())Pe.push(jl(Re,Me,Ie));return Pe.push(Te),be(Pe)}).catch(Re=>x_(Re,8)?Re:Promise.reject(Re))}function W(Me,Ie,Pe){E.list().forEach(Ae=>F(()=>Ae(Me,Ie,Pe)))}function K(Me,Ie,Pe,Ae,ke){const ve=b(Me,Ie);if(ve)return ve;const Te=Ie===wl,Re=hE?history.state:{};Pe&&(Ae||Te?l.replace(Me.fullPath,Xo({scroll:Te&&Re&&Re.scroll},ke)):l.push(Me.fullPath,ke)),u.value=Me,ae(Me,Ie,Pe,Te),Q()}let ee;function j(){ee||(ee=l.listen((Me,Ie,Pe)=>{if(!We.listening)return;const Ae=m(Me),ke=P(Ae);if(ke){G(Xo(ke,{replace:!0}),Ae).catch(_d);return}d=Ae;const ve=u.value;hE&&cBe(ZH(ve.fullPath,Pe.delta),_p()),V(Ae,ve).catch(Te=>x_(Te,12)?Te:x_(Te,2)?(G(Te.to,Ae).then(Re=>{x_(Re,20)&&!Pe.delta&&Pe.type===tO.pop&&l.go(-1,!1)}).catch(_d),Promise.reject()):(Pe.delta&&l.go(-Pe.delta,!1),re(Te,Ae,ve))).then(Te=>{Te=Te||K(Ae,ve,!1),Te&&(Pe.delta&&!x_(Te,8)?l.go(-Pe.delta,!1):Pe.type===tO.pop&&x_(Te,20)&&l.go(-1,!1)),W(Ae,ve,Te)}).catch(_d)}))}let J=Ug(),ie=Ug(),Y;function re(Me,Ie,Pe){Q(Me);const Ae=ie.list();return Ae.length?Ae.forEach(ke=>ke(Me,Ie,Pe)):console.error(Me),Promise.reject(Me)}function H(){return Y&&u.value!==wl?Promise.resolve():new Promise((Me,Ie)=>{J.add([Me,Ie])})}function Q(Me){return Y||(Y=!Me,j(),J.list().forEach(([Ie,Pe])=>Me?Pe(Me):Ie()),J.reset()),Me}function ae(Me,Ie,Pe,Ae){const{scrollBehavior:ke}=t;if(!hE||!ke)return Promise.resolve();const ve=!Pe&&TBe(ZH(Me.fullPath,0))||(Ae||!Pe)&&history.state&&history.state.scroll||null;return Lt().then(()=>ke(Me,Ie,ve)).then(Te=>Te&&aBe(Te)).catch(Te=>re(Te,Me,Ie))}const ge=Me=>l.go(Me);let Se;const pe=new Set,We={currentRoute:u,listening:!0,addRoute:S,removeRoute:L,hasRoute:C,getRoutes:p,resolve:m,options:t,push:N,replace:U,go:ge,back:()=>ge(-1),forward:()=>ge(1),beforeEach:c.add,beforeResolve:T.add,afterEach:E.add,onError:ie.add,isReady:H,install(Me){const Ie=this;Me.component("RouterLink",zBe),Me.component("RouterView",QBe),Me.config.globalProperties.$router=Ie,Object.defineProperty(Me.config.globalProperties,"$route",{enumerable:!0,get:()=>M(u)}),hE&&!Se&&u.value===wl&&(Se=!0,N(l.location).catch(ke=>{}));const Pe={};for(const ke in wl)Object.defineProperty(Pe,ke,{get:()=>u.value[ke],enumerable:!0});Me.provide(xD,Ie),Me.provide(Sz,iP(Pe)),Me.provide(XN,u);const Ae=Me.unmount;pe.add(Me),Me.unmount=function(){pe.delete(Me),pe.size<1&&(d=wl,ee&&ee(),ee=null,u.value=wl,Se=!1,Y=!1),Ae()}}};function be(Me){return Me.reduce((Ie,Pe)=>Ie.then(()=>F(Pe)),Promise.resolve())}return We}function ewe(t,e){const o=[],_=[],l=[],c=Math.max(e.matched.length,t.matched.length);for(let T=0;T<c;T++){const E=e.matched[T];E&&(t.matched.find(d=>du(d,E))?_.push(E):o.push(E));const u=t.matched[T];u&&(e.matched.find(d=>du(d,u))||l.push(u))}return[o,_,l]}const twe=JBe({history:dBe("/"),routes:[{path:"/",name:"home",component:cz}]}),lp=p2(cz);lp.use(Mye);lp.use(ITe());lp.use(twe);lp.mount("#app")});export default owe();
|